From b1d79b74514041a059b454a9f6fc3970773c0cb8 Mon Sep 17 00:00:00 2001 From: Normand Briere <nbriere@noware.ca> Date: Mon, 12 Aug 2019 18:19:30 -0400 Subject: [PATCH] Compact toolbar. --- ObjEditor.java | 87 +++++++++++++--- Torus.java | 8 + Cone.java | 5 + SwitchNode.java | 3 Grid.java | 5 + Sphere.java | 9 + Biparam.java | 7 + cMesh.java | 2 CameraPane.java | 1 Globals.java | 2 GroupEditor.java | 131 ++++++++++++++----------- icons/shadericons/shadow.png | 0 Superellipsoid.java | 12 + Object3D.java | 6 + icons/collapse.png | 0 15 files changed, 193 insertions(+), 85 deletions(-) diff --git a/Biparam.java b/Biparam.java index 67ef12f..934bccf 100644 --- a/Biparam.java +++ b/Biparam.java @@ -98,6 +98,11 @@ // recalculate(); } + double uStretch() + { + return 1; + } + void recalculate() { //System.out.println("BREP TRIMMED? 3 " + bRep.trimmed); @@ -115,7 +120,7 @@ int p = iu * (vDivs + 1) + iv; if (touched) { - vert.s = u; + vert.s = u * uStretch(); vert.t = v; } else diff --git a/CameraPane.java b/CameraPane.java index df56b97..e816ebc 100644 --- a/CameraPane.java +++ b/CameraPane.java @@ -16667,6 +16667,7 @@ private void DrawSkyBox(GL gl, float ratio) { if (//envyoff || + WIREFRAME || cubemap == null) { gl.glClearColor(BGcolor, BGcolor, BGcolor, 1); diff --git a/Cone.java b/Cone.java index 63892ae..de9ce0f 100644 --- a/Cone.java +++ b/Cone.java @@ -193,6 +193,11 @@ return inside; } + double uStretch() + { + return 6; // Actually 6.28 (I think) + } + Vertex biparamFunction(double u, double v) { cVector tPos; diff --git a/Globals.java b/Globals.java index 0b4407e..d968060 100644 --- a/Globals.java +++ b/Globals.java @@ -8,6 +8,8 @@ private static boolean LIVE = false; + // Option to set saturation to 1 when choosing a color first + public static boolean AUTOSATURATE = true; public static boolean MINSHADER = false; public static boolean COMPUTESHADOWWHENLIVE = true; public static boolean RENDERSHADOW = true; diff --git a/Grid.java b/Grid.java index e8b144a..06d07a4 100644 --- a/Grid.java +++ b/Grid.java @@ -62,6 +62,11 @@ */ } + double uStretch() + { + return 1; + } + Vertex biparamFunction(double u, double v) { Vertex temp = new Vertex((2*v-1)*radius*4, 0 /*-radius,*/, (2*u-1)*radius*4); diff --git a/GroupEditor.java b/GroupEditor.java index 953d129..1e9db13 100644 --- a/GroupEditor.java +++ b/GroupEditor.java @@ -359,6 +359,16 @@ 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() { @@ -984,11 +994,6 @@ //new Exception().printStackTrace(); oe.radioPanel = new JPanel(new GridBagLayout()); - oe.aConstraints.weightx = 1; - oe.aConstraints.weighty = 0; - oe.aConstraints.fill = GridBagConstraints.HORIZONTAL; - oe.aConstraints.gridwidth = 100; - oe.aConstraints.gridheight = 1; // oe.toolbarPanel.add(radioPanel); //, oe.aConstraints); oe.buttonGroup = new ButtonGroup(); @@ -1025,6 +1030,45 @@ maxButton.setToolTipText("Maximize window"); maxButton.addActionListener(this); } + + cButton gcButton; + + oe.toolbarPanel.add(gcButton = GetButton("icons/trash.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); + gcButton.setToolTipText("Garbage collect"); + gcButton.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + System.gc(); + } + }); + + oe.toolbarPanel.add(collapseButton = GetButton("icons/collapse.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); + collapseButton.setToolTipText("Collapse toolbar"); + collapseButton.addActionListener(this); + + oe.toolbarPanel.add(maximize3DButton = GetButton("", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); + maximize3DButton.setToolTipText("Maximize 3D view"); + maximize3DButton.addActionListener(this); + + oe.toolbarPanel.add(twoButton = GetButton("icons/cube.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); + twoButton.setToolTipText("Show 3D view only"); + twoButton.addActionListener(this); + this.fullscreenLayout = twoButton; + + oe.toolbarPanel.add(threeButton = GetButton("icons/controlsview.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); + threeButton.setToolTipText("Show controls and 3D view"); + threeButton.addActionListener(this); + if (Globals.ADVANCED) + { + oe.toolbarPanel.add(sixButton = GetButton("icons/viewcontrols.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); + sixButton.setToolTipText("Show 3D view and controls"); + sixButton.addActionListener(this); + } +// oe.toolbarPanel.add(sevenButton = new cButton("-|-|-", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); +// sevenButton.setToolTipText("3-column layout"); +// sevenButton.addActionListener(this); + // oe.toolbarPanel.add(fullButton = GetButton("icons/fullscreen.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); fullButton.setToolTipText("Full-screen window"); @@ -1069,14 +1113,14 @@ nextVersionButton.addActionListener(this); nextVersionButton.setEnabled(false); - oe.toolbarPanel.add(liveCB = GetToggleButton("icons/run.png", Globals.isLIVE())); //, oe.aConstraints); - liveCB.setToolTipText("Enable animation"); - liveCB.addItemListener(this); - oe.toolbarPanel.add(oneStepButton = GetButton("icons/step.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); oneStepButton.setToolTipText("Animate one step forward"); oneStepButton.addActionListener(this); + oe.toolbarPanel.add(liveCB = GetToggleButton("icons/run.png", Globals.isLIVE())); //, oe.aConstraints); + liveCB.setToolTipText("Enable animation"); + liveCB.addItemListener(this); + oe.toolbarPanel.add(fastCB = GetToggleButton("icons/runfast.png", CameraPane.FAST)); //, constraints); fastCB.setToolTipText("Fast mode"); fastCB.addItemListener(this); @@ -1103,21 +1147,6 @@ //oe.toolbarPanel.add(new JSeparator(SwingConstants.VERTICAL)); - oe.toolbarPanel.add(twoButton = GetButton("icons/cube.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); - twoButton.setToolTipText("Show 3D view only"); - twoButton.addActionListener(this); - this.fullscreenLayout = twoButton; - - oe.toolbarPanel.add(threeButton = GetButton("icons/controlsview.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); - threeButton.setToolTipText("Show controls and 3D view"); - threeButton.addActionListener(this); - oe.toolbarPanel.add(sixButton = GetButton("icons/viewcontrols.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); - sixButton.setToolTipText("Show 3D view and controls"); - sixButton.addActionListener(this); -// oe.toolbarPanel.add(sevenButton = new cButton("-|-|-", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); -// sevenButton.setToolTipText("3-column layout"); -// sevenButton.addActionListener(this); - // oe.toolbarPanel.add(rootButton = GetButton("icons/openwindow.png", !Grafreed.NIMBUSLAF)); //, oe.aConstraints); rootButton.setToolTipText("Open selection in new tab"); @@ -1815,7 +1844,12 @@ TreePath path; public TransferableTreePath(TreePath tp) { - path = tp; + Object[] objs = new Object[tp.getPathCount()]; + for (int i=0; i<objs.length; i++) + { + objs[i] = ((Object3D)tp.getPathComponent(i)).GetUUID(); + } + path = new TreePath(objs); } public synchronized DataFlavor[] getTransferDataFlavors() { @@ -2708,6 +2742,18 @@ if (source == fullButton) { ToggleFullScreen(); + } else + if (source == collapseButton) + { + this.expandedLayout = radio.layout; + CollapseToolbar(); + } else + if (source == maximize3DButton) + { + this.expandedLayout = radio.layout; + radio.layout = twoButton; + Show3DView(); + CollapseToolbar(); } else if (source == previousVersionButton) { @@ -3660,38 +3706,7 @@ if (CameraPane.FULLSCREEN) fullscreenLayout = radio.layout; - // bug - //gridPanel.setDividerLocation(1.0); - //bigPanel.setDividerLocation(0.0); -// bigThree.remove(scenePanel); -// bigThree.remove(centralPanel); -// bigThree.remove(XYZPanel); -// aWindowConstraints.gridx = 0; -// aWindowConstraints.gridy = 0; -// aWindowConstraints.gridwidth = 1; -// // aConstraints.gridheight = 3; -// aWindowConstraints.fill = GridBagConstraints.VERTICAL; -// aWindowConstraints.weightx = 0; -// aWindowConstraints.weighty = 1; -// //bigThree.add(jtp, aWindowConstraints); -// aWindowConstraints.weightx = 1; -// aWindowConstraints.gridwidth = 3; -// // aConstraints.gridheight = 3; -// aWindowConstraints.gridx = 1; -// aWindowConstraints.fill = GridBagConstraints.BOTH; -// bigThree.add(centralPanel, aWindowConstraints); -// aWindowConstraints.weightx = 0; -// aWindowConstraints.gridx = 4; -// aWindowConstraints.gridwidth = 1; -// // aConstraints.gridheight = 3; -// aWindowConstraints.fill = GridBagConstraints.VERTICAL; -// //bigThree.add(XYZPanel, aWindowConstraints); -// scenePanel.setVisible(false); -// centralPanel.setVisible(true); -// XYZPanel.setVisible(false); - bigThree.ClearUI(); - bigThree.add(centralPanel); - bigThree.FlushUI(); + Show3DView(); cameraView.requestFocusInWindow(); @@ -5290,7 +5305,7 @@ Object3D child = (Object3D) group.selection.get(i); objEditor.AddInfo(child, this, true); - System.err.println("info : " + child.GetPath()); +// System.err.println("info : " + child.GetPath()); } objEditor.SetText(); // jan 2014 diff --git a/ObjEditor.java b/ObjEditor.java index 8e14d77..389e50d 100644 --- a/ObjEditor.java +++ b/ObjEditor.java @@ -754,6 +754,7 @@ boolean maximized; cButton fullscreenLayout; + cButton expandedLayout; void Minimize() { @@ -793,10 +794,12 @@ cButton minButton; cButton maxButton; cButton fullButton; + cButton collapseButton; + cButton maximize3DButton; void ToggleFullScreen() { -GraphicsDevice device = frame.getGraphicsConfiguration().getDevice(); + GraphicsDevice device = frame.getGraphicsConfiguration().getDevice(); cameraView.ToggleFullScreen(); @@ -817,13 +820,13 @@ // X frame.getContentPane().remove(/*"Center",*/bigThree); // X framePanel.add(bigThree); // X frame.getContentPane().add(/*"Center",*/framePanel); - framePanel.setDividerLocation(46); +// framePanel.setDividerLocation(46); // icons are 24x24 //frame.setVisible(true); - radio.layout = keepButton; +// radio.layout = keepButton; //theFrame = null; keepButton = null; - radio.layout.doClick(); +// radio.layout.doClick(); } else { @@ -844,10 +847,10 @@ // X frame.getContentPane().remove(/*"Center",*/framePanel); // X framePanel.remove(bigThree); // X frame.getContentPane().add(/*"Center",*/bigThree); - framePanel.setDividerLocation(0); +// framePanel.setDividerLocation(0); - radio.layout = fullscreenLayout; - radio.layout.doClick(); +// radio.layout = fullscreenLayout; +// radio.layout.doClick(); //frame.setVisible(true); } frame.validate(); @@ -855,23 +858,31 @@ cameraView.requestFocusInWindow(); } - private Object3D CompressCopy() + void CollapseToolbar() + { + framePanel.setDividerLocation(0); + //frame.validate(); + + cameraView.requestFocusInWindow(); + } + + private Object3D Duplicate(Object3D object) { boolean temp = CameraPane.SWITCH; CameraPane.SWITCH = false; - copy.ExtractBigData(versiontable); + object.ExtractBigData(versiontable); // if (copy == client) - Object3D versions[] = copy.versionlist; - copy.versionlist = null; + Object3D versions[] = object.versionlist; + object.versionlist = null; //byte[] compress = Compress(copy); - Object3D compress = (Object3D)Grafreed.clone(copy); + Object3D compress = (Object3D)Grafreed.clone(object); - copy.versionlist = versions; + object.versionlist = versions; - copy.RestoreBigData(versiontable); + object.RestoreBigData(versiontable); CameraPane.SWITCH = temp; @@ -1702,6 +1713,23 @@ // aConstraints.gridheight = 1; framePanel = new JSplitPane(JSplitPane.VERTICAL_SPLIT, toolbarPanel, bigThree); + + framePanel.addPropertyChangeListener(JSplitPane.DIVIDER_LOCATION_PROPERTY, + new java.beans.PropertyChangeListener() + { + public void propertyChange(java.beans.PropertyChangeEvent pce) + { + if ((Integer)pce.getOldValue() == 1) + { + if (radio.layout != expandedLayout) + { + radio.layout = expandedLayout; + radio.layout.doClick(); + } + } + } + }); + framePanel.setContinuousLayout(false); framePanel.setOneTouchExpandable(false); //.setDividerLocation(0.8); @@ -2120,6 +2148,25 @@ } }); presetpanel.add(candle); + + cLabel shadowShader = GetLabel("icons/shadericons/shadow.png", !Grafreed.NIMBUSLAF); + shadowShader.setToolTipText("Shadow"); + shadowShader.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + diffuseField.setFloat(0.001); + ambientField.setFloat(0.001); + cameraField.setFloat(0.001); + specularField.setFloat(0.001); + fakedepthField.setFloat(0.001); + opacityField.setFloat(0.6); + + materialtouched = true; + applySelf(); + } + }); + presetpanel.add(shadowShader); cGridBag panel = new cGridBag().setVertical(true); @@ -4112,11 +4159,11 @@ public boolean Save(boolean user) { System.err.println("Save"); - //Replace(); + Replace(); cRadio tab = GetCurrentTab(); - Object3D compress = CompressCopy(); // Saved version. No need for "Replace"? + Object3D compress = Duplicate(copy); // Saved version. No need for "Replace"? boolean thesame = false; @@ -4210,7 +4257,7 @@ void CopyChanged() { - Object3D obj = copy.versionlist[copy.versionindex]; + Object3D obj = (Object3D)Grafreed.clone(copy.versionlist[copy.versionindex]); SetUndoStates(); @@ -4363,7 +4410,7 @@ return false; } - copy.versionlist[copy.versionindex] = CompressCopy(); + copy.versionlist[copy.versionindex] = Duplicate(copy); return true; } @@ -4738,7 +4785,7 @@ //System.out.println("stateChanged = " + this); materialtouched = true; - if (e.getSource() == colorField && saturationField.getFloat() == 0.001) + if (Globals.AUTOSATURATE && e.getSource() == colorField && saturationField.getFloat() == 0.001) { saturationField.setFloat(1); } @@ -5882,6 +5929,7 @@ cNumberSlider anisoField; JLabel anisoVLabel; cNumberSlider anisoVField; + JLabel cameraLabel; cNumberSlider cameraField; JLabel selfshadowLabel; @@ -5896,6 +5944,7 @@ cNumberSlider fakedepthField; JLabel shadowbiasLabel; cNumberSlider shadowbiasField; + JLabel bumpLabel; cNumberSlider bumpField; JLabel noiseLabel; diff --git a/Object3D.java b/Object3D.java index adb076e..cc8b73b 100644 --- a/Object3D.java +++ b/Object3D.java @@ -2468,7 +2468,11 @@ else { //((ObjEditor)editWindow).SetupUI2(null); - ((ObjEditor)objectUI).pinButton.setSelected(pinned); + if (objectUI != null) + ((ObjEditor)objectUI).pinButton.setSelected(pinned); + else + //new Exception().printStackTrace(); + System.err.println("objectUI is null"); } } diff --git a/Sphere.java b/Sphere.java index 1358cad..692bffb 100644 --- a/Sphere.java +++ b/Sphere.java @@ -49,7 +49,7 @@ minUDivs = 3; minVDivs = 2; //center = new cVector(); - radius = 1; + radius = 0.5; if (recalc) { retile(); @@ -121,6 +121,11 @@ buffer.append("}\n"); } + double uStretch() + { + return 2; + } + Vertex biparamFunction(double u, double v) { double uAng = LA.toRadians(u * 360); @@ -137,6 +142,8 @@ LA.vecCopy(temp.norm, temp/*.pos*/); LA.vecNormalize(temp.norm); + temp.y += radius; + return temp; } diff --git a/Superellipsoid.java b/Superellipsoid.java index bef4143..a0c9628 100644 --- a/Superellipsoid.java +++ b/Superellipsoid.java @@ -1,6 +1,7 @@ class Superellipsoid extends Biparam /*Sphere*/ implements java.io.Serializable { - + static final long serialVersionUID = -251688182693574378L; + Superellipsoid() { super(); // false); @@ -147,6 +148,11 @@ cVector du; // = new cVector(); cVector dv; // = new cVector(); + double uStretch() + { + return 2; + } + Vertex biparamFunction(double u, double v) { //System.out.println("U = " + u + "; V = " + v); @@ -177,7 +183,7 @@ double sv = signPower(msv, east); double z = radius * cv * cu; double x = radius * cv * su; - double y = radius * sv; + double y = radius * sv + radius; double dcu = DsignPower(mcu, north) * -msu; double dsu = DsignPower(msu, north) * mcu; @@ -315,6 +321,6 @@ double east; double north; - double radius = 1; + double radius = 0.5; private cVector inPnt; } diff --git a/SwitchNode.java b/SwitchNode.java index c6e4dff..96c3568 100644 --- a/SwitchNode.java +++ b/SwitchNode.java @@ -97,7 +97,8 @@ if (bRep == null) { - bRep = (BoundaryRep) Grafreed.clone(switchobject.get(0).bRep); + // The switch mesh will be used to interpolate poaes (maybe). + bRep = (BoundaryRep)Grafreed.clone(switchobject.get(0).bRep); } if (CameraPane.SUPPORT && display.DrawMode() == display.SHADOW) diff --git a/Torus.java b/Torus.java index 4573395..dd1a181 100644 --- a/Torus.java +++ b/Torus.java @@ -56,6 +56,11 @@ buffer.append("}\n"); } + double uStretch() + { + return 6; // Actually 6.28 (I think) + } + Vertex biparamFunction(double u, double v) { if (u == 1) @@ -87,6 +92,9 @@ //temp.pos = tPos; // useless new temp.norm = tNorm; LA.vecNormalize(temp.norm); + + temp.y += minor; + return temp; } diff --git a/cMesh.java b/cMesh.java index a31f4dd..51a76c3 100644 --- a/cMesh.java +++ b/cMesh.java @@ -49,7 +49,7 @@ cMesh(Object3D bRep) { - this("Me:" + bRep.name, bRep); + this("Mesh:" + bRep.name, bRep); } cMesh(String name, Object3D bRep) diff --git a/icons/collapse.png b/icons/collapse.png new file mode 100644 index 0000000..b560489 --- /dev/null +++ b/icons/collapse.png Binary files differ diff --git a/icons/shadericons/shadow.png b/icons/shadericons/shadow.png new file mode 100644 index 0000000..cd7119b --- /dev/null +++ b/icons/shadericons/shadow.png Binary files differ -- Gitblit v1.6.2