From 21ac57b36a9e3b909853c7d64ac29b7ad72490a3 Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Mon, 02 Sep 2019 16:52:19 -0400
Subject: [PATCH] Figure panel.

---
 GroupEditor.java |  219 ++++++++++++++++++++++++++++++------------------------
 1 files changed, 121 insertions(+), 98 deletions(-)

diff --git a/GroupEditor.java b/GroupEditor.java
index f678dca..ae9ebf2 100644
--- a/GroupEditor.java
+++ b/GroupEditor.java
@@ -368,16 +368,6 @@
         refreshContents();
     }
 
-    public void Show3DView()
-    {
-        // bug
-        //gridPanel.setDividerLocation(1.0);
-        //bigPanel.setDividerLocation(0.0);
-        bigThree.ClearUI();
-        bigThree.add(centralPanel);
-        bigThree.FlushUI();
-    }
-
     //ObjEditor objEditor;
 	public void closeUI2()
 	{
@@ -417,13 +407,13 @@
 		
                 assert(false);
                 
-        if (copy.versionlist == null)
-        {
-            copy.versionlist = new Object3D[100];
-            copy.versionindex = -1;
-            
-            //Save(true);
-        }
+//        if (copy.versionlist == null)
+//        {
+//            copy.versionlist = new Object3D[100];
+//            copy.versionindex = -1;
+//            
+//            //Save(true);
+//        }
         
 		if(ui)
                     SetupUI(objEditor);
@@ -446,13 +436,13 @@
                 
                 ((cRadio)radioPanel.getComponent(0)).SetCamera(cameraView.renderCamera, true);
                 
-        if (copy.versionlist == null)
-        {
-            copy.versionlist = new Object3D[100];
-            copy.versionindex = -1;
-            
-            //Save(true);
-        }
+//        if (copy.versionlist == null)
+//        {
+//            copy.versionlist = new Object3D[100];
+//            copy.versionindex = -1;
+//            
+//            //Save(true);
+//        }
 	}
 
     void CloneSelection(boolean supports)
@@ -765,9 +755,9 @@
 		shadowYItem.addActionListener(this);
                 shadowZItem = menu.add(new MenuItem("Shadow Blue"));
 		shadowZItem.addActionListener(this);
+                
 		attributeItem = menu.add(new MenuItem("Attribute"));
 		attributeItem.addActionListener(this);
-                
         if (Globals.ADVANCED)
         {
 		menu.add("-");
@@ -779,11 +769,18 @@
 		pointflowItem.addActionListener(this);
         }
 		menu.add("-");
+		textureRatioRItem = menu.add(new MenuItem("Texture Ratio Red"));
+		textureRatioRItem.addActionListener(this);
+		textureRatioGItem = menu.add(new MenuItem("Texture Ratio Green"));
+		textureRatioGItem.addActionListener(this);
+		textureRatioBItem = menu.add(new MenuItem("Texture Ratio Blue"));
+		textureRatioBItem.addActionListener(this);
+		menu.add("-");
 		resetTransformItem = menu.add(new MenuItem("Reset Transform"));
 		resetTransformItem.addActionListener(this);
 		resetCentroidItem = menu.add(new MenuItem("Reset Centroid"));
 		resetCentroidItem.addActionListener(this);
-		resetCentroidXZItem = menu.add(new MenuItem("Reset Centroid XY"));
+		resetCentroidXZItem = menu.add(new MenuItem("Reset Centroid XZ"));
 		resetCentroidXZItem.addActionListener(this);
 		transformGeometryItem = menu.add(new MenuItem("Transform Geometry"));
 		transformGeometryItem.addActionListener(this);
@@ -835,6 +832,8 @@
         }
 
                 oe.menuBar.add(menu = new Menu("Attributes"));
+		clearVersionsItem = menu.add(new MenuItem("Clear Versions"));
+		clearVersionsItem.addActionListener(this);
 		clearMaterialsItem = menu.add(new MenuItem("Clear Materials"));
 		clearMaterialsItem.addActionListener(this);
                 resetAllItem = menu.add(new MenuItem("Reset All"));
@@ -936,6 +935,8 @@
         cGridBag currenttab;
         //boolean added; // patch for jar
                 
+        int totalcount = 0;
+        
         int tabcount = 0;
         int colcount = 0;
         int rowcount = 0;
@@ -974,6 +975,7 @@
             }
             
             AddTextureButton(path[0], path[1], path[2], ++texturecount, currenttab);
+            totalcount++;
             
             if (++colcount >= columns)
             {
@@ -999,6 +1001,8 @@
             container.add(resourcecontainer);
             
             Grafreed.ParseResources("textures", this);
+            
+            // 935. System.out.println("Total = " + totalcount);
         }
         
 	void SetupUI2(ObjEditor oe)
@@ -1067,13 +1071,17 @@
 //                        }
 //                });
                 
+		oe.toolbarPanel.add(fullScreenButton = GetButton("icons/fullscreen.png", !Globals.NIMBUSLAF)); //, oe.aConstraints);
+                fullScreenButton.setToolTipText("Full-screen window");
+		fullScreenButton.addActionListener(this);
+                
 		oe.toolbarPanel.add(collapseButton = GetButton("icons/collapse.png", !Globals.NIMBUSLAF)); //, oe.aConstraints);
                 collapseButton.setToolTipText("Collapse toolbar");
 		collapseButton.addActionListener(this);
                 
-		oe.toolbarPanel.add(maximize3DButton = GetButton("icons/square.png", !Globals.NIMBUSLAF)); //, oe.aConstraints);
-                maximize3DButton.setToolTipText("Maximize 3D view");
-		maximize3DButton.addActionListener(this);
+//		oe.toolbarPanel.add(maximize3DButton = GetButton("icons/square.png", !Globals.NIMBUSLAF)); //, oe.aConstraints);
+//                maximize3DButton.setToolTipText("Maximize 3D view");
+//		maximize3DButton.addActionListener(this);
                 
 		oe.toolbarPanel.add(twoButton = GetButton("icons/cube.png", !Globals.NIMBUSLAF)); //, oe.aConstraints);
                 twoButton.setToolTipText("Show 3D view only");
@@ -1093,10 +1101,6 @@
 //                sevenButton.setToolTipText("3-column layout");
 //		sevenButton.addActionListener(this);
                 //
-                
-		oe.toolbarPanel.add(fullButton = GetButton("icons/fullscreen.png", !Globals.NIMBUSLAF)); //, oe.aConstraints);
-                fullButton.setToolTipText("Full-screen window");
-		fullButton.addActionListener(this);
                 
 		oe.toolbarPanel.add(screenfitButton = GetButton("icons/fit.png", !Globals.NIMBUSLAF)); //, oe.aConstraints);
                 screenfitButton.setToolTipText("Screen fit");
@@ -1210,7 +1214,7 @@
                 torusButton.setToolTipText("Create torus");
                                 torusButton.addActionListener(this);
 
-                if (Globals.ADVANCED)
+                if (false) //Globals.ADVANCED)
                 {
                     oe.toolboxPanel.add(kleinButton = GetButton("icons/klein.png", !Globals.NIMBUSLAF)); //, oe.aConstraints);
                     kleinButton.setToolTipText("Create Klein bottle");
@@ -1486,7 +1490,7 @@
 	
         void EditObject(Object3D obj)
         {
-            assert(obj instanceof Composite);
+            //assert(obj instanceof Composite);
             
 //            if (obj.versionlist == null)
 //            {
@@ -2122,24 +2126,24 @@
             switch(axis)
             {
                 case 0 :
-                    vert1.x = minima.x; vert1.y = minima.y; vert1.z = minima.z;
-                    vert2.x = minima.x; vert2.y = maxima.y; vert2.z = minima.z;
-                    vert3.x = minima.x; vert3.y = minima.y; vert3.z = maxima.z;
-                    vert4.x = minima.x; vert4.y = maxima.y; vert4.z = maxima.z;
+                    vert1.x = minima.x + 0.001f; vert1.y = minima.y; vert1.z = minima.z;
+                    vert2.x = minima.x + 0.001f; vert2.y = maxima.y; vert2.z = minima.z;
+                    vert3.x = minima.x + 0.001f; vert3.y = minima.y; vert3.z = maxima.z;
+                    vert4.x = minima.x + 0.001f; vert4.y = maxima.y; vert4.z = maxima.z;
                     norm = cVector.X;
                     break;
                 case 1 :
-                    vert1.x = minima.x; vert1.y = minima.y; vert1.z = minima.z;
-                    vert2.x = maxima.x; vert2.y = minima.y; vert2.z = minima.z;
-                    vert3.x = minima.x; vert3.y = minima.y; vert3.z = maxima.z;
-                    vert4.x = maxima.x; vert4.y = minima.y; vert4.z = maxima.z;
+                    vert1.x = minima.x; vert1.y = minima.y + 0.001f; vert1.z = minima.z;
+                    vert2.x = maxima.x; vert2.y = minima.y + 0.001f; vert2.z = minima.z;
+                    vert3.x = minima.x; vert3.y = minima.y + 0.001f; vert3.z = maxima.z;
+                    vert4.x = maxima.x; vert4.y = minima.y + 0.001f; vert4.z = maxima.z;
                     norm = cVector.Y;
                     break;
                 case 2 :
-                    vert1.x = minima.x; vert1.y = minima.y; vert1.z = minima.z;
-                    vert2.x = maxima.x; vert2.y = minima.y; vert2.z = minima.z;
-                    vert3.x = minima.x; vert3.y = maxima.y; vert3.z = minima.z;
-                    vert4.x = maxima.x; vert4.y = maxima.y; vert4.z = minima.z;
+                    vert1.x = minima.x; vert1.y = minima.y; vert1.z = minima.z + 0.001f;
+                    vert2.x = maxima.x; vert2.y = minima.y; vert2.z = minima.z + 0.001f;
+                    vert3.x = minima.x; vert3.y = maxima.y; vert3.z = minima.z + 0.001f;
+                    vert4.x = maxima.x; vert4.y = maxima.y; vert4.z = minima.z + 0.001f;
                     norm = cVector.Z;
                     break;
             }
@@ -2708,11 +2712,11 @@
                     if (!group.selection.isEmpty())
                     {
                         Composite csg = new GroupLeaf();
+			group(csg);
                         csg.count = 5;
                         Composite child = new cGroup("Branch");
                         csg.addChild(child);
                         child.addChild(csg);
-			group(csg);
                     }
 		} else
 		if (source == doubleItem)
@@ -2720,6 +2724,7 @@
                     if (!group.selection.isEmpty())
                     {
                         Composite csg = new GroupLeaf("Fork");
+			group(csg);
                         csg.count = 5;
                         Composite child = new cGroup("Branch A");
                         csg.addChild(child);
@@ -2727,7 +2732,6 @@
                         child = new cGroup("Branch B");
                         csg.addChild(child);
                         child.addChild(csg);
-			group(csg);
                     }
 		} else
 		if (source == tripleItem)
@@ -2793,7 +2797,7 @@
 		{
 			Maximize();
 		} else
-		if (source == fullButton)
+		if (source == fullScreenButton)
 		{
 			ToggleFullScreen();
 		} else
@@ -2802,13 +2806,13 @@
                         this.expandedLayout = radio.layout;
 			CollapseToolbar();
 		} else
-		if (source == maximize3DButton)
-		{
-                        this.expandedLayout = radio.layout;
-                        radio.layout = twoButton;
-                        Show3DView();
-			CollapseToolbar();
-		} else
+//		if (source == maximize3DButton)
+//		{
+//                        this.expandedLayout = radio.layout;
+//                        radio.layout = twoButton;
+//			CollapseToolbar();
+//                        Show3DView();
+//		} else
 		if (source == previousVersionButton)
 		{
                         // Go to previous version
@@ -3461,6 +3465,10 @@
                 {
 			ClearMaterials();
 		} else
+		if (source == clearVersionsItem)
+                {
+			ClearVersions();
+		} else
 		if (source == liveleavesItem)
                 {
 			LiveLeaves(true);
@@ -3600,6 +3608,18 @@
 		if (source == transformChildrenItem)
 		{
                         TransformChildren();
+		} else
+		if (source == textureRatioRItem)
+		{
+                        TextureRatio(0);
+		} else
+		if (source == textureRatioGItem)
+		{
+                        TextureRatio(1);
+		} else
+		if (source == textureRatioBItem)
+		{
+                        TextureRatio(2);
 		} else
 		if (source == resetTransformItem)
 		{
@@ -3973,7 +3993,8 @@
 		if (source == closeButton)
 		{
 //System.out.println("CLOSE: " + buttonGroup.getSelection());
-                    Replace();
+                    if (copy.versionlist != null)
+                        Replace();
                     
                     cRadio ab;
                     for (Enumeration e = buttonGroup.getElements(); e.hasMoreElements();)
@@ -4073,7 +4094,8 @@
 		} else
                 if(source instanceof cRadio)
 		{
-                    Replace();
+                    if (copy.versionlist != null)
+                        Replace();
                     
                     group.parent = keepparent;
                         group.attributes = 0;
@@ -4126,7 +4148,7 @@
                      */
                     radio.layout.doClick();
                     
-                    assert(copy instanceof Composite);
+                    //assert(copy instanceof Composite);
                     
         if (copy.versionlist == null)
         {
@@ -4137,12 +4159,15 @@
             // and check if any of these nodes are reachable below the root.
             Grafreed.grafreed.universe.TagObjects(copy, true);
             
-            if (!copy.HasTags())
+            if (copy instanceof Composite && !copy.HasTags())
             {
-                copy.versionlist = new Object3D[100];
+                if (copy.versionlist == null)
+                    copy.versionlist = new Object3D[100];
                 
-                Save(true);
+                //Save(true);
             }
+            else
+                copy.versionindex = -2;
             
             Grafreed.grafreed.universe.TagObjects(copy, false);
         }
@@ -4262,6 +4287,18 @@
             refreshContents();
         }
         
+        void TextureRatio(int axis)
+        {
+            Object3D obj;
+            for (Enumeration e = group.selection.elements(); e.hasMoreElements();)
+            {
+                    obj = (Object3D)e.nextElement();
+                    obj.TextureRatio(axis);
+            }
+
+            refreshContents();
+        }
+        
         void ResetTransform()
         {
             ResetTransform(-1);
@@ -4277,38 +4314,8 @@
                     if (obj.toParent == null)
                         continue;
                     
-                    if (mask == -1)
-                    {
-                        if (obj instanceof Camera) // jan 2014
-                        {
-                            LA.matIdentity(obj.toParent);
-                            LA.matIdentity(obj.fromParent);
-                        }
-                        else
-                        {
-                            obj.toParent = null; // jan 2014 LA.matIdentity(obj.toParent);
-                            obj.fromParent = null; // LA.matIdentity(obj.fromParent);
-                        }
-                        TouchTransform(obj);
-                        continue;
-                    }
-                    if ((mask&2) != 0) // Scale/rotation
-                    {
-                        obj.toParent[0][0] = obj.toParent[1][1] = obj.toParent[2][2] = 1;
-                        obj.toParent[0][1] = obj.toParent[1][0] = obj.toParent[2][0] = 0;
-                        obj.toParent[0][2] = obj.toParent[1][2] = obj.toParent[2][1] = 0;
-                        obj.fromParent[0][0] = obj.fromParent[1][1] = obj.fromParent[2][2] = 1;
-                        obj.fromParent[0][1] = obj.fromParent[1][0] = obj.fromParent[2][0] = 0;
-                        obj.fromParent[0][2] = obj.fromParent[1][2] = obj.fromParent[2][1] = 0;
-                    }
-                    if ((mask&1) != 0) // Translation
-                    {
-                        if (obj.toParent != null)
-                        {
-                            obj.toParent[3][0] = obj.toParent[3][1] = obj.toParent[3][2] = 0;
-                            obj.fromParent[3][0] = obj.fromParent[3][1] = obj.fromParent[3][2] = 0;
-                        }
-                    }
+                    obj.ResetTransform(mask);
+                    
                     if (obj.parent == null)
                     {
                         System.out.println("NULL PARENT!");
@@ -4817,6 +4824,12 @@
             {
 		Object3D obj = group.selection.get(i);
                 
+                if (obj.toParent == null)
+                {
+                    obj.toParent = LA.newMatrix();
+                    obj.fromParent = LA.newMatrix();
+                }
+                
                 LA.matTranslate(obj.toParent, i * scale, 0, 0);
                 LA.matTranslateInv(obj.fromParent, -i * scale, 0, 0);
             }
@@ -5108,6 +5121,12 @@
 		refreshContents();
 	}
 	
+	void ClearVersions()
+	{
+		group.selection.ClearVersions();
+		refreshContents();
+	}
+	
 	void FlipV(boolean flip)
 	{
 		group.selection.FlipV(flip);
@@ -5346,7 +5365,7 @@
 			if (tps != null && tps.length > 0 && tps[0].getLastPathComponent() instanceof Camera)
                             // a camera
                         {
-                            if (tps[0].getLastPathComponent() != Globals.theRenderer.LightCamera()) // Crash the camera because of invalid lightspace
+                            if (tps[0].getLastPathComponent() != Globals.theRenderer.LightCamera()) // Crashes the camera because of invalid lightspace
                             {
                                 CameraPane.camerachangeframe = 0; // don't refuse it
                                 Globals.theRenderer.SetCamera((Camera) tps[0].getLastPathComponent());
@@ -5393,12 +5412,12 @@
                     }
             }
             
-            rootButton.setEnabled(allComposites);
+            rootButton.setEnabled(true); // allComposites);
         }
 
         void refreshContents(boolean cp)
         {
-            if (Globals.ADVANCED)
+            if (Globals.SHOWINFO)
             //if (objectPanel.getSelectedIndex() == 2) // objectPanel.indexOfTab("Info"))
             if (!Globals.MOUSEDRAGGED && group.selection != null) // && !Globals.TIMERRUNNING)
             {
@@ -6349,6 +6368,7 @@
 	private MenuItem clipMeshItem;
 	private MenuItem smoothMeshItem;
 	private MenuItem clearMaterialsItem;
+	private MenuItem clearVersionsItem;
         
 	private MenuItem liveleavesItem;
 	private MenuItem unliveleavesItem;
@@ -6372,6 +6392,9 @@
 	private MenuItem maxTexturesItem;
 	private MenuItem panoTexturesItem;
         
+	private MenuItem textureRatioRItem;
+	private MenuItem textureRatioGItem;
+	private MenuItem textureRatioBItem;
 	private MenuItem resetCentroidItem;
 	private MenuItem resetCentroidXZItem;
 	private MenuItem resetTransformItem;

--
Gitblit v1.6.2