Update of /cvsroot/octave/octave-forge/extra/jhandles/src/org/octave/graphics In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv15730/src/org/octave/graphics Modified Files: AxesObject.java GL2PS.java GLRenderer.java LineObject.java Renderer.java SimpleTextEngine.java Log Message: further PS output implementation: use 0.5 as default line width + initial text support + load JNI file from jhandles path Index: SimpleTextEngine.java =================================================================== RCS file: /cvsroot/octave/octave-forge/extra/jhandles/src/org/octave/graphics/SimpleTextEngine.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- SimpleTextEngine.java 1 Jul 2007 21:27:15 -0000 1.2 +++ SimpleTextEngine.java 20 Aug 2007 13:59:32 -0000 1.3 @@ -327,6 +327,7 @@ // render to canvas comp.getRenderer().drawBitmap(img, pos, xoff, yoff); + comp.getRenderer().drawText(txt, pos, halign, valign); // return value return new Dimension(r.width, r.height); Index: GLRenderer.java =================================================================== RCS file: /cvsroot/octave/octave-forge/extra/jhandles/src/org/octave/graphics/GLRenderer.java,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -r1.15 -r1.16 --- GLRenderer.java 20 Aug 2007 05:26:54 -0000 1.15 +++ GLRenderer.java 20 Aug 2007 13:59:32 -0000 1.16 @@ -49,6 +49,7 @@ private AxesObject.Scaler sx, sy, sz; private float po = 1.0f; private boolean isGL2PS = false; + private boolean isFirst = false; public GLRenderer(GLAutoDrawable d) { @@ -206,7 +207,7 @@ { setColor(line.LineColor.getColor()); setLineStyle(line.LineStyle.getValue(), false); - gl.glLineWidth(line.LineWidth.floatValue()); + setLineWidth(line.LineWidth.floatValue()); if (z.length == 0) { @@ -257,9 +258,8 @@ gl.glEnd(); } - gl.glDisable(GL.GL_LINE_STIPPLE); - gl.glLineWidth(1.0f); - gl.glLineStipple(1, (short)0xFFFF); + setLineWidth(0.5f); + setLineStyle("-", false); } if (line.Marker.isSet()) @@ -345,6 +345,45 @@ gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 4); } + public void drawText(String txt, double[] pos, int halign, int valign) + { + if (isGL2PS) + { + int mode = GL2PS.GL2PS_TEXT_C; + + switch (valign) + { + case 0: + switch (halign) + { + case 0: mode = GL2PS.GL2PS_TEXT_BL; break; + case 1: mode = GL2PS.GL2PS_TEXT_B; break; + case 2: mode = GL2PS.GL2PS_TEXT_BR; break; + } + break; + case 1: + switch (halign) + { + case 0: mode = GL2PS.GL2PS_TEXT_CL; break; + case 1: mode = GL2PS.GL2PS_TEXT_C; break; + case 2: mode = GL2PS.GL2PS_TEXT_CR; break; + } + break; + case 2: + switch (halign) + { + case 0: mode = GL2PS.GL2PS_TEXT_TL; break; + case 1: mode = GL2PS.GL2PS_TEXT_T; break; + case 2: mode = GL2PS.GL2PS_TEXT_TR; break; + } + break; + } + + gl.glRasterPos3d(pos[0], pos[1], pos[2]); + GL2PS.gl2psTextOpt(txt, "Helvetica", 12, mode, 0); + } + } + private class VertexData { double[] coords; @@ -1670,6 +1709,18 @@ { double zmin = ax.x_zmin, zmax = ax.x_zmax; + if (isGL2PS) + { + if (!isFirst) + GL2PS.gl2psEndViewport(); + isFirst = false; + + int[] viewport = new int[4]; + + gl.glGetIntegerv(GL.GL_VIEWPORT, viewport, 0); + GL2PS.gl2psBeginViewport(viewport); + } + gl.glMatrixMode(GL.GL_MODELVIEW); gl.glLoadIdentity(); gl.glScaled(1, 1, -1); @@ -1697,6 +1748,9 @@ public void clear(Color c) { + if (isGL2PS) + isFirst = true; + gl.glClearColor(c.getRed()/255.0f, c.getGreen()/255.0f, c.getBlue()/255.0f, 1.0f); gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); } @@ -1790,6 +1844,13 @@ } } + public void setLineWidth(float w) + { + gl.glLineWidth(w); + if (isGL2PS) + GL2PS.gl2psLineWidth(w); + } + public void drawQuads(List pts, double zoffset) { Iterator it = pts.iterator(); Index: LineObject.java =================================================================== RCS file: /cvsroot/octave/octave-forge/extra/jhandles/src/org/octave/graphics/LineObject.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- LineObject.java 9 Jul 2007 15:14:36 -0000 1.7 +++ LineObject.java 20 Aug 2007 13:59:32 -0000 1.8 @@ -56,7 +56,7 @@ ZData = new VectorProperty(this, "ZData", (zdata == null ? new Matrix() : zdata), -1); LineColor = new ColorProperty(this, "Color", Color.blue); LineStyle = new LineStyleProperty(this, "LineStyle", "-"); - LineWidth = new DoubleProperty(this, "LineWidth", 1.0); + LineWidth = new DoubleProperty(this, "LineWidth", 0.5); KeyLabel = new StringProperty(this, "KeyLabel", ""); Marker = new MarkerProperty(this, "Marker", "none"); MarkerSize = new DoubleProperty(this, "MarkerSize", 9.0); Index: GL2PS.java =================================================================== RCS file: /cvsroot/octave/octave-forge/extra/jhandles/src/org/octave/graphics/GL2PS.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- GL2PS.java 20 Aug 2007 05:26:54 -0000 1.1 +++ GL2PS.java 20 Aug 2007 13:59:32 -0000 1.2 @@ -4,7 +4,8 @@ { static { - System.loadLibrary("gl2ps_java"); + System.load(System.getProperty("octave.jhandles.path") + java.io.File.separator + + System.mapLibraryName("gl2ps_java")); } final static int GL2PS_MAJOR_VERSION = 1; @@ -71,8 +72,11 @@ String filename); public static native int gl2psEndPage(); public static native int gl2psText(String string, String fontname, int fontsize); - public static native int gl2psTextopt(String string, String fontname, + public static native int gl2psTextOpt(String string, String fontname, int fontsize, int align, float angle); public static native int gl2psEnable(int mode); public static native int gl2psDisable(int mode); + public static native int gl2psBeginViewport(int[] viewport); + public static native int gl2psEndViewport(); + public static native int gl2psLineWidth(float w); } Index: AxesObject.java =================================================================== RCS file: /cvsroot/octave/octave-forge/extra/jhandles/src/org/octave/graphics/AxesObject.java,v retrieving revision 1.27 retrieving revision 1.28 diff -u -d -r1.27 -r1.28 --- AxesObject.java 5 Aug 2007 18:49:28 -0000 1.27 +++ AxesObject.java 20 Aug 2007 13:59:32 -0000 1.28 @@ -192,6 +192,7 @@ RadioProperty YAxisLocation; RadioProperty Layer; BooleanProperty Key; + DoubleProperty LineWidth; public AxesObject(FigureObject fig, boolean init3D) { @@ -287,6 +288,7 @@ Layer = new RadioProperty(this, "Layer", new String[] {"bottom", "top"}, "bottom"); Key = new BooleanProperty(this, "Key", false); Key.setVisible(false); + LineWidth = new DoubleProperty(this, "LineWidth", 0.5); updatePosition(); autoTick(); @@ -823,6 +825,8 @@ // Box r.setLineStyle("-", true); + r.setLineWidth(LineWidth.floatValue()); + if ((boxSet || alwaysDrawBox) && visible) { // X box Index: Renderer.java =================================================================== RCS file: /cvsroot/octave/octave-forge/extra/jhandles/src/org/octave/graphics/Renderer.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- Renderer.java 20 Jun 2007 10:37:20 -0000 1.5 +++ Renderer.java 20 Aug 2007 13:59:32 -0000 1.6 @@ -50,6 +50,8 @@ public void setLineStyle(String s, boolean forceStippling); + public void setLineWidth(float w); + public void end(); public void draw(LineObject line); @@ -60,6 +62,8 @@ boolean useClipping, boolean useZBuffer); public void drawBitmap(BufferedImage img, double[] pos, int xOffset, int yOffset); + + public void drawText(String txt, double[] pos, int halign, int valign); public void draw(PatchObject patch); |