From 0050edcb88bac197578ec518425c8c1e1b4e469f Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Mon, 02 Sep 2019 19:29:35 -0400
Subject: [PATCH] Scale slider

---
 ObjEditor.java      |   26 ++++++++++++-
 icons/figure.png    |    0 
 GroupEditor.java    |   26 +++++++++++++
 Object3D.java       |   12 ++++++
 icons/figure256.png |    0 
 5 files changed, 62 insertions(+), 2 deletions(-)

diff --git a/GroupEditor.java b/GroupEditor.java
index ae9ebf2..5edd0f3 100644
--- a/GroupEditor.java
+++ b/GroupEditor.java
@@ -1330,6 +1330,7 @@
 
                 oe.treePanel.add(versionManagerPanel);
                 oe.treePanel.Return();
+                
         versionSliderPane = AddSlider(oe.treePanel, "Version", 0, 0, 0);
             versionSlider = (cNumberSlider)versionSliderPane.getComponent(1);
             versionSliderPane.preferredHeight = 3;
@@ -4304,6 +4305,31 @@
             ResetTransform(-1);
         }
         
+        void ScaleSelection(int scale)
+        {
+            Object3D obj;
+            for (Enumeration e = group.selection.elements(); e.hasMoreElements();)
+            {
+                    obj = (Object3D)e.nextElement();
+                    
+                    if (obj.toParent == null)
+                        continue;
+                    
+                    obj.Scale(scale);
+                    
+                    if (obj.parent == null)
+                    {
+                        System.out.println("NULL PARENT!");
+                    //    new Exception().printStackTrace();
+                    }
+                    else
+                        TouchTransform(obj);
+                        //obj.parent.Touch();
+            }
+
+            refreshContents();
+        }
+        
         void ResetTransform(int mask)
         {
             Object3D obj;
diff --git a/ObjEditor.java b/ObjEditor.java
index 530b091..06f91f8 100644
--- a/ObjEditor.java
+++ b/ObjEditor.java
@@ -555,7 +555,7 @@
 //                        }
 //                    }
 //                }
-                cameraView.transformMode = objectTabbedPane.getSelectedIndex() == 4;
+                cameraView.transformMode = objectTabbedPane.getSelectedIndex() == 5;
                 
 //                refreshContents(false); // To refresh Info tab
                 cameraView.repaint();
@@ -1726,6 +1726,12 @@
         //XYZPanel.setName("XYZ");
 
         transformPanel.add(resetTransformPanel);
+        
+        cGridBag scalePanel = AddSlider(transformPanel, "Scale", 1, 10, 1);
+        scalePanel.preferredHeight = 2;
+        scaleSlider = (cNumberSlider)scalePanel.getComponent(1);        
+        transformPanel.add(scalePanel);
+        
         transformPanel.add(XYZPanel);
         
         /*
@@ -1781,7 +1787,7 @@
         figurePanel = new cGridBag();
         figurePanel.add(new cButton("FIGURES amd POSES coming soon!"));
         objectTabbedPane.add(figurePanel);
-        objectTabbedPane.setIconAt(objectTabCount, GetIcon("icons/run.png"));
+        objectTabbedPane.setIconAt(objectTabCount, GetIcon("icons/figure.png"));
         objectTabbedPane.setToolTipTextAt(objectTabCount++, "Figures and poses");
         
 //        JPanel north = new JPanel(new BorderLayout());
@@ -5189,9 +5195,16 @@
     cNumberSlider versionSlider;
     cNumberSlider versionField;
     
+    cNumberSlider scaleSlider;
+    
+    void ScaleSelection(int scale)
+    {
+    }
+            
     public void stateChanged(ChangeEvent e)
     {
         // assert(false);
+        // Main version slider
         if (e.getSource() == versionSlider)
         {
             if (muteSlider)
@@ -5212,6 +5225,7 @@
             return;
         }
 
+        // Version slider of edited object
         if (e.getSource() == versionField)
         {
             int version = versionField.getInteger();
@@ -5225,6 +5239,14 @@
             return;
         }
         
+        if (e.getSource() == scaleSlider)
+        {
+            int scale = scaleSlider.getInteger();
+
+            ScaleSelection(scale);
+            return;
+        }
+
         if (freezematerial)
         {
             return;
diff --git a/Object3D.java b/Object3D.java
index 87058be..88267e2 100644
--- a/Object3D.java
+++ b/Object3D.java
@@ -3356,6 +3356,18 @@
         }
     }
     
+    public void Scale(int scale)
+    {
+        Object3D obj = this;
+        
+        obj.toParent[0][0] = obj.toParent[1][1] = obj.toParent[2][2] = scale;
+        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/scale;
+        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;
+    }
+    
     public void TextureRatioTransform(int axis)
     {
         cTexture tex = GetTextures();
diff --git a/icons/figure.png b/icons/figure.png
new file mode 100644
index 0000000..1e9577d
--- /dev/null
+++ b/icons/figure.png
Binary files differ
diff --git a/icons/figure256.png b/icons/figure256.png
new file mode 100644
index 0000000..8345ac9
--- /dev/null
+++ b/icons/figure256.png
Binary files differ

--
Gitblit v1.6.2