From 47745d8ade7238a188f7ab78eaf5e8a269d96fdd Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Tue, 27 Aug 2019 21:41:45 -0400
Subject: [PATCH] Smooth keys + box editor.
---
BiparamEditor.java | 7
ObjEditor.java | 17 +
CameraPane.java | 275 +++++++++++++++++++++++----------
Box.java | 66 ++++++-
Camera.java | 2
Object3D.java | 2
Composite.java | 2
BoxEditor.java | 106 ++++++++++---
8 files changed, 341 insertions(+), 136 deletions(-)
diff --git a/BiparamEditor.java b/BiparamEditor.java
index 0e9f09e..3685e67 100644
--- a/BiparamEditor.java
+++ b/BiparamEditor.java
@@ -72,7 +72,7 @@
int count = 50;
- uDivsField = (cNumberSlider)AddSlider(uvPanel, "U #", biparam.minUDivs, (int)(count*this.biparam.uStretch()) + biparam.minUDivs, biparam.uDivs).getComponent(1);
+ uDivsField = (cNumberSlider)AddSlider(uvPanel, "U #", biparam.minUDivs, (int)(count*this.biparam.uStretch() / 2) + biparam.minUDivs, biparam.uDivs).getComponent(1);
vDivsField = (cNumberSlider)AddSlider(uvPanel, "V #", biparam.minVDivs, (int)(count) + biparam.minVDivs, biparam.vDivs).getComponent(1);
oe.ctrlPanel.add(uvPanel);
@@ -104,8 +104,8 @@
if (biparam instanceof Cone) // ends)
{
oe.ctrlPanel.add(optionCB = new JCheckBox("Close Surface", biparam.endcaps)); //, oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
- optionCB.addItemListener(this);
-oe.ctrlPanel.Return();
+ optionCB.addItemListener(this);
+ oe.ctrlPanel.Return();
//endcaps.setState(!biparam.endcaps);
}
}
@@ -142,6 +142,7 @@
if (//e.getSource() == nameField ||
e.getSource() == optionCB)
{
+ new Exception().printStackTrace();
//System.out.println(e);
applySelf();
//super.applySelf();
diff --git a/Box.java b/Box.java
index b674d00..8459450 100644
--- a/Box.java
+++ b/Box.java
@@ -2,6 +2,8 @@
{
static final long serialVersionUID = 0;
+ boolean open;
+
Box()
{
inPnt = new cVector();
@@ -9,9 +11,6 @@
minima = LA.newVector(-0.5, 0, -0.5);
maxima = LA.newVector(0.5, 1, 0.5);
bRep = new BoundaryRep();
- bRep.redimension(8, 12);
- for (int i=0; i < 12; i++)
- bRep.setFace(i, faces[i]);
recalculate();
CreateMaterial();
@@ -27,11 +26,11 @@
protected void deepCopySelf(Object3D other)
{
super.deepCopySelf(other);
- Box rec = (Box)other;
- rec.minima = new cVector();
- LA.vecCopy(minima, rec.minima);
- rec.maxima = new cVector();
- LA.vecCopy(maxima, rec.maxima);
+// Box rec = (Box)other;
+// rec.minima = new cVector();
+// LA.vecCopy(minima, rec.minima);
+// rec.maxima = new cVector();
+// LA.vecCopy(maxima, rec.maxima);
}
void createEditWindow(GroupEditor callee, boolean newWindow)
@@ -39,12 +38,12 @@
//editWindow = new BoxEditor(this, deepCopy(), callee);
/**/
if (newWindow)
- objectUI = new ObjEditor(this, deepCopy(), callee);
+ objectUI = new BoxEditor(this, deepCopy(), callee);
else
- objectUI = new ObjEditor(this, callee);
+ objectUI = new BoxEditor(this, callee);
editWindow = objectUI.GetEditor();
- if (!newWindow)
- ((ObjEditor)objectUI).SetupUI2(callee);
+// if (!newWindow)
+// ((ObjEditor)objectUI).SetupUI2(callee);
/**/
}
@@ -64,6 +63,19 @@
void recalculate()
{
+ if (open)
+ {
+ bRep.redimension(8, 8);
+ for (int i=0; i < 8; i++)
+ bRep.setFace(i, facesopen[i]);
+ }
+ else
+ {
+ bRep.redimension(8, 12);
+ for (int i=0; i < 12; i++)
+ bRep.setFace(i, faces[i]);
+ }
+
for (int i=0; i < 8; i++)
{
double x = i >= 4 ? maxima.x : minima.x;
@@ -71,7 +83,7 @@
double z = i % 2 != 0 ? maxima.z : minima.z;
bRep.setVertex(i, x, y, z, umap[i], vmap[i]);
}
-
+
// bRep.Trim(false, false);
super.recalculate();
@@ -139,5 +151,33 @@
}
};
+ static int facesopen[][] = {
+ {
+ 0, 1, 3
+ }, {
+ 0, 3, 2
+ }, {
+// 2, 3, 7
+// }, {
+// 2, 7, 6
+// }, {
+ 1, 5, 7
+ }, {
+ 1, 7, 3
+ }, {
+ 4, 6, 7
+ }, {
+ 4, 7, 5
+ }, {
+// 0, 4, 5
+// }, {
+// 0, 5, 1
+// }, {
+ 0, 2, 6
+ }, {
+ 0, 6, 4
+ }
+ };
+
protected cVector inPnt;
}
diff --git a/BoxEditor.java b/BoxEditor.java
index 9860739..7a9962b 100644
--- a/BoxEditor.java
+++ b/BoxEditor.java
@@ -9,31 +9,46 @@
class BoxEditor extends ObjEditor
{
+ BoxEditor(Box inBox, GroupEditor callee)
+ {
+ super(inBox, callee);
+
+ //objEditor = new BiparamEditor(inCone, this, callee);
+ objEditor = callee.GetEditor();
+
+ this.box = inBox;
+
+ SetupUI2(GetEditor());
+ }
+
BoxEditor(Box inBox, Object3D copy, GroupEditor callee)
{
super(inBox, copy, callee);
+
+ new Exception().printStackTrace();
+
box = (Box) copy;
- ctrlPanel.add(minLabel = new JLabel("Minima"), aConstraints);
- aConstraints.gridx += 1;
- aConstraints.fill = GridBagConstraints.HORIZONTAL;
- aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
- ctrlPanel.add(minimaField = new NumberField(), aConstraints);
- aConstraints.gridwidth = 1;
- minimaField.setVector(box.minima);
- aConstraints.gridx = 0;
- aConstraints.gridy += 1;
- aConstraints.fill = GridBagConstraints.NONE;
- ctrlPanel.add(maxLabel = new JLabel("Maxima"), aConstraints);
- aConstraints.gridx += 1;
- aConstraints.fill = GridBagConstraints.HORIZONTAL;
- aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
- ctrlPanel.add(maximaField = new NumberField(), aConstraints);
- aConstraints.gridwidth = 1;
- maximaField.setVector(box.maxima);
- aConstraints.fill = GridBagConstraints.NONE;
- aConstraints.gridx = 0;
- aConstraints.gridy += 1;
+// ctrlPanel.add(minLabel = new JLabel("Minima"), aConstraints);
+// aConstraints.gridx += 1;
+// aConstraints.fill = GridBagConstraints.HORIZONTAL;
+// aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
+// ctrlPanel.add(minimaField = new NumberField(), aConstraints);
+// aConstraints.gridwidth = 1;
+// minimaField.setVector(box.minima);
+// aConstraints.gridx = 0;
+// aConstraints.gridy += 1;
+// aConstraints.fill = GridBagConstraints.NONE;
+// ctrlPanel.add(maxLabel = new JLabel("Maxima"), aConstraints);
+// aConstraints.gridx += 1;
+// aConstraints.fill = GridBagConstraints.HORIZONTAL;
+// aConstraints.gridwidth = ObjEditor.GRIDWIDTH;
+// ctrlPanel.add(maximaField = new NumberField(), aConstraints);
+// aConstraints.gridwidth = 1;
+// maximaField.setVector(box.maxima);
+// aConstraints.fill = GridBagConstraints.NONE;
+// aConstraints.gridx = 0;
+// aConstraints.gridy += 1;
}
void Clear()
@@ -53,17 +68,56 @@
}
*/
+ void SetupUI2(ObjEditor oe)
+ {
+ super.SetupUI2(oe);
+
+ oe.ctrlPanel.add(optionCB = new JCheckBox("Close Surface", box.open)); //, oe.aConstraints, oe.ctrlPanel.getComponentCount()-2);
+ optionCB.addItemListener(this);
+ oe.ctrlPanel.Return();
+ }
+
+ public void itemStateChanged(ItemEvent e)
+ {
+ if (//e.getSource() == nameField ||
+ e.getSource() == optionCB)
+ {
+ box.open = (e.getStateChange() == ItemEvent.SELECTED);
+
+ applySelf();
+
+ objEditor.refreshContents();
+ }
+ else
+ {
+ super.itemStateChanged(e);
+ }
+ }
+
+
+ public void closeUI()
+ {
+ ObjEditor oe = GetEditor();
+
+ oe.ctrlPanel.remove(optionCB);
+
+ super.closeUI();
+ }
+
public void applySelf()
{
// june 2013 super.applySelf();
- minimaField.getVector(box.minima);
- maximaField.getVector(box.maxima);
+// minimaField.getVector(box.minima);
+// maximaField.getVector(box.maxima);
box.recalculate();
}
Box box;
- JLabel minLabel;
- JLabel maxLabel;
- NumberField minimaField;
- NumberField maximaField;
+
+// JLabel minLabel;
+// JLabel maxLabel;
+// NumberField minimaField;
+// NumberField maximaField;
+
+ JCheckBox optionCB;
}
diff --git a/Camera.java b/Camera.java
index 0195701..ba4af41 100644
--- a/Camera.java
+++ b/Camera.java
@@ -328,7 +328,7 @@
location.set(lookAt);
lookAt.set(cStatic.point1);
- //computeTransform();
+ computeTransform();
}
//synchronized // june 2014
diff --git a/CameraPane.java b/CameraPane.java
index 68bd5e4..e039bde 100644
--- a/CameraPane.java
+++ b/CameraPane.java
@@ -8642,7 +8642,9 @@
{
tex.bw = texturecache.texturedata.getWidth();
tex.bh = texturecache.texturedata.getHeight();
- tex.bumpdata = CompressJPEG(CreateBim(((ByteBuffer)texturecache.texturedata.getBuffer()).array(), tex.bw, tex.bh), 0.5f);
+ tex.bumpdata = //CompressJPEG(CreateBim(
+ ((ByteBuffer)texturecache.texturedata.getBuffer()).array();
+ //, tex.bw, tex.bh), 0.5f);
}
}
}
@@ -10813,6 +10815,83 @@
if (DrawMode() == DEFAULT)
{
+ if (manipCamera == lightCamera)
+ {
+// switch (e.getKeyCode())
+// {
+// case DOWN_ARROW:
+// lightCamera.DECAL /= 2;
+// repaint();
+// break;
+// case UP_ARROW:
+// lightCamera.DECAL *= 2;
+// repaint();
+// break;
+// case LEFT_ARROW:
+// lightCamera.SCALE /= 2;
+// repaint();
+// break;
+// case RIGHT_ARROW:
+// lightCamera.SCALE *= 2;
+// repaint();
+// break;
+// default:
+// break;
+ if (keys[DOWN_ARROW])
+ {
+ lightCamera.DECAL /= 2;
+ }
+
+ if (keys[UP_ARROW])
+ {
+ lightCamera.DECAL *= 2;
+ }
+
+ if (keys[LEFT_ARROW])
+ {
+ lightCamera.SCALE /= 2;
+ }
+
+ if (keys[RIGHT_ARROW])
+ {
+ lightCamera.SCALE *= 2;
+ }
+ }
+ else
+ {
+ //pingthread.mute = true;
+
+ boolean keyon = false;
+
+ if (keys[DOWN_ARROW])
+ {
+ GoDown(modifiers);
+ keyon = true;
+ }
+
+ if (keys[UP_ARROW])
+ {
+ GoUp(modifiers);
+ keyon = true;
+ }
+
+ if (keys[LEFT_ARROW])
+ {
+ GoLeft(modifiers);
+ keyon = true;
+ }
+
+ if (keys[RIGHT_ARROW])
+ {
+ GoRight(modifiers);
+ keyon = true;
+ }
+
+ if (keyon)
+ repaint();
+ //pingthread.mute = false;
+ }
+
currentlydrawing = true;
}
@@ -11337,9 +11416,9 @@
gl.glMatrixMode(GL.GL_MODELVIEW);
-gl.glEnable(gl.GL_POLYGON_SMOOTH);
-gl.glHint(gl.GL_POLYGON_SMOOTH_HINT, gl.GL_NICEST);
-gl.glEnable(gl.GL_MULTISAMPLE);
+//gl.glEnable(gl.GL_POLYGON_SMOOTH);
+//gl.glHint(gl.GL_POLYGON_SMOOTH_HINT, gl.GL_NICEST);
+//gl.glEnable(gl.GL_MULTISAMPLE);
} else
{
//gl.glDisable(GL.GL_TEXTURE_2D);
@@ -14521,6 +14600,8 @@
{
boolean jump;
+ boolean mute;
+
// void JumpToTarget()
// {
// StepToTarget(true);
@@ -14535,6 +14616,9 @@
// only one thread!? synchronized
void StepToTarget(boolean jump)
{
+ if (mute)
+ return;
+
tmp.set(targetLookAt);
tmp.sub(manipCamera.lookAt); // june 2014
@@ -14828,6 +14912,9 @@
mouseMode |= ROTATE;
} // TRANSLATE;
+ //System.err.println("lookAt = " + manipCamera.lookAt);
+ //System.err.println("location = " + manipCamera.location);
+
targetLookAt.set(manipCamera.lookAt);
prevX = X = anchorX - 10; // (int)(10*renderCamera.Distance());
@@ -15767,98 +15854,112 @@
}
}
+ boolean keys[] = new boolean[256];
+ int modifiers = 0;
+
public void processKeyEvent(KeyEvent e)
{
switch (e.getID())
{
case KeyEvent.KEY_PRESSED:
- if (!autorepeat)
- {
- //System.out.println("processKeyEvent: " + KeyEvent.getKeyText(e.getKeyCode()));
- keyPressed(e.getKeyChar(), e.getModifiersEx());
- }
- if (manipCamera == lightCamera)
- {
- switch (e.getKeyCode())
- {
- case DOWN_ARROW:
- lightCamera.DECAL /= 2;
- repaint();
- break;
- case UP_ARROW:
- lightCamera.DECAL *= 2;
- repaint();
- break;
- case LEFT_ARROW:
- lightCamera.SCALE /= 2;
- repaint();
- break;
- case RIGHT_ARROW:
- lightCamera.SCALE *= 2;
- repaint();
- break;
- default:
- break;
- }
-
- System.out.println("DECAL = " + lightCamera.DECAL + "; SCALE = " + lightCamera.SCALE);
- } else
- {
- if (true) // !autorepeat)
- {
- boolean reset = true;
-
- switch (e.getKeyCode())
- {
- case DOWN_ARROW:
- GoDown(e.getModifiersEx());
- repaint();
- break;
- case UP_ARROW:
- GoUp(e.getModifiersEx());
- repaint();
- break;
- case LEFT_ARROW:
- GoLeft(e.getModifiersEx());
- repaint();
- break;
- case RIGHT_ARROW:
- GoRight(e.getModifiersEx());
- repaint();
- break;
- default:
- reset = false;
- break;
- }
-
- if (reset)
- {
- autorepeat = true;
-
- targetLookAt.set(manipCamera.lookAt);
- }
- }
- }
+ keys[e.getKeyCode()] = true;
+ modifiers = e.getModifiersEx();
+ keyPressed(e.getKeyChar(), modifiers);
+ //Globals.theRenderer.keyPressed(e.getKeyChar());
+ repaint();
break;
- case KeyEvent.KEY_TYPED:
- break;
+// if (!autorepeat)
+// {
+// //System.out.println("processKeyEvent: " + KeyEvent.getKeyText(e.getKeyCode()));
+// keyPressed(e.getKeyChar(), e.getModifiersEx());
+// }
+// if (manipCamera == lightCamera)
+// {
+// switch (e.getKeyCode())
+// {
+// case DOWN_ARROW:
+// lightCamera.DECAL /= 2;
+// repaint();
+// break;
+// case UP_ARROW:
+// lightCamera.DECAL *= 2;
+// repaint();
+// break;
+// case LEFT_ARROW:
+// lightCamera.SCALE /= 2;
+// repaint();
+// break;
+// case RIGHT_ARROW:
+// lightCamera.SCALE *= 2;
+// repaint();
+// break;
+// default:
+// break;
+// }
+//
+// System.out.println("DECAL = " + lightCamera.DECAL + "; SCALE = " + lightCamera.SCALE);
+// } else
+// {
+// if (true) // !autorepeat)
+// {
+// boolean reset = true;
+//
+// switch (e.getKeyCode())
+// {
+// case DOWN_ARROW:
+// GoDown(e.getModifiersEx());
+// repaint();
+// break;
+// case UP_ARROW:
+// GoUp(e.getModifiersEx());
+// repaint();
+// break;
+// case LEFT_ARROW:
+// GoLeft(e.getModifiersEx());
+// repaint();
+// break;
+// case RIGHT_ARROW:
+// GoRight(e.getModifiersEx());
+// repaint();
+// break;
+// default:
+// reset = false;
+// break;
+// }
+//
+// if (reset)
+// {
+// autorepeat = true;
+//
+// targetLookAt.set(manipCamera.lookAt);
+// }
+// }
+// }
+// break;
+// case KeyEvent.KEY_TYPED:
+// break;
case KeyEvent.KEY_RELEASED:
- {
- switch (e.getKeyCode())
- {
- case DOWN_ARROW:
- case UP_ARROW:
- case LEFT_ARROW:
- case RIGHT_ARROW:
- MODIFIERS &= ~COMMAND;
- autorepeat = false;
- break;
- default:
- break;
- }
+ keys[e.getKeyCode()] = false;
+ modifiers = e.getModifiersEx();
keyReleased(e.getKeyChar(), e.getModifiersEx());
+ repaint();
break;
- }
+// {
+// switch (e.getKeyCode())
+// {
+// case DOWN_ARROW:
+// case UP_ARROW:
+// case LEFT_ARROW:
+// case RIGHT_ARROW:
+// MODIFIERS &= ~COMMAND;
+// autorepeat = false;
+// break;
+// default:
+// break;
+// }
+// keyReleased(e.getKeyChar(), e.getModifiersEx());
+// break;
+// }
default:
break;
}
diff --git a/Composite.java b/Composite.java
index 4aa0f45..c4deff4 100644
--- a/Composite.java
+++ b/Composite.java
@@ -877,7 +877,7 @@
}
catch (Exception e)
{
- System.err.println("FAILED: " + this);
+ // System.err.println("FAILED: " + this);
failedPigment = true;
}
diff --git a/ObjEditor.java b/ObjEditor.java
index 68657fd..5d17d71 100644
--- a/ObjEditor.java
+++ b/ObjEditor.java
@@ -136,10 +136,19 @@
{
BufferedImage image;
- if (name.endsWith("jpg"))
- // Much faster!
- image = new sun.awt.image.codec.JPEGImageDecoderImpl(ObjEditor.class.getClassLoader().getResourceAsStream(name)).decodeAsBufferedImage();
- else
+// if (name.endsWith("jpg"))
+// {
+// try
+// {
+// // Much faster!
+// image = new sun.awt.image.codec.JPEGImageDecoderImpl(ObjEditor.class.getClassLoader().getResourceAsStream(name)).decodeAsBufferedImage();
+// }
+// catch (Exception e)
+// {
+// image = javax.imageio.ImageIO.read(ObjEditor.class.getClassLoader().getResourceAsStream(name));
+// }
+// }
+// else
image = javax.imageio.ImageIO.read(ObjEditor.class.getClassLoader().getResourceAsStream(name));
// if (image.getWidth() > 48 && image.getHeight() > 48)
diff --git a/Object3D.java b/Object3D.java
index b8c4bc0..05d5865 100644
--- a/Object3D.java
+++ b/Object3D.java
@@ -6351,7 +6351,7 @@
}
catch (Exception e)
{
- System.err.println("FAILED: " + this);
+ // System.err.println("FAILED: " + this);
failedPigment = true;
}
--
Gitblit v1.6.2