From 8088590686a45e71278f9a52bb9cc37943dc0c37 Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Sun, 23 Jun 2019 08:18:35 -0400
Subject: [PATCH] Full-screen mode.
---
ObjEditor.java | 99 ++++++++++++++++++-
BoundaryRep.java | 2
CameraPane.java | 56 +++++++----
Globals.java | 3
GroupEditor.java | 97 ++++++++++++++++---
Object3D.java | 13 ++
6 files changed, 222 insertions(+), 48 deletions(-)
diff --git a/BoundaryRep.java b/BoundaryRep.java
index 6c09eda..883e363 100644
--- a/BoundaryRep.java
+++ b/BoundaryRep.java
@@ -4155,6 +4155,8 @@
void MergeNormals()
{
+ assert(!trimmed);
+
boolean smooth = Grafreed.smoothmode;
boolean link = Grafreed.linkUV;
Grafreed.smoothmode = true;
diff --git a/CameraPane.java b/CameraPane.java
index aef9761..76ad7dc 100644
--- a/CameraPane.java
+++ b/CameraPane.java
@@ -37,7 +37,6 @@
static boolean[] selectedstack = new boolean[65536];
static int materialdepth = 0;
- static boolean DEBUG = false;
static boolean FRUSTUM = false; // still bogus true; // frustum culling
// camera change fix
@@ -2267,7 +2266,7 @@
void ToggleDebug()
{
- DEBUG ^= true;
+ Globals.DEBUG ^= true;
}
void ToggleLookAt()
@@ -11459,6 +11458,24 @@
static boolean zoomonce = false;
+ void CreateSelectedPoint()
+ {
+ if (selectedpoint == null)
+ {
+ debugpointG = new Sphere();
+ debugpointP = new Sphere();
+ debugpointC = new Sphere();
+ debugpointR = new Sphere();
+
+ selectedpoint = new Superellipsoid();
+
+ for (int i=0; i<8; i++)
+ {
+ debugpoints[i] = new Sphere();
+ }
+ }
+ }
+
void DrawObject(GL gl, boolean draw)
{
//System.out.println("DRAW OBJECT " + mouseDown);
@@ -11539,8 +11556,9 @@
if (DrawMode() == DEFAULT)
{
- if (DEBUG)
+ if (Globals.DEBUG)
{
+ CreateSelectedPoint();
float radius = 0.05f;
if (selectedpoint.radius != radius)
{
@@ -14902,8 +14920,14 @@
RevertCamera();
repaint();
break;
- case 'L':
case 'l':
+ lightMode ^= true;
+ Globals.lighttouched = true;
+ manipCamera = renderCamera = lightMode ? lightCamera : eyeCamera;
+ targetLookAt.set(manipCamera.lookAt);
+ repaint();
+ break;
+ case 'L':
if (lightMode)
{
lightMode = false;
@@ -15050,16 +15074,14 @@
kompactbit = 6;
break;
case ' ':
- lightMode ^= true;
- Globals.lighttouched = true;
- manipCamera = renderCamera = lightMode ? lightCamera : eyeCamera;
- targetLookAt.set(manipCamera.lookAt);
+ ObjEditor.theFrame.ToggleFullScreen();
repaint();
break;
//case '`' :
case ESC:
RENDERPROGRAM += 1;
RENDERPROGRAM %= 3;
+
repaint();
break;
case 'Z':
@@ -17235,23 +17257,15 @@
int AAbuffersize = 0;
//double[] selectedpoint = new double[3];
- static Superellipsoid selectedpoint = new Superellipsoid();
+ static Superellipsoid selectedpoint;
static Sphere previousselectedpoint = null;
- static Sphere debugpointG = new Sphere();
- static Sphere debugpointP = new Sphere();
- static Sphere debugpointC = new Sphere();
- static Sphere debugpointR = new Sphere();
+ static Sphere debugpointG;
+ static Sphere debugpointP;
+ static Sphere debugpointC;
+ static Sphere debugpointR;
static Sphere debugpoints[] = new Sphere[8];
- static
- {
- for (int i=0; i<8; i++)
- {
- debugpoints[i] = new Sphere();
- }
- }
-
static void InitPoints(float radius)
{
for (int i=0; i<8; i++)
diff --git a/Globals.java b/Globals.java
index 3e1e257..3cb946a 100644
--- a/Globals.java
+++ b/Globals.java
@@ -1,7 +1,8 @@
public class Globals
{
- public static boolean ADVANCED = true; //false;
+ public static boolean DEBUG = false;
+ public static boolean ADVANCED = false;
static iCameraPane theRenderer;
diff --git a/GroupEditor.java b/GroupEditor.java
index bae9769..14b61ed 100644
--- a/GroupEditor.java
+++ b/GroupEditor.java
@@ -246,7 +246,7 @@
cameraMenu.add(toggleDebugItem = new CheckboxMenuItem("Debug"));
toggleDebugItem.addItemListener(this);
- toggleDebugItem.setState(CameraPane.DEBUG);
+ toggleDebugItem.setState(Globals.DEBUG);
cameraMenu.add(toggleFrustumItem = new CheckboxMenuItem("Frustum"));
toggleFrustumItem.addItemListener(this);
@@ -535,6 +535,18 @@
void SetupUI2(ObjEditor oe)
{
+ // June 2019
+ if (oe == null)
+ {
+ //super.SetupUI2(this);
+ //return;
+ }
+
+ if (copy != group)
+ {
+ //super.SetupUI2(this);
+ }
+
//new Exception().printStackTrace();
oe.radioPanel = new JPanel(new GridBagLayout());
@@ -565,15 +577,27 @@
*/
//this.AddOptions(oe.toolbarPanel, oe.aConstraints);
- oe.toolbarPanel.add(undoButton = new cButton("Undo", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
+ //oe.toolbarPanel.add(minButton = new cButton("Min", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
+ //minButton.setToolTipText("Minimize window");
+ //minButton.addActionListener(this);
+
+ oe.toolbarPanel.add(maxButton = new cButton("\u271A", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
+ maxButton.setToolTipText("Maximize window");
+ maxButton.addActionListener(this);
+
+ oe.toolbarPanel.add(fullButton = new cButton("\u2b1c", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
+ fullButton.setToolTipText("Full-screen window");
+ fullButton.addActionListener(this);
+
+ oe.toolbarPanel.add(undoButton = new cButton("\u21a9", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
undoButton.setToolTipText("Undo changes");
undoButton.addActionListener(this);
- oe.toolbarPanel.add(redoButton = new cButton("Redo", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
+ oe.toolbarPanel.add(redoButton = new cButton("\u21aa", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
redoButton.setToolTipText("Redo changes");
redoButton.addActionListener(this);
- oe.toolbarPanel.add(saveButton = new cButton("Save", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
+ oe.toolbarPanel.add(saveButton = new cButton("\u21e3", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
saveButton.setToolTipText("Save changes");
saveButton.addActionListener(this);
@@ -581,7 +605,7 @@
liveCB.setToolTipText("Enable animation");
liveCB.addItemListener(this);
- oe.toolbarPanel.add(oneStepButton = new cButton("Step", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
+ oe.toolbarPanel.add(oneStepButton = new cButton("\u29f4", !Grafreed.NIMBUSLAF)); //, oe.aConstraints);
oneStepButton.setToolTipText("Animate one step forward");
oneStepButton.addActionListener(this);
@@ -589,7 +613,7 @@
fastCB.setToolTipText("Fast mode");
fastCB.addItemListener(this);
- oe.toolbarPanel.add(trackCB = new cCheckBox("Track", CameraPane.TRACK)); //, oe.aConstraints);
+ oe.toolbarPanel.add(trackCB = new cCheckBox(":", CameraPane.TRACK)); //, oe.aConstraints);
trackCB.setToolTipText("Enable tracking");
trackCB.addItemListener(this);
@@ -817,6 +841,8 @@
void SetupViews(ObjEditor oe)
{
+ theFrame = this;
+
oe.SetupViews();
System.out.println("SetupViews");
@@ -1978,6 +2004,18 @@
{
DumpObject();
} else
+ if (source == minButton)
+ {
+ Minimize();
+ } else
+ if (source == maxButton)
+ {
+ Maximize();
+ } else
+ if (source == fullButton)
+ {
+ ToggleFullScreen();
+ } else
if (source == undoButton)
{
Undo();
@@ -2899,6 +2937,24 @@
bigThree.ClearUI();
bigThree.add(centralPanel);
bigThree.FlushUI();
+
+ cameraView.requestFocusInWindow();
+
+// refreshContents(true);
+//
+// try
+// {
+// java.awt.Robot bot = new java.awt.Robot();
+// int mask = InputEvent.BUTTON1_MASK;
+// bot.mouseMove(100, 100);
+// bot.mousePress(mask);
+// bot.mouseRelease(mask);
+// }
+// catch (Exception e)
+// {
+//
+// }
+
} else
if (source == threeButton)
{
@@ -2935,6 +2991,8 @@
bigThree.add(centralPanel);
bigThree.add(XYZPanel);
bigThree.FlushUI();
+
+ cameraView.requestFocusInWindow();
} else
if (source == fourButton)
{
@@ -2970,6 +3028,8 @@
bigThree.ClearUI();
bigThree.add(scenePanel);
bigThree.FlushUI();
+
+ cameraView.requestFocusInWindow();
} else
if (source == sixButton)
{
@@ -3006,6 +3066,8 @@
bigThree.add(scenePanel);
bigThree.add(centralPanel);
bigThree.FlushUI();
+
+ cameraView.requestFocusInWindow();
} else
if (source == sevenButton)
{
@@ -3043,6 +3105,8 @@
bigThree.add(centralPanel);
bigThree.add(XYZPanel);
bigThree.FlushUI();
+
+ cameraView.requestFocusInWindow();
} else
if (source == rootButton)
{
@@ -3054,6 +3118,7 @@
EditObject(obj);
}
+ cameraView.requestFocusInWindow();
refreshContents(true);
} else
if (source == closeButton)
@@ -3075,6 +3140,8 @@
break;
}
}
+
+ cameraView.requestFocusInWindow();
refreshContents(true);
} else
if (source == editItem || source == editButton)
@@ -3179,7 +3246,7 @@
}
// fix "+" issue
- group.editWindow = this;
+ //group.editWindow = this;
/*
currentLayout = radio.layout;
@@ -3192,6 +3259,8 @@
//group.parent = null; // ROOT
//group.attributes = -1;
ResetModel();
+
+ cameraView.requestFocusInWindow();
refreshContents(true);
} else if (event.getSource() == editCameraItem)
{
@@ -3215,7 +3284,6 @@
}
boolean useclient = false;
- cRadio radio;
void ToggleRoot()
{
@@ -5219,9 +5287,12 @@
cButton clearpanelButton;
cButton unselectButton;
- cButton saveButton;
+ cButton minButton;
+ cButton maxButton;
+ cButton fullButton;
cButton undoButton;
cButton redoButton;
+ cButton saveButton;
cButton oneStepButton;
cButton screenfitButton;
@@ -5234,14 +5305,6 @@
cButton closeButton;
cButton setsupportButton;
-
- cButton twoButton;
- cButton sixButton;
- cButton threeButton;
- cButton sevenButton;
- cButton fourButton; // full panel
- cButton oneButton; // full XYZ
- //cButton currentLayout;
//
//Composite
diff --git a/ObjEditor.java b/ObjEditor.java
index 877fe87..9be4ae9 100644
--- a/ObjEditor.java
+++ b/ObjEditor.java
@@ -36,6 +36,8 @@
GroupEditor callee;
JFrame frame;
+ static ObjEditor theFrame;
+
// SCRIPT
transient JFrame textpanel = null;
@@ -244,6 +246,7 @@
//localCopy.parent = null;
frame = new JFrame();
+ frame.setUndecorated(true);
objEditor = this;
this.callee = callee;
@@ -583,19 +586,89 @@
}
}
+static GraphicsDevice device = GraphicsEnvironment
+ .getLocalGraphicsEnvironment().getScreenDevices()[0];
+
+ Rectangle keeprect;
+ cRadio radio;
+
+cButton keepButton;
+ cButton twoButton; // Full 3D
+ cButton sixButton;
+ cButton threeButton;
+ cButton sevenButton;
+ cButton fourButton; // full panel
+ cButton oneButton; // full XYZ
+ //cButton currentLayout;
+
+ boolean maximized;
+
+ void Minimize()
+ {
+ frame.setState(Frame.ICONIFIED);
+ }
+
+ void Maximize()
+ {
+ if (maximized)
+ {
+ frame.setBounds(keeprect.x, keeprect.y, keeprect.width, keeprect.height);
+ }
+ else
+ {
+ keeprect = frame.getBounds();
+ Rectangle rect = GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds();
+ Dimension rect2 = frame.getToolkit().getScreenSize();
+ frame.setBounds(0, rect2.height - rect.height, rect.width, rect.height);
+// frame.setState(Frame.MAXIMIZED_BOTH);
+ }
+
+ maximized ^= true;
+ }
+
void ToggleFullScreen()
{
if (CameraPane.FULLSCREEN)
{
- frame.getContentPane().remove(/*"Center",*/bigThree);
- framePanel.add(bigThree);
- frame.getContentPane().add(/*"Center",*/framePanel);
+ device.setFullScreenWindow(null);
+ //frame.setVisible(false);
+// frame.removeNotify();
+// frame.setUndecorated(false);
+// frame.addNotify();
+ //frame.setBounds(keeprect.x, keeprect.y, keeprect.width, keeprect.height);
+
+// X frame.getContentPane().remove(/*"Center",*/bigThree);
+// X framePanel.add(bigThree);
+// X frame.getContentPane().add(/*"Center",*/framePanel);
+ framePanel.setDividerLocation(1);
+
+ //frame.setVisible(true);
+ radio.layout = keepButton;
+ //theFrame = null;
+ keepButton = null;
+ radio.layout.doClick();
+
} else
{
- frame.getContentPane().remove(/*"Center",*/framePanel);
- framePanel.remove(bigThree);
- frame.getContentPane().add(/*"Center",*/bigThree);
+ keepButton = radio.layout;
+ //keeprect = frame.getBounds();
+// frame.setBounds(0, 0, frame.getToolkit().getScreenSize().width,
+// frame.getToolkit().getScreenSize().height);
+ //frame.setVisible(false);
+ device.setFullScreenWindow(frame);
+// frame.removeNotify();
+// frame.setUndecorated(true);
+// frame.addNotify();
+// X frame.getContentPane().remove(/*"Center",*/framePanel);
+// X framePanel.remove(bigThree);
+// X frame.getContentPane().add(/*"Center",*/bigThree);
+ framePanel.setDividerLocation(0);
+
+ radio.layout = twoButton;
+ radio.layout.doClick();
+ //frame.setVisible(true);
}
+
cameraView.ToggleFullScreen();
}
@@ -947,7 +1020,7 @@
rewindCB.setToolTipText("Rewind animation");
randomCB = AddCheckBox(setupPanel2, "Rand", copy.random);
- randomCB.setToolTipText("Rewind or Go back and forth randomly");
+ randomCB.setToolTipText("Randomly Rewind or Go back and forth");
if (Globals.ADVANCED)
{
@@ -1184,8 +1257,11 @@
//worldPanel.setName("World");
centralPanel = new cGridBag();
centralPanel.preferredWidth = 20;
- timelinePanel = new JPanel(new BorderLayout());
- timelineMenubar = new timeflow.app.TimeflowApp().TimeFlowWindow(timelinePanel);
+
+ if (Globals.ADVANCED)
+ {
+ timelinePanel = new JPanel(new BorderLayout());
+ timelineMenubar = new timeflow.app.TimeflowApp().TimeFlowWindow(timelinePanel);
cameraPanel = new JSplitPane(JSplitPane.VERTICAL_SPLIT, cameraView, timelinePanel);
cameraPanel.setContinuousLayout(true);
@@ -1194,7 +1270,10 @@
// cameraPanel.setDividerSize(9);
cameraPanel.setResizeWeight(1.0);
+ }
+
centralPanel.add(cameraView);
+ centralPanel.setFocusable(true);
//frame.setJMenuBar(timelineMenubar);
//centralPanel.add(timelinePanel);
@@ -1392,6 +1471,8 @@
frame.setSize(1280, 860);
frame.setVisible(true);
+ cameraView.requestFocusInWindow();
+
gridPanel.setDividerLocation(1.0);
frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
diff --git a/Object3D.java b/Object3D.java
index 7b52765..a5ae9d9 100644
--- a/Object3D.java
+++ b/Object3D.java
@@ -2387,6 +2387,10 @@
}
*/
}
+ else
+ {
+ //((ObjEditor)editWindow).SetupUI2(null);
+ }
}
void createEditWindow(GroupEditor callee, boolean newWindow) //, boolean root)
@@ -6361,6 +6365,11 @@
return;
}
+ if (dontselect)
+ {
+ //bRep.GenerateNormalsMINE();
+ }
+
display.DrawGeometry(bRep, flipV, selectmode);
} else // catch (Error e)
{
@@ -7796,6 +7805,10 @@
editWindow = null;
} // ?
}
+ else
+ {
+ //editWindow.closeUI();
+ }
}
boolean root; // patch for edit windows
--
Gitblit v1.6.2