/* Copyright 2008-2010 Gephi Authors : Mathieu Bastian <mathieu.bastian@gephi.org> Website : http://www.gephi.org This file is part of Gephi. Gephi is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Gephi is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with Gephi. If not, see <http://www.gnu.org/licenses/>. */ package org.gephi.visualization.swing; import com.sun.opengl.util.GLUT; import java.awt.Component; import java.awt.Cursor; import java.awt.Dimension; import java.text.NumberFormat; import javax.media.opengl.GL; import javax.media.opengl.GLCanvas; import javax.media.opengl.glu.GLU; import javax.swing.JPopupMenu; import javax.swing.ToolTipManager; /** * * @author Mathieu Bastian */ public class GraphCanvas extends GraphDrawableImpl { private GLCanvas glCanvas; private GLUT glut = new GLUT(); private NumberFormat formatter; public GraphCanvas() { super(); formatter = NumberFormat.getNumberInstance(); formatter.setMaximumFractionDigits(1); glCanvas = new GLCanvas(getCaps()); super.initDrawable(glCanvas); glCanvas.setMinimumSize(new Dimension(0, 0)); //Fix Canvas resize Issue //Basic init graphComponent = (Component) glCanvas; graphComponent.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); //False lets the components appear on top of the canvas JPopupMenu.setDefaultLightWeightPopupEnabled(false); ToolTipManager.sharedInstance().setLightWeightPopupEnabled(false); } @Override protected void render3DScene(GL gl, GLU glu) { if (vizController.getVizConfig().isShowFPS()) { gl.glPushMatrix(); gl.glLoadIdentity(); gl.glMatrixMode(gl.GL_PROJECTION); gl.glPushMatrix(); gl.glLoadIdentity(); gl.glGetIntegerv(gl.GL_VIEWPORT, viewport); glu.gluOrtho2D(0, viewport.get(2), viewport.get(3), 0); gl.glDepthFunc(gl.GL_ALWAYS); gl.glColor3i(192, 192, 192); gl.glRasterPos2f(10, 15); String fpsRound = formatter.format(fps); glut.glutBitmapString(GLUT.BITMAP_HELVETICA_10, fpsRound); gl.glDepthFunc(gl.GL_LESS); gl.glPopMatrix(); gl.glMatrixMode(gl.GL_MODELVIEW); gl.glPopMatrix(); } super.render3DScene(gl, glu); } }