aboutsummaryrefslogtreecommitdiffstats
path: root/demos/MiscDemos/glJavaFontTest1.java
diff options
context:
space:
mode:
Diffstat (limited to 'demos/MiscDemos/glJavaFontTest1.java')
-rw-r--r--demos/MiscDemos/glJavaFontTest1.java120
1 files changed, 120 insertions, 0 deletions
diff --git a/demos/MiscDemos/glJavaFontTest1.java b/demos/MiscDemos/glJavaFontTest1.java
new file mode 100644
index 0000000..78ccd39
--- /dev/null
+++ b/demos/MiscDemos/glJavaFontTest1.java
@@ -0,0 +1,120 @@
+// Font rendering using GL4Java
+// by Pontus Lidman
+// (c) 2000 MathCore AB
+
+import gl4java.awt.*;
+import javax.swing.*;
+import java.awt.Dimension;
+import gl4java.GLContext;
+import gl4java.GLFunc;
+
+import java.awt.Font;
+import java.awt.Shape;
+import java.awt.font.*;
+import java.awt.geom.*;
+
+public class glJavaFontTest1 {
+
+
+ protected class MyCanvas extends GLCanvas {
+
+
+ public void drawString(String s,double x,double y) {
+
+ Font font=new Font("timesroman",Font.PLAIN,12);
+ AffineTransform identity=new AffineTransform();
+ FontRenderContext frc=new FontRenderContext(identity,false,false);
+ GlyphVector g=font.createGlyphVector(frc,s);
+ Shape shp=g.getOutline();
+ FlatteningPathIterator path=new FlatteningPathIterator(shp.getPathIterator(identity),0.05);
+
+ double [] coords=new double[6];
+ int type;
+
+ while (!path.isDone()) {
+ type=path.currentSegment(coords);
+ switch(type) {
+ case PathIterator.SEG_MOVETO:
+ gl.glBegin(GL_LINE_STRIP);
+ gl.glVertex2d(x+coords[0],y+coords[1]);
+ break;
+ case PathIterator.SEG_LINETO:
+ gl.glVertex2d(x+coords[0],y+coords[1]);
+ break;
+ case PathIterator.SEG_CLOSE:
+ gl.glEnd();
+ break;
+ }
+ path.next();
+ }
+ }
+
+ public MyCanvas(int w, int h) {
+ super(w,h);
+ GLContext.gljNativeDebug = false;
+ GLContext.gljClassDebug = false;
+ }
+
+ public void init() {
+ gl.glMatrixMode(GL_PROJECTION);
+ gl.glOrtho(-50,50,50,-50,-50.0,50.0);
+ gl.glMatrixMode(GL_MODELVIEW);
+ glj.gljCheckGL();
+ }
+
+ public void reshape(int w, int h) {
+ Dimension d=new Dimension(w,h);
+ if (!cvsIsInit()) return;
+ if( glj.gljMakeCurrent() == false ) {
+ System.out.println("problem in use() method");
+ return;
+ }
+ setSize(d);
+ gl.glViewport(0,0,w,h);
+ glj.gljCheckGL();
+ glj.gljFree();
+ }
+
+ public void display() {
+ int i;
+
+ if( glj.gljMakeCurrent() == false ) {
+ System.out.println("problem in use() method");
+ return;
+ }
+
+ gl.glPushMatrix();
+ gl.glClear(GL_COLOR_BUFFER_BIT);
+ glu.gluLookAt(0, 0, 20, 0, 0, 0, 0, 1, 0);
+
+ gl.glColor3d(1,1,1);
+ drawString("Hello world!",-40,0);
+
+
+ gl.glPopMatrix();
+ glj.gljSwap();
+ glj.gljCheckGL();
+ glj.gljFree();
+ }
+ }
+
+ protected MyCanvas cvs;
+ protected JFrame frame;
+
+ public glJavaFontTest1() {
+ frame = new JFrame( "OpenGL" );
+ cvs= new MyCanvas(640,480);
+ frame.setSize(640,480);
+ frame.getContentPane().add("Center", cvs);
+ frame.setVisible(true);
+ }
+
+ public static void main(java.lang.String[] args) {
+ try {
+ glJavaFontTest1 g=new glJavaFontTest1();
+ } catch (Throwable exception) {
+ System.err.println("Exception occurred in main()");
+ exception.printStackTrace(System.out);
+ }
+ }
+}