this.configuration = config;\r
this.setLayout(new BorderLayout());\r
\r
+ /**\r
+ * This achieves late GL initialization, so that if there is a crash\r
+ * it does not occur until user selects 3D view, so as to not render\r
+ * the application unusable.\r
+ */\r
addHierarchyListener(new HierarchyListener() {\r
@Override\r
public void hierarchyChanged(HierarchyEvent e) {\r
+ log.verbose("GL - Calling initGLCanvas on hierarchy change");\r
initGLCanvas();\r
RocketFigure3d.this.removeHierarchyListener(this);\r
}\r
log.debug("Initializing RocketFigure3D OpenGL Canvas");\r
try {\r
log.debug("Setting up GL capabilities...");\r
+ \r
+ log.verbose("GL - Getting Default Profile");\r
GLProfile glp = GLProfile.getDefault();\r
+ \r
+ log.verbose("GL - creating GLCapabilities");\r
GLCapabilities caps = new GLCapabilities(glp);\r
+ \r
+ log.verbose("GL - setSampleBuffers");\r
caps.setSampleBuffers(true);\r
+ \r
+ log.verbose("GL - setNumSamples");\r
caps.setNumSamples(6);\r
+ \r
+ log.verbose("GL - setStencilBits");\r
caps.setStencilBits(1);\r
\r
- log.debug("Creating OpenGL Canvas");\r
+ log.verbose("GL - Creating Canvas");\r
canvas = new GLCanvas(caps);\r
\r
+ log.verbose("GL - Registering as GLEventListener on canvas");\r
canvas.addGLEventListener(this);\r
+ \r
+ log.verbose("GL - Adding canvas to this JPanel");\r
this.add(canvas, BorderLayout.CENTER);\r
\r
+ log.verbose("GL - Setting up mouse listeners");\r
setupMouseListeners();\r
+ \r
+ log.verbose("GL - Rasterizine Carets"); //reticulating splines?\r
rasterizeCarets();\r
\r
} catch (Throwable t) {\r
\r
@Override\r
public void dispose(GLAutoDrawable drawable) {\r
+ log.verbose("GL - dispose() called");\r
}\r
\r
@Override\r
public void init(GLAutoDrawable drawable) {\r
+ log.verbose("GL - init() called");\r
rr.init(drawable);\r
\r
GL2 gl = drawable.getGL().getGL2();\r
\r
extrasOverlay = new Overlay(drawable);\r
caretOverlay = new Overlay(drawable);\r
+ \r
+ log.verbose("GL - init() complete");\r
}\r
\r
@Override\r
public void reshape(GLAutoDrawable drawable, int x, int y, int w, int h) {\r
+ log.verbose("GL - reshape() called");\r
GL2 gl = drawable.getGL().getGL2();\r
GLU glu = new GLU();\r
\r
gl.glMatrixMode(GLMatrixFunc.GL_MODELVIEW);\r
\r
redrawExtras = true;\r
+ log.verbose("GL - reshape() complete");\r
}\r
\r
@SuppressWarnings("unused")\r
}\r
\r
private void setupView(GL2 gl, GLU glu) {\r
+ log.verbose("GL - setupView() called");\r
gl.glLoadIdentity();\r
\r
gl.glLightfv(GLLightingFunc.GL_LIGHT1, GLLightingFunc.GL_POSITION,\r
gl.glScaled(-1,1,1);\r
gl.glTranslated(-1,0,0);\r
gl.glMatrixMode(GLMatrixFunc.GL_MODELVIEW);\r
+ \r
+ log.verbose("GL - setupView() complete");\r
}\r
\r
/**\r
}\r
\r
private void internalRepaint(){\r
+ log.verbose("GL - internalRepaint() called");\r
super.repaint();\r
if (canvas != null)\r
canvas.display();\r
+ log.verbose("GL - internalRepaint() complete");\r
}\r
\r
@Override\r
public void repaint() {\r
+ log.verbose("GL - repaint() called");\r
redrawExtras = true;\r
internalRepaint();\r
+ log.verbose("GL - repaint() complete");\r
}\r
\r
private Set<RocketComponent> selection = new HashSet<RocketComponent>();\r
// ///////////// Extra methods\r
\r
private Coordinate project(Coordinate c, GL2 gl, GLU glu) {\r
+ log.verbose("GL - project() called");\r
double[] mvmatrix = new double[16];\r
double[] projmatrix = new double[16];\r
int[] viewport = new int[4];\r
double out[] = new double[4];\r
glu.gluProject(c.x, c.y, c.z, mvmatrix, 0, projmatrix, 0, viewport, 0,\r
out, 0);\r
-\r
+ \r
+ log.verbose("GL - peoject() complete");\r
return new Coordinate(out[0], out[1], out[2]);\r
+ \r
}\r
\r
private Coordinate cp = new Coordinate(0, 0, 0);\r