diff options
Diffstat (limited to 'src/jogl/classes/com/sun/opengl')
97 files changed, 0 insertions, 42746 deletions
diff --git a/src/jogl/classes/com/sun/opengl/util/AWTAnimatorImpl.java b/src/jogl/classes/com/sun/opengl/util/AWTAnimatorImpl.java deleted file mode 100644 index 9809e44d2..000000000 --- a/src/jogl/classes/com/sun/opengl/util/AWTAnimatorImpl.java +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - */ - -package com.sun.opengl.util; - -import java.awt.Component; -import java.awt.EventQueue; -import java.awt.Rectangle; -import java.util.*; -import javax.swing.*; - -import javax.media.opengl.*; - -/** Abstraction to factor out AWT dependencies from the Animator's - implementation in a way that still allows the FPSAnimator to pick - up this behavior if desired. */ - -class AWTAnimatorImpl extends AnimatorImpl { - // For efficient rendering of Swing components, in particular when - // they overlap one another - private List lightweights = new ArrayList(); - private Map repaintManagers = new IdentityHashMap(); - private Map dirtyRegions = new IdentityHashMap(); - - public void display(Animator animator, - boolean ignoreExceptions, - boolean printExceptions) { - Iterator iter = animator.drawableIterator(); - while (iter.hasNext()) { - GLAutoDrawable drawable = (GLAutoDrawable) iter.next(); - if (drawable instanceof JComponent) { - // Lightweight components need a more efficient drawing - // scheme than simply forcing repainting of each one in - // turn since drawing one can force another one to be - // drawn in turn - lightweights.add(drawable); - } else { - try { - drawable.display(); - } catch (RuntimeException e) { - if (ignoreExceptions) { - if (printExceptions) { - e.printStackTrace(); - } - } else { - throw(e); - } - } - } - } - if (lightweights.size() > 0) { - try { - SwingUtilities.invokeAndWait(drawWithRepaintManagerRunnable); - } catch (Exception e) { - e.printStackTrace(); - } - lightweights.clear(); - } - } - - // Uses RepaintManager APIs to implement more efficient redrawing of - // the Swing widgets we're animating - private Runnable drawWithRepaintManagerRunnable = new Runnable() { - public void run() { - for (Iterator iter = lightweights.iterator(); iter.hasNext(); ) { - JComponent comp = (JComponent) iter.next(); - RepaintManager rm = RepaintManager.currentManager(comp); - rm.markCompletelyDirty(comp); - repaintManagers.put(rm, rm); - - // RepaintManagers don't currently optimize the case of - // overlapping sibling components. If we have two - // JInternalFrames in a JDesktopPane, the redraw of the - // bottom one will cause the top one to be redrawn as - // well. The top one will then be redrawn separately. In - // order to optimize this case we need to compute the union - // of all of the dirty regions on a particular JComponent if - // optimized drawing isn't enabled for it. - - // Walk up the hierarchy trying to find a non-optimizable - // ancestor - Rectangle visible = comp.getVisibleRect(); - int x = visible.x; - int y = visible.y; - while (comp != null) { - x += comp.getX(); - y += comp.getY(); - Component c = comp.getParent(); - if ((c == null) || (!(c instanceof JComponent))) { - comp = null; - } else { - comp = (JComponent) c; - if (!comp.isOptimizedDrawingEnabled()) { - rm = RepaintManager.currentManager(comp); - repaintManagers.put(rm, rm); - // Need to dirty this region - Rectangle dirty = (Rectangle) dirtyRegions.get(comp); - if (dirty == null) { - dirty = new Rectangle(x, y, visible.width, visible.height); - dirtyRegions.put(comp, dirty); - } else { - // Compute union with already dirty region - // Note we could compute multiple non-overlapping - // regions: might want to do that in the future - // (prob. need more complex algorithm -- dynamic - // programming?) - dirty.add(new Rectangle(x, y, visible.width, visible.height)); - } - } - } - } - } - - // Dirty any needed regions on non-optimizable components - for (Iterator iter = dirtyRegions.keySet().iterator(); iter.hasNext(); ) { - JComponent comp = (JComponent) iter.next(); - Rectangle rect = (Rectangle) dirtyRegions.get(comp); - RepaintManager rm = RepaintManager.currentManager(comp); - rm.addDirtyRegion(comp, rect.x, rect.y, rect.width, rect.height); - } - - // Draw all dirty regions - for (Iterator iter = repaintManagers.keySet().iterator(); iter.hasNext(); ) { - ((RepaintManager) iter.next()).paintDirtyRegions(); - } - dirtyRegions.clear(); - repaintManagers.clear(); - } - }; - - public boolean skipWaitForStop(Thread thread) { - return ((Thread.currentThread() == thread) || EventQueue.isDispatchThread()); - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/Animator.java b/src/jogl/classes/com/sun/opengl/util/Animator.java deleted file mode 100755 index 1d4b832e8..000000000 --- a/src/jogl/classes/com/sun/opengl/util/Animator.java +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util; - -import java.util.*; - -import javax.media.opengl.*; - -import com.sun.opengl.impl.Debug; - -/** <P> An Animator can be attached to one or more {@link - GLAutoDrawable}s to drive their display() methods in a loop. </P> - - <P> The Animator class creates a background thread in which the - calls to <code>display()</code> are performed. After each drawable - has been redrawn, a brief pause is performed to avoid swamping the - CPU, unless {@link #setRunAsFastAsPossible} has been called. </P> -*/ - -public class Animator { - protected static final boolean DEBUG = Debug.debug("Animator"); - - private volatile ArrayList/*<GLAutoDrawable>*/ drawables = new ArrayList(); - private AnimatorImpl impl; - private Runnable runnable; - private boolean runAsFastAsPossible; - protected ThreadGroup threadGroup; - protected Thread thread; - protected volatile boolean shouldStop; - protected boolean ignoreExceptions; - protected boolean printExceptions; - - /** Creates a new, empty Animator. */ - public Animator(ThreadGroup tg) { - - if(GLProfile.isAWTJOGLAvailable()) { - try { - impl = (AnimatorImpl) Class.forName("com.sun.opengl.util.awt.AWTAnimatorImpl").newInstance(); - } catch (Exception e) { } - } - if(null==impl) { - impl = new AnimatorImpl(); - } - threadGroup = tg; - - if(DEBUG) { - System.out.println("Animator created, ThreadGroup: "+threadGroup); - } - } - - public Animator() { - this((ThreadGroup)null); - } - - /** Creates a new Animator for a particular drawable. */ - public Animator(GLAutoDrawable drawable) { - this((ThreadGroup)null); - add(drawable); - } - - /** Creates a new Animator for a particular drawable. */ - public Animator(ThreadGroup tg, GLAutoDrawable drawable) { - this(tg); - add(drawable); - } - - /** Adds a drawable to the list managed by this Animator. */ - public synchronized void add(GLAutoDrawable drawable) { - ArrayList newList = (ArrayList) drawables.clone(); - newList.add(drawable); - drawables = newList; - notifyAll(); - } - - /** Removes a drawable from the list managed by this Animator. */ - public synchronized void remove(GLAutoDrawable drawable) { - ArrayList newList = (ArrayList) drawables.clone(); - newList.remove(drawable); - drawables = newList; - } - - /** Returns an iterator over the drawables managed by this - Animator. */ - public Iterator/*<GLAutoDrawable>*/ drawableIterator() { - return drawables.iterator(); - } - - /** Sets a flag causing this Animator to ignore exceptions produced - while redrawing the drawables. By default this flag is set to - false, causing any exception thrown to halt the Animator. */ - public void setIgnoreExceptions(boolean ignoreExceptions) { - this.ignoreExceptions = ignoreExceptions; - } - - /** Sets a flag indicating that when exceptions are being ignored by - this Animator (see {@link #setIgnoreExceptions}), to print the - exceptions' stack traces for diagnostic information. Defaults to - false. */ - public void setPrintExceptions(boolean printExceptions) { - this.printExceptions = printExceptions; - } - - /** Sets a flag in this Animator indicating that it is to run as - fast as possible. By default there is a brief pause in the - animation loop which prevents the CPU from getting swamped. - This method may not have an effect on subclasses. */ - public final void setRunAsFastAsPossible(boolean runFast) { - runAsFastAsPossible = runFast; - } - - /** Called every frame to cause redrawing of all of the - GLAutoDrawables this Animator manages. Subclasses should call - this to get the most optimized painting behavior for the set of - components this Animator manages, in particular when multiple - lightweight widgets are continually being redrawn. */ - protected void display() { - impl.display(this, ignoreExceptions, printExceptions); - } - - class MainLoop implements Runnable { - public void run() { - try { - if(DEBUG) { - System.out.println("Animator started: "+Thread.currentThread()); - } - while (!shouldStop) { - // Don't consume CPU unless there is work to be done - if (drawables.size() == 0) { - synchronized (Animator.this) { - while (drawables.size() == 0 && !shouldStop) { - try { - Animator.this.wait(); - } catch (InterruptedException e) { - } - } - } - } - display(); - if (!runAsFastAsPossible) { - // Avoid swamping the CPU - Thread.yield(); - } - } - if(DEBUG) { - System.out.println("Animator stopped: "+Thread.currentThread()); - } - } finally { - shouldStop = false; - synchronized (Animator.this) { - thread = null; - Animator.this.notify(); - } - } - } - } - - /** Starts this animator. */ - public synchronized void start() { - if (thread != null) { - throw new GLException("Already started"); - } - if (runnable == null) { - runnable = new MainLoop(); - } - if(null==threadGroup) { - thread = new Thread(runnable); - } else { - thread = new Thread(threadGroup, runnable); - } - thread.start(); - } - - /** Indicates whether this animator is currently running. This - should only be used as a heuristic to applications because in - some circumstances the Animator may be in the process of - shutting down and this method will still return true. */ - public synchronized boolean isAnimating() { - return (thread != null); - } - - /** Stops this animator. In most situations this method blocks until - completion, except when called from the animation thread itself - or in some cases from an implementation-internal thread like the - AWT event queue thread. */ - public synchronized void stop() { - shouldStop = true; - notifyAll(); - - // It's hard to tell whether the thread which calls stop() has - // dependencies on the Animator's internal thread. Currently we - // use a couple of heuristics to determine whether we should do - // the blocking wait(). - if (impl.skipWaitForStop(thread)) { - return; - } - - while (shouldStop && thread != null) { - try { - wait(); - } catch (InterruptedException ie) { - } - } - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/AnimatorImpl.java b/src/jogl/classes/com/sun/opengl/util/AnimatorImpl.java deleted file mode 100644 index 8bba4b71a..000000000 --- a/src/jogl/classes/com/sun/opengl/util/AnimatorImpl.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - */ - -package com.sun.opengl.util; - -import java.util.*; -import javax.media.opengl.*; - -/** Abstraction to factor out AWT dependencies from the Animator's - implementation in a way that still allows the FPSAnimator to pick - up this behavior if desired. */ - -class AnimatorImpl { - public void display(Animator animator, - boolean ignoreExceptions, - boolean printExceptions) { - Iterator iter = animator.drawableIterator(); - while (iter.hasNext()) { - GLAutoDrawable drawable = (GLAutoDrawable) iter.next(); - try { - drawable.display(); - } catch (RuntimeException e) { - if (ignoreExceptions) { - if (printExceptions) { - e.printStackTrace(); - } - } else { - throw(e); - } - } - } - } - - public boolean skipWaitForStop(Thread thread) { - return (Thread.currentThread() == thread); - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/BufferUtil.java.javame_cdc_fp b/src/jogl/classes/com/sun/opengl/util/BufferUtil.java.javame_cdc_fp deleted file mode 100755 index 40f035514..000000000 --- a/src/jogl/classes/com/sun/opengl/util/BufferUtil.java.javame_cdc_fp +++ /dev/null @@ -1,449 +0,0 @@ -/* - * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util; - -import javax.media.opengl.GL; -import javax.media.opengl.GL2; -import javax.media.opengl.GL2ES2; -import javax.media.opengl.GLException; -import javax.media.opengl.GLProfile; - -import java.nio.*; -import java.util.*; - -import java.lang.reflect.*; - -/** Utility routines for dealing with direct buffers. */ - -public class BufferUtil { - public static final int SIZEOF_BYTE = 1; - public static final int SIZEOF_SHORT = 2; - public static final int SIZEOF_INT = 4; - public static final int SIZEOF_FLOAT = 4; - public static final int SIZEOF_LONG = -1; // not supported - public static final int SIZEOF_DOUBLE = -1; // not supported - - public static final int sizeOfGLType(int glType) { - switch (glType) { - case GL.GL_UNSIGNED_BYTE: - return SIZEOF_BYTE; - case GL.GL_BYTE: - return SIZEOF_BYTE; - case GL.GL_UNSIGNED_SHORT: - return SIZEOF_SHORT; - case GL.GL_SHORT: - return SIZEOF_SHORT; - case GL.GL_FLOAT: - return SIZEOF_FLOAT; - case GL.GL_FIXED: - return SIZEOF_INT; - case GL2ES2.GL_INT: - return SIZEOF_INT; - case GL2ES2.GL_UNSIGNED_INT: - return SIZEOF_INT; - case GL2.GL_DOUBLE: - return SIZEOF_DOUBLE; - } - return -1; - } - - public static final int sizeOfBufferElem(Buffer buffer) { - if (buffer == null) { - return 0; - } - if (buffer instanceof ByteBuffer) { - return BufferUtil.SIZEOF_BYTE; - } else if (buffer instanceof IntBuffer) { - return BufferUtil.SIZEOF_INT; - } else if (buffer instanceof ShortBuffer) { - return BufferUtil.SIZEOF_SHORT; - } else if (buffer instanceof FloatBuffer) { - return BufferUtil.SIZEOF_FLOAT; - } - throw new RuntimeException("Unexpected buffer type " + - buffer.getClass().getName()); - } - - private BufferUtil() {} - - //---------------------------------------------------------------------- - // Allocation routines - // - - public static final Buffer newGLBuffer(int glType, int numElements) { - switch (glType) { - case GL.GL_UNSIGNED_BYTE: - case GL.GL_BYTE: - return newByteBuffer(numElements); - case GL.GL_UNSIGNED_SHORT: - case GL.GL_SHORT: - return newShortBuffer(numElements); - case GL.GL_FLOAT: - return newFloatBuffer(numElements); - case GL.GL_FIXED: - case GL2ES2.GL_INT: - case GL2ES2.GL_UNSIGNED_INT: - return newIntBuffer(numElements); - } - return null; - } - - public static final Buffer sliceGLBuffer(ByteBuffer parent, int bytePos, int byteLen, int glType) { - if(parent==null || byteLen==0) return null; - parent.position(bytePos); - parent.limit(bytePos + byteLen); - - switch (glType) { - case GL.GL_UNSIGNED_BYTE: - case GL.GL_BYTE: - return parent.slice(); - case GL.GL_UNSIGNED_SHORT: - case GL.GL_SHORT: - return parent.asShortBuffer(); - case GL.GL_FLOAT: - return parent.asFloatBuffer(); - case GL.GL_FIXED: - case GL2ES2.GL_INT: - case GL2ES2.GL_UNSIGNED_INT: - return parent.asIntBuffer(); - } - return null; - } - - /** Allocates a new direct ByteBuffer with the specified number of - elements. The returned buffer will have its byte order set to - the host platform's native byte order. */ - public static ByteBuffer newByteBuffer(int numElements) { - ByteBuffer bb = ByteBuffer.allocateDirect(numElements); - nativeOrder(bb); - return bb; - } - - public static ByteBuffer newByteBuffer(byte[] values, int offset, int len) { - ByteBuffer bb = newByteBuffer(len); - bb.put(values, offset, len); - bb.rewind(); - return bb; - } - - public static ByteBuffer newByteBuffer(byte[] values, int offset) { - return newByteBuffer(values, offset, values.length-offset); - } - - public static ByteBuffer newByteBuffer(byte[] values) { - return newByteBuffer(values, 0); - } - - /** Allocates a new direct FloatBuffer with the specified number of - elements. The returned buffer will have its byte order set to - the host platform's native byte order. */ - public static FloatBuffer newFloatBuffer(int numElements) { - ByteBuffer bb = newByteBuffer(numElements * SIZEOF_FLOAT); - return bb.asFloatBuffer(); - } - - public static FloatBuffer newFloatBuffer(float[] values, int offset, int len) { - FloatBuffer bb = newFloatBuffer(len); - bb.put(values, offset, len); - bb.rewind(); - return bb; - } - - public static FloatBuffer newFloatBuffer(float[] values, int offset) { - return newFloatBuffer(values, 0, values.length-offset); - } - - public static FloatBuffer newFloatBuffer(float[] values) { - return newFloatBuffer(values, 0); - } - - /** Allocates a new direct IntBuffer with the specified number of - elements. The returned buffer will have its byte order set to - the host platform's native byte order. */ - public static IntBuffer newIntBuffer(int numElements) { - ByteBuffer bb = newByteBuffer(numElements * SIZEOF_INT); - return bb.asIntBuffer(); - } - - public static IntBuffer newIntBuffer(int[] values, int offset, int len) { - IntBuffer bb = newIntBuffer(len); - bb.put(values, offset, len); - bb.rewind(); - return bb; - } - - public static IntBuffer newIntBuffer(int[] values, int offset) { - return newIntBuffer(values, 0, values.length-offset); - } - - public static IntBuffer newIntBuffer(int[] values) { - return newIntBuffer(values, 0); - } - - - /** Allocates a new direct ShortBuffer with the specified number of - elements. The returned buffer will have its byte order set to - the host platform's native byte order. */ - public static ShortBuffer newShortBuffer(int numElements) { - ByteBuffer bb = newByteBuffer(numElements * SIZEOF_SHORT); - return bb.asShortBuffer(); - } - - public static ShortBuffer newShortBuffer(short[] values, int offset, int len) { - ShortBuffer bb = newShortBuffer(len); - bb.put(values, offset, len); - bb.rewind(); - return bb; - } - - public static ShortBuffer newShortBuffer(short[] values, int offset) { - return newShortBuffer(values, 0, values.length-offset); - } - - public static ShortBuffer newShortBuffer(short[] values) { - return newShortBuffer(values, 0); - } - - - //---------------------------------------------------------------------- - // Copy routines (type-to-type) - // - - /** Copies the <i>remaining</i> elements (as defined by - <code>limit() - position()</code>) in the passed ByteBuffer into - a newly-allocated direct ByteBuffer. The returned buffer will - have its byte order set to the host platform's native byte - order. The position of the newly-allocated buffer will be zero, - and the position of the passed buffer is unchanged (though its - mark is changed). */ - public static ByteBuffer copyByteBuffer(ByteBuffer orig) { - ByteBuffer dest = newByteBuffer(orig.remaining()); - dest.put(orig); - dest.rewind(); - return dest; - } - - /** Copies the <i>remaining</i> elements (as defined by - <code>limit() - position()</code>) in the passed FloatBuffer - into a newly-allocated direct FloatBuffer. The returned buffer - will have its byte order set to the host platform's native byte - order. The position of the newly-allocated buffer will be zero, - and the position of the passed buffer is unchanged (though its - mark is changed). */ - public static FloatBuffer copyFloatBuffer(FloatBuffer orig) { - return copyFloatBufferAsByteBuffer(orig).asFloatBuffer(); - } - - /** Copies the <i>remaining</i> elements (as defined by - <code>limit() - position()</code>) in the passed IntBuffer - into a newly-allocated direct IntBuffer. The returned buffer - will have its byte order set to the host platform's native byte - order. The position of the newly-allocated buffer will be zero, - and the position of the passed buffer is unchanged (though its - mark is changed). */ - public static IntBuffer copyIntBuffer(IntBuffer orig) { - return copyIntBufferAsByteBuffer(orig).asIntBuffer(); - } - - /** Copies the <i>remaining</i> elements (as defined by - <code>limit() - position()</code>) in the passed ShortBuffer - into a newly-allocated direct ShortBuffer. The returned buffer - will have its byte order set to the host platform's native byte - order. The position of the newly-allocated buffer will be zero, - and the position of the passed buffer is unchanged (though its - mark is changed). */ - public static ShortBuffer copyShortBuffer(ShortBuffer orig) { - return copyShortBufferAsByteBuffer(orig).asShortBuffer(); - } - - //---------------------------------------------------------------------- - // Copy routines (type-to-ByteBuffer) - // - - /** Copies the <i>remaining</i> elements (as defined by - <code>limit() - position()</code>) in the passed FloatBuffer - into a newly-allocated direct ByteBuffer. The returned buffer - will have its byte order set to the host platform's native byte - order. The position of the newly-allocated buffer will be zero, - and the position of the passed buffer is unchanged (though its - mark is changed). */ - public static ByteBuffer copyFloatBufferAsByteBuffer(FloatBuffer orig) { - ByteBuffer dest = newByteBuffer(orig.remaining() * SIZEOF_FLOAT); - dest.asFloatBuffer().put(orig); - dest.rewind(); - return dest; - } - - /** Copies the <i>remaining</i> elements (as defined by - <code>limit() - position()</code>) in the passed IntBuffer into - a newly-allocated direct ByteBuffer. The returned buffer will - have its byte order set to the host platform's native byte - order. The position of the newly-allocated buffer will be zero, - and the position of the passed buffer is unchanged (though its - mark is changed). */ - public static ByteBuffer copyIntBufferAsByteBuffer(IntBuffer orig) { - ByteBuffer dest = newByteBuffer(orig.remaining() * SIZEOF_INT); - dest.asIntBuffer().put(orig); - dest.rewind(); - return dest; - } - - /** Copies the <i>remaining</i> elements (as defined by - <code>limit() - position()</code>) in the passed ShortBuffer - into a newly-allocated direct ByteBuffer. The returned buffer - will have its byte order set to the host platform's native byte - order. The position of the newly-allocated buffer will be zero, - and the position of the passed buffer is unchanged (though its - mark is changed). */ - public static ByteBuffer copyShortBufferAsByteBuffer(ShortBuffer orig) { - ByteBuffer dest = newByteBuffer(orig.remaining() * SIZEOF_SHORT); - dest.asShortBuffer().put(orig); - dest.rewind(); - return dest; - } - - //---------------------------------------------------------------------- - // Conversion routines - // - - public final static float[] getFloatArray(double[] source) { - int i=source.length; - float[] dest = new float[i--]; - while(i>=0) { dest[i]=(float)source[i]; i--; } - return dest; - } - - public static ByteBuffer nativeOrder(ByteBuffer buf) { - if (!isCDCFP) { - try { - if (byteOrderClass == null) { - byteOrderClass = Class.forName("java.nio.ByteOrder"); - orderMethod = ByteBuffer.class.getMethod("order", new Class[] { byteOrderClass }); - Method nativeOrderMethod = byteOrderClass.getMethod("nativeOrder", null); - nativeOrderObject = nativeOrderMethod.invoke(null, null); - } - } catch (Throwable t) { - // Must be running on CDC / FP - isCDCFP = true; - } - - if (!isCDCFP) { - try { - orderMethod.invoke(buf, new Object[] { nativeOrderObject }); - } catch (Throwable t) { - } - } - } - return buf; - } - - //---------------------------------------------------------------------- - // Convenient GL put methods with generic target Buffer - // - public static void put(Buffer dest, Buffer v) { - if((dest instanceof ByteBuffer) && (v instanceof ByteBuffer)) { - ((ByteBuffer)dest).put((ByteBuffer)v); - } else if((dest instanceof ShortBuffer) && (v instanceof ShortBuffer)) { - ((ShortBuffer)dest).put((ShortBuffer)v); - } else if((dest instanceof IntBuffer) && (v instanceof IntBuffer)) { - ((IntBuffer)dest).put((IntBuffer)v); - } else if((dest instanceof FloatBuffer) && (v instanceof FloatBuffer)) { - ((FloatBuffer)dest).put((FloatBuffer)v); - } else { - throw new GLException("Incompatible Buffer classes: dest = "+dest.getClass().getName() + ", src = " + v.getClass().getName()); - } - } - - public static void putb(Buffer dest, byte v) { - if(dest instanceof ByteBuffer) { - ((ByteBuffer)dest).put(v); - } else if(dest instanceof ShortBuffer) { - ((ShortBuffer)dest).put((short)v); - } else if(dest instanceof IntBuffer) { - ((IntBuffer)dest).put((int)v); - } else { - throw new GLException("Byte doesn't match Buffer Class: "+dest); - } - } - - public static void puts(Buffer dest, short v) { - if(dest instanceof ShortBuffer) { - ((ShortBuffer)dest).put(v); - } else if(dest instanceof IntBuffer) { - ((IntBuffer)dest).put((int)v); - } else { - throw new GLException("Short doesn't match Buffer Class: "+dest); - } - } - - public static void puti(Buffer dest, int v) { - if(dest instanceof IntBuffer) { - ((IntBuffer)dest).put(v); - } else { - throw new GLException("Integer doesn't match Buffer Class: "+dest); - } - } - - public static void putx(Buffer dest, int v) { - puti(dest, v); - } - - public static void putf(Buffer dest, float v) { - if(dest instanceof FloatBuffer) { - ((FloatBuffer)dest).put(v); - } else if(dest instanceof IntBuffer) { - ((IntBuffer)dest).put(FixedPoint.toFixed(v)); - } else { - throw new GLException("Float doesn't match Buffer Class: "+dest); - } - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - // NOTE that this work must be done reflectively at the present time - // because this code must compile and run correctly on both CDC/FP and J2SE - private static boolean isCDCFP; - private static Class byteOrderClass; - private static Object nativeOrderObject; - private static Method orderMethod; - -} diff --git a/src/jogl/classes/com/sun/opengl/util/BufferUtil.java.javase b/src/jogl/classes/com/sun/opengl/util/BufferUtil.java.javase deleted file mode 100755 index d02f3d15f..000000000 --- a/src/jogl/classes/com/sun/opengl/util/BufferUtil.java.javase +++ /dev/null @@ -1,499 +0,0 @@ -/* - * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util; - -import javax.media.opengl.GL; -import javax.media.opengl.GL2; -import javax.media.opengl.GL2ES2; -import javax.media.opengl.GLException; -import javax.media.opengl.GLProfile; - -import java.nio.*; -import java.util.*; - -import java.lang.reflect.*; - -/** Utility routines for dealing with direct buffers. */ - -public class BufferUtil { - public static final int SIZEOF_BYTE = 1; - public static final int SIZEOF_SHORT = 2; - public static final int SIZEOF_INT = 4; - public static final int SIZEOF_FLOAT = 4; - public static final int SIZEOF_LONG = 8; - public static final int SIZEOF_DOUBLE = 8; - - public static final int sizeOfGLType(int glType) { - switch (glType) { - case GL.GL_UNSIGNED_BYTE: - return SIZEOF_BYTE; - case GL.GL_BYTE: - return SIZEOF_BYTE; - case GL.GL_UNSIGNED_SHORT: - return SIZEOF_SHORT; - case GL.GL_SHORT: - return SIZEOF_SHORT; - case GL.GL_FLOAT: - return SIZEOF_FLOAT; - case GL.GL_FIXED: - return SIZEOF_INT; - case GL2ES2.GL_INT: - return SIZEOF_INT; - case GL2ES2.GL_UNSIGNED_INT: - return SIZEOF_INT; - case GL2.GL_DOUBLE: - return SIZEOF_DOUBLE; - } - return -1; - } - - public static final int sizeOfBufferElem(Buffer buffer) { - if (buffer == null) { - return 0; - } - if (buffer instanceof ByteBuffer) { - return BufferUtil.SIZEOF_BYTE; - } else if (buffer instanceof IntBuffer) { - return BufferUtil.SIZEOF_INT; - } else if (buffer instanceof ShortBuffer) { - return BufferUtil.SIZEOF_SHORT; - } else if (buffer instanceof FloatBuffer) { - return BufferUtil.SIZEOF_FLOAT; - } else if (buffer instanceof DoubleBuffer) { - return BufferUtil.SIZEOF_DOUBLE; - } - throw new RuntimeException("Unexpected buffer type " + - buffer.getClass().getName()); - } - - private BufferUtil() {} - - //---------------------------------------------------------------------- - // Allocation routines - // - - public static final Buffer newGLBuffer(int glType, int numElements) { - switch (glType) { - case GL.GL_UNSIGNED_BYTE: - case GL.GL_BYTE: - return newByteBuffer(numElements); - case GL.GL_UNSIGNED_SHORT: - case GL.GL_SHORT: - return newShortBuffer(numElements); - case GL.GL_FLOAT: - return newFloatBuffer(numElements); - case GL.GL_FIXED: - case GL2ES2.GL_INT: - case GL2ES2.GL_UNSIGNED_INT: - return newIntBuffer(numElements); - case GL2.GL_DOUBLE: - return newDoubleBuffer(numElements); - } - return null; - } - - public static final Buffer sliceGLBuffer(ByteBuffer parent, int bytePos, int byteLen, int glType) { - if(parent==null || byteLen==0) return null; - parent.position(bytePos); - parent.limit(bytePos + byteLen); - - switch (glType) { - case GL.GL_UNSIGNED_BYTE: - case GL.GL_BYTE: - return parent.slice(); - case GL.GL_UNSIGNED_SHORT: - case GL.GL_SHORT: - return parent.asShortBuffer(); - case GL.GL_FLOAT: - return parent.asFloatBuffer(); - case GL.GL_FIXED: - case GL2ES2.GL_INT: - case GL2ES2.GL_UNSIGNED_INT: - return parent.asIntBuffer(); - case GL2.GL_DOUBLE: - return parent.asDoubleBuffer(); - } - return null; - } - - /** Allocates a new direct ByteBuffer with the specified number of - elements. The returned buffer will have its byte order set to - the host platform's native byte order. */ - public static ByteBuffer newByteBuffer(int numElements) { - ByteBuffer bb = ByteBuffer.allocateDirect(numElements); - nativeOrder(bb); - return bb; - } - - public static ByteBuffer newByteBuffer(byte[] values, int offset, int len) { - ByteBuffer bb = newByteBuffer(len); - bb.put(values, offset, len); - bb.rewind(); - return bb; - } - - public static ByteBuffer newByteBuffer(byte[] values, int offset) { - return newByteBuffer(values, offset, values.length-offset); - } - - public static ByteBuffer newByteBuffer(byte[] values) { - return newByteBuffer(values, 0); - } - - - /** Allocates a new direct DoubleBuffer with the specified number of - elements. The returned buffer will have its byte order set to - the host platform's native byte order. */ - public static DoubleBuffer newDoubleBuffer(int numElements) { - ByteBuffer bb = newByteBuffer(numElements * SIZEOF_DOUBLE); - return bb.asDoubleBuffer(); - } - - public static DoubleBuffer newDoubleBuffer(double[] values, int offset) { - int len = values.length-offset; - DoubleBuffer bb = newDoubleBuffer(len); - bb.put(values, offset, len); - bb.rewind(); - return bb; - } - - public static DoubleBuffer newDoubleBuffer(double[] values) { - return newDoubleBuffer(values, 0); - } - - - /** Allocates a new direct FloatBuffer with the specified number of - elements. The returned buffer will have its byte order set to - the host platform's native byte order. */ - public static FloatBuffer newFloatBuffer(int numElements) { - ByteBuffer bb = newByteBuffer(numElements * SIZEOF_FLOAT); - return bb.asFloatBuffer(); - } - - public static FloatBuffer newFloatBuffer(float[] values, int offset, int len) { - FloatBuffer bb = newFloatBuffer(len); - bb.put(values, offset, len); - bb.rewind(); - return bb; - } - - public static FloatBuffer newFloatBuffer(float[] values, int offset) { - return newFloatBuffer(values, 0, values.length-offset); - } - - public static FloatBuffer newFloatBuffer(float[] values) { - return newFloatBuffer(values, 0); - } - - - /** Allocates a new direct IntBuffer with the specified number of - elements. The returned buffer will have its byte order set to - the host platform's native byte order. */ - public static IntBuffer newIntBuffer(int numElements) { - ByteBuffer bb = newByteBuffer(numElements * SIZEOF_INT); - return bb.asIntBuffer(); - } - - public static IntBuffer newIntBuffer(int[] values, int offset, int len) { - IntBuffer bb = newIntBuffer(len); - bb.put(values, offset, len); - bb.rewind(); - return bb; - } - - public static IntBuffer newIntBuffer(int[] values, int offset) { - return newIntBuffer(values, 0, values.length-offset); - } - - public static IntBuffer newIntBuffer(int[] values) { - return newIntBuffer(values, 0); - } - - /** Allocates a new direct LongBuffer with the specified number of - elements. The returned buffer will have its byte order set to - the host platform's native byte order. */ - public static LongBuffer newLongBuffer(int numElements) { - ByteBuffer bb = newByteBuffer(numElements * SIZEOF_LONG); - return bb.asLongBuffer(); - } - - /** Allocates a new direct ShortBuffer with the specified number of - elements. The returned buffer will have its byte order set to - the host platform's native byte order. */ - public static ShortBuffer newShortBuffer(int numElements) { - ByteBuffer bb = newByteBuffer(numElements * SIZEOF_SHORT); - return bb.asShortBuffer(); - } - - public static ShortBuffer newShortBuffer(short[] values, int offset, int len) { - ShortBuffer bb = newShortBuffer(len); - bb.put(values, offset, len); - bb.rewind(); - return bb; - } - - public static ShortBuffer newShortBuffer(short[] values, int offset) { - return newShortBuffer(values, 0, values.length-offset); - } - - public static ShortBuffer newShortBuffer(short[] values) { - return newShortBuffer(values, 0); - } - - //---------------------------------------------------------------------- - // Copy routines (type-to-type) - // - - /** Copies the <i>remaining</i> elements (as defined by - <code>limit() - position()</code>) in the passed ByteBuffer into - a newly-allocated direct ByteBuffer. The returned buffer will - have its byte order set to the host platform's native byte - order. The position of the newly-allocated buffer will be zero, - and the position of the passed buffer is unchanged (though its - mark is changed). */ - public static ByteBuffer copyByteBuffer(ByteBuffer orig) { - ByteBuffer dest = newByteBuffer(orig.remaining()); - dest.put(orig); - dest.rewind(); - return dest; - } - - /** Copies the <i>remaining</i> elements (as defined by - <code>limit() - position()</code>) in the passed FloatBuffer - into a newly-allocated direct FloatBuffer. The returned buffer - will have its byte order set to the host platform's native byte - order. The position of the newly-allocated buffer will be zero, - and the position of the passed buffer is unchanged (though its - mark is changed). */ - public static FloatBuffer copyFloatBuffer(FloatBuffer orig) { - return copyFloatBufferAsByteBuffer(orig).asFloatBuffer(); - } - - /** Copies the <i>remaining</i> elements (as defined by - <code>limit() - position()</code>) in the passed IntBuffer - into a newly-allocated direct IntBuffer. The returned buffer - will have its byte order set to the host platform's native byte - order. The position of the newly-allocated buffer will be zero, - and the position of the passed buffer is unchanged (though its - mark is changed). */ - public static IntBuffer copyIntBuffer(IntBuffer orig) { - return copyIntBufferAsByteBuffer(orig).asIntBuffer(); - } - - /** Copies the <i>remaining</i> elements (as defined by - <code>limit() - position()</code>) in the passed ShortBuffer - into a newly-allocated direct ShortBuffer. The returned buffer - will have its byte order set to the host platform's native byte - order. The position of the newly-allocated buffer will be zero, - and the position of the passed buffer is unchanged (though its - mark is changed). */ - public static ShortBuffer copyShortBuffer(ShortBuffer orig) { - return copyShortBufferAsByteBuffer(orig).asShortBuffer(); - } - - //---------------------------------------------------------------------- - // Copy routines (type-to-ByteBuffer) - // - - /** Copies the <i>remaining</i> elements (as defined by - <code>limit() - position()</code>) in the passed FloatBuffer - into a newly-allocated direct ByteBuffer. The returned buffer - will have its byte order set to the host platform's native byte - order. The position of the newly-allocated buffer will be zero, - and the position of the passed buffer is unchanged (though its - mark is changed). */ - public static ByteBuffer copyFloatBufferAsByteBuffer(FloatBuffer orig) { - ByteBuffer dest = newByteBuffer(orig.remaining() * SIZEOF_FLOAT); - dest.asFloatBuffer().put(orig); - dest.rewind(); - return dest; - } - - /** Copies the <i>remaining</i> elements (as defined by - <code>limit() - position()</code>) in the passed IntBuffer into - a newly-allocated direct ByteBuffer. The returned buffer will - have its byte order set to the host platform's native byte - order. The position of the newly-allocated buffer will be zero, - and the position of the passed buffer is unchanged (though its - mark is changed). */ - public static ByteBuffer copyIntBufferAsByteBuffer(IntBuffer orig) { - ByteBuffer dest = newByteBuffer(orig.remaining() * SIZEOF_INT); - dest.asIntBuffer().put(orig); - dest.rewind(); - return dest; - } - - /** Copies the <i>remaining</i> elements (as defined by - <code>limit() - position()</code>) in the passed ShortBuffer - into a newly-allocated direct ByteBuffer. The returned buffer - will have its byte order set to the host platform's native byte - order. The position of the newly-allocated buffer will be zero, - and the position of the passed buffer is unchanged (though its - mark is changed). */ - public static ByteBuffer copyShortBufferAsByteBuffer(ShortBuffer orig) { - ByteBuffer dest = newByteBuffer(orig.remaining() * SIZEOF_SHORT); - dest.asShortBuffer().put(orig); - dest.rewind(); - return dest; - } - - //---------------------------------------------------------------------- - // Conversion routines - // - - public final static float[] getFloatArray(double[] source) { - int i=source.length; - float[] dest = new float[i--]; - while(i>=0) { dest[i]=(float)source[i]; i--; } - return dest; - } - - public final static FloatBuffer getFloatBuffer(DoubleBuffer source) { - source.rewind(); - FloatBuffer dest = BufferUtil.newFloatBuffer(source.limit()); - while(source.hasRemaining()) { dest.put((float)source.get()); } - return dest; - } - - public static ByteBuffer nativeOrder(ByteBuffer buf) { - if (!isCDCFP) { - try { - if (byteOrderClass == null) { - byteOrderClass = Class.forName("java.nio.ByteOrder"); - orderMethod = ByteBuffer.class.getMethod("order", new Class[] { byteOrderClass }); - Method nativeOrderMethod = byteOrderClass.getMethod("nativeOrder", null); - nativeOrderObject = nativeOrderMethod.invoke(null, null); - } - } catch (Throwable t) { - // Must be running on CDC / FP - isCDCFP = true; - } - - if (!isCDCFP) { - try { - orderMethod.invoke(buf, new Object[] { nativeOrderObject }); - } catch (Throwable t) { - } - } - } - return buf; - } - - //---------------------------------------------------------------------- - // Convenient GL put methods with generic target Buffer - // - public static void put(Buffer dest, Buffer v) { - if((dest instanceof ByteBuffer) && (v instanceof ByteBuffer)) { - ((ByteBuffer)dest).put((ByteBuffer)v); - } else if((dest instanceof ShortBuffer) && (v instanceof ShortBuffer)) { - ((ShortBuffer)dest).put((ShortBuffer)v); - } else if((dest instanceof IntBuffer) && (v instanceof IntBuffer)) { - ((IntBuffer)dest).put((IntBuffer)v); - } else if((dest instanceof FloatBuffer) && (v instanceof FloatBuffer)) { - ((FloatBuffer)dest).put((FloatBuffer)v); - } else { - throw new GLException("Incompatible Buffer classes: dest = "+dest.getClass().getName() + ", src = " + v.getClass().getName()); - } - } - - public static void putb(Buffer dest, byte v) { - if(dest instanceof ByteBuffer) { - ((ByteBuffer)dest).put(v); - } else if(dest instanceof ShortBuffer) { - ((ShortBuffer)dest).put((short)v); - } else if(dest instanceof IntBuffer) { - ((IntBuffer)dest).put((int)v); - } else { - throw new GLException("Byte doesn't match Buffer Class: "+dest); - } - } - - public static void puts(Buffer dest, short v) { - if(dest instanceof ShortBuffer) { - ((ShortBuffer)dest).put(v); - } else if(dest instanceof IntBuffer) { - ((IntBuffer)dest).put((int)v); - } else { - throw new GLException("Short doesn't match Buffer Class: "+dest); - } - } - - public static void puti(Buffer dest, int v) { - if(dest instanceof IntBuffer) { - ((IntBuffer)dest).put(v); - } else { - throw new GLException("Integer doesn't match Buffer Class: "+dest); - } - } - - public static void putx(Buffer dest, int v) { - puti(dest, v); - } - - public static void putf(Buffer dest, float v) { - if(dest instanceof FloatBuffer) { - ((FloatBuffer)dest).put(v); - } else if(dest instanceof IntBuffer) { - ((IntBuffer)dest).put(FixedPoint.toFixed(v)); - } else { - throw new GLException("Float doesn't match Buffer Class: "+dest); - } - } - - public static void putd(Buffer dest, double v) { - if(dest instanceof FloatBuffer) { - ((FloatBuffer)dest).put((float)v); - } else { - throw new GLException("Double doesn't match Buffer Class: "+dest); - } - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - // NOTE that this work must be done reflectively at the present time - // because this code must compile and run correctly on both CDC/FP and J2SE - private static boolean isCDCFP; - private static Class byteOrderClass; - private static Object nativeOrderObject; - private static Method orderMethod; - -} diff --git a/src/jogl/classes/com/sun/opengl/util/FBObject.java b/src/jogl/classes/com/sun/opengl/util/FBObject.java deleted file mode 100755 index 84b79dff4..000000000 --- a/src/jogl/classes/com/sun/opengl/util/FBObject.java +++ /dev/null @@ -1,263 +0,0 @@ -/* - * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -package com.sun.opengl.util; - -import javax.media.opengl.*; - -public class FBObject { - private int width, height, attr; - private int fb, fbo_tex, depth_rb, stencil_rb, vStatus; - private int texInternalFormat, texDataFormat, texDataType; - - public static final int ATTR_DEPTH = 1 << 0; - public static final int ATTR_STENCIL = 1 << 1; - - public FBObject(int width, int height, int attributes) { - this.width = width; - this.height = height; - this.attr = attributes; - } - - - public boolean validateStatus(GL gl) { - vStatus = getStatus(gl, fb); - switch(vStatus) { - case GL.GL_FRAMEBUFFER_COMPLETE: - return true; - case GL.GL_FRAMEBUFFER_UNSUPPORTED: - case GL.GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: - case GL.GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: - case GL.GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS: - case GL.GL_FRAMEBUFFER_INCOMPLETE_FORMATS: - //case GL2.GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER: - //case GL2.GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER: - //case GL2.GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT: - case 0: - default: - return false; - } - } - - public static int getStatus(GL gl, int fb) { - if(!gl.glIsFramebuffer(fb)) { - return -1; - } - return gl.glCheckFramebufferStatus(gl.GL_FRAMEBUFFER); - //return gl.glCheckFramebufferStatus(fb); - } - - public String getStatusString() { - return getStatusString(vStatus); - } - - public static String getStatusString(int fbStatus) { - switch(fbStatus) { - case -1: - return "NOT A FBO"; - case GL.GL_FRAMEBUFFER_COMPLETE: - return "OK"; - case GL.GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: - return("GL FBO: incomplete,incomplete attachment\n"); - case GL.GL_FRAMEBUFFER_UNSUPPORTED: - return("GL FBO: Unsupported framebuffer format"); - case GL.GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: - return("GL FBO: incomplete,missing attachment"); - case GL.GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS: - return("GL FBO: incomplete,attached images must have same dimensions"); - case GL.GL_FRAMEBUFFER_INCOMPLETE_FORMATS: - return("GL FBO: incomplete,attached images must have same format"); - /* - case GL2.GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER: - return("GL FBO: incomplete,missing draw buffer"); - case GL2.GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER: - return("GL FBO: incomplete,missing read buffer"); - case GL2.GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT: - return("GL FBO: incomplete, duplicate attachment"); - */ - case 0: - return("GL FBO: incomplete, implementation fault"); - default: - return("GL FBO: incomplete, implementation ERROR"); - } - } - - public void init(GL gl) { - int textureInternalFormat, textureDataFormat, textureDataType; - - if(gl.isGL2()) { - textureInternalFormat=GL.GL_RGBA8; - textureDataFormat=GL2.GL_BGRA; - textureDataType=GL2.GL_UNSIGNED_INT_8_8_8_8_REV; - } else if(gl.isGLES()) { - textureInternalFormat=GL.GL_RGBA; - textureDataFormat=GL.GL_RGBA; - textureDataType=GL.GL_UNSIGNED_BYTE; - } else { - textureInternalFormat=GL.GL_RGB; - textureDataFormat=GL.GL_RGB; - textureDataType=GL.GL_UNSIGNED_BYTE; - } - init(gl, textureInternalFormat, textureDataFormat, textureDataType); - } - - public void init(GL gl, int textureInternalFormat, int textureDataFormat, int textureDataType) { - texInternalFormat=textureInternalFormat; - texDataFormat=textureDataFormat; - texDataType=textureDataType; - - // generate fbo .. - int name[] = new int[1]; - - gl.glGenFramebuffers(1, name, 0); - fb = name[0]; - System.out.println("fb: "+fb); - - gl.glGenTextures(1, name, 0); - fbo_tex = name[0]; - System.out.println("fbo_tex: "+fbo_tex); - - if(0!=(attr&ATTR_DEPTH)) { - gl.glGenRenderbuffers(1, name, 0); - depth_rb = name[0]; - System.out.println("depth_rb: "+depth_rb); - } else { - depth_rb = 0; - } - if(0!=(attr&ATTR_STENCIL)) { - gl.glGenRenderbuffers(1, name, 0); - stencil_rb = name[0]; - System.out.println("stencil_rb: "+stencil_rb); - } else { - stencil_rb = 0; - } - - // bind fbo .. - gl.glBindFramebuffer(GL.GL_FRAMEBUFFER, fb); - - gl.glBindTexture(GL.GL_TEXTURE_2D, fbo_tex); - gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, texInternalFormat, width, height, 0, - texDataFormat, texDataType, null); - gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST); - gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST); - //gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_S, GL2.GL_CLAMP); - //gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_T, GL2.GL_CLAMP); - - - // Set up the color buffer for use as a renderable texture: - gl.glFramebufferTexture2D(GL.GL_FRAMEBUFFER, - GL.GL_COLOR_ATTACHMENT0, - GL.GL_TEXTURE_2D, fbo_tex, 0); - - if(depth_rb!=0) { - // Initialize the depth buffer: - gl.glBindRenderbuffer(GL.GL_RENDERBUFFER, depth_rb); - gl.glRenderbufferStorage(GL.GL_RENDERBUFFER, - GL.GL_DEPTH_COMPONENT16, width, height); - // Set up the depth buffer attachment: - gl.glFramebufferRenderbuffer(GL.GL_FRAMEBUFFER, - GL.GL_DEPTH_ATTACHMENT, - GL.GL_RENDERBUFFER, depth_rb); - } - - if(stencil_rb!=0) { - // Initialize the stencil buffer: - gl.glBindRenderbuffer(GL.GL_RENDERBUFFER, stencil_rb); - gl.glRenderbufferStorage(GL.GL_RENDERBUFFER, - GL.GL_STENCIL_INDEX8, width, height); - gl.glFramebufferRenderbuffer(GL.GL_FRAMEBUFFER, - GL.GL_STENCIL_ATTACHMENT, - GL.GL_RENDERBUFFER, stencil_rb); - } - - // Check the FBO for completeness - if(validateStatus(gl)) { - System.out.println("Framebuffer " + fb + " is complete"); - } else { - System.out.println("Framebuffer " + fb + " is incomplete: status = 0x" + Integer.toHexString(vStatus) + - " : " + getStatusString()); - } - - unbind(gl); - } - - public void destroy(GL gl) { - unbind(gl); - - int name[] = new int[1]; - - if(0!=stencil_rb) { - name[0] = stencil_rb; - gl.glDeleteRenderbuffers(1, name, 0); - stencil_rb = 0; - } - if(0!=depth_rb) { - name[0] = depth_rb; - gl.glDeleteRenderbuffers(1, name, 0); - depth_rb=0; - } - if(0!=fbo_tex) { - name[0] = fbo_tex; - gl.glDeleteTextures(1, name, 0); - fbo_tex = 0; - } - if(0!=fb) { - name[0] = fb; - gl.glDeleteFramebuffers(1, name, 0); - fb = 0; - } - } - - public void bind(GL gl) { - gl.glBindTexture(GL.GL_TEXTURE_2D, fbo_tex); - gl.glBindFramebuffer(GL.GL_FRAMEBUFFER, fb); - } - - public void unbind(GL gl) { - gl.glBindTexture(GL.GL_TEXTURE_2D, 0); - gl.glBindFramebuffer(GL.GL_FRAMEBUFFER, 0); - } - - public void use(GL gl) { - gl.glBindTexture(GL.GL_TEXTURE_2D, 0); - gl.glBindFramebuffer(GL.GL_FRAMEBUFFER, 0); - gl.glBindTexture(GL.GL_TEXTURE_2D, fbo_tex); // to use it .. - } - - public int getFBName() { - return fb; - } - public int getTextureName() { - return fbo_tex; - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/FPSAnimator.java b/src/jogl/classes/com/sun/opengl/util/FPSAnimator.java deleted file mode 100755 index 290de89d6..000000000 --- a/src/jogl/classes/com/sun/opengl/util/FPSAnimator.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util; - -import java.util.*; -import javax.media.opengl.*; - -/** An Animator subclass which attempts to achieve a target - frames-per-second rate to avoid using all CPU time. The target FPS - is only an estimate and is not guaranteed. */ - -public class FPSAnimator extends Animator { - private Timer timer; - private int fps; - private boolean scheduleAtFixedRate; - - /** Creates an FPSAnimator with a given target frames-per-second - value. Equivalent to <code>FPSAnimator(null, fps)</code>. */ - public FPSAnimator(int fps) { - this(null, fps); - } - - /** Creates an FPSAnimator with a given target frames-per-second - value and a flag indicating whether to use fixed-rate - scheduling. Equivalent to <code>FPSAnimator(null, fps, - scheduleAtFixedRate)</code>. */ - public FPSAnimator(int fps, boolean scheduleAtFixedRate) { - this(null, fps, scheduleAtFixedRate); - } - - /** Creates an FPSAnimator with a given target frames-per-second - value and an initial drawable to animate. Equivalent to - <code>FPSAnimator(null, fps, false)</code>. */ - public FPSAnimator(GLAutoDrawable drawable, int fps) { - this(drawable, fps, false); - } - - /** Creates an FPSAnimator with a given target frames-per-second - value, an initial drawable to animate, and a flag indicating - whether to use fixed-rate scheduling. */ - public FPSAnimator(GLAutoDrawable drawable, int fps, boolean scheduleAtFixedRate) { - this.fps = fps; - if (drawable != null) { - add(drawable); - } - this.scheduleAtFixedRate = scheduleAtFixedRate; - } - - /** Starts this FPSAnimator. */ - public synchronized void start() { - if (timer != null) { - throw new GLException("Already started"); - } - timer = new Timer(); - long delay = (long) (1000.0f / (float) fps); - TimerTask task = new TimerTask() { - public void run() { - display(); - } - }; - if (scheduleAtFixedRate) { - timer.scheduleAtFixedRate(task, 0, delay); - } else { - timer.schedule(task, 0, delay); - } - } - - /** Indicates whether this FPSAnimator is currently running. This - should only be used as a heuristic to applications because in - some circumstances the FPSAnimator may be in the process of - shutting down and this method will still return true. */ - public synchronized boolean isAnimating() { - return (timer != null); - } - - /** Stops this FPSAnimator. Due to the implementation of the - FPSAnimator it is not guaranteed that the FPSAnimator will be - completely stopped by the time this method returns. */ - public synchronized void stop() { - if (timer == null) { - throw new GLException("Already stopped"); - } - timer.cancel(); - timer = null; - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/FileUtil.java b/src/jogl/classes/com/sun/opengl/util/FileUtil.java deleted file mode 100755 index 84b846853..000000000 --- a/src/jogl/classes/com/sun/opengl/util/FileUtil.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util; - -import java.io.*; - -/** Utilities for dealing with files. */ - -public class FileUtil { - private FileUtil() {} - - /** - * Returns the lowercase suffix of the given file name (the text - * after the last '.' in the file name). Returns null if the file - * name has no suffix. Only operates on the given file name; - * performs no I/O operations. - * - * @param file name of the file - * @return lowercase suffix of the file name - * @throws NullPointerException if file is null - */ - - public static String getFileSuffix(File file) { - return getFileSuffix(file.getName()); - } - - /** - * Returns the lowercase suffix of the given file name (the text - * after the last '.' in the file name). Returns null if the file - * name has no suffix. Only operates on the given file name; - * performs no I/O operations. - * - * @param filename name of the file - * @return lowercase suffix of the file name - * @throws NullPointerException if filename is null - */ - public static String getFileSuffix(String filename) { - int lastDot = filename.lastIndexOf('.'); - if (lastDot < 0) { - return null; - } - return toLowerCase(filename.substring(lastDot + 1)); - } - - private static String toLowerCase(String arg) { - if (arg == null) { - return null; - } - - return arg.toLowerCase(); - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/FixedPoint.java b/src/jogl/classes/com/sun/opengl/util/FixedPoint.java deleted file mode 100644 index e9bdae0e9..000000000 --- a/src/jogl/classes/com/sun/opengl/util/FixedPoint.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2009 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -package com.sun.opengl.util; - -public class FixedPoint { - public static final int toFixed(int value) { - if (value < -32768) value = -32768; - if (value > 32767) value = 32767; - return value * 65536; - } - - public static final int toFixed(float value) { - if (value < -32768) value = -32768; - if (value > 32767) value = 32767; - return (int)(value * 65536.0f); - } - - public static final float toFloat(int value) { - return (float)value/65536.0f; - } - - public static final int mult(int x1, int x2) { - return (int) ( ((long)x1*(long)x2)/65536 ); - } - - public static final int div(int x1, int x2) { - return (int) ( (((long)x1)<<16)/x2 ); - } -} - diff --git a/src/jogl/classes/com/sun/opengl/util/GLArrayDataClient.java b/src/jogl/classes/com/sun/opengl/util/GLArrayDataClient.java deleted file mode 100644 index ec4c5e393..000000000 --- a/src/jogl/classes/com/sun/opengl/util/GLArrayDataClient.java +++ /dev/null @@ -1,353 +0,0 @@ - -package com.sun.opengl.util; - -import java.security.*; - -import javax.media.opengl.*; - -import com.sun.opengl.util.glsl.*; - -import com.sun.opengl.impl.SystemUtil; - -import java.nio.*; - -public class GLArrayDataClient extends GLArrayDataWrapper implements GLArrayDataEditable { - - /** - * The OpenGL ES emulation on the PC probably has a buggy VBO implementation, - * where we have to 'refresh' the VertexPointer or VertexAttribArray after each - * BindBuffer ! - * - * This should not be necessary on proper native implementations. - */ - public static final boolean hasVBOBug = AccessController.doPrivileged(new PrivilegedAction() { - public Object run() { - return SystemUtil.getenv("JOGL_VBO_BUG"); - } - }) != null; - - /** - * @param index The GL array index - * @param name The optional custom name for the GL array index, maybe null. - * If null, the default name mapping will be used, see 'getPredefinedArrayIndexName(int)'. - * This name might be used as the shader attribute name. - * @param comps The array component number - * @param dataType The array index GL data type - * @param normalized Wheather the data shall be normalized - * - * @see javax.media.opengl.GLContext#getPredefinedArrayIndexName(int) - */ - public static GLArrayDataClient createFixed(GL gl, int index, String name, int comps, int dataType, boolean normalized, - int initialSize) - throws GLException - { - gl.getGLProfile().isValidArrayDataType(index, comps, dataType, false, true); - GLArrayDataClient adc = new GLArrayDataClient(); - GLArrayHandler glArrayHandler = new GLFixedArrayHandler(adc); - adc.init(name, index, comps, dataType, normalized, 0, null, initialSize, false, glArrayHandler, 0, 0); - return adc; - } - - public static GLArrayDataClient createFixed(GL gl, int index, String name, int comps, int dataType, boolean normalized, - int stride, Buffer buffer) - throws GLException - { - gl.getGLProfile().isValidArrayDataType(index, comps, dataType, false, true); - GLArrayDataClient adc = new GLArrayDataClient(); - GLArrayHandler glArrayHandler = new GLFixedArrayHandler(adc); - adc.init(name, index, comps, dataType, normalized, stride, buffer, comps*comps, false, glArrayHandler, 0, 0); - return adc; - } - - public static GLArrayDataClient createGLSL(GL gl, String name, int comps, int dataType, boolean normalized, - int initialSize) - throws GLException - { - if(!gl.hasGLSL()) { - throw new GLException("GLArrayDataClient.GLSL not supported: "+gl); - } - gl.getGLProfile().isValidArrayDataType(-1, comps, dataType, true, true); - - GLArrayDataClient adc = new GLArrayDataClient(); - GLArrayHandler glArrayHandler = new GLSLArrayHandler(adc); - adc.init(name, -1, comps, dataType, normalized, 0, null, initialSize, true, glArrayHandler, 0, 0); - return adc; - } - - public static GLArrayDataClient createGLSL(GL gl, String name, int comps, int dataType, boolean normalized, - int stride, Buffer buffer) - throws GLException - { - if(!gl.hasGLSL()) { - throw new GLException("GLArrayDataClient.GLSL not supported: "+gl); - } - gl.getGLProfile().isValidArrayDataType(-1, comps, dataType, true, true); - - GLArrayDataClient adc = new GLArrayDataClient(); - GLArrayHandler glArrayHandler = new GLSLArrayHandler(adc); - adc.init(name, -1, comps, dataType, normalized, stride, buffer, comps*comps, true, glArrayHandler, 0, 0); - return adc; - } - - // - // Data read access - // - - public final boolean isBufferWritten() { return bufferWritten; } - - public final boolean sealed() { return sealed; } - - public int getBufferUsage() { return -1; } - - // - // Data and GL state modification .. - // - - public final void setBufferWritten(boolean written) { bufferWritten=written; } - - public void destroy(GL gl) { - reset(gl); - buffer=null; - } - - public void reset(GL gl) { - enableBuffer(gl, false); - reset(); - } - - public void seal(GL gl, boolean seal) - { - seal(seal); - if(sealedGL==seal) return; - sealedGL = seal; - if(seal) { - init_vbo(gl); - - enableBuffer(gl, true); - } else { - enableBuffer(gl, false); - } - } - - public void enableBuffer(GL gl, boolean enable) { - if(enableBufferAlways && enable) { - bufferEnabled = false; - } - if( bufferEnabled != enable && components>0 ) { - if(enable) { - checkSeal(true); - if(null!=buffer) { - buffer.rewind(); - } - } - glArrayHandler.enableBuffer(gl, enable); - bufferEnabled = enable; - } - } - - public void setEnableAlways(boolean always) { - enableBufferAlways = always; - } - - // - // Data modification .. - // - - public void reset() { - if(buffer!=null) { - buffer.clear(); - } - this.sealed=false; - this.bufferEnabled=false; - this.bufferWritten=false; - } - - public void seal(boolean seal) - { - if(sealed==seal) return; - sealed = seal; - if(seal) { - bufferWritten=false; - if (null!=buffer) { - buffer.flip(); - } - } else { - if (null!=buffer) { - buffer.position(buffer.limit()); - buffer.limit(buffer.capacity()); - } - } - } - - - public void rewind() { - if(buffer!=null) { - buffer.rewind(); - } - } - - public void padding(int done) { - if ( buffer==null || sealed ) return; - while(done<strideL) { - BufferUtil.putb(buffer, (byte)0); - done++; - } - } - - /** - * Generic buffer relative put method. - * - * This class buffer Class must match the arguments buffer class. - * The arguments remaining elements must be a multiple of this arrays element stride. - */ - public void put(Buffer v) { - if ( buffer==null || sealed ) return; - if(0!=(v.remaining() % strideL)) { - throw new GLException("Buffer length ("+v.remaining()+") is not a multiple of component-stride:\n\t"+this); - } - growBufferIfNecessary(v.remaining()); - BufferUtil.put(buffer, v); - } - - public void putb(byte v) { - if ( buffer==null || sealed ) return; - growBufferIfNecessary(1); - BufferUtil.putb(buffer, v); - } - - public void puts(short v) { - if ( buffer==null || sealed ) return; - growBufferIfNecessary(1); - BufferUtil.puts(buffer, v); - } - - public void puti(int v) { - if ( buffer==null || sealed ) return; - growBufferIfNecessary(1); - BufferUtil.puti(buffer, v); - } - - public void putx(int v) { - puti(v); - } - - public void putf(float v) { - if ( buffer==null || sealed ) return; - growBufferIfNecessary(1); - BufferUtil.putf(buffer, v); - } - - public String toString() { - return "GLArrayDataClient["+name+ - ", index "+index+ - ", location "+location+ - ", isVertexAttribute "+isVertexAttribute+ - ", dataType "+dataType+ - ", bufferClazz "+clazz+ - ", elements "+getElementNumber()+ - ", components "+components+ - ", stride "+stride+"u "+strideB+"b "+strideL+"c"+ - ", initialSize "+initialSize+ - ", sealed "+sealed+ - ", bufferEnabled "+bufferEnabled+ - ", bufferWritten "+bufferWritten+ - ", buffer "+buffer+ - "]"; - } - - // non public matters - - protected final boolean growBufferIfNecessary(int spare) { - if(buffer==null || buffer.remaining()<spare) { - growBuffer(initialSize); - return true; - } - return false; - } - - protected final void growBuffer(int additional) { - if(sealed || 0==additional || 0==components) return; - - // add the stride delta - additional += (additional/components)*(strideL-components); - - if(components>0) { - int osize = (buffer!=null)?buffer.capacity():0; - if(clazz==ByteBuffer.class) { - ByteBuffer newBBuffer = BufferUtil.newByteBuffer( (osize+additional) * components ); - if(buffer!=null) { - buffer.flip(); - newBBuffer.put((ByteBuffer)buffer); - } - buffer = newBBuffer; - } else if(clazz==ShortBuffer.class) { - ShortBuffer newSBuffer = BufferUtil.newShortBuffer( (osize+additional) * components ); - if(buffer!=null) { - buffer.flip(); - newSBuffer.put((ShortBuffer)buffer); - } - buffer = newSBuffer; - } else if(clazz==IntBuffer.class) { - IntBuffer newIBuffer = BufferUtil.newIntBuffer( (osize+additional) * components ); - if(buffer!=null) { - buffer.flip(); - newIBuffer.put((IntBuffer)buffer); - } - buffer = newIBuffer; - } else if(clazz==FloatBuffer.class) { - FloatBuffer newFBuffer = BufferUtil.newFloatBuffer( (osize+additional) * components ); - if(buffer!=null) { - buffer.flip(); - newFBuffer.put((FloatBuffer)buffer); - } - buffer = newFBuffer; - } else { - throw new GLException("Given Buffer Class not supported: "+clazz+":\n\t"+this); - } - } - } - - protected final void checkSeal(boolean test) throws GLException { - if(sealed!=test) { - if(test) { - throw new GLException("Not Sealed yet, seal first:\n\t"+this); - } else { - throw new GLException("Already Sealed, can't modify VBO:\n\t"+this); - } - } - } - - protected void init(String name, int index, int comps, int dataType, boolean normalized, int stride, Buffer data, - int initialSize, boolean isVertexAttribute, GLArrayHandler handler, - int vboName, long bufferOffset) - throws GLException - { - super.init(name, index, comps, dataType, normalized, stride, data, isVertexAttribute, - vboName, bufferOffset); - - this.initialSize = initialSize; - this.glArrayHandler = handler; - this.sealed=false; - this.sealedGL=false; - this.bufferEnabled=false; - this.enableBufferAlways=false; - this.bufferWritten=false; - if(null==buffer) { - growBuffer(initialSize); - } - } - - protected void init_vbo(GL gl) {} - - protected GLArrayDataClient() { } - - protected boolean sealed, sealedGL; - protected boolean bufferEnabled; - protected boolean bufferWritten; - protected boolean enableBufferAlways; - - protected int initialSize; - - protected GLArrayHandler glArrayHandler; -} - diff --git a/src/jogl/classes/com/sun/opengl/util/GLArrayDataEditable.java b/src/jogl/classes/com/sun/opengl/util/GLArrayDataEditable.java deleted file mode 100644 index c8fcbf573..000000000 --- a/src/jogl/classes/com/sun/opengl/util/GLArrayDataEditable.java +++ /dev/null @@ -1,110 +0,0 @@ - -package com.sun.opengl.util; - -import javax.media.opengl.*; - -import java.nio.*; - -/** - * - * The total number of bytes hold by the referenced buffer is: - * getComponentSize()* getComponentNumber() * getElementNumber() - * - */ -public interface GLArrayDataEditable extends GLArrayData { - - public boolean sealed(); - - /** - * The VBO buffer usage, if it's an VBO, otherwise -1 - */ - public int getBufferUsage(); - - /** - * Is the buffer written to the GPU ? - */ - public boolean isBufferWritten(); - - /** - * Marks the buffer written to the GPU - */ - public void setBufferWritten(boolean written); - - // - // Data and GL state modification .. - // - - public void destroy(GL gl); - - public void reset(GL gl); - - /** - * If seal is true, it - * disable write operations to the buffer. - * Calls flip, ie limit:=position and position:=0. - * Also enables the buffer for OpenGL, and passes the data. - * - * If seal is false, it - * enable write operations continuing - * at the buffer position, where you left off at seal(true), - * ie position:=limit and limit:=capacity. - * Also disables the buffer for OpenGL. - * - * @see #seal(boolean) - */ - public void seal(GL gl, boolean seal); - - /** - * Enables/disables the buffer, which implies - * the client state, binding the VBO - * and transfering the data if not done yet. - * - * The above will only be executed, - * if the buffer is disabled, - * or 'setEnableAlways' was called with 'true'. - * - * @see #setEnableAlways(boolean) - */ - public void enableBuffer(GL gl, boolean enable); - - /** - * Affects the behavior of 'enableBuffer'. - * - * The default is 'false' - * - * This is usefull when you mix up - * GLArrayData usage with conventional GL array calls. - * - * @see #enableBuffer(GL, boolean) - */ - public void setEnableAlways(boolean always); - - // - // Data modification .. - // - - public void reset(); - - /** - * If seal is true, it - * disable write operations to the buffer. - * Calls flip, ie limit:=position and position:=0. - * - * If seal is false, it - * enable write operations continuing - * at the buffer position, where you left off at seal(true), - * ie position:=limit and limit:=capacity. - * - */ - public void seal(boolean seal); - - public void rewind(); - public void padding(int done); - public void put(Buffer v); - public void putb(byte v); - public void puts(short v); - public void puti(int v); - public void putx(int v); - public void putf(float v); -} - diff --git a/src/jogl/classes/com/sun/opengl/util/GLArrayDataServer.java b/src/jogl/classes/com/sun/opengl/util/GLArrayDataServer.java deleted file mode 100644 index dc233ce36..000000000 --- a/src/jogl/classes/com/sun/opengl/util/GLArrayDataServer.java +++ /dev/null @@ -1,209 +0,0 @@ - -package com.sun.opengl.util; - -import javax.media.opengl.*; -import java.nio.*; - -import com.sun.opengl.util.glsl.*; - -public class GLArrayDataServer extends GLArrayDataClient implements GLArrayDataEditable { - - // - // lifetime matters - // - - /** - * Create a VBOBuffer object, using a predefined fixed function array index - * and starting with a given Buffer object incl it's stride - * - * On profiles GL2 and ES1 the fixed function pipeline behavior is as expected. - * On profile ES2 the fixed function emulation will transform these calls to - * EnableVertexAttribArray and VertexAttribPointer calls, - * and a predefined vertex attribute variable name will be choosen. - * - * @param index The GL array index - * @param name The optional custom name for the GL array index, maybe null. - * If null, the default name mapping will be used, see 'getPredefinedArrayIndexName(int)'. - * This name might be used as the shader attribute name. - * @param comps The array component number - * @param dataType The array index GL data type - * @param normalized Wheather the data shall be normalized - * - * @see javax.media.opengl.GLContext#getPredefinedArrayIndexName(int) - */ - public static GLArrayDataServer createFixed(GL gl, int index, String name, int comps, int dataType, boolean normalized, - int stride, Buffer buffer, int vboBufferUsage) - throws GLException - { - gl.getGLProfile().isValidArrayDataType(index, comps, dataType, false, true); - - GLArrayDataServer ads = new GLArrayDataServer(); - GLArrayHandler glArrayHandler = new GLFixedArrayHandler(ads); - ads.init(gl, name, index, comps, dataType, normalized, stride, buffer, buffer.limit(), false, glArrayHandler, - 0, 0, vboBufferUsage); - return ads; - } - - /** - * Create a VBOBuffer object, using a predefined fixed function array index - * and starting with a new created Buffer object with initialSize size - * - * On profiles GL2 and ES1 the fixed function pipeline behavior is as expected. - * On profile ES2 the fixed function emulation will transform these calls to - * EnableVertexAttribArray and VertexAttribPointer calls, - * and a predefined vertex attribute variable name will be choosen. - * - * @see javax.media.opengl.GLContext#getPredefinedArrayIndexName(int) - */ - public static GLArrayDataServer createFixed(GL gl, int index, String name, int comps, int dataType, boolean normalized, - int initialSize, int vboBufferUsage) - throws GLException - { - gl.getGLProfile().isValidArrayDataType(index, comps, dataType, false, true); - - GLArrayDataServer ads = new GLArrayDataServer(); - GLArrayHandler glArrayHandler = new GLFixedArrayHandler(ads); - ads.init(gl, name, index, comps, dataType, normalized, 0, null, initialSize, false, glArrayHandler, - 0, 0, vboBufferUsage); - return ads; - } - - /** - * Create a VBOBuffer object, using a custom GLSL array attribute name - * and starting with a new created Buffer object with initialSize size - * - * @see javax.media.opengl.GLContext#getPredefinedArrayIndexName(int) - */ - public static GLArrayDataServer createGLSL(GL gl, String name, int comps, int dataType, boolean normalized, - int initialSize, int vboBufferUsage) - throws GLException - { - if(!gl.hasGLSL()) { - throw new GLException("GLArrayDataServer.GLSL not supported: "+gl); - } - gl.getGLProfile().isValidArrayDataType(-1, comps, dataType, true, true); - - GLArrayDataServer ads = new GLArrayDataServer(); - GLArrayHandler glArrayHandler = new GLSLArrayHandler(ads); - ads.init(gl, name, -1, comps, dataType, normalized, 0, null, initialSize, true, glArrayHandler, - 0, 0, vboBufferUsage); - return ads; - } - - /** - * Create a VBOBuffer object, using a custom GLSL array attribute name - * and starting with a given Buffer object incl it's stride - * - * @see javax.media.opengl.GLContext#getPredefinedArrayIndexName(int) - */ - public static GLArrayDataServer createGLSL(GL gl, String name, int comps, int dataType, boolean normalized, - int stride, Buffer buffer, int vboBufferUsage) - throws GLException - { - if(!gl.hasGLSL()) { - throw new GLException("GLArrayDataServer.GLSL not supported: "+gl); - } - gl.getGLProfile().isValidArrayDataType(-1, comps, dataType, true, true); - - GLArrayDataServer ads = new GLArrayDataServer(); - GLArrayHandler glArrayHandler = new GLSLArrayHandler(ads); - ads.init(gl, name, -1, comps, dataType, normalized, stride, buffer, buffer.limit(), true, glArrayHandler, - 0, 0, vboBufferUsage); - return ads; - } - - // - // Data matters GLArrayData - // - - public int getBufferUsage() { return vboBufferUsage; } - - // - // Data and GL state modification .. - // - - public void destroy(GL gl) { - super.destroy(gl); - if(vboName!=0) { - int[] tmp = new int[1]; - tmp[0] = vboName; - gl.glDeleteBuffers(1, tmp, 0); - vboName = 0; - } - } - - // - // data matters - // - - /** - * Convenient way do disable the VBO behavior and - * switch to client side data one - * Only possible if buffer is defined. - */ - public void setVBOUsage(boolean vboUsage) { - checkSeal(false); - super.setVBOUsage(vboUsage); - } - - public String toString() { - return "GLArrayDataServer["+name+ - ", index "+index+ - ", location "+location+ - ", isVertexAttribute "+isVertexAttribute+ - ", dataType "+dataType+ - ", bufferClazz "+clazz+ - ", elements "+getElementNumber()+ - ", components "+components+ - ", stride "+stride+"u "+strideB+"b "+strideL+"c"+ - ", initialSize "+initialSize+ - ", vboBufferUsage "+vboBufferUsage+ - ", vboUsage "+vboUsage+ - ", vboName "+vboName+ - ", sealed "+sealed+ - ", bufferEnabled "+bufferEnabled+ - ", bufferWritten "+bufferWritten+ - ", buffer "+buffer+ - ", offset "+bufferOffset+ - "]"; - } - - // - // non public matters .. - // - - protected void init(GL gl, String name, int index, int comps, int dataType, boolean normalized, - int stride, Buffer data, int initialSize, boolean isVertexAttribute, - GLArrayHandler glArrayHandler, - int vboName, long bufferOffset, int vboBufferUsage) - throws GLException - { - super.init(name, index, comps, dataType, normalized, stride, data, initialSize, isVertexAttribute, glArrayHandler, - vboName, bufferOffset); - - vboUsage=true; - - if( ! (gl.isGL2ES2() && vboBufferUsage==GL2ES2.GL_STREAM_DRAW) ) { - switch(vboBufferUsage) { - case -1: // nop - case GL.GL_STATIC_DRAW: - case GL.GL_DYNAMIC_DRAW: - break; - default: - throw new GLException("invalid vboBufferUsage: "+vboBufferUsage+":\n\t"+this); - } - } - this.vboBufferUsage=vboBufferUsage; - } - - protected void init_vbo(GL gl) { - if(vboUsage && vboName==0) { - int[] tmp = new int[1]; - gl.glGenBuffers(1, tmp, 0); - vboName = tmp[0]; - } - } - - protected int vboBufferUsage; -} - diff --git a/src/jogl/classes/com/sun/opengl/util/GLArrayDataWrapper.java b/src/jogl/classes/com/sun/opengl/util/GLArrayDataWrapper.java deleted file mode 100644 index 72e7c19bb..000000000 --- a/src/jogl/classes/com/sun/opengl/util/GLArrayDataWrapper.java +++ /dev/null @@ -1,215 +0,0 @@ - -package com.sun.opengl.util; - -import javax.media.opengl.*; - -import com.sun.opengl.util.glsl.fixedfunc.impl.*; - -import java.nio.*; - -public class GLArrayDataWrapper implements GLArrayData { - - public static GLArrayDataWrapper createFixed(GL gl, int index, int comps, int dataType, boolean normalized, - int stride, Buffer buffer, - int vboName, long bufferOffset) - throws GLException - { - gl.getGLProfile().isValidArrayDataType(index, comps, dataType, false, true); - GLArrayDataWrapper adc = new GLArrayDataWrapper(); - adc.init(null, index, comps, dataType, normalized, stride, buffer, false, - vboName, bufferOffset); - return adc; - } - - public static GLArrayDataWrapper createGLSL(GL gl, String name, int comps, int dataType, boolean normalized, - int stride, Buffer buffer, - int vboName, long bufferOffset) - throws GLException - { - if(!gl.hasGLSL()) { - throw new GLException("GLArrayDataWrapper.GLSL not supported: "+gl); - } - gl.getGLProfile().isValidArrayDataType(-1, comps, dataType, true, true); - - GLArrayDataWrapper adc = new GLArrayDataWrapper(); - adc.init(name, -1, comps, dataType, normalized, stride, buffer, true, - vboName, bufferOffset); - return adc; - } - - // - // Data read access - // - - public final boolean isVertexAttribute() { return isVertexAttribute; } - - public final int getIndex() { return index; } - - public final int getLocation() { return location; } - - public final void setLocation(int v) { location = v; } - - public final String getName() { return name; } - - public final long getOffset() { return vboUsage?bufferOffset:-1; } - - public final int getVBOName() { return vboUsage?vboName:-1; } - - public final boolean isVBO() { return vboUsage; } - - public final Buffer getBuffer() { return buffer; } - - public final int getComponentNumber() { return components; } - - public final int getComponentType() { return dataType; } - - public final int getComponentSize() { - if(clazz==ByteBuffer.class) { - return BufferUtil.SIZEOF_BYTE; - } - if(clazz==ShortBuffer.class) { - return BufferUtil.SIZEOF_SHORT; - } - if(clazz==IntBuffer.class) { - return BufferUtil.SIZEOF_INT; - } - if(clazz==FloatBuffer.class) { - return BufferUtil.SIZEOF_FLOAT; - } - throw new GLException("Given Buffer Class not supported: "+clazz+":\n\t"+this); - } - - public final int getElementNumber() { - if(null==buffer) return 0; - return ( buffer.position()==0 ) ? ( buffer.limit() / components ) : ( buffer.position() / components ) ; - } - - public final boolean getNormalized() { return normalized; } - - public final int getStride() { return stride; } - - public final Class getBufferClass() { return clazz; } - - public void destroy(GL gl) { - this.buffer = null; - this.components = 0; - this.stride=0; - this.strideB=0; - this.strideL=0; - this.vboName=0; - this.vboUsage=false; - this.bufferOffset=0; - } - - public String toString() { - return "GLArrayDataWrapper["+name+ - ", index "+index+ - ", location "+location+ - ", isVertexAttribute "+isVertexAttribute+ - ", dataType "+dataType+ - ", bufferClazz "+clazz+ - ", elements "+getElementNumber()+ - ", components "+components+ - ", stride "+stride+"u "+strideB+"b "+strideL+"c"+ - ", buffer "+buffer+ - ", offset "+bufferOffset+ - ", vboUsage "+vboUsage+ - ", vboName "+vboName+ - "]"; - } - - public static final Class getBufferClass(int dataType) { - switch(dataType) { - case GL.GL_BYTE: - case GL.GL_UNSIGNED_BYTE: - return ByteBuffer.class; - case GL.GL_SHORT: - case GL.GL_UNSIGNED_SHORT: - return ShortBuffer.class; - case GL2ES1.GL_FIXED: - return IntBuffer.class; - case GL.GL_FLOAT: - return FloatBuffer.class; - default: - throw new GLException("Given OpenGL data type not supported: "+dataType); - } - } - - public void setName(String newName) { - location = -1; - name = newName; - } - - public void setVBOUsage(boolean vboUsage) { - this.vboUsage=vboUsage; - } - - public void setVBOName(int vboName) { - this.vboName=vboName; - setVBOUsage(vboName>0); - } - - protected void init(String name, int index, int comps, int dataType, boolean normalized, int stride, Buffer data, - boolean isVertexAttribute, - int vboName, long bufferOffset) - throws GLException - { - this.isVertexAttribute = isVertexAttribute; - this.index = index; - this.location = -1; - // We can't have any dependence on the FixedFuncUtil class here for build bootstrapping reasons - this.name = (null==name)?FixedFuncPipeline.getPredefinedArrayIndexName(index):name; - if(null==this.name) { - throw new GLException("Not a valid GL array index: "+index); - } - this.dataType = dataType; - this.clazz = getBufferClass(dataType); - switch(dataType) { - case GL.GL_BYTE: - case GL.GL_UNSIGNED_BYTE: - case GL.GL_SHORT: - case GL.GL_UNSIGNED_SHORT: - case GL2ES1.GL_FIXED: - this.normalized = normalized; - break; - default: - this.normalized = false; - } - - int bpc = getComponentSize(); - if(0<stride && stride<comps*bpc) { - throw new GLException("stride ("+stride+") lower than component bytes, "+comps+" * "+bpc); - } - if(0<stride && stride%bpc!=0) { - throw new GLException("stride ("+stride+") not a multiple of bpc "+bpc); - } - this.buffer = data; - this.components = comps; - this.stride=stride; - this.strideB=(0==stride)?comps*bpc:stride; - this.strideL=(0==stride)?comps:strideB/bpc; - this.vboName=vboName; - this.vboUsage=vboName>0; - this.bufferOffset=bufferOffset; - } - - protected GLArrayDataWrapper() { } - - protected int index; - protected int location; - protected String name; - protected int components; - protected int dataType; - protected boolean normalized; - protected int stride; // user given stride - protected int strideB; // stride in bytes - protected int strideL; // stride in logical components - protected Class clazz; - protected Buffer buffer; - protected boolean isVertexAttribute; - - protected long bufferOffset; - protected int vboName; - protected boolean vboUsage; -} - diff --git a/src/jogl/classes/com/sun/opengl/util/GLArrayHandler.java b/src/jogl/classes/com/sun/opengl/util/GLArrayHandler.java deleted file mode 100644 index 9443ad6ed..000000000 --- a/src/jogl/classes/com/sun/opengl/util/GLArrayHandler.java +++ /dev/null @@ -1,11 +0,0 @@ - -package com.sun.opengl.util; - -import javax.media.opengl.*; - -public interface GLArrayHandler { - - public void enableBuffer(GL gl, boolean enable); - -} - diff --git a/src/jogl/classes/com/sun/opengl/util/GLFixedArrayHandler.java b/src/jogl/classes/com/sun/opengl/util/GLFixedArrayHandler.java deleted file mode 100644 index f1e2502be..000000000 --- a/src/jogl/classes/com/sun/opengl/util/GLFixedArrayHandler.java +++ /dev/null @@ -1,65 +0,0 @@ - -package com.sun.opengl.util; - -import javax.media.opengl.*; -import javax.media.opengl.fixedfunc.*; -import com.sun.opengl.util.*; -import java.nio.*; - -public class GLFixedArrayHandler implements GLArrayHandler { - private GLArrayDataEditable ad; - - public GLFixedArrayHandler(GLArrayDataEditable ad) { - this.ad = ad; - } - - protected final void passArrayPointer(GLPointerFunc gl) { - switch(ad.getIndex()) { - case GLPointerFunc.GL_VERTEX_ARRAY: - gl.glVertexPointer(ad); - break; - case GLPointerFunc.GL_NORMAL_ARRAY: - gl.glNormalPointer(ad); - break; - case GLPointerFunc.GL_COLOR_ARRAY: - gl.glColorPointer(ad); - break; - case GLPointerFunc.GL_TEXTURE_COORD_ARRAY: - gl.glTexCoordPointer(ad); - break; - default: - throw new GLException("invalid glArrayIndex: "+ad.getIndex()+":\n\t"+ad); - } - } - - public void enableBuffer(GL gl, boolean enable) { - GLPointerFunc glp = gl.getGL2ES1(); - if(enable) { - glp.glEnableClientState(ad.getIndex()); - - Buffer buffer = ad.getBuffer(); - - if(ad.isVBO()) { - // always bind and refresh the VBO mgr, - // in case more than one gl*Pointer objects are in use - gl.glBindBuffer(GL.GL_ARRAY_BUFFER, ad.getVBOName()); - if(!ad.isBufferWritten()) { - if(null!=buffer) { - gl.glBufferData(GL.GL_ARRAY_BUFFER, buffer.limit() * ad.getComponentSize(), buffer, ad.getBufferUsage()); - } - ad.setBufferWritten(true); - } - passArrayPointer(glp); - } else if(null!=buffer) { - passArrayPointer(glp); - ad.setBufferWritten(true); - } - } else { - if(ad.isVBO()) { - gl.glBindBuffer(GL.GL_ARRAY_BUFFER, 0); - } - glp.glDisableClientState(ad.getIndex()); - } - } -} - diff --git a/src/jogl/classes/com/sun/opengl/util/Gamma.java b/src/jogl/classes/com/sun/opengl/util/Gamma.java deleted file mode 100755 index da0d7bd96..000000000 --- a/src/jogl/classes/com/sun/opengl/util/Gamma.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util; - -import javax.media.opengl.*; -import com.sun.opengl.impl.*; - -/** Provides control over the primary display's gamma, brightness and - contrast controls via the hardware gamma ramp tables. Not - supported on all platforms or graphics hardware. <P> - - Thanks to the LWJGL project for illustrating how to access gamma - control on the various platforms. -*/ - -public class Gamma { - private Gamma() {} - - /** - * Sets the gamma, brightness, and contrast of the current main - * display. This functionality is not available on all platforms and - * graphics hardware. Returns true if the settings were successfully - * changed, false if not. This method may return false for some - * values of the incoming arguments even on hardware which does - * support the underlying functionality. <P> - * - * If this method returns true, the display settings will - * automatically be reset to their original values upon JVM exit - * (assuming the JVM does not crash); if the user wishes to change - * the display settings back to normal ahead of time, use {@link - * #resetDisplayGamma resetDisplayGamma}(). It is recommended to - * call {@link #resetDisplayGamma resetDisplayGamma} before calling - * e.g. <code>System.exit()</code> from the application rather than - * rely on the shutdown hook functionality due to inevitable race - * conditions and unspecified behavior during JVM teardown. <P> - * - * This method may be called multiple times during the application's - * execution, but calling {@link #resetDisplayGamma - * resetDisplayGamma} will only reset the settings to the values - * before the first call to this method. <P> - * - * @param gamma The gamma value, typically > 1.0 (default values - * vary, but typically roughly 1.0) - * @param brightness The brightness value between -1.0 and 1.0, - * inclusive (default values vary, but typically 0) - * @param contrast The contrast, greater than 0.0 (default values - * vary, but typically 1) - * @return true if gamma settings were successfully changed, false - * if not - * @throws IllegalArgumentException if any of the parameters were - * out-of-bounds - */ - public static boolean setDisplayGamma(GL gl, float gamma, float brightness, float contrast) throws IllegalArgumentException { - return GLDrawableFactoryImpl.getFactoryImpl(gl.getContext().getGLDrawable().getGLProfile()).setDisplayGamma(gamma, brightness, contrast); - } - - /** - * Resets the gamma, brightness and contrast values for the primary - * display to their original values before {@link #setDisplayGamma - * setDisplayGamma} was called the first time. {@link - * #setDisplayGamma setDisplayGamma} must be called before calling - * this method or an unspecified exception will be thrown. While it - * is not explicitly required that this method be called before - * exiting, calling it is recommended because of the inevitable - * unspecified behavior during JVM teardown. - */ - public static void resetDisplayGamma(GL gl) { - GLDrawableFactoryImpl.getFactoryImpl(gl.getContext().getGLDrawable().getGLProfile()).resetDisplayGamma(); - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/ImmModeSink.java b/src/jogl/classes/com/sun/opengl/util/ImmModeSink.java deleted file mode 100644 index 65c676f4a..000000000 --- a/src/jogl/classes/com/sun/opengl/util/ImmModeSink.java +++ /dev/null @@ -1,974 +0,0 @@ - -package com.sun.opengl.util; - -import javax.media.opengl.*; -import javax.media.opengl.fixedfunc.*; -import com.sun.nativewindow.impl.NWReflection; -import java.nio.*; -import java.util.Iterator; -import java.util.ArrayList; - -public class ImmModeSink { - - public static final boolean DEBUG_BEGIN_END = false; - public static final boolean DEBUG_DRAW = false; - - // public static final int GL_QUADS = 0x0007; // Needs data manipulation - public static final int GL_QUAD_STRIP = 0x0008; - public static final int GL_POLYGON = 0x0009; - - /** - * Uses a GL2ES1, or ES2 fixed function emulation immediate mode sink - */ - public static ImmModeSink createFixed(GL gl, int glBufferUsage, int initialSize, - int vComps, int vDataType, - int cComps, int cDataType, - int nComps, int nDataType, - int tComps, int tDataType) { - return new ImmModeSink(gl, glBufferUsage, initialSize, - vComps, vDataType, cComps, cDataType, nComps, nDataType, tComps, tDataType, false); - } - - /** - * Uses a GL2ES2 GLSL shader immediate mode sink. - * To issue the draw() command, - * a ShaderState must be current, using ShaderState.glUseProgram(). - * - * @see #draw(GL, boolean) - * @see javax.media.opengl.glsl.ShaderState#glUseProgram(GL2ES2, boolean) - * @see javax.media.opengl.glsl.ShaderState#getCurrent() - */ - public static ImmModeSink createGLSL(GL gl, int glBufferUsage, int initialSize, - int vComps, int vDataType, - int cComps, int cDataType, - int nComps, int nDataType, - int tComps, int tDataType) { - return new ImmModeSink(gl, glBufferUsage, initialSize, - vComps, vDataType, cComps, cDataType, nComps, nDataType, tComps, tDataType, true); - } - - public static boolean usesVBO() { return vboUsage; } - - public static void setVBOUsage(boolean v) { vboUsage = v; } - - public void destroy(GL gl) { - destroyList(gl); - - vboSet.destroy(gl); - } - - public void reset() { - reset(null); - } - - public void reset(GL gl) { - destroyList(gl); - vboSet.reset(gl); - } - - public String toString() { - StringBuffer sb = new StringBuffer("ImmModeSink["); - sb.append(",\n\tVBO list: "+vboSetList.size()+" ["); - for(Iterator i=vboSetList.iterator(); i.hasNext() ; ) { - sb.append("\n\t"); - sb.append( (VBOSet)i.next() ); - } - if(vboSetList.size()>0) { - sb.append("\n\t],\nVBO current: NOP]"); - } else { - sb.append("\n\t],\nVBO current: \n"); - sb.append(vboSet); - sb.append("\n]"); - } - return sb.toString(); - } - - public void draw(GL gl, boolean disableBufferAfterDraw) { - if(DEBUG_DRAW) { - Exception e = new Exception("ImmModeSink.draw(disableBufferAfterDraw: "+disableBufferAfterDraw+"):\n\t"+this); - e.printStackTrace(); - } - int n=0; - for(Iterator i=vboSetList.iterator(); i.hasNext() ; n++) { - ((VBOSet)i.next()).draw(gl, null, disableBufferAfterDraw, n); - } - } - - public void draw(GL gl, Buffer indices, boolean disableBufferAfterDraw) { - if(DEBUG_DRAW) { - Exception e = new Exception("ImmModeSink.draw(disableBufferAfterDraw: "+disableBufferAfterDraw+"):\n\t"+this); - e.printStackTrace(); - } - int n=0; - for(Iterator i=vboSetList.iterator(); i.hasNext() ; n++) { - ((VBOSet)i.next()).draw(gl, indices, disableBufferAfterDraw, n); - } - } - - public void glBegin(int mode) { - if(DEBUG_BEGIN_END) { - Exception e = new Exception("ImmModeSink.glBegin("+vboSet.mode+"):\n\t"+this); - e.printStackTrace(); - } - vboSet.modeOrig = mode; - switch(mode) { - // Needs data manipulation .. - //case GL_QUADS: - // mode=GL.GL_LINES; - // break; - case GL_QUAD_STRIP: - mode=GL.GL_TRIANGLE_STRIP; - break; - case GL_POLYGON: - mode=GL.GL_LINES; - break; - } - vboSet.mode = mode; - vboSet.checkSeal(false); - } - - public final void glEnd(GL gl) { - glEnd(gl, null, true); - } - - public void glEnd(GL gl, boolean immediateDraw) { - glEnd(gl, null, immediateDraw); - } - - public final void glEnd(GL gl, Buffer indices) { - glEnd(gl, indices, true); - } - - private void glEnd(GL gl, Buffer indices, boolean immediateDraw) { - if(DEBUG_BEGIN_END) { - Exception e = new Exception("ImmModeSink START glEnd(immediate: "+immediateDraw+"):\n\t"+this); - e.printStackTrace(); - } - if(immediateDraw) { - vboSet.seal(gl, true); - vboSet.draw(gl, indices, true, -1); - reset(gl); - } else { - vboSet.seal(gl, true); - vboSet.enableBuffer(gl, false); - vboSetList.add(vboSet); - vboSet = vboSet.regenerate(); - } - } - - public void glVertexv(Buffer v) { - vboSet.glVertexv(v); - } - public void glNormalv(Buffer v) { - vboSet.glNormalv(v); - } - public void glColorv(Buffer v) { - vboSet.glColorv(v); - } - public void glTexCoordv(Buffer v) { - vboSet.glTexCoordv(v); - } - - public final void glVertex2f(float x, float y) { - vboSet.glVertex2f(x,y); - } - - public final void glVertex3f(float x, float y, float z) { - vboSet.glVertex3f(x,y,z); - } - - public final void glNormal3f(float x, float y, float z) { - vboSet.glNormal3f(x,y,z); - } - - public final void glColor3f(float x, float y, float z) { - vboSet.glColor3f(x,y,z); - } - - public final void glColor4f(float x, float y, float z, float a) { - vboSet.glColor4f(x,y,z, a); - } - - public final void glTexCoord2f(float x, float y) { - vboSet.glTexCoord2f(x,y); - } - - public final void glTexCoord3f(float x, float y, float z) { - vboSet.glTexCoord3f(x,y,z); - } - - public final void glVertex2s(short x, short y) { - vboSet.glVertex2s(x,y); - } - - public final void glVertex3s(short x, short y, short z) { - vboSet.glVertex3s(x,y,z); - } - - public final void glNormal3s(short x, short y, short z) { - vboSet.glNormal3s(x,y,z); - } - - public final void glColor3s(short x, short y, short z) { - vboSet.glColor3s(x,y,z); - } - - public final void glColor4s(short x, short y, short z, short a) { - vboSet.glColor4s(x,y,z,a); - } - - public final void glTexCoord2s(short x, short y) { - vboSet.glTexCoord2s(x,y); - } - - public final void glTexCoord3s(short x, short y, short z) { - vboSet.glTexCoord3s(x,y,z); - } - - public final void glVertex2b(byte x, byte y) { - vboSet.glVertex2b(x,y); - } - - public final void glVertex3b(byte x, byte y, byte z) { - vboSet.glVertex3b(x,y,z); - } - - public final void glNormal3b(byte x, byte y, byte z) { - vboSet.glNormal3b(x,y,z); - } - - public final void glColor3b(byte x, byte y, byte z) { - vboSet.glColor3b(x,y,z); - } - - public final void glColor4b(byte x, byte y, byte z, byte a) { - vboSet.glColor4b(x,y,z,a); - } - - public final void glTexCoord2b(byte x, byte y) { - vboSet.glTexCoord2b(x,y); - } - - public final void glTexCoord3b(byte x, byte y, byte z) { - vboSet.glTexCoord3b(x,y,z); - } - - protected ImmModeSink(GL gl, int glBufferUsage, int initialSize, - int vComps, int vDataType, - int cComps, int cDataType, - int nComps, int nDataType, - int tComps, int tDataType, boolean useGLSL) { - if(useGLSL && !gl.hasGLSL()) { - throw new GLException("ImmModeSink GLSL usage not supported: "+gl); - } - vboSet = new VBOSet(gl, glBufferUsage, initialSize, - vComps, vDataType, cComps, cDataType, nComps, nDataType, tComps, tDataType, useGLSL); - this.vboSetList = new ArrayList(); - } - - private void destroyList(GL gl) { - for(Iterator i=vboSetList.iterator(); i.hasNext() ; ) { - ((VBOSet)i.next()).destroy(gl); - } - vboSetList.clear(); - } - - private VBOSet vboSet; - private ArrayList vboSetList; - private static boolean vboUsage = true; - - protected static class VBOSet { - protected VBOSet (GL gl, int glBufferUsage, int initialSize, - int vComps, int vDataType, - int cComps, int cDataType, - int nComps, int nDataType, - int tComps, int tDataType, boolean useGLSL) { - this.gl=gl; - this.glBufferUsage=glBufferUsage; - this.initialSize=initialSize; - this.vDataType=vDataType; - this.vComps=vComps; - this.cDataType=cDataType; - this.cComps=cComps; - this.nDataType=nDataType; - this.nComps=nComps; - this.tDataType=tDataType; - this.tComps=tComps; - this.useGLSL=useGLSL; - - allocateBuffer(initialSize); - rewind(); - - this.sealed=false; - this.sealedGL=false; - this.mode = -1; - this.modeOrig = -1; - this.bufferEnabled=false; - this.bufferWritten=false; - } - - protected final VBOSet regenerate() { - return new VBOSet(gl, glBufferUsage, initialSize, - vComps, vDataType, cComps, cDataType, nComps, nDataType, tComps, tDataType, useGLSL); - } - - protected void checkSeal(boolean test) throws GLException { - if(mode<0) { - throw new GLException("No mode set yet, call glBegin(mode) first:\n\t"+this); - } - if(sealed!=test) { - if(test) { - throw new GLException("Not Sealed yet, call glEnd() first:\n\t"+this); - } else { - throw new GLException("Already Sealed, can't modify VBO after glEnd():\n\t"+this); - } - } - } - - protected void draw(GL gl, Buffer indices, boolean disableBufferAfterDraw, int i) - { - if(DEBUG_DRAW) { - Exception e = new Exception("ImmModeSink.draw["+i+"](disableBufferAfterDraw: "+disableBufferAfterDraw+"):\n\t"+this); - e.printStackTrace(); - } - enableBuffer(gl, true); - - if (buffer!=null) { - GL2ES1 glf = gl.getGL2ES1(); - - if(null==indices) { - glf.glDrawArrays(mode, 0, count); - } else { - Class clazz = indices.getClass(); - int type=-1; - if(NWReflection.instanceOf(clazz, ByteBuffer.class.getName())) { - type = GL.GL_UNSIGNED_BYTE; - } else if(NWReflection.instanceOf(clazz, ShortBuffer.class.getName())) { - type = GL.GL_UNSIGNED_SHORT; - } - if(0>type) { - throw new GLException("Given Buffer Class not supported: "+clazz+", should be ubyte or ushort:\n\t"+this); - } - glf.glDrawElements(mode, indices.remaining(), type, indices); - // GL2: gl.glDrawRangeElements(mode, 0, indices.remaining()-1, indices.remaining(), type, indices); - } - } - - if(disableBufferAfterDraw) { - enableBuffer(gl, false); - } - } - - public void glVertexv(Buffer v) { - checkSeal(false); - BufferUtil.put(vertexArray, v); - } - public void glNormalv(Buffer v) { - checkSeal(false); - BufferUtil.put(normalArray, v); - } - public void glColorv(Buffer v) { - checkSeal(false); - BufferUtil.put(colorArray, v); - } - public void glTexCoordv(Buffer v) { - checkSeal(false); - BufferUtil.put(textCoordArray, v); - } - - public void glVertex2b(byte x, byte y) { - checkSeal(false); - growBufferIfNecessary(VERTEX, 2); - if(vComps>0) - BufferUtil.putb(vertexArray, x); - if(vComps>1) - BufferUtil.putb(vertexArray, y); - padding(VERTEX, vComps-2); - } - public void glVertex3b(byte x, byte y, byte z) { - checkSeal(false); - growBufferIfNecessary(VERTEX, 3); - if(vComps>0) - BufferUtil.putb(vertexArray, x); - if(vComps>1) - BufferUtil.putb(vertexArray, y); - if(vComps>2) - BufferUtil.putb(vertexArray, z); - padding(VERTEX, vComps-3); - } - public void glVertex2s(short x, short y) { - checkSeal(false); - growBufferIfNecessary(VERTEX, 2); - if(vComps>0) - BufferUtil.puts(vertexArray, x); - if(vComps>1) - BufferUtil.puts(vertexArray, y); - padding(VERTEX, vComps-2); - } - public void glVertex3s(short x, short y, short z) { - checkSeal(false); - growBufferIfNecessary(VERTEX, 3); - if(vComps>0) - BufferUtil.puts(vertexArray, x); - if(vComps>1) - BufferUtil.puts(vertexArray, y); - if(vComps>2) - BufferUtil.puts(vertexArray, z); - padding(VERTEX, vComps-3); - } - public void glVertex2f(float x, float y) { - checkSeal(false); - growBufferIfNecessary(VERTEX, 2); - if(vComps>0) - BufferUtil.putf(vertexArray, x); - if(vComps>1) - BufferUtil.putf(vertexArray, y); - padding(VERTEX, vComps-2); - } - public void glVertex3f(float x, float y, float z) { - checkSeal(false); - growBufferIfNecessary(VERTEX, 3); - if(vComps>0) - BufferUtil.putf(vertexArray, x); - if(vComps>1) - BufferUtil.putf(vertexArray, y); - if(vComps>2) - BufferUtil.putf(vertexArray, z); - padding(VERTEX, vComps-3); - } - - public void glNormal3b(byte x, byte y, byte z) { - checkSeal(false); - growBufferIfNecessary(NORMAL, 3); - if(nComps>0) - BufferUtil.putb(normalArray, x); - if(nComps>1) - BufferUtil.putb(normalArray, y); - if(nComps>2) - BufferUtil.putb(normalArray, z); - padding(NORMAL, nComps-3); - } - public void glNormal3s(short x, short y, short z) { - checkSeal(false); - growBufferIfNecessary(NORMAL, 3); - if(nComps>0) - BufferUtil.puts(normalArray, x); - if(nComps>1) - BufferUtil.puts(normalArray, y); - if(nComps>2) - BufferUtil.puts(normalArray, z); - padding(NORMAL, nComps-3); - } - public void glNormal3f(float x, float y, float z) { - checkSeal(false); - growBufferIfNecessary(NORMAL, 3); - if(nComps>0) - BufferUtil.putf(normalArray, x); - if(nComps>1) - BufferUtil.putf(normalArray, y); - if(nComps>2) - BufferUtil.putf(normalArray, z); - padding(NORMAL, nComps-3); - } - - public void glColor3b(byte r, byte g, byte b) { - checkSeal(false); - growBufferIfNecessary(COLOR, 3); - if(cComps>0) - BufferUtil.putb(colorArray, r); - if(cComps>1) - BufferUtil.putb(colorArray, g); - if(cComps>2) - BufferUtil.putb(colorArray, b); - padding(COLOR, cComps-3); - } - public void glColor4b(byte r, byte g, byte b, byte a) { - checkSeal(false); - growBufferIfNecessary(COLOR, 4); - if(cComps>0) - BufferUtil.putb(colorArray, r); - if(cComps>1) - BufferUtil.putb(colorArray, g); - if(cComps>2) - BufferUtil.putb(colorArray, b); - if(cComps>3) - BufferUtil.putb(colorArray, a); - padding(COLOR, cComps-4); - } - public void glColor3s(short r, short g, short b) { - checkSeal(false); - growBufferIfNecessary(COLOR, 3); - if(cComps>0) - BufferUtil.puts(colorArray, r); - if(cComps>1) - BufferUtil.puts(colorArray, g); - if(cComps>2) - BufferUtil.puts(colorArray, b); - padding(COLOR, cComps-3); - } - public void glColor4s(short r, short g, short b, short a) { - checkSeal(false); - growBufferIfNecessary(COLOR, 4); - if(cComps>0) - BufferUtil.puts(colorArray, r); - if(cComps>1) - BufferUtil.puts(colorArray, g); - if(cComps>2) - BufferUtil.puts(colorArray, b); - if(cComps>3) - BufferUtil.puts(colorArray, a); - padding(COLOR, cComps-4); - } - public void glColor3f(float r, float g, float b) { - checkSeal(false); - growBufferIfNecessary(COLOR, 3); - if(cComps>0) - BufferUtil.putf(colorArray, r); - if(cComps>1) - BufferUtil.putf(colorArray, g); - if(cComps>2) - BufferUtil.putf(colorArray, b); - padding(COLOR, cComps-3); - } - public void glColor4f(float r, float g, float b, float a) { - checkSeal(false); - growBufferIfNecessary(COLOR, 4); - if(cComps>0) - BufferUtil.putf(colorArray, r); - if(cComps>1) - BufferUtil.putf(colorArray, g); - if(cComps>2) - BufferUtil.putf(colorArray, b); - if(cComps>3) - BufferUtil.putf(colorArray, a); - padding(COLOR, cComps-4); - } - - public void glTexCoord2b(byte x, byte y) { - checkSeal(false); - growBufferIfNecessary(TEXTCOORD, 2); - if(tComps>0) - BufferUtil.putb(textCoordArray, x); - if(tComps>1) - BufferUtil.putb(textCoordArray, y); - padding(TEXTCOORD, tComps-2); - } - public void glTexCoord3b(byte x, byte y, byte z) { - checkSeal(false); - growBufferIfNecessary(TEXTCOORD, 3); - if(tComps>0) - BufferUtil.putb(textCoordArray, x); - if(tComps>1) - BufferUtil.putb(textCoordArray, y); - if(tComps>2) - BufferUtil.putb(textCoordArray, z); - padding(TEXTCOORD, tComps-3); - } - public void glTexCoord2s(short x, short y) { - checkSeal(false); - growBufferIfNecessary(TEXTCOORD, 2); - if(tComps>0) - BufferUtil.puts(textCoordArray, x); - if(tComps>1) - BufferUtil.puts(textCoordArray, y); - padding(TEXTCOORD, tComps-2); - } - public void glTexCoord3s(short x, short y, short z) { - checkSeal(false); - growBufferIfNecessary(TEXTCOORD, 3); - if(tComps>0) - BufferUtil.puts(textCoordArray, x); - if(tComps>1) - BufferUtil.puts(textCoordArray, y); - if(tComps>2) - BufferUtil.puts(textCoordArray, z); - padding(TEXTCOORD, tComps-3); - } - public void glTexCoord2f(float x, float y) { - checkSeal(false); - growBufferIfNecessary(TEXTCOORD, 2); - if(tComps>0) - BufferUtil.putf(textCoordArray, x); - if(tComps>1) - BufferUtil.putf(textCoordArray, y); - padding(TEXTCOORD, tComps-2); - } - public void glTexCoord3f(float x, float y, float z) { - checkSeal(false); - growBufferIfNecessary(TEXTCOORD, 3); - if(tComps>0) - BufferUtil.putf(textCoordArray, x); - if(tComps>1) - BufferUtil.putf(textCoordArray, y); - if(tComps>2) - BufferUtil.putf(textCoordArray, z); - padding(TEXTCOORD, tComps-3); - } - - public void rewind() { - if(null!=vertexArray) { - vertexArray.rewind(); - } - if(null!=colorArray) { - colorArray.rewind(); - } - if(null!=normalArray) { - normalArray.rewind(); - } - if(null!=textCoordArray) { - textCoordArray.rewind(); - } - } - - public void destroy(GL gl) { - reset(gl); - - vertexArray=null; colorArray=null; normalArray=null; textCoordArray=null; - vArrayData=null; cArrayData=null; nArrayData=null; tArrayData=null; - buffer=null; - bSize=0; count=0; - } - - public void reset(GL gl) { - enableBuffer(gl, false); - reset(); - } - - public void reset() { - if(buffer!=null) { - buffer.clear(); - } - rewind(); - - this.mode = -1; - this.modeOrig = -1; - this.sealed=false; - this.bufferEnabled=false; - this.bufferWritten=false; - } - - public void seal(GL glObj, boolean seal) - { - seal(seal); - if(sealedGL==seal) return; - sealedGL = seal; - GL gl = glObj.getGL(); - if(seal) { - if(vboUsage && vboName==0) { - int[] tmp = new int[1]; - gl.glGenBuffers(1, tmp, 0); - vboName = tmp[0]; - } - if(null!=vArrayData) - vArrayData.setVBOName(vboName); - if(null!=cArrayData) - cArrayData.setVBOName(vboName); - if(null!=nArrayData) - nArrayData.setVBOName(vboName); - if(null!=tArrayData) - tArrayData.setVBOName(vboName); - enableBuffer(gl, true); - } else { - enableBuffer(gl, false); - } - } - - public void seal(boolean seal) - { - if(sealed==seal) return; - sealed = seal; - if(seal) { - bufferWritten=false; - } - } - - public void enableBuffer(GL gl, boolean enable) { - /* if(enableBufferAlways && enable) { - bufferEnabled = false; - } */ - if( bufferEnabled != enable && count>0 ) { - if(enable) { - checkSeal(true); - } - if(useGLSL) { - enableBufferGLSL(gl, enable); - } else { - enableBufferFixed(gl, enable); - } - bufferEnabled = enable; - } - } - - public void enableBufferFixed(GL gl, boolean enable) { - GL2ES1 glf = gl.getGL2ES1(); - - if(enable) { - gl.glBindBuffer(GL.GL_ARRAY_BUFFER, vboName); - - if(!bufferWritten) { - gl.glBufferData(GL.GL_ARRAY_BUFFER, buffer.limit(), buffer, GL.GL_STATIC_DRAW); - bufferWritten=true; - } - - if(vComps>0) { - glf.glEnableClientState(glf.GL_VERTEX_ARRAY); - glf.glVertexPointer(vArrayData); - } - if(cComps>0) { - glf.glEnableClientState(glf.GL_COLOR_ARRAY); - glf.glColorPointer(cArrayData); - } - if(nComps>0) { - glf.glEnableClientState(glf.GL_NORMAL_ARRAY); - glf.glNormalPointer(nArrayData); - } - if(tComps>0) { - glf.glEnableClientState(glf.GL_TEXTURE_COORD_ARRAY); - glf.glTexCoordPointer(tArrayData); - } - - gl.glBindBuffer(GL.GL_ARRAY_BUFFER, 0); - } else { - if(vComps>0) { - glf.glDisableClientState(glf.GL_VERTEX_ARRAY); - } - if(cComps>0) { - glf.glDisableClientState(glf.GL_COLOR_ARRAY); - } - if(nComps>0) { - glf.glDisableClientState(glf.GL_NORMAL_ARRAY); - } - if(tComps>0) { - glf.glDisableClientState(glf.GL_TEXTURE_COORD_ARRAY); - } - } - } - - public void enableBufferGLSL(GL gl, boolean enable) { - GL2ES2 glsl = gl.getGL2ES2(); - com.sun.opengl.util.glsl.ShaderState st = com.sun.opengl.util.glsl.ShaderState.getCurrent(); - if(null==st) { - throw new GLException("No ShaderState current"); - } - - if(enable) { - glsl.glBindBuffer(GL.GL_ARRAY_BUFFER, vboName); - - if(!bufferWritten) { - glsl.glBufferData(GL.GL_ARRAY_BUFFER, buffer.limit(), buffer, GL.GL_STATIC_DRAW); - bufferWritten=true; - } - - if(vComps>0) { - st.glEnableVertexAttribArray(glsl, vArrayData.getName()); - st.glVertexAttribPointer(glsl, vArrayData); - } - if(cComps>0) { - st.glEnableVertexAttribArray(glsl, cArrayData.getName()); - st.glVertexAttribPointer(glsl, cArrayData); - } - if(nComps>0) { - st.glEnableVertexAttribArray(glsl, nArrayData.getName()); - st.glVertexAttribPointer(glsl, nArrayData); - } - if(tComps>0) { - st.glEnableVertexAttribArray(glsl, tArrayData.getName()); - st.glVertexAttribPointer(glsl, tArrayData); - } - - glsl.glBindBuffer(GL.GL_ARRAY_BUFFER, 0); - } else { - if(vComps>0) { - st.glDisableVertexAttribArray(glsl, vArrayData.getName()); - } - if(cComps>0) { - st.glDisableVertexAttribArray(glsl, cArrayData.getName()); - } - if(nComps>0) { - st.glDisableVertexAttribArray(glsl, nArrayData.getName()); - } - if(tComps>0) { - st.glDisableVertexAttribArray(glsl, tArrayData.getName()); - } - } - } - - public String toString() { - return "VBOSet[mode "+mode+ - ", modeOrig "+modeOrig+ - ", sealed "+sealed+ - ", bufferEnabled "+bufferEnabled+ - ", bufferWritten "+bufferWritten+ - ",\n\t"+vArrayData+ - ",\n\t"+cArrayData+ - ",\n\t"+nArrayData+ - ",\n\t"+tArrayData+ - "]"; - } - - // non public matters - - protected void allocateBuffer(int elements) { - int vWidth = vComps * BufferUtil.sizeOfGLType(vDataType); - int cWidth = cComps * BufferUtil.sizeOfGLType(cDataType); - int nWidth = nComps * BufferUtil.sizeOfGLType(nDataType); - int tWidth = tComps * BufferUtil.sizeOfGLType(tDataType); - - count = elements; - bSize = count * ( vWidth + cWidth + nWidth + tWidth ) ; - - buffer = BufferUtil.newByteBuffer(bSize); - - int pos = 0; - int size= count * vWidth ; - if(size>0) { - vertexArray = BufferUtil.sliceGLBuffer(buffer, pos, size, vDataType); - } else { - vertexArray = null; - } - vOffset = pos; - pos+=size; - - size= count * cWidth ; - if(size>0) { - colorArray = BufferUtil.sliceGLBuffer(buffer, pos, size, cDataType); - } else { - colorArray = null; - } - cOffset = pos; - pos+=size; - - size= count * nWidth ; - if(size>0) { - normalArray = BufferUtil.sliceGLBuffer(buffer, pos, size, nDataType); - } else { - normalArray = null; - } - nOffset = pos; - pos+=size; - - size= count * tWidth ; - if(size>0) { - textCoordArray = BufferUtil.sliceGLBuffer(buffer, pos, size, tDataType); - } else { - textCoordArray = null; - } - tOffset = pos; - pos+=size; - - buffer.position(pos); - buffer.flip(); - - if(vComps>0) { - vArrayData = GLArrayDataWrapper.createFixed(gl, GLPointerFunc.GL_VERTEX_ARRAY, vComps, vDataType, false, - 0, vertexArray, 0, vOffset); - } else { - vArrayData = null; - } - if(cComps>0) { - cArrayData = GLArrayDataWrapper.createFixed(gl, GLPointerFunc.GL_COLOR_ARRAY, cComps, cDataType, false, - 0, colorArray, 0, cOffset); - } else { - cArrayData = null; - } - if(nComps>0) { - nArrayData = GLArrayDataWrapper.createFixed(gl, GLPointerFunc.GL_NORMAL_ARRAY, nComps, nDataType, false, - 0, normalArray, 0, nOffset); - } else { - nArrayData = null; - } - if(tComps>0) { - tArrayData = GLArrayDataWrapper.createFixed(gl, GLPointerFunc.GL_TEXTURE_COORD_ARRAY, tComps, tDataType, false, - 0, textCoordArray, 0, tOffset); - } else { - tArrayData = null; - } - - } - - protected final boolean growBufferIfNecessary(int type, int spare) { - if(buffer==null || count < spare) { - growBuffer(type, initialSize); - return true; - } - return false; - } - - protected final void growBuffer(int type, int additional) { - if(sealed || 0==additional) return; - - // save olde values .. - Buffer _vertexArray=vertexArray, _colorArray=colorArray, _normalArray=normalArray, _textCoordArray=textCoordArray; - ByteBuffer _buffer = buffer; - - allocateBuffer(count+additional); - - if(null!=_vertexArray) { - _vertexArray.flip(); - BufferUtil.put(vertexArray, _vertexArray); - } - if(null!=_colorArray) { - _colorArray.flip(); - BufferUtil.put(colorArray, _colorArray); - } - if(null!=_normalArray) { - _normalArray.flip(); - BufferUtil.put(normalArray, _normalArray); - } - if(null!=_textCoordArray) { - _textCoordArray.flip(); - BufferUtil.put(textCoordArray, _textCoordArray); - } - } - - protected void padding(int type, int fill) { - if ( sealed ) return; - - Buffer dest = null; - - switch (type) { - case VERTEX: - dest = vertexArray; - break; - case COLOR: - dest = colorArray; - break; - case NORMAL: - dest = normalArray; - break; - case TEXTCOORD: - dest = textCoordArray; - break; - } - - if ( null==dest ) return; - - while((fill--)>0) { - BufferUtil.putb(dest, (byte)0); - } - } - - protected int mode, modeOrig; - protected int glBufferUsage, initialSize; - - protected ByteBuffer buffer; - protected int bSize, count, vboName; - - public static final int VERTEX = 0; - public static final int COLOR = 1; - public static final int NORMAL = 2; - public static final int TEXTCOORD = 3; - - protected int vOffset, cOffset, nOffset, tOffset; - protected int vComps, cComps, nComps, tComps; - protected int vDataType, cDataType, nDataType, tDataType; - protected Buffer vertexArray, colorArray, normalArray, textCoordArray; - protected GLArrayDataWrapper vArrayData, cArrayData, nArrayData, tArrayData; - - protected boolean sealed, sealedGL, useGLSL; - protected boolean bufferEnabled, bufferWritten; - protected GL gl; - } - -} - diff --git a/src/jogl/classes/com/sun/opengl/util/Locator.java b/src/jogl/classes/com/sun/opengl/util/Locator.java deleted file mode 100644 index 06cd50ce8..000000000 --- a/src/jogl/classes/com/sun/opengl/util/Locator.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (c) 2009 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -package com.sun.opengl.util; - -import java.util.*; -import java.nio.*; -import java.io.*; -import java.net.*; - -/** Utilities for dealing with resources. */ - -public class Locator { - private Locator() {} - - /** - * Locates the resource using 'getResource(String path, ClassLoader cl)', - * with this context ClassLoader and the path as is, - * as well with the context's package name path plus the path. - * - * @see #getResource(String, ClassLoader) - */ - public static URL getResource(Class context, String path) { - ClassLoader contextCL = (null!=context)?context.getClassLoader():null; - URL url = getResource(path, contextCL); - if (url == null && null!=context) { - // Try again by scoping the path within the class's package - String className = context.getName().replace('.', '/'); - int lastSlash = className.lastIndexOf('/'); - if (lastSlash >= 0) { - String tmpPath = className.substring(0, lastSlash + 1) + path; - url = getResource(tmpPath, contextCL); - } - } - return url; - } - - /** - * Locates the resource using the ClassLoader's facility, - * the absolute URL and absolute file. - * - * @see ClassLoader#getResource(String) - * @see ClassLoader#getSystemResource(String) - * @see URL#URL(String) - * @see File#File(String) - */ - public static URL getResource(String path, ClassLoader cl) { - URL url = null; - if (cl != null) { - url = cl.getResource(path); - } else { - url = ClassLoader.getSystemResource(path); - } - if(!urlExists(url)) { - url = null; - try { - url = new URL(path); - } catch (MalformedURLException e) { } - } - if(!urlExists(url)) { - url = null; - try { - File file = new File(path); - if(file.exists()) { - url = file.toURL(); - } - } catch (MalformedURLException e) {} - } - return url; - } - - /** - * Generates a path for the 'relativeFile' relative to the 'absoluteFileLocation' - */ - public static String getRelativeOf(String absoluteFileLocation, String relativeFile) { - File file = new File(absoluteFileLocation); - file = file.getParentFile(); - while (file != null && relativeFile.startsWith("../")) { - file = file.getParentFile(); - relativeFile = relativeFile.substring(3); - } - if (file != null) { - String res = new File(file, relativeFile).getPath(); - // Handle things on Windows - return res.replace('\\', '/'); - } else { - return relativeFile; - } - } - - /** - * Returns true, if the url exists, - * trying to open a connection. - */ - public static boolean urlExists(URL url) { - boolean v = false; - if(null!=url) { - try { - URLConnection uc = url.openConnection(); - v = true; - } catch (IOException ioe) { } - } - return v; - } - -} - diff --git a/src/jogl/classes/com/sun/opengl/util/PMVMatrix.java b/src/jogl/classes/com/sun/opengl/util/PMVMatrix.java deleted file mode 100755 index 4211e893b..000000000 --- a/src/jogl/classes/com/sun/opengl/util/PMVMatrix.java +++ /dev/null @@ -1,685 +0,0 @@ -/* - * Copyright (c) 2009 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -package com.sun.opengl.util; - -import com.sun.opengl.impl.ProjectFloat; - -import java.nio.*; -import java.util.ArrayList; -import java.util.List; - -import javax.media.opengl.*; -import javax.media.opengl.fixedfunc.GLMatrixFunc; - -public class PMVMatrix implements GLMatrixFunc { - - public PMVMatrix() { - projectFloat = new ProjectFloat(); - - matrixIdent = BufferUtil.newFloatBuffer(1*16); - projectFloat.gluMakeIdentityf(matrixIdent); - matrixIdent.rewind(); - - // T Texture - // P Projection - // Mv ModelView - // Mvi Modelview-Inverse - // Mvit Modelview-Inverse-Transpose - // Pmv P * Mv - matrixTPMvMvitPmv = BufferUtil.newFloatBuffer(6*16); // grouping T + P + Mv + Mvi + Mvit + Pmv - matrixPMvMvitPmv = slice(matrixTPMvMvitPmv, 1*16, 5*16); // grouping P + Mv + Mvi + Mvit + Pmv - matrixT = slice(matrixTPMvMvitPmv, 0*16, 1*16); // T - matrixPMvMvit = slice(matrixTPMvMvitPmv, 1*16, 4*16); // grouping P + Mv + Mvi + Mvit - matrixPMvMvi = slice(matrixTPMvMvitPmv, 1*16, 3*16); // grouping P + Mv + Mvi - matrixPMv = slice(matrixTPMvMvitPmv, 1*16, 2*16); // grouping P + Mv - matrixP = slice(matrixTPMvMvitPmv, 1*16, 1*16); // P - matrixMv = slice(matrixTPMvMvitPmv, 2*16, 1*16); // Mv - matrixMvi = slice(matrixTPMvMvitPmv, 3*16, 1*16); // Mvi - matrixMvit = slice(matrixTPMvMvitPmv, 4*16, 1*16); // Mvit - matrixPmv = slice(matrixTPMvMvitPmv, 5*16, 1*16); // Pmv - matrixTPMvMvitPmv.rewind(); - - matrixMvit3 = BufferUtil.newFloatBuffer(3*3); - - localBuf = BufferUtil.newFloatBuffer(6*16); - - matrixMult=slice(localBuf, 0*16, 16); - - matrixTrans=slice(localBuf, 1*16, 16); - projectFloat.gluMakeIdentityf(matrixTrans); - - matrixRot=slice(localBuf, 2*16, 16); - projectFloat.gluMakeIdentityf(matrixRot); - - matrixScale=slice(localBuf, 3*16, 16); - projectFloat.gluMakeIdentityf(matrixScale); - - matrixOrtho=slice(localBuf, 4*16, 16); - projectFloat.gluMakeIdentityf(matrixOrtho); - - matrixFrustum=slice(localBuf, 5*16, 16); - projectFloat.gluMakeZero(matrixFrustum); - - vec3f=new float[3]; - - matrixPStack = new ArrayList(); - matrixMvStack= new ArrayList(); - - // default values and mode - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glMatrixMode(GL.GL_TEXTURE); - glLoadIdentity(); - setDirty(); - } - - public void destroy() { - if(null!=projectFloat) { - projectFloat.destroy(); projectFloat=null; - } - - if(null!=matrixIdent) { - matrixIdent.clear(); matrixIdent=null; - } - if(null!=matrixTPMvMvitPmv) { - matrixTPMvMvitPmv.clear(); matrixTPMvMvitPmv=null; - } - if(null!=matrixMvit3) { - matrixMvit3.clear(); matrixMvit3=null; - } - if(null!=localBuf) { - localBuf.clear(); localBuf=null; - } - - if(null!=matrixPStack) { - matrixPStack.clear(); matrixPStack=null; - } - vec3f=null; - if(null!=matrixMvStack) { - matrixMvStack.clear(); matrixMvStack=null; - } - if(null!=matrixPStack) { - matrixPStack.clear(); matrixPStack=null; - } - if(null!=matrixTStack) { - matrixTStack.clear(); matrixTStack=null; - } - - matrixTPMvMvitPmv=null; matrixPMvMvit=null; matrixPMvMvitPmv=null; matrixPMvMvi=null; matrixPMv=null; - matrixP=null; matrixT=null; matrixMv=null; matrixMvi=null; matrixMvit=null; matrixPmv=null; - matrixMult=null; matrixTrans=null; matrixRot=null; matrixScale=null; matrixOrtho=null; matrixFrustum=null; - } - - private static FloatBuffer slice(FloatBuffer buf, int pos, int len) { - buf.position(pos); - buf.limit(pos + len); - return buf.slice(); - } - - public static final boolean isMatrixModeName(final int matrixModeName) { - switch(matrixModeName) { - case GL_MODELVIEW_MATRIX: - case GL_PROJECTION_MATRIX: - case GL_TEXTURE_MATRIX: - return true; - } - return false; - } - - public static final int matrixModeName2MatrixGetName(final int matrixModeName) { - switch(matrixModeName) { - case GL_MODELVIEW: - return GL_MODELVIEW_MATRIX; - case GL_PROJECTION: - return GL_PROJECTION_MATRIX; - case GL.GL_TEXTURE: - return GL_TEXTURE_MATRIX; - default: - throw new GLException("unsupported matrixName: "+matrixModeName); - } - } - - public static final boolean isMatrixGetName(final int matrixGetName) { - switch(matrixGetName) { - case GL_MATRIX_MODE: - case GL_MODELVIEW_MATRIX: - case GL_PROJECTION_MATRIX: - case GL_TEXTURE_MATRIX: - return true; - } - return false; - } - - public static final int matrixGetName2MatrixModeName(final int matrixGetName) { - switch(matrixGetName) { - case GL_MODELVIEW_MATRIX: - return GL_MODELVIEW; - case GL_PROJECTION_MATRIX: - return GL_PROJECTION; - case GL_TEXTURE_MATRIX: - return GL.GL_TEXTURE; - default: - throw new GLException("unsupported matrixGetName: "+matrixGetName); - } - } - - public void setDirty() { - modified = DIRTY_MODELVIEW | DIRTY_PROJECTION | DIRTY_TEXTURE ; - matrixMode = GL_MODELVIEW; - } - - public int getDirtyBits() { - return modified; - } - - public boolean isDirty(final int matrixName) { - boolean res; - switch(matrixName) { - case GL_MODELVIEW: - res = (modified&DIRTY_MODELVIEW)!=0 ; - break; - case GL_PROJECTION: - res = (modified&DIRTY_PROJECTION)!=0 ; - break; - case GL.GL_TEXTURE: - res = (modified&DIRTY_TEXTURE)!=0 ; - break; - default: - throw new GLException("unsupported matrixName: "+matrixName); - } - return res; - } - - public boolean isDirty() { - return modified!=0; - } - - public boolean update() { - // if(0==modified) return false; - - // int res = modified; - int res = DIRTY_MODELVIEW | DIRTY_PROJECTION ; - if( (res&DIRTY_MODELVIEW)!=0 ) { - setMviMvit(); - } - if( (res&DIRTY_MODELVIEW)!=0 || (res&DIRTY_PROJECTION)!=0 ) { - glMultMatrixf(matrixP, matrixMv, matrixPmv); - } - modified=0; - return res!=0; - } - - public final int glGetMatrixMode() { - return matrixMode; - } - - public final FloatBuffer glGetTMatrixf() { - return matrixT; - } - - public final FloatBuffer glGetPMatrixf() { - return matrixP; - } - - public final FloatBuffer glGetMvMatrixf() { - return matrixMv; - } - - public final FloatBuffer glGetPMvMvitPmvMatrixf() { - return matrixPMvMvitPmv; - } - - public final FloatBuffer glGetPMvMvitMatrixf() { - return matrixPMvMvit; - } - - public final FloatBuffer glGetPMvMviMatrixf() { - return matrixPMvMvi; - } - - public final FloatBuffer glGetPMvMatrixf() { - return matrixPMv; - } - - public final FloatBuffer glGetMviMatrixf() { - return matrixMvi; - } - - public final FloatBuffer glGetPmvMatrixf() { - return matrixPmv; - } - - public final FloatBuffer glGetNormalMatrixf() { - return matrixMvit3; - } - - /* - * @return the current matrix - */ - public final FloatBuffer glGetMatrixf() { - return glGetMatrixf(matrixMode); - } - - /** - * @param pname GL_MODELVIEW, GL_PROJECTION or GL.GL_TEXTURE - * @return the given matrix - */ - public final FloatBuffer glGetMatrixf(final int matrixName) { - if(matrixName==GL_MODELVIEW) { - return matrixMv; - } else if(matrixName==GL_PROJECTION) { - return matrixP; - } else if(matrixName==GL.GL_TEXTURE) { - return matrixT; - } else { - throw new GLException("unsupported matrixName: "+matrixName); - } - } - - public final void gluPerspective(final float fovy, final float aspect, final float zNear, final float zFar) { - float top=(float)Math.tan(fovy*((float)Math.PI)/360.0f)*zNear; - float bottom=-1.0f*top; - float left=aspect*bottom; - float right=aspect*top; - glFrustumf(left, right, bottom, top, zNear, zFar); - } - - public static final void glMultMatrixf(final FloatBuffer a, final FloatBuffer b, FloatBuffer p) { - for (int i = 0; i < 4; i++) { - final float ai0=a.get(i+0*4), ai1=a.get(i+1*4), ai2=a.get(i+2*4), ai3=a.get(i+3*4); - p.put(i+0*4 , ai0 * b.get(0+0*4) + ai1 * b.get(1+0*4) + ai2 * b.get(2+0*4) + ai3 * b.get(3+0*4) ); - p.put(i+1*4 , ai0 * b.get(0+1*4) + ai1 * b.get(1+1*4) + ai2 * b.get(2+1*4) + ai3 * b.get(3+1*4) ); - p.put(i+2*4 , ai0 * b.get(0+2*4) + ai1 * b.get(1+2*4) + ai2 * b.get(2+2*4) + ai3 * b.get(3+2*4) ); - p.put(i+3*4 , ai0 * b.get(0+3*4) + ai1 * b.get(1+3*4) + ai2 * b.get(2+3*4) + ai3 * b.get(3+3*4) ); - } - } - public static final void glMultMatrixf(final FloatBuffer a, final float[] b, int b_off, FloatBuffer p) { - for (int i = 0; i < 4; i++) { - final float ai0=a.get(i+0*4), ai1=a.get(i+1*4), ai2=a.get(i+2*4), ai3=a.get(i+3*4); - p.put(i+0*4 , ai0 * b[b_off+0+0*4] + ai1 * b[b_off+1+0*4] + ai2 * b[b_off+2+0*4] + ai3 * b[b_off+3+0*4] ); - p.put(i+1*4 , ai0 * b[b_off+0+1*4] + ai1 * b[b_off+1+1*4] + ai2 * b[b_off+2+1*4] + ai3 * b[b_off+3+1*4] ); - p.put(i+2*4 , ai0 * b[b_off+0+2*4] + ai1 * b[b_off+1+2*4] + ai2 * b[b_off+2+2*4] + ai3 * b[b_off+3+2*4] ); - p.put(i+3*4 , ai0 * b[b_off+0+3*4] + ai1 * b[b_off+1+3*4] + ai2 * b[b_off+2+3*4] + ai3 * b[b_off+3+3*4] ); - } - } - - // - // MatrixIf - // - - public void glMatrixMode(final int matrixName) { - switch(matrixName) { - case GL_MODELVIEW: - case GL_PROJECTION: - case GL.GL_TEXTURE: - break; - default: - throw new GLException("unsupported matrixName: "+matrixName); - } - matrixMode = matrixName; - } - - public void glGetFloatv(int matrixGetName, FloatBuffer params) { - int pos = params.position(); - if(matrixGetName==GL_MATRIX_MODE) { - params.put((float)matrixMode); - } else { - FloatBuffer matrix = glGetMatrixf(matrixGetName2MatrixModeName(matrixGetName)); - params.put(matrix); - matrix.rewind(); - } - params.position(pos); - } - public void glGetFloatv(int matrixGetName, float[] params, int params_offset) { - if(matrixGetName==GL_MATRIX_MODE) { - params[params_offset]=(float)matrixMode; - } else { - FloatBuffer matrix = glGetMatrixf(matrixGetName2MatrixModeName(matrixGetName)); - matrix.get(params, params_offset, 16); - matrix.rewind(); - } - } - public void glGetIntegerv(int pname, IntBuffer params) { - int pos = params.position(); - if(pname==GL_MATRIX_MODE) { - params.put(matrixMode); - } else { - throw new GLException("unsupported pname: "+pname); - } - params.position(pos); - } - public void glGetIntegerv(int pname, int[] params, int params_offset) { - if(pname==GL_MATRIX_MODE) { - params[params_offset]=matrixMode; - } else { - throw new GLException("unsupported pname: "+pname); - } - } - - public final void glLoadMatrixf(final float[] values, final int offset) { - int len = values.length-offset; - if(matrixMode==GL_MODELVIEW) { - matrixMv.clear(); - matrixMv.put(values, offset, len); - matrixMv.rewind(); - modified |= DIRTY_MODELVIEW ; - } else if(matrixMode==GL_PROJECTION) { - matrixP.clear(); - matrixP.put(values, offset, len); - matrixP.rewind(); - modified |= DIRTY_PROJECTION ; - } else if(matrixMode==GL.GL_TEXTURE) { - matrixT.clear(); - matrixT.put(values, offset, len); - matrixT.rewind(); - modified |= DIRTY_TEXTURE ; - } - } - - public final void glLoadMatrixf(java.nio.FloatBuffer m) { - int spos = m.position(); - if(matrixMode==GL_MODELVIEW) { - matrixMv.clear(); - matrixMv.put(m); - matrixMv.rewind(); - modified |= DIRTY_MODELVIEW ; - } else if(matrixMode==GL_PROJECTION) { - matrixP.clear(); - matrixP.put(m); - matrixP.rewind(); - modified |= DIRTY_PROJECTION ; - } else if(matrixMode==GL.GL_TEXTURE) { - matrixT.clear(); - matrixT.put(m); - matrixT.rewind(); - modified |= DIRTY_TEXTURE ; - } - m.position(spos); - } - - public final void glPopMatrix() { - float[] stackEntry=null; - if(matrixMode==GL_MODELVIEW) { - stackEntry = (float[])matrixMvStack.remove(0); - } else if(matrixMode==GL_PROJECTION) { - stackEntry = (float[])matrixPStack.remove(0); - } else if(matrixMode==GL.GL_TEXTURE) { - stackEntry = (float[])matrixTStack.remove(0); - } - glLoadMatrixf(stackEntry, 0); - } - - public final void glPushMatrix() { - float[] stackEntry = new float[1*16]; - if(matrixMode==GL_MODELVIEW) { - matrixMv.get(stackEntry); - matrixMv.rewind(); - matrixMvStack.add(0, stackEntry); - } else if(matrixMode==GL_PROJECTION) { - matrixP.get(stackEntry); - matrixP.rewind(); - matrixPStack.add(0, stackEntry); - } else if(matrixMode==GL.GL_TEXTURE) { - matrixT.get(stackEntry); - matrixT.rewind(); - matrixTStack.add(0, stackEntry); - } - } - - public final void glLoadIdentity() { - if(matrixMode==GL_MODELVIEW) { - matrixMv.clear(); - matrixMv.put(matrixIdent); - matrixMv.rewind(); - matrixIdent.rewind(); - modified |= DIRTY_MODELVIEW ; - } else if(matrixMode==GL_PROJECTION) { - matrixP.clear(); - matrixP.put(matrixIdent); - matrixP.rewind(); - matrixIdent.rewind(); - modified |= DIRTY_PROJECTION ; - } else if(matrixMode==GL.GL_TEXTURE) { - matrixT.clear(); - matrixT.put(matrixIdent); - matrixT.rewind(); - matrixIdent.rewind(); - modified |= DIRTY_TEXTURE ; - } - } - - public final void glMultMatrixf(final FloatBuffer m) { - if(matrixMode==GL_MODELVIEW) { - glMultMatrixf(matrixMv, m, matrixMult); - matrixMv.clear(); - matrixMv.put(matrixMult); - matrixMv.rewind(); - modified |= DIRTY_MODELVIEW ; - } else if(matrixMode==GL_PROJECTION) { - glMultMatrixf(matrixP, m, matrixMult); - matrixP.clear(); - matrixP.put(matrixMult); - matrixP.rewind(); - modified |= DIRTY_PROJECTION ; - } else if(matrixMode==GL.GL_TEXTURE) { - glMultMatrixf(matrixT, m, matrixMult); - matrixT.clear(); - matrixT.put(matrixMult); - matrixT.rewind(); - modified |= DIRTY_TEXTURE ; - } - matrixMult.rewind(); - } - - public void glMultMatrixf(float[] m, int m_offset) { - if(matrixMode==GL_MODELVIEW) { - glMultMatrixf(matrixMv, m, m_offset, matrixMult); - matrixMv.clear(); - matrixMv.put(matrixMult); - matrixMv.rewind(); - modified |= DIRTY_MODELVIEW ; - } else if(matrixMode==GL_PROJECTION) { - glMultMatrixf(matrixP, m, m_offset, matrixMult); - matrixP.clear(); - matrixP.put(matrixMult); - matrixP.rewind(); - modified |= DIRTY_PROJECTION ; - } else if(matrixMode==GL.GL_TEXTURE) { - glMultMatrixf(matrixT, m, m_offset, matrixMult); - matrixT.clear(); - matrixT.put(matrixMult); - matrixT.rewind(); - modified |= DIRTY_TEXTURE ; - } - matrixMult.rewind(); - } - - public final void glTranslatef(final float x, final float y, final float z) { - // Translation matrix: - // 1 0 0 x - // 0 1 0 y - // 0 0 1 z - // 0 0 0 1 - matrixTrans.put(0+4*3, x); - matrixTrans.put(1+4*3, y); - matrixTrans.put(2+4*3, z); - glMultMatrixf(matrixTrans); - } - - public final void glRotatef(final float angdeg, float x, float y, float z) { - float angrad = angdeg * (float) Math.PI / 180; - float c = (float)Math.cos(angrad); - float ic= 1.0f - c; - float s = (float)Math.sin(angrad); - - vec3f[0]=x; vec3f[1]=y; vec3f[2]=z; - projectFloat.normalize(vec3f); - x = vec3f[0]; y = vec3f[1]; z = vec3f[2]; - - // Rotation matrix: - // xx(1−c)+c xy(1−c)+zs xz(1−c)-ys 0 - // xy(1−c)-zs yy(1−c)+c yz(1−c)+xs 0 - // xz(1−c)+ys yz(1−c)-xs zz(1−c)+c 0 - // 0 0 0 1 - float xy = x*y; - float xz = x*z; - float xs = x*s; - float ys = y*s; - float yz = y*z; - float zs = z*s; - matrixRot.put(0*4+0, x*x*ic+c); - matrixRot.put(0*4+1, xy*ic+zs); - matrixRot.put(0*4+2, xz*ic-ys); - - matrixRot.put(1*4+0, xy*ic-zs); - matrixRot.put(1*4+1, y*y*ic+c); - matrixRot.put(1*4+2, yz*ic+xs); - - matrixRot.put(2*4+0, xz*ic+ys); - matrixRot.put(2*4+1, yz*ic-xs); - matrixRot.put(2*4+2, z*z*ic+c); - - glMultMatrixf(matrixRot); - } - - public final void glScalef(final float x, final float y, final float z) { - // Scale matrix: - // x 0 0 0 - // 0 y 0 0 - // 0 0 z 0 - // 0 0 0 1 - matrixScale.put(0+4*0, x); - matrixScale.put(1+4*1, y); - matrixScale.put(2+4*2, z); - - glMultMatrixf(matrixScale); - } - - public final void glOrthof(final float left, final float right, final float bottom, final float top, final float zNear, final float zFar) { - // Ortho matrix: - // 2/dx 0 0 tx - // 0 2/dy 0 ty - // 0 0 2/dz tz - // 0 0 0 1 - float dx=right-left; - float dy=top-bottom; - float dz=zFar-zNear; - float tx=-1.0f*(right+left)/dx; - float ty=-1.0f*(top+bottom)/dy; - float tz=-1.0f*(zFar+zNear)/dz; - - matrixOrtho.put(0+4*0, 2.0f/dx); - matrixOrtho.put(1+4*1, 2.0f/dy); - matrixOrtho.put(2+4*2, -2.0f/dz); - matrixOrtho.put(0+4*3, tx); - matrixOrtho.put(1+4*3, ty); - matrixOrtho.put(2+4*3, tz); - - glMultMatrixf(matrixOrtho); - } - - public final void glFrustumf(final float left, final float right, final float bottom, final float top, final float zNear, final float zFar) { - if(zNear<=0.0f||zFar<0.0f) { - throw new GLException("GL_INVALID_VALUE: zNear and zFar must be positive, and zNear>0"); - } - if(left==right || top==bottom) { - throw new GLException("GL_INVALID_VALUE: top,bottom and left,right must not be equal"); - } - // Frustum matrix: - // 2*zNear/dx 0 A 0 - // 0 2*zNear/dy B 0 - // 0 0 C D - // 0 0 −1 0 - float zNear2 = 2.0f*zNear; - float dx=right-left; - float dy=top-bottom; - float dz=zFar-zNear; - float A=(right+left)/dx; - float B=(top+bottom)/dy; - float C=-1.0f*(zFar+zNear)/dz; - float D=-2.0f*(zFar*zNear)/dz; - - matrixFrustum.put(0+4*0, zNear2/dx); - matrixFrustum.put(1+4*1, zNear2/dy); - matrixFrustum.put(2+4*2, C); - - matrixFrustum.put(0+4*2, A); - matrixFrustum.put(1+4*2, B); - - matrixFrustum.put(2+4*3, D); - matrixFrustum.put(3+4*2, -1.0f); - - glMultMatrixf(matrixFrustum); - } - - // - // private - // - - private final void setMviMvit() { - if(!projectFloat.gluInvertMatrixf(matrixMv, matrixMvi)) { - throw new GLException("Invalid source Mv matrix, can't compute inverse"); - } - - // transpose matrix - for (int i = 0; i < 4; i++) { - for (int j = 0; j < 4; j++) { - matrixMvit.put(j+i*4, matrixMvi.get(i+j*4)); - } - } - - // fetch 3x3 - for (int i = 0; i < 3; i++) { - for (int j = 0; j < 3; j++) { - matrixMvit3.put(i+j*3, matrixMvit.get(i+j*4)); - } - } - } - - protected FloatBuffer matrixIdent; - protected FloatBuffer matrixTPMvMvitPmv, matrixPMvMvit, matrixPMvMvitPmv, matrixPMvMvi, matrixPMv, matrixP, matrixT, matrixMv, matrixMvi, matrixMvit, matrixPmv; - protected FloatBuffer matrixMvit3; - protected FloatBuffer localBuf, matrixMult, matrixTrans, matrixRot, matrixScale, matrixOrtho, matrixFrustum; - protected float[] vec3f; - protected List/*FloatBuffer*/ matrixTStack, matrixPStack, matrixMvStack; - protected int matrixMode = GL_MODELVIEW; - protected int modified = 0; - protected ProjectFloat projectFloat; - - public static final int DIRTY_MODELVIEW = 1 << 0; - public static final int DIRTY_PROJECTION = 1 << 1; - public static final int DIRTY_TEXTURE = 1 << 2; -} diff --git a/src/jogl/classes/com/sun/opengl/util/StreamUtil.java b/src/jogl/classes/com/sun/opengl/util/StreamUtil.java deleted file mode 100755 index 8ad731743..000000000 --- a/src/jogl/classes/com/sun/opengl/util/StreamUtil.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util; - -import java.io.*; -import java.nio.*; - -/** Utilities for dealing with streams. */ - -public class StreamUtil { - private StreamUtil() {} - - public static byte[] readAll2Array(InputStream stream) throws IOException { - BytesRead bytesRead = readAllImpl(stream); - byte[] data = bytesRead.data; - if (bytesRead.payloadLen != data.length) { - data = new byte[bytesRead.payloadLen]; - System.arraycopy(bytesRead.data, 0, data, 0, bytesRead.payloadLen); - } - return data; - } - - public static ByteBuffer readAll2Buffer(InputStream stream) throws IOException { - BytesRead bytesRead = readAllImpl(stream); - return BufferUtil.newByteBuffer(bytesRead.data, 0, bytesRead.payloadLen); - } - - private static BytesRead readAllImpl(InputStream stream) throws IOException { - // FIXME: Shall we do this here ? - if( !(stream instanceof BufferedInputStream) ) { - stream = new BufferedInputStream(stream); - } - int avail = stream.available(); - byte[] data = new byte[avail]; - int numRead = 0; - int pos = 0; - do { - if (pos + avail > data.length) { - byte[] newData = new byte[pos + avail]; - System.arraycopy(data, 0, newData, 0, pos); - data = newData; - } - numRead = stream.read(data, pos, avail); - if (numRead >= 0) { - pos += numRead; - } - avail = stream.available(); - } while (avail > 0 && numRead >= 0); - - return new BytesRead(pos, data); - } - - private static class BytesRead { - BytesRead(int payloadLen, byte[] data) { - this.payloadLen=payloadLen; - this.data=data; - } - int payloadLen; - byte[] data; - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/TGAWriter.java b/src/jogl/classes/com/sun/opengl/util/TGAWriter.java deleted file mode 100755 index c5b1041a0..000000000 --- a/src/jogl/classes/com/sun/opengl/util/TGAWriter.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - */ - -package com.sun.opengl.util; - -import java.io.*; -import java.nio.*; -import java.nio.channels.*; - -/** - * Utility class which helps take fast screenshots of OpenGL rendering - * results into Targa-format files. Used by the {@link - * com.sun.opengl.util.gl2.Screenshot Screenshot} class; can also be used - * in conjunction with the {@link com.sun.opengl.util.gl2.TileRenderer - * TileRenderer} class. <P> - */ - -public class TGAWriter { - private static final int TARGA_HEADER_SIZE = 18; - - private FileChannel ch; - private ByteBuffer buf; - - /** Constructor for the TGAWriter. */ - public TGAWriter() { - } - - /** - * Opens the specified Targa file for writing, overwriting any - * existing file, and sets up the header of the file expecting the - * data to be filled in before closing it. - * - * @param file the file to write containing the screenshot - * @param width the width of the current drawable - * @param height the height of the current drawable - * @param alpha whether the alpha channel should be saved. If true, - * requires GL_EXT_abgr extension to be present. - * - * @throws IOException if an I/O error occurred while writing the - * file - */ - public void open(File file, - int width, - int height, - boolean alpha) throws IOException { - RandomAccessFile out = new RandomAccessFile(file, "rw"); - ch = out.getChannel(); - int pixelSize = (alpha ? 32 : 24); - int numChannels = (alpha ? 4 : 3); - - int fileLength = TARGA_HEADER_SIZE + width * height * numChannels; - out.setLength(fileLength); - MappedByteBuffer image = ch.map(FileChannel.MapMode.READ_WRITE, 0, fileLength); - - // write the TARGA header - image.put(0, (byte) 0).put(1, (byte) 0); - image.put(2, (byte) 2); // uncompressed type - image.put(12, (byte) (width & 0xFF)); // width - image.put(13, (byte) (width >> 8)); // width - image.put(14, (byte) (height & 0xFF)); // height - image.put(15, (byte) (height >> 8)); // height - image.put(16, (byte) pixelSize); // pixel size - - // go to image data position - image.position(TARGA_HEADER_SIZE); - // jogl needs a sliced buffer - buf = image.slice(); - } - - /** - * Returns the ByteBuffer corresponding to the data for the image. - * This must be filled in with data in either BGR or BGRA format - * depending on whether an alpha channel was specified during - * open(). - */ - public ByteBuffer getImageData() { - return buf; - } - - public void close() throws IOException { - // close the file channel - ch.close(); - buf = null; - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/awt/ImageUtil.java b/src/jogl/classes/com/sun/opengl/util/awt/ImageUtil.java deleted file mode 100755 index 534ab444d..000000000 --- a/src/jogl/classes/com/sun/opengl/util/awt/ImageUtil.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.awt; - -import java.awt.*; -import java.awt.image.*; - -/** Utilities for dealing with images. */ - -public class ImageUtil { - private ImageUtil() {} - - /** Flips the supplied BufferedImage vertically. This is often a - necessary conversion step to display a Java2D image correctly - with OpenGL and vice versa. */ - public static void flipImageVertically(BufferedImage image) { - WritableRaster raster = image.getRaster(); - Object scanline1 = null; - Object scanline2 = null; - - for (int i = 0; i < image.getHeight() / 2; i++) { - scanline1 = raster.getDataElements(0, i, image.getWidth(), 1, scanline1); - scanline2 = raster.getDataElements(0, image.getHeight() - i - 1, image.getWidth(), 1, scanline2); - raster.setDataElements(0, i, image.getWidth(), 1, scanline2); - raster.setDataElements(0, image.getHeight() - i - 1, image.getWidth(), 1, scanline1); - } - } - - /** - * Creates a <code>BufferedImage</code> with a pixel format compatible with the graphics - * environment. The returned image can thus benefit from hardware accelerated operations - * in Java2D API. - * - * @param width The width of the image to be created - * @param height The height of the image to be created - * - * @return A instance of <code>BufferedImage</code> with a type compatible with the graphics card. - */ - public static BufferedImage createCompatibleImage(int width, int height) { - GraphicsConfiguration configuration = - GraphicsEnvironment.getLocalGraphicsEnvironment(). - getDefaultScreenDevice().getDefaultConfiguration(); - return configuration.createCompatibleImage(width, height); - } - - /** - * Creates a thumbnail from an image. A thumbnail is a scaled down version of the original picture. - * This method will retain the width to height ratio of the original picture and return a new - * instance of <code>BufferedImage</code>. The original picture is not modified. - * - * @param image The original image to sample down - * @param thumbWidth The width of the thumbnail to be created - * - * @throws IllegalArgumentException If thumbWidth is greater than image.getWidth() - * - * @return A thumbnail with the requested width or the original picture if thumbWidth = image.getWidth() - */ - public static BufferedImage createThumbnail(BufferedImage image, int thumbWidth) { - // Thanks to Romain Guy for this utility - if (thumbWidth > image.getWidth()) { - throw new IllegalArgumentException("Thumbnail width must be greater than image width"); - } - - if (thumbWidth == image.getWidth()) { - return image; - } - - float ratio = (float) image.getWidth() / (float) image.getHeight(); - int width = image.getWidth(); - BufferedImage thumb = image; - - do { - width /= 2; - if (width < thumbWidth) { - width = thumbWidth; - } - - BufferedImage temp = createCompatibleImage(width, (int) (width / ratio)); - Graphics2D g2 = temp.createGraphics(); - g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, - RenderingHints.VALUE_INTERPOLATION_BILINEAR); - g2.drawImage(thumb, 0, 0, temp.getWidth(), temp.getHeight(), null); - g2.dispose(); - thumb = temp; - } while (width != thumbWidth); - - return thumb; - } - -} diff --git a/src/jogl/classes/com/sun/opengl/util/awt/Overlay.java b/src/jogl/classes/com/sun/opengl/util/awt/Overlay.java deleted file mode 100755 index 5a54a7161..000000000 --- a/src/jogl/classes/com/sun/opengl/util/awt/Overlay.java +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.awt; - -import java.awt.Graphics2D; - -import javax.media.opengl.*; -import com.sun.opengl.util.texture.*; - -/** Provides a Java 2D overlay on top of an arbitrary GLDrawable, - making it easier to do things like draw text and images on top of - an OpenGL scene while still maintaining reasonably good - efficiency. */ - -public class Overlay { - private GLDrawable drawable; - private TextureRenderer renderer; - private boolean contentsLost; - - /** Creates a new Java 2D overlay on top of the specified - GLDrawable. */ - public Overlay(GLDrawable drawable) { - this.drawable = drawable; - } - - /** Creates a {@link java.awt.Graphics2D Graphics2D} instance for - rendering into the overlay. The returned object should be - disposed of using the normal {@link java.awt.Graphics#dispose() - Graphics.dispose()} method once it is no longer being used. - - @return a new {@link java.awt.Graphics2D Graphics2D} object for - rendering into the backing store of this renderer - */ - public Graphics2D createGraphics() { - // Validate the size of the renderer against the current size of - // the drawable - validateRenderer(); - return renderer.createGraphics(); - } - - /** Indicates whether the Java 2D contents of the overlay were lost - since the last time {@link #createGraphics} was called. This - method should be called immediately after calling {@link - #createGraphics} to see whether the entire contents of the - overlay need to be redrawn or just the region the application is - interested in updating. - - @return whether the contents of the overlay were lost since the - last render - */ - public boolean contentsLost() { - return contentsLost; - } - - /** Marks the given region of the overlay as dirty. This region, and - any previously set dirty regions, will be automatically - synchronized with the underlying Texture during the next {@link - #draw draw} or {@link #drawAll drawAll} operation, at which - point the dirty region will be cleared. It is not necessary for - an OpenGL context to be current when this method is called. - - @param x the x coordinate (in Java 2D coordinates -- relative to - upper left) of the region to update - @param y the y coordinate (in Java 2D coordinates -- relative to - upper left) of the region to update - @param width the width of the region to update - @param height the height of the region to update - - @throws GLException If an OpenGL context is not current when this method is called */ - public void markDirty(int x, int y, int width, int height) { - renderer.markDirty(x, y, width, height); - } - - /** Draws the entire contents of the overlay on top of the OpenGL - drawable. This is a convenience method which encapsulates all - portions of the rendering process; if this method is used, - {@link #beginRendering}, {@link #endRendering}, etc. should not - be used. This method should be called while the OpenGL context - for the drawable is current, and after your OpenGL scene has - been rendered. - - @throws GLException If an OpenGL context is not current when this method is called - */ - public void drawAll() throws GLException { - beginRendering(); - draw(0, 0, drawable.getWidth(), drawable.getHeight()); - endRendering(); - } - - /** Begins the OpenGL rendering process for the overlay. This is - separated out so advanced applications can render independent - pieces of the overlay to different portions of the drawable. - - @throws GLException If an OpenGL context is not current when this method is called - */ - public void beginRendering() throws GLException { - renderer.beginOrthoRendering(drawable.getWidth(), drawable.getHeight()); - } - - /** Ends the OpenGL rendering process for the overlay. This is - separated out so advanced applications can render independent - pieces of the overlay to different portions of the drawable. - - @throws GLException If an OpenGL context is not current when this method is called - */ - public void endRendering() throws GLException { - renderer.endOrthoRendering(); - } - - /** Draws the specified sub-rectangle of the overlay on top of the - OpenGL drawable. {@link #beginRendering} and {@link - #endRendering} must be used in conjunction with this method to - achieve proper rendering results. This method should be called - while the OpenGL context for the drawable is current, and after - your OpenGL scene has been rendered. - - @param x the lower-left x coordinate (relative to the lower left - of the overlay) of the rectangle to draw - @param y the lower-left y coordinate (relative to the lower left - of the overlay) of the rectangle to draw - @param width the width of the rectangle to draw - @param height the height of the rectangle to draw - - @throws GLException If an OpenGL context is not current when this method is called - */ - public void draw(int x, int y, int width, int height) throws GLException { - draw(x, y, x, y, width, height); - } - - /** Draws the specified sub-rectangle of the overlay at the - specified x and y coordinate on top of the OpenGL drawable. - {@link #beginRendering} and {@link #endRendering} must be used - in conjunction with this method to achieve proper rendering - results. This method should be called while the OpenGL context - for the drawable is current, and after your OpenGL scene has - been rendered. - - @param screenx the on-screen x coordinate at which to draw the rectangle - @param screeny the on-screen y coordinate (relative to lower left) at - which to draw the rectangle - @param overlayx the x coordinate of the pixel in the overlay of - the lower left portion of the rectangle to draw - @param overlayy the y coordinate of the pixel in the overlay - (relative to lower left) of the lower left portion of the - rectangle to draw - @param width the width of the rectangle to draw - @param height the height of the rectangle to draw - - @throws GLException If an OpenGL context is not current when this method is called - */ - public void draw(int screenx, int screeny, - int overlayx, int overlayy, - int width, int height) throws GLException { - renderer.drawOrthoRect(screenx, screeny, - overlayx, overlayy, - width, height); - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - private void validateRenderer() { - if (renderer == null) { - renderer = new TextureRenderer(drawable.getWidth(), - drawable.getHeight(), - true); - contentsLost = true; - } else if (renderer.getWidth() != drawable.getWidth() || - renderer.getHeight() != drawable.getHeight()) { - renderer.setSize(drawable.getWidth(), drawable.getHeight()); - contentsLost = true; - } else { - contentsLost = false; - } - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/awt/Screenshot.java b/src/jogl/classes/com/sun/opengl/util/awt/Screenshot.java deleted file mode 100755 index 55099445a..000000000 --- a/src/jogl/classes/com/sun/opengl/util/awt/Screenshot.java +++ /dev/null @@ -1,432 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - */ - -package com.sun.opengl.util.awt; - -import java.awt.image.*; -import java.io.*; -import java.nio.*; -import java.nio.channels.*; -import javax.imageio.*; - -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import javax.media.opengl.glu.gl2.*; - -import com.sun.opengl.util.*; - -/** Utilities for taking screenshots of OpenGL applications. */ - -public class Screenshot { - private Screenshot() {} - - /** - * Takes a fast screenshot of the current OpenGL drawable to a Targa - * file. Requires the OpenGL context for the desired drawable to be - * current. Takes the screenshot from the last assigned read buffer, - * or the OpenGL default read buffer if none has been specified by - * the user (GL_FRONT for single-buffered configurations and GL_BACK - * for double-buffered configurations). This is the fastest - * mechanism for taking a screenshot of an application. Contributed - * by Carsten Weisse of Bytonic Software (http://bytonic.de/). <p> - * - * No alpha channel is written with this variant. - * - * @param file the file to write containing the screenshot - * @param width the width of the current drawable - * @param height the height of the current drawable - * - * @throws GLException if an OpenGL context was not current or - * another OpenGL-related error occurred - * @throws IOException if an I/O error occurred while writing the - * file - */ - public static void writeToTargaFile(File file, - int width, - int height) throws GLException, IOException { - writeToTargaFile(file, width, height, false); - } - - /** - * Takes a fast screenshot of the current OpenGL drawable to a Targa - * file. Requires the OpenGL context for the desired drawable to be - * current. Takes the screenshot from the last assigned read buffer, - * or the OpenGL default read buffer if none has been specified by - * the user (GL_FRONT for single-buffered configurations and GL_BACK - * for double-buffered configurations). This is the fastest - * mechanism for taking a screenshot of an application. Contributed - * by Carsten Weisse of Bytonic Software (http://bytonic.de/). - * - * @param file the file to write containing the screenshot - * @param width the width of the current drawable - * @param height the height of the current drawable - * @param alpha whether the alpha channel should be saved. If true, - * requires GL_EXT_abgr extension to be present. - * - * @throws GLException if an OpenGL context was not current or - * another OpenGL-related error occurred - * @throws IOException if an I/O error occurred while writing the - * file - */ - public static void writeToTargaFile(File file, - int width, - int height, - boolean alpha) throws GLException, IOException { - writeToTargaFile(file, 0, 0, width, height, alpha); - } - - /** - * Takes a fast screenshot of the current OpenGL drawable to a Targa - * file. Requires the OpenGL context for the desired drawable to be - * current. Takes the screenshot from the last assigned read buffer, - * or the OpenGL default read buffer if none has been specified by - * the user (GL_FRONT for single-buffered configurations and GL_BACK - * for double-buffered configurations). This is the fastest - * mechanism for taking a screenshot of an application. Contributed - * by Carsten Weisse of Bytonic Software (http://bytonic.de/). - * - * @param file the file to write containing the screenshot - * @param x the starting x coordinate of the screenshot, measured from the lower-left - * @param y the starting y coordinate of the screenshot, measured from the lower-left - * @param width the width of the desired screenshot area - * @param height the height of the desired screenshot area - * @param alpha whether the alpha channel should be saved. If true, - * requires GL_EXT_abgr extension to be present. - * - * @throws GLException if an OpenGL context was not current or - * another OpenGL-related error occurred - * @throws IOException if an I/O error occurred while writing the - * file - */ - public static void writeToTargaFile(File file, - int x, - int y, - int width, - int height, - boolean alpha) throws GLException, IOException { - if (alpha) { - checkExtABGR(); - } - - TGAWriter writer = new TGAWriter(); - writer.open(file, width, height, alpha); - ByteBuffer bgr = writer.getImageData(); - - GL2 gl = GLUgl2.getCurrentGL2(); - - // Set up pixel storage modes - PixelStorageModes psm = new PixelStorageModes(); - psm.save(gl); - - int readbackType = (alpha ? GL2.GL_ABGR_EXT : GL2.GL_BGR); - - // read the BGR values into the image buffer - gl.glReadPixels(x, y, width, height, readbackType, - GL2.GL_UNSIGNED_BYTE, bgr); - - // Restore pixel storage modes - psm.restore(gl); - - // close the file - writer.close(); - } - - /** - * Takes a screenshot of the current OpenGL drawable to a - * BufferedImage. Requires the OpenGL context for the desired - * drawable to be current. Takes the screenshot from the last - * assigned read buffer, or the OpenGL default read buffer if none - * has been specified by the user (GL_FRONT for single-buffered - * configurations and GL_BACK for double-buffered configurations). - * Note that the scanlines of the resulting image are flipped - * vertically in order to correctly match the OpenGL contents, which - * takes time and is therefore not as fast as the Targa screenshot - * function. <P> - * - * No alpha channel is read back with this variant. - * - * @param width the width of the current drawable - * @param height the height of the current drawable - * - * @throws GLException if an OpenGL context was not current or - * another OpenGL-related error occurred - */ - public static BufferedImage readToBufferedImage(int width, - int height) throws GLException { - return readToBufferedImage(width, height, false); - } - - /** - * Takes a screenshot of the current OpenGL drawable to a - * BufferedImage. Requires the OpenGL context for the desired - * drawable to be current. Takes the screenshot from the last - * assigned read buffer, or the OpenGL default read buffer if none - * has been specified by the user (GL_FRONT for single-buffered - * configurations and GL_BACK for double-buffered configurations). - * Note that the scanlines of the resulting image are flipped - * vertically in order to correctly match the OpenGL contents, which - * takes time and is therefore not as fast as the Targa screenshot - * function. - * - * @param width the width of the current drawable - * @param height the height of the current drawable - * @param alpha whether the alpha channel should be read back. If - * true, requires GL_EXT_abgr extension to be present. - * - * @throws GLException if an OpenGL context was not current or - * another OpenGL-related error occurred - */ - public static BufferedImage readToBufferedImage(int width, - int height, - boolean alpha) throws GLException { - return readToBufferedImage(0, 0, width, height, alpha); - } - - /** - * Takes a screenshot of the current OpenGL drawable to a - * BufferedImage. Requires the OpenGL context for the desired - * drawable to be current. Takes the screenshot from the last - * assigned read buffer, or the OpenGL default read buffer if none - * has been specified by the user (GL_FRONT for single-buffered - * configurations and GL_BACK for double-buffered configurations). - * Note that the scanlines of the resulting image are flipped - * vertically in order to correctly match the OpenGL contents, which - * takes time and is therefore not as fast as the Targa screenshot - * function. - * - * @param x the starting x coordinate of the screenshot, measured from the lower-left - * @param y the starting y coordinate of the screenshot, measured from the lower-left - * @param width the width of the desired screenshot area - * @param height the height of the desired screenshot area - * @param alpha whether the alpha channel should be read back. If - * true, requires GL_EXT_abgr extension to be present. - * - * @throws GLException if an OpenGL context was not current or - * another OpenGL-related error occurred - */ - public static BufferedImage readToBufferedImage(int x, - int y, - int width, - int height, - boolean alpha) throws GLException { - int bufImgType = (alpha ? BufferedImage.TYPE_4BYTE_ABGR : BufferedImage.TYPE_3BYTE_BGR); - int readbackType = (alpha ? GL2.GL_ABGR_EXT : GL2.GL_BGR); - - if (alpha) { - checkExtABGR(); - } - - // Allocate necessary storage - BufferedImage image = new BufferedImage(width, height, bufImgType); - - GL2 gl = GLUgl2.getCurrentGL2(); - - // Set up pixel storage modes - PixelStorageModes psm = new PixelStorageModes(); - psm.save(gl); - - // read the BGR values into the image - gl.glReadPixels(x, y, width, height, readbackType, - GL2.GL_UNSIGNED_BYTE, - ByteBuffer.wrap(((DataBufferByte) image.getRaster().getDataBuffer()).getData())); - - // Restore pixel storage modes - psm.restore(gl); - - // Must flip BufferedImage vertically for correct results - ImageUtil.flipImageVertically(image); - return image; - } - - /** - * Takes a screenshot of the current OpenGL drawable to the - * specified file on disk using the ImageIO package. Requires the - * OpenGL context for the desired drawable to be current. Takes the - * screenshot from the last assigned read buffer, or the OpenGL - * default read buffer if none has been specified by the user - * (GL_FRONT for single-buffered configurations and GL_BACK for - * double-buffered configurations). This is not the fastest - * mechanism for taking a screenshot but may be more convenient than - * others for getting images for consumption by other packages. The - * file format is inferred from the suffix of the given file. <P> - * - * No alpha channel is saved with this variant. - * - * @param file the file to write containing the screenshot - * @param width the width of the current drawable - * @param height the height of the current drawable - * - * @throws GLException if an OpenGL context was not current or - * another OpenGL-related error occurred - * - * @throws IOException if an I/O error occurred or if the file could - * not be written to disk due to the requested file format being - * unsupported by ImageIO - */ - public static void writeToFile(File file, - int width, - int height) throws IOException, GLException { - writeToFile(file, width, height, false); - } - - /** - * Takes a screenshot of the current OpenGL drawable to the - * specified file on disk using the ImageIO package. Requires the - * OpenGL context for the desired drawable to be current. Takes the - * screenshot from the last assigned read buffer, or the OpenGL - * default read buffer if none has been specified by the user - * (GL_FRONT for single-buffered configurations and GL_BACK for - * double-buffered configurations). This is not the fastest - * mechanism for taking a screenshot but may be more convenient than - * others for getting images for consumption by other packages. The - * file format is inferred from the suffix of the given file. <P> - * - * Note that some file formats, in particular JPEG, can not handle - * an alpha channel properly. If the "alpha" argument is specified - * as true for such a file format it will be silently ignored. - * - * @param file the file to write containing the screenshot - * @param width the width of the current drawable - * @param height the height of the current drawable - * @param alpha whether an alpha channel should be saved. If true, - * requires GL_EXT_abgr extension to be present. - * - * @throws GLException if an OpenGL context was not current or - * another OpenGL-related error occurred - * - * @throws IOException if an I/O error occurred or if the file could - * not be written to disk due to the requested file format being - * unsupported by ImageIO - */ - public static void writeToFile(File file, - int width, - int height, - boolean alpha) throws IOException, GLException { - writeToFile(file, 0, 0, width, height, alpha); - } - - /** - * Takes a screenshot of the current OpenGL drawable to the - * specified file on disk using the ImageIO package. Requires the - * OpenGL context for the desired drawable to be current. Takes the - * screenshot from the last assigned read buffer, or the OpenGL - * default read buffer if none has been specified by the user - * (GL_FRONT for single-buffered configurations and GL_BACK for - * double-buffered configurations). This is not the fastest - * mechanism for taking a screenshot but may be more convenient than - * others for getting images for consumption by other packages. The - * file format is inferred from the suffix of the given file. <P> - * - * Note that some file formats, in particular JPEG, can not handle - * an alpha channel properly. If the "alpha" argument is specified - * as true for such a file format it will be silently ignored. - * - * @param file the file to write containing the screenshot - * @param x the starting x coordinate of the screenshot, measured from the lower-left - * @param y the starting y coordinate of the screenshot, measured from the lower-left - * @param width the width of the current drawable - * @param height the height of the current drawable - * @param alpha whether an alpha channel should be saved. If true, - * requires GL_EXT_abgr extension to be present. - * - * @throws GLException if an OpenGL context was not current or - * another OpenGL-related error occurred - * - * @throws IOException if an I/O error occurred or if the file could - * not be written to disk due to the requested file format being - * unsupported by ImageIO - */ - public static void writeToFile(File file, - int x, - int y, - int width, - int height, - boolean alpha) throws IOException, GLException { - String fileSuffix = FileUtil.getFileSuffix(file); - if (alpha && (fileSuffix.equals("jpg") || fileSuffix.equals("jpeg"))) { - // JPEGs can't deal properly with alpha channels - alpha = false; - } - - BufferedImage image = readToBufferedImage(x, y, width, height, alpha); - if (!ImageIO.write(image, fileSuffix, file)) { - throw new IOException("Unsupported file format " + fileSuffix); - } - } - - private static int glGetInteger(GL2 gl, int pname, int[] tmp) { - gl.glGetIntegerv(pname, tmp, 0); - return tmp[0]; - } - - private static void checkExtABGR() { - GL2 gl = GLUgl2.getCurrentGL2(); - if (!gl.isExtensionAvailable("GL_EXT_abgr")) { - throw new IllegalArgumentException("Saving alpha channel requires GL_EXT_abgr"); - } - } - - static class PixelStorageModes { - int packAlignment; - int packRowLength; - int packSkipRows; - int packSkipPixels; - int packSwapBytes; - int[] tmp = new int[1]; - - void save(GL2 gl) { - packAlignment = glGetInteger(gl, GL2.GL_PACK_ALIGNMENT, tmp); - packRowLength = glGetInteger(gl, GL2.GL_PACK_ROW_LENGTH, tmp); - packSkipRows = glGetInteger(gl, GL2.GL_PACK_SKIP_ROWS, tmp); - packSkipPixels = glGetInteger(gl, GL2.GL_PACK_SKIP_PIXELS, tmp); - packSwapBytes = glGetInteger(gl, GL2.GL_PACK_SWAP_BYTES, tmp); - - gl.glPixelStorei(GL2.GL_PACK_ALIGNMENT, 1); - gl.glPixelStorei(GL2.GL_PACK_ROW_LENGTH, 0); - gl.glPixelStorei(GL2.GL_PACK_SKIP_ROWS, 0); - gl.glPixelStorei(GL2.GL_PACK_SKIP_PIXELS, 0); - gl.glPixelStorei(GL2.GL_PACK_SWAP_BYTES, 0); - } - - void restore(GL2 gl) { - gl.glPixelStorei(GL2.GL_PACK_ALIGNMENT, packAlignment); - gl.glPixelStorei(GL2.GL_PACK_ROW_LENGTH, packRowLength); - gl.glPixelStorei(GL2.GL_PACK_SKIP_ROWS, packSkipRows); - gl.glPixelStorei(GL2.GL_PACK_SKIP_PIXELS, packSkipPixels); - gl.glPixelStorei(GL2.GL_PACK_SWAP_BYTES, packSwapBytes); - } - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/awt/TextRenderer.java b/src/jogl/classes/com/sun/opengl/util/awt/TextRenderer.java deleted file mode 100755 index 059ead63d..000000000 --- a/src/jogl/classes/com/sun/opengl/util/awt/TextRenderer.java +++ /dev/null @@ -1,1951 +0,0 @@ -/* - * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ -package com.sun.opengl.util.awt; - -import com.sun.opengl.impl.Debug; -import com.sun.opengl.util.*; -import com.sun.opengl.util.packrect.*; -import com.sun.opengl.util.texture.*; -import com.sun.opengl.util.texture.awt.*; - -import java.awt.AlphaComposite; -import java.awt.Color; -import java.awt.Composite; - -// For debugging purposes -import java.awt.EventQueue; -import java.awt.Font; -import java.awt.Frame; -import java.awt.Graphics2D; -import java.awt.Image; -import java.awt.Point; -import java.awt.RenderingHints; -import java.awt.event.*; -import java.awt.font.*; -import java.awt.geom.*; - -import java.nio.*; - -import java.text.*; - -import java.util.*; - -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import javax.media.opengl.glu.gl2.*; -import javax.media.opengl.awt.*; - - -/** Renders bitmapped Java 2D text into an OpenGL window with high - performance, full Unicode support, and a simple API. Performs - appropriate caching of text rendering results in an OpenGL texture - internally to avoid repeated font rasterization. The caching is - completely automatic, does not require any user intervention, and - has no visible controls in the public API. <P> - - Using the {@link TextRenderer TextRenderer} is simple. Add a - "<code>TextRenderer renderer;</code>" field to your {@link - javax.media.opengl.GLEventListener GLEventListener}. In your {@link - javax.media.opengl.GLEventListener#init init} method, add: - - <PRE> - renderer = new TextRenderer(new Font("SansSerif", Font.BOLD, 36)); - </PRE> - - <P> In the {@link javax.media.opengl.GLEventListener#display display} method of your - {@link javax.media.opengl.GLEventListener GLEventListener}, add: - <PRE> - renderer.beginRendering(drawable.getWidth(), drawable.getHeight()); - // optionally set the color - renderer.setColor(1.0f, 0.2f, 0.2f, 0.8f); - renderer.draw("Text to draw", xPosition, yPosition); - // ... more draw commands, color changes, etc. - renderer.endRendering(); - </PRE> - - Unless you are sharing textures and display lists between OpenGL - contexts, you do not need to call the {@link #dispose dispose} - method of the TextRenderer; the OpenGL resources it uses - internally will be cleaned up automatically when the OpenGL - context is destroyed. <P> - - <b>Note</b> that the TextRenderer may cause the vertex and texture - coordinate array buffer bindings to change, or to be unbound. This - is important to note if you are using Vertex Buffer Objects (VBOs) - in your application. <P> - - Internally, the renderer uses a rectangle packing algorithm to - pack both glyphs and full Strings' rendering results (which are - variable size) onto a larger OpenGL texture. The internal backing - store is maintained using a {@link - com.sun.opengl.util.awt.TextureRenderer TextureRenderer}. A least - recently used (LRU) algorithm is used to discard previously - rendered strings; the specific algorithm is undefined, but is - currently implemented by flushing unused Strings' rendering - results every few hundred rendering cycles, where a rendering - cycle is defined as a pair of calls to {@link #beginRendering - beginRendering} / {@link #endRendering endRendering}. - - @author John Burkey - @author Kenneth Russell -*/ -public class TextRenderer { - private static final boolean DEBUG = Debug.debug("TextRenderer"); - - // These are occasionally useful for more in-depth debugging - private static final boolean DISABLE_GLYPH_CACHE = false; - private static final boolean DRAW_BBOXES = false; - - static final int kSize = 256; - - // Every certain number of render cycles, flush the strings which - // haven't been used recently - private static final int CYCLES_PER_FLUSH = 100; - - // The amount of vertical dead space on the backing store before we - // force a compaction - private static final float MAX_VERTICAL_FRAGMENTATION = 0.7f; - static final int kQuadsPerBuffer = 100; - static final int kCoordsPerVertVerts = 3; - static final int kCoordsPerVertTex = 2; - static final int kVertsPerQuad = 4; - static final int kTotalBufferSizeVerts = kQuadsPerBuffer * kVertsPerQuad; - static final int kTotalBufferSizeCoordsVerts = kQuadsPerBuffer * kVertsPerQuad * kCoordsPerVertVerts; - static final int kTotalBufferSizeCoordsTex = kQuadsPerBuffer * kVertsPerQuad * kCoordsPerVertTex; - static final int kTotalBufferSizeBytesVerts = kTotalBufferSizeCoordsVerts * 4; - static final int kTotalBufferSizeBytesTex = kTotalBufferSizeCoordsTex * 4; - static final int kSizeInBytes_OneVertices_VertexData = kCoordsPerVertVerts * 4; - static final int kSizeInBytes_OneVertices_TexData = kCoordsPerVertTex * 4; - private Font font; - private boolean antialiased; - private boolean useFractionalMetrics; - - // Whether we're attempting to use automatic mipmap generation support - private boolean mipmap; - private RectanglePacker packer; - private boolean haveMaxSize; - private RenderDelegate renderDelegate; - private TextureRenderer cachedBackingStore; - private Graphics2D cachedGraphics; - private FontRenderContext cachedFontRenderContext; - private Map /*<String,Rect>*/ stringLocations = new HashMap /*<String,Rect>*/(); - private GlyphProducer mGlyphProducer; - - private int numRenderCycles; - - // Need to keep track of whether we're in a beginRendering() / - // endRendering() cycle so we can re-enter the exact same state if - // we have to reallocate the backing store - private boolean inBeginEndPair; - private boolean isOrthoMode; - private int beginRenderingWidth; - private int beginRenderingHeight; - private boolean beginRenderingDepthTestDisabled; - - // For resetting the color after disposal of the old backing store - private boolean haveCachedColor; - private float cachedR; - private float cachedG; - private float cachedB; - private float cachedA; - private Color cachedColor; - private boolean needToResetColor; - - // For debugging only - private Frame dbgFrame; - - // Debugging purposes only - private boolean debugged; - Pipelined_QuadRenderer mPipelinedQuadRenderer; - - //emzic: added boolean flag - private boolean useVertexArrays = true; - - //emzic: added boolean flag - private boolean isExtensionAvailable_GL_VERSION_1_5; - private boolean checkFor_isExtensionAvailable_GL_VERSION_1_5; - - // Whether GL_LINEAR filtering is enabled for the backing store - private boolean smoothing = true; - - /** Creates a new TextRenderer with the given font, using no - antialiasing or fractional metrics, and the default - RenderDelegate. Equivalent to <code>TextRenderer(font, false, - false)</code>. - - @param font the font to render with - */ - public TextRenderer(Font font) { - this(font, false, false, null, false); - } - - /** Creates a new TextRenderer with the given font, using no - antialiasing or fractional metrics, and the default - RenderDelegate. If <CODE>mipmap</CODE> is true, attempts to use - OpenGL's automatic mipmap generation for better smoothing when - rendering the TextureRenderer's contents at a distance. - Equivalent to <code>TextRenderer(font, false, false)</code>. - - @param font the font to render with - @param mipmap whether to attempt use of automatic mipmap generation - */ - public TextRenderer(Font font, boolean mipmap) { - this(font, false, false, null, mipmap); - } - - /** Creates a new TextRenderer with the given Font, specified font - properties, and default RenderDelegate. The - <code>antialiased</code> and <code>useFractionalMetrics</code> - flags provide control over the same properties at the Java 2D - level. No mipmap support is requested. Equivalent to - <code>TextRenderer(font, antialiased, useFractionalMetrics, - null)</code>. - - @param font the font to render with - @param antialiased whether to use antialiased fonts - @param useFractionalMetrics whether to use fractional font - metrics at the Java 2D level - */ - public TextRenderer(Font font, boolean antialiased, - boolean useFractionalMetrics) { - this(font, antialiased, useFractionalMetrics, null, false); - } - - /** Creates a new TextRenderer with the given Font, specified font - properties, and given RenderDelegate. The - <code>antialiased</code> and <code>useFractionalMetrics</code> - flags provide control over the same properties at the Java 2D - level. The <code>renderDelegate</code> provides more control - over the text rendered. No mipmap support is requested. - - @param font the font to render with - @param antialiased whether to use antialiased fonts - @param useFractionalMetrics whether to use fractional font - metrics at the Java 2D level - @param renderDelegate the render delegate to use to draw the - text's bitmap, or null to use the default one - */ - public TextRenderer(Font font, boolean antialiased, - boolean useFractionalMetrics, RenderDelegate renderDelegate) { - this(font, antialiased, useFractionalMetrics, renderDelegate, false); - } - - /** Creates a new TextRenderer with the given Font, specified font - properties, and given RenderDelegate. The - <code>antialiased</code> and <code>useFractionalMetrics</code> - flags provide control over the same properties at the Java 2D - level. The <code>renderDelegate</code> provides more control - over the text rendered. If <CODE>mipmap</CODE> is true, attempts - to use OpenGL's automatic mipmap generation for better smoothing - when rendering the TextureRenderer's contents at a distance. - - @param font the font to render with - @param antialiased whether to use antialiased fonts - @param useFractionalMetrics whether to use fractional font - metrics at the Java 2D level - @param renderDelegate the render delegate to use to draw the - text's bitmap, or null to use the default one - @param mipmap whether to attempt use of automatic mipmap generation - */ - public TextRenderer(Font font, boolean antialiased, - boolean useFractionalMetrics, RenderDelegate renderDelegate, - boolean mipmap) { - this.font = font; - this.antialiased = antialiased; - this.useFractionalMetrics = useFractionalMetrics; - this.mipmap = mipmap; - - // FIXME: consider adjusting the size based on font size - // (it will already automatically resize if necessary) - packer = new RectanglePacker(new Manager(), kSize, kSize); - - if (renderDelegate == null) { - renderDelegate = new DefaultRenderDelegate(); - } - - this.renderDelegate = renderDelegate; - - mGlyphProducer = new GlyphProducer(font.getNumGlyphs()); - } - - /** Returns the bounding rectangle of the given String, assuming it - was rendered at the origin. See {@link #getBounds(CharSequence) - getBounds(CharSequence)}. */ - public Rectangle2D getBounds(String str) { - return getBounds((CharSequence) str); - } - - /** Returns the bounding rectangle of the given CharSequence, - assuming it was rendered at the origin. The coordinate system of - the returned rectangle is Java 2D's, with increasing Y - coordinates in the downward direction. The relative coordinate - (0, 0) in the returned rectangle corresponds to the baseline of - the leftmost character of the rendered string, in similar - fashion to the results returned by, for example, {@link - java.awt.font.GlyphVector#getVisualBounds}. Most applications - will use only the width and height of the returned Rectangle for - the purposes of centering or justifying the String. It is not - specified which Java 2D bounds ({@link - java.awt.font.GlyphVector#getVisualBounds getVisualBounds}, - {@link java.awt.font.GlyphVector#getPixelBounds getPixelBounds}, - etc.) the returned bounds correspond to, although every effort - is made to ensure an accurate bound. */ - public Rectangle2D getBounds(CharSequence str) { - // FIXME: this should be more optimized and use the glyph cache - Rect r = null; - - if ((r = (Rect) stringLocations.get(str)) != null) { - TextData data = (TextData) r.getUserData(); - - // Reconstitute the Java 2D results based on the cached values - return new Rectangle2D.Double(-data.origin().x, -data.origin().y, - r.w(), r.h()); - } - - // Must return a Rectangle compatible with the layout algorithm -- - // must be idempotent - return normalize(renderDelegate.getBounds(str, font, - getFontRenderContext())); - } - - /** Returns the Font this renderer is using. */ - public Font getFont() { - return font; - } - - /** Returns a FontRenderContext which can be used for external - text-related size computations. This object should be considered - transient and may become invalidated between {@link - #beginRendering beginRendering} / {@link #endRendering - endRendering} pairs. */ - public FontRenderContext getFontRenderContext() { - if (cachedFontRenderContext == null) { - cachedFontRenderContext = getGraphics2D().getFontRenderContext(); - } - - return cachedFontRenderContext; - } - - /** Begins rendering with this {@link TextRenderer TextRenderer} - into the current OpenGL drawable, pushing the projection and - modelview matrices and some state bits and setting up a - two-dimensional orthographic projection with (0, 0) as the - lower-left coordinate and (width, height) as the upper-right - coordinate. Binds and enables the internal OpenGL texture - object, sets the texture environment mode to GL_MODULATE, and - changes the current color to the last color set with this - TextRenderer via {@link #setColor setColor}. This method - disables the depth test and is equivalent to - beginRendering(width, height, true). - - @param width the width of the current on-screen OpenGL drawable - @param height the height of the current on-screen OpenGL drawable - @throws javax.media.opengl.GLException If an OpenGL context is not current when this method is called - */ - public void beginRendering(int width, int height) throws GLException { - beginRendering(width, height, true); - } - - /** Begins rendering with this {@link TextRenderer TextRenderer} - into the current OpenGL drawable, pushing the projection and - modelview matrices and some state bits and setting up a - two-dimensional orthographic projection with (0, 0) as the - lower-left coordinate and (width, height) as the upper-right - coordinate. Binds and enables the internal OpenGL texture - object, sets the texture environment mode to GL_MODULATE, and - changes the current color to the last color set with this - TextRenderer via {@link #setColor setColor}. Disables the depth - test if the disableDepthTest argument is true. - - @param width the width of the current on-screen OpenGL drawable - @param height the height of the current on-screen OpenGL drawable - @param disableDepthTest whether to disable the depth test - @throws GLException If an OpenGL context is not current when this method is called - */ - public void beginRendering(int width, int height, boolean disableDepthTest) - throws GLException { - beginRendering(true, width, height, disableDepthTest); - } - - /** Begins rendering of 2D text in 3D with this {@link TextRenderer - TextRenderer} into the current OpenGL drawable. Assumes the end - user is responsible for setting up the modelview and projection - matrices, and will render text using the {@link #draw3D draw3D} - method. This method pushes some OpenGL state bits, binds and - enables the internal OpenGL texture object, sets the texture - environment mode to GL_MODULATE, and changes the current color - to the last color set with this TextRenderer via {@link - #setColor setColor}. - - @throws GLException If an OpenGL context is not current when this method is called - */ - public void begin3DRendering() throws GLException { - beginRendering(false, 0, 0, false); - } - - /** Changes the current color of this TextRenderer to the supplied - one. The default color is opaque white. - - @param color the new color to use for rendering text - @throws GLException If an OpenGL context is not current when this method is called - */ - public void setColor(Color color) throws GLException { - boolean noNeedForFlush = (haveCachedColor && (cachedColor != null) && - color.equals(cachedColor)); - - if (!noNeedForFlush) { - flushGlyphPipeline(); - } - - getBackingStore().setColor(color); - haveCachedColor = true; - cachedColor = color; - } - - /** Changes the current color of this TextRenderer to the supplied - one, where each component ranges from 0.0f - 1.0f. The alpha - component, if used, does not need to be premultiplied into the - color channels as described in the documentation for {@link - com.sun.opengl.util.texture.Texture Texture}, although - premultiplied colors are used internally. The default color is - opaque white. - - @param r the red component of the new color - @param g the green component of the new color - @param b the blue component of the new color - @param a the alpha component of the new color, 0.0f = completely - transparent, 1.0f = completely opaque - @throws GLException If an OpenGL context is not current when this method is called - */ - public void setColor(float r, float g, float b, float a) - throws GLException { - boolean noNeedForFlush = (haveCachedColor && (cachedColor == null) && - (r == cachedR) && (g == cachedG) && (b == cachedB) && - (a == cachedA)); - - if (!noNeedForFlush) { - flushGlyphPipeline(); - } - - getBackingStore().setColor(r, g, b, a); - haveCachedColor = true; - cachedR = r; - cachedG = g; - cachedB = b; - cachedA = a; - cachedColor = null; - } - - /** Draws the supplied CharSequence at the desired location using - the renderer's current color. The baseline of the leftmost - character is at position (x, y) specified in OpenGL coordinates, - where the origin is at the lower-left of the drawable and the Y - coordinate increases in the upward direction. - - @param str the string to draw - @param x the x coordinate at which to draw - @param y the y coordinate at which to draw - @throws GLException If an OpenGL context is not current when this method is called - */ - public void draw(CharSequence str, int x, int y) throws GLException { - draw3D(str, x, y, 0, 1); - } - - /** Draws the supplied String at the desired location using the - renderer's current color. See {@link #draw(CharSequence, int, - int) draw(CharSequence, int, int)}. */ - public void draw(String str, int x, int y) throws GLException { - draw3D(str, x, y, 0, 1); - } - - /** Draws the supplied CharSequence at the desired 3D location using - the renderer's current color. The baseline of the leftmost - character is placed at position (x, y, z) in the current - coordinate system. - - @param str the string to draw - @param x the x coordinate at which to draw - @param y the y coordinate at which to draw - @param z the z coordinate at which to draw - @param scaleFactor a uniform scale factor applied to the width and height of the drawn rectangle - @throws GLException If an OpenGL context is not current when this method is called - */ - public void draw3D(CharSequence str, float x, float y, float z, - float scaleFactor) { - internal_draw3D(str, x, y, z, scaleFactor); - } - - /** Draws the supplied String at the desired 3D location using the - renderer's current color. See {@link #draw3D(CharSequence, - float, float, float, float) draw3D(CharSequence, float, float, - float, float)}. */ - public void draw3D(String str, float x, float y, float z, float scaleFactor) { - internal_draw3D(str, x, y, z, scaleFactor); - } - - /** Returns the pixel width of the given character. */ - public float getCharWidth(char inChar) { - return mGlyphProducer.getGlyphPixelWidth(inChar); - } - - /** Causes the TextRenderer to flush any internal caches it may be - maintaining and draw its rendering results to the screen. This - should be called after each call to draw() if you are setting - OpenGL state such as the modelview matrix between calls to - draw(). */ - public void flush() { - flushGlyphPipeline(); - } - - /** Ends a render cycle with this {@link TextRenderer TextRenderer}. - Restores the projection and modelview matrices as well as - several OpenGL state bits. Should be paired with {@link - #beginRendering beginRendering}. - - @throws GLException If an OpenGL context is not current when this method is called - */ - public void endRendering() throws GLException { - endRendering(true); - } - - /** Ends a 3D render cycle with this {@link TextRenderer TextRenderer}. - Restores several OpenGL state bits. Should be paired with {@link - #begin3DRendering begin3DRendering}. - - @throws GLException If an OpenGL context is not current when this method is called - */ - public void end3DRendering() throws GLException { - endRendering(false); - } - - /** Disposes of all resources this TextRenderer is using. It is not - valid to use the TextRenderer after this method is called. - - @throws GLException If an OpenGL context is not current when this method is called - */ - public void dispose() throws GLException { - packer.dispose(); - packer = null; - cachedBackingStore = null; - cachedGraphics = null; - cachedFontRenderContext = null; - - if (dbgFrame != null) { - dbgFrame.dispose(); - } - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - private static Rectangle2D preNormalize(Rectangle2D src) { - // Need to round to integer coordinates - // Also give ourselves a little slop around the reported - // bounds of glyphs because it looks like neither the visual - // nor the pixel bounds works perfectly well - int minX = (int) Math.floor(src.getMinX()) - 1; - int minY = (int) Math.floor(src.getMinY()) - 1; - int maxX = (int) Math.ceil(src.getMaxX()) + 1; - int maxY = (int) Math.ceil(src.getMaxY()) + 1; - return new Rectangle2D.Double(minX, minY, maxX - minX, maxY - minY); - } - - - private Rectangle2D normalize(Rectangle2D src) { - // Give ourselves a boundary around each entity on the backing - // store in order to prevent bleeding of nearby Strings due to - // the fact that we use linear filtering - - // NOTE that this boundary is quite heuristic and is related - // to how far away in 3D we may view the text -- - // heuristically, 1.5% of the font's height - int boundary = (int) Math.max(1, 0.015 * font.getSize()); - - return new Rectangle2D.Double((int) Math.floor(src.getMinX() - boundary), - (int) Math.floor(src.getMinY() - boundary), - (int) Math.ceil(src.getWidth() + 2 * boundary), - (int) Math.ceil(src.getHeight()) + 2 * boundary); - } - - private TextureRenderer getBackingStore() { - TextureRenderer renderer = (TextureRenderer) packer.getBackingStore(); - - if (renderer != cachedBackingStore) { - // Backing store changed since last time; discard any cached Graphics2D - if (cachedGraphics != null) { - cachedGraphics.dispose(); - cachedGraphics = null; - cachedFontRenderContext = null; - } - - cachedBackingStore = renderer; - } - - return cachedBackingStore; - } - - private Graphics2D getGraphics2D() { - TextureRenderer renderer = getBackingStore(); - - if (cachedGraphics == null) { - cachedGraphics = renderer.createGraphics(); - - // Set up composite, font and rendering hints - cachedGraphics.setComposite(AlphaComposite.Src); - cachedGraphics.setColor(Color.WHITE); - cachedGraphics.setFont(font); - cachedGraphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, - (antialiased ? RenderingHints.VALUE_TEXT_ANTIALIAS_ON - : RenderingHints.VALUE_TEXT_ANTIALIAS_OFF)); - cachedGraphics.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, - (useFractionalMetrics - ? RenderingHints.VALUE_FRACTIONALMETRICS_ON - : RenderingHints.VALUE_FRACTIONALMETRICS_OFF)); - } - - return cachedGraphics; - } - - private void beginRendering(boolean ortho, int width, int height, - boolean disableDepthTestForOrtho) { - GL2 gl = GLContext.getCurrentGL().getGL2(); - - if (DEBUG && !debugged) { - debug(gl); - } - - inBeginEndPair = true; - isOrthoMode = ortho; - beginRenderingWidth = width; - beginRenderingHeight = height; - beginRenderingDepthTestDisabled = disableDepthTestForOrtho; - - if (ortho) { - getBackingStore().beginOrthoRendering(width, height, - disableDepthTestForOrtho); - } else { - getBackingStore().begin3DRendering(); - } - - // Push client attrib bits used by the pipelined quad renderer - gl.glPushClientAttrib((int) GL2.GL_ALL_CLIENT_ATTRIB_BITS); - - if (!haveMaxSize) { - // Query OpenGL for the maximum texture size and set it in the - // RectanglePacker to keep it from expanding too large - int[] sz = new int[1]; - gl.glGetIntegerv(GL2.GL_MAX_TEXTURE_SIZE, sz, 0); - packer.setMaxSize(sz[0], sz[0]); - haveMaxSize = true; - } - - if (needToResetColor && haveCachedColor) { - if (cachedColor == null) { - getBackingStore().setColor(cachedR, cachedG, cachedB, cachedA); - } else { - getBackingStore().setColor(cachedColor); - } - - needToResetColor = false; - } - - // Disable future attempts to use mipmapping if TextureRenderer - // doesn't support it - if (mipmap && !getBackingStore().isUsingAutoMipmapGeneration()) { - if (DEBUG) { - System.err.println("Disabled mipmapping in TextRenderer"); - } - - mipmap = false; - } - } - - /** - * emzic: here the call to glBindBuffer crashes on certain graphicscard/driver combinations - * this is why the ugly try-catch block has been added, which falls back to the old textrenderer - * - * @param ortho - * @throws GLException - */ - private void endRendering(boolean ortho) throws GLException { - flushGlyphPipeline(); - - inBeginEndPair = false; - - GL2 gl = GLContext.getCurrentGL().getGL2(); - - // Pop client attrib bits used by the pipelined quad renderer - gl.glPopClientAttrib(); - - // The OpenGL spec is unclear about whether this changes the - // buffer bindings, so preemptively zero out the GL_ARRAY_BUFFER - // binding - if (is15Available(gl)) { - try { - gl.glBindBuffer(GL2.GL_ARRAY_BUFFER, 0); - } catch (Exception e) { - isExtensionAvailable_GL_VERSION_1_5 = false; - } - } - - if (ortho) { - getBackingStore().endOrthoRendering(); - } else { - getBackingStore().end3DRendering(); - } - - if (++numRenderCycles >= CYCLES_PER_FLUSH) { - numRenderCycles = 0; - - if (DEBUG) { - System.err.println("Clearing unused entries in endRendering()"); - } - - clearUnusedEntries(); - } - } - - private void clearUnusedEntries() { - final java.util.List deadRects = new ArrayList /*<Rect>*/(); - - // Iterate through the contents of the backing store, removing - // text strings that haven't been used recently - packer.visit(new RectVisitor() { - public void visit(Rect rect) { - TextData data = (TextData) rect.getUserData(); - - if (data.used()) { - data.clearUsed(); - } else { - deadRects.add(rect); - } - } - }); - - for (Iterator iter = deadRects.iterator(); iter.hasNext();) { - Rect r = (Rect) iter.next(); - packer.remove(r); - stringLocations.remove(((TextData) r.getUserData()).string()); - - int unicodeToClearFromCache = ((TextData) r.getUserData()).unicodeID; - - if (unicodeToClearFromCache > 0) { - mGlyphProducer.clearCacheEntry(unicodeToClearFromCache); - } - - // if (DEBUG) { - // Graphics2D g = getGraphics2D(); - // g.setComposite(AlphaComposite.Clear); - // g.fillRect(r.x(), r.y(), r.w(), r.h()); - // g.setComposite(AlphaComposite.Src); - // } - } - - // If we removed dead rectangles this cycle, try to do a compaction - float frag = packer.verticalFragmentationRatio(); - - if (!deadRects.isEmpty() && (frag > MAX_VERTICAL_FRAGMENTATION)) { - if (DEBUG) { - System.err.println( - "Compacting TextRenderer backing store due to vertical fragmentation " + - frag); - } - - packer.compact(); - } - - if (DEBUG) { - getBackingStore().markDirty(0, 0, getBackingStore().getWidth(), - getBackingStore().getHeight()); - } - } - - private void internal_draw3D(CharSequence str, float x, float y, float z, - float scaleFactor) { - List/*<Glyph>*/ glyphs = mGlyphProducer.getGlyphs(str); - for (Iterator iter = glyphs.iterator(); iter.hasNext(); ) { - Glyph glyph = (Glyph) iter.next(); - float advance = glyph.draw3D(x, y, z, scaleFactor); - x += advance * scaleFactor; - } - } - - private void flushGlyphPipeline() { - if (mPipelinedQuadRenderer != null) { - mPipelinedQuadRenderer.draw(); - } - } - - private void draw3D_ROBUST(CharSequence str, float x, float y, float z, - float scaleFactor) { - String curStr; - if (str instanceof String) { - curStr = (String) str; - } else { - curStr = str.toString(); - } - - // Look up the string on the backing store - Rect rect = (Rect) stringLocations.get(curStr); - - if (rect == null) { - // Rasterize this string and place it on the backing store - Graphics2D g = getGraphics2D(); - Rectangle2D origBBox = preNormalize(renderDelegate.getBounds(curStr, font, getFontRenderContext())); - Rectangle2D bbox = normalize(origBBox); - Point origin = new Point((int) -bbox.getMinX(), - (int) -bbox.getMinY()); - rect = new Rect(0, 0, (int) bbox.getWidth(), - (int) bbox.getHeight(), - new TextData(curStr, origin, origBBox, -1)); - - packer.add(rect); - stringLocations.put(curStr, rect); - - // Re-fetch the Graphics2D in case the addition of the rectangle - // caused the old backing store to be thrown away - g = getGraphics2D(); - - // OK, should now have an (x, y) for this rectangle; rasterize - // the String - int strx = rect.x() + origin.x; - int stry = rect.y() + origin.y; - - // Clear out the area we're going to draw into - g.setComposite(AlphaComposite.Clear); - g.fillRect(rect.x(), rect.y(), rect.w(), rect.h()); - g.setComposite(AlphaComposite.Src); - - // Draw the string - renderDelegate.draw(g, curStr, strx, stry); - - if (DRAW_BBOXES) { - TextData data = (TextData) rect.getUserData(); - // Draw a bounding box on the backing store - g.drawRect(strx - data.origOriginX(), - stry - data.origOriginY(), - (int) data.origRect().getWidth(), - (int) data.origRect().getHeight()); - g.drawRect(strx - data.origin().x, - stry - data.origin().y, - rect.w(), - rect.h()); - } - - // Mark this region of the TextureRenderer as dirty - getBackingStore().markDirty(rect.x(), rect.y(), rect.w(), - rect.h()); - } - - // OK, now draw the portion of the backing store to the screen - TextureRenderer renderer = getBackingStore(); - - // NOTE that the rectangles managed by the packer have their - // origin at the upper-left but the TextureRenderer's origin is - // at its lower left!!! - TextData data = (TextData) rect.getUserData(); - data.markUsed(); - - Rectangle2D origRect = data.origRect(); - - // Align the leftmost point of the baseline to the (x, y, z) coordinate requested - renderer.draw3DRect(x - (scaleFactor * data.origOriginX()), - y - (scaleFactor * ((float) origRect.getHeight() - data.origOriginY())), z, - rect.x() + (data.origin().x - data.origOriginX()), - renderer.getHeight() - rect.y() - (int) origRect.getHeight() - - (data.origin().y - data.origOriginY()), - (int) origRect.getWidth(), (int) origRect.getHeight(), scaleFactor); - } - - //---------------------------------------------------------------------- - // Debugging functionality - // - private void debug(GL gl) { - dbgFrame = new Frame("TextRenderer Debug Output"); - - GLCanvas dbgCanvas = new GLCanvas(new GLCapabilities(gl.getGLProfile()), null, - GLContext.getCurrent(), null); - dbgCanvas.addGLEventListener(new DebugListener(gl, dbgFrame)); - dbgFrame.add(dbgCanvas); - - final FPSAnimator anim = new FPSAnimator(dbgCanvas, 10); - dbgFrame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - // Run this on another thread than the AWT event queue to - // make sure the call to Animator.stop() completes before - // exiting - new Thread(new Runnable() { - public void run() { - anim.stop(); - } - }).start(); - } - }); - dbgFrame.setSize(kSize, kSize); - dbgFrame.setVisible(true); - anim.start(); - debugged = true; - } - - /** Class supporting more full control over the process of rendering - the bitmapped text. Allows customization of whether the backing - store text bitmap is full-color or intensity only, the size of - each individual rendered text rectangle, and the contents of - each individual rendered text string. The default implementation - of this interface uses an intensity-only texture, a - closely-cropped rectangle around the text, and renders text - using the color white, which is modulated by the set color - during the rendering process. */ - public static interface RenderDelegate { - /** Indicates whether the backing store of this TextRenderer - should be intensity-only (the default) or full-color. */ - public boolean intensityOnly(); - - /** Computes the bounds of the given String relative to the - origin. */ - public Rectangle2D getBounds(String str, Font font, - FontRenderContext frc); - - /** Computes the bounds of the given character sequence relative - to the origin. */ - public Rectangle2D getBounds(CharSequence str, Font font, - FontRenderContext frc); - - /** Computes the bounds of the given GlyphVector, already - assumed to have been created for a particular Font, - relative to the origin. */ - public Rectangle2D getBounds(GlyphVector gv, FontRenderContext frc); - - /** Render the passed character sequence at the designated - location using the supplied Graphics2D instance. The - surrounding region will already have been cleared to the RGB - color (0, 0, 0) with zero alpha. The initial drawing context - of the passed Graphics2D will be set to use - AlphaComposite.Src, the color white, the Font specified in the - TextRenderer's constructor, and the rendering hints specified - in the TextRenderer constructor. Changes made by the end user - may be visible in successive calls to this method, but are not - guaranteed to be preserved. Implementors of this method - should reset the Graphics2D's state to that desired each time - this method is called, in particular those states which are - not the defaults. */ - public void draw(Graphics2D graphics, String str, int x, int y); - - /** Render the passed GlyphVector at the designated location using - the supplied Graphics2D instance. The surrounding region will - already have been cleared to the RGB color (0, 0, 0) with zero - alpha. The initial drawing context of the passed Graphics2D - will be set to use AlphaComposite.Src, the color white, the - Font specified in the TextRenderer's constructor, and the - rendering hints specified in the TextRenderer constructor. - Changes made by the end user may be visible in successive - calls to this method, but are not guaranteed to be preserved. - Implementors of this method should reset the Graphics2D's - state to that desired each time this method is called, in - particular those states which are not the defaults. */ - public void drawGlyphVector(Graphics2D graphics, GlyphVector str, - int x, int y); - } - - private static class CharSequenceIterator implements CharacterIterator { - CharSequence mSequence; - int mLength; - int mCurrentIndex; - - CharSequenceIterator() { - } - - CharSequenceIterator(CharSequence sequence) { - initFromCharSequence(sequence); - } - - public void initFromCharSequence(CharSequence sequence) { - mSequence = sequence; - mLength = mSequence.length(); - mCurrentIndex = 0; - } - - public char last() { - mCurrentIndex = Math.max(0, mLength - 1); - - return current(); - } - - public char current() { - if ((mLength == 0) || (mCurrentIndex >= mLength)) { - return CharacterIterator.DONE; - } - - return mSequence.charAt(mCurrentIndex); - } - - public char next() { - mCurrentIndex++; - - return current(); - } - - public char previous() { - mCurrentIndex = Math.max(mCurrentIndex - 1, 0); - - return current(); - } - - public char setIndex(int position) { - mCurrentIndex = position; - - return current(); - } - - public int getBeginIndex() { - return 0; - } - - public int getEndIndex() { - return mLength; - } - - public int getIndex() { - return mCurrentIndex; - } - - public Object clone() { - CharSequenceIterator iter = new CharSequenceIterator(mSequence); - iter.mCurrentIndex = mCurrentIndex; - - return iter; - } - - public char first() { - if (mLength == 0) { - return CharacterIterator.DONE; - } - - mCurrentIndex = 0; - - return current(); - } - } - - // Data associated with each rectangle of text - static class TextData { - // Back-pointer to String this TextData describes, if it - // represents a String rather than a single glyph - private String str; - - // If this TextData represents a single glyph, this is its - // unicode ID - int unicodeID; - - // The following must be defined and used VERY precisely. This is - // the offset from the upper-left corner of this rectangle (Java - // 2D coordinate system) at which the string must be rasterized in - // order to fit within the rectangle -- the leftmost point of the - // baseline. - private Point origin; - - // This represents the pre-normalized rectangle, which fits - // within the rectangle on the backing store. We keep a - // one-pixel border around entries on the backing store to - // prevent bleeding of adjacent letters when using GL_LINEAR - // filtering for rendering. The origin of this rectangle is - // equivalent to the origin above. - private Rectangle2D origRect; - - private boolean used; // Whether this text was used recently - - TextData(String str, Point origin, Rectangle2D origRect, int unicodeID) { - this.str = str; - this.origin = origin; - this.origRect = origRect; - this.unicodeID = unicodeID; - } - - String string() { - return str; - } - - Point origin() { - return origin; - } - - // The following three methods are used to locate the glyph - // within the expanded rectangle coming from normalize() - int origOriginX() { - return (int) -origRect.getMinX(); - } - - int origOriginY() { - return (int) -origRect.getMinY(); - } - - Rectangle2D origRect() { - return origRect; - } - - boolean used() { - return used; - } - - void markUsed() { - used = true; - } - - void clearUsed() { - used = false; - } - } - - class Manager implements BackingStoreManager { - private Graphics2D g; - - public Object allocateBackingStore(int w, int h) { - // FIXME: should consider checking Font's attributes to see - // whether we're likely to need to support a full RGBA backing - // store (i.e., non-default Paint, foreground color, etc.), but - // for now, let's just be more efficient - TextureRenderer renderer; - - if (renderDelegate.intensityOnly()) { - renderer = TextureRenderer.createAlphaOnlyRenderer(w, h, mipmap); - } else { - renderer = new TextureRenderer(w, h, true, mipmap); - } - renderer.setSmoothing(smoothing); - - if (DEBUG) { - System.err.println(" TextRenderer allocating backing store " + - w + " x " + h); - } - - return renderer; - } - - public void deleteBackingStore(Object backingStore) { - ((TextureRenderer) backingStore).dispose(); - } - - public boolean preExpand(Rect cause, int attemptNumber) { - // Only try this one time; clear out potentially obsolete entries - // NOTE: this heuristic and the fact that it clears the used bit - // of all entries seems to cause cycling of entries in some - // situations, where the backing store becomes small compared to - // the amount of text on the screen (see the TextFlow demo) and - // the entries continually cycle in and out of the backing - // store, decreasing performance. If we added a little age - // information to the entries, and only cleared out entries - // above a certain age, this behavior would be eliminated. - // However, it seems the system usually stabilizes itself, so - // for now we'll just keep things simple. Note that if we don't - // clear the used bit here, the backing store tends to increase - // very quickly to its maximum size, at least with the TextFlow - // demo when the text is being continually re-laid out. - if (attemptNumber == 0) { - if (DEBUG) { - System.err.println( - "Clearing unused entries in preExpand(): attempt number " + - attemptNumber); - } - - if (inBeginEndPair) { - // Draw any outstanding glyphs - flush(); - } - - clearUnusedEntries(); - - return true; - } - - return false; - } - - public boolean additionFailed(Rect cause, int attemptNumber) { - // Heavy hammer -- might consider doing something different - packer.clear(); - stringLocations.clear(); - mGlyphProducer.clearAllCacheEntries(); - - if (DEBUG) { - System.err.println( - " *** Cleared all text because addition failed ***"); - } - - if (attemptNumber == 0) { - return true; - } - - return false; - } - - public boolean canCompact() { - return true; - } - - public void beginMovement(Object oldBackingStore, Object newBackingStore) { - // Exit the begin / end pair if necessary - if (inBeginEndPair) { - // Draw any outstanding glyphs - flush(); - - GL2 gl = GLContext.getCurrentGL().getGL2(); - - // Pop client attrib bits used by the pipelined quad renderer - gl.glPopClientAttrib(); - - // The OpenGL spec is unclear about whether this changes the - // buffer bindings, so preemptively zero out the GL_ARRAY_BUFFER - // binding - if (is15Available(gl)) { - try { - gl.glBindBuffer(GL2.GL_ARRAY_BUFFER, 0); - } catch (Exception e) { - isExtensionAvailable_GL_VERSION_1_5 = false; - } - } - - if (isOrthoMode) { - ((TextureRenderer) oldBackingStore).endOrthoRendering(); - } else { - ((TextureRenderer) oldBackingStore).end3DRendering(); - } - } - - TextureRenderer newRenderer = (TextureRenderer) newBackingStore; - g = newRenderer.createGraphics(); - } - - public void move(Object oldBackingStore, Rect oldLocation, - Object newBackingStore, Rect newLocation) { - TextureRenderer oldRenderer = (TextureRenderer) oldBackingStore; - TextureRenderer newRenderer = (TextureRenderer) newBackingStore; - - if (oldRenderer == newRenderer) { - // Movement on the same backing store -- easy case - g.copyArea(oldLocation.x(), oldLocation.y(), oldLocation.w(), - oldLocation.h(), newLocation.x() - oldLocation.x(), - newLocation.y() - oldLocation.y()); - } else { - // Need to draw from the old renderer's image into the new one - Image img = oldRenderer.getImage(); - g.drawImage(img, newLocation.x(), newLocation.y(), - newLocation.x() + newLocation.w(), - newLocation.y() + newLocation.h(), oldLocation.x(), - oldLocation.y(), oldLocation.x() + oldLocation.w(), - oldLocation.y() + oldLocation.h(), null); - } - } - - public void endMovement(Object oldBackingStore, Object newBackingStore) { - g.dispose(); - - // Sync the whole surface - TextureRenderer newRenderer = (TextureRenderer) newBackingStore; - newRenderer.markDirty(0, 0, newRenderer.getWidth(), - newRenderer.getHeight()); - - // Re-enter the begin / end pair if necessary - if (inBeginEndPair) { - if (isOrthoMode) { - ((TextureRenderer) newBackingStore).beginOrthoRendering(beginRenderingWidth, - beginRenderingHeight, beginRenderingDepthTestDisabled); - } else { - ((TextureRenderer) newBackingStore).begin3DRendering(); - } - - // Push client attrib bits used by the pipelined quad renderer - GL2 gl = GLContext.getCurrentGL().getGL2(); - gl.glPushClientAttrib((int) GL2.GL_ALL_CLIENT_ATTRIB_BITS); - - if (haveCachedColor) { - if (cachedColor == null) { - ((TextureRenderer) newBackingStore).setColor(cachedR, - cachedG, cachedB, cachedA); - } else { - ((TextureRenderer) newBackingStore).setColor(cachedColor); - } - } - } else { - needToResetColor = true; - } - } - } - - public static class DefaultRenderDelegate implements RenderDelegate { - public boolean intensityOnly() { - return true; - } - - public Rectangle2D getBounds(CharSequence str, Font font, - FontRenderContext frc) { - return getBounds(font.createGlyphVector(frc, - new CharSequenceIterator(str)), - frc); - } - - public Rectangle2D getBounds(String str, Font font, - FontRenderContext frc) { - return getBounds(font.createGlyphVector(frc, str), frc); - } - - public Rectangle2D getBounds(GlyphVector gv, FontRenderContext frc) { - return gv.getVisualBounds(); - } - - public void drawGlyphVector(Graphics2D graphics, GlyphVector str, - int x, int y) { - graphics.drawGlyphVector(str, x, y); - } - - public void draw(Graphics2D graphics, String str, int x, int y) { - graphics.drawString(str, x, y); - } - } - - //---------------------------------------------------------------------- - // Glyph-by-glyph rendering support - // - - // A temporary to prevent excessive garbage creation - private char[] singleUnicode = new char[1]; - - /** A Glyph represents either a single unicode glyph or a - substring of characters to be drawn. The reason for the dual - behavior is so that we can take in a sequence of unicode - characters and partition them into runs of individual glyphs, - but if we encounter complex text and/or unicode sequences we - don't understand, we can render them using the - string-by-string method. <P> - - Glyphs need to be able to re-upload themselves to the backing - store on demand as we go along in the render sequence. - */ - - class Glyph { - // If this Glyph represents an individual unicode glyph, this - // is its unicode ID. If it represents a String, this is -1. - private int unicodeID; - // If the above field isn't -1, then these fields are used. - // The glyph code in the font - private int glyphCode; - // The GlyphProducer which created us - private GlyphProducer producer; - // The advance of this glyph - private float advance; - // The GlyphVector for this single character; this is passed - // in during construction but cleared during the upload - // process - private GlyphVector singleUnicodeGlyphVector; - // The rectangle of this glyph on the backing store, or null - // if it has been cleared due to space pressure - private Rect glyphRectForTextureMapping; - // If this Glyph represents a String, this is the sequence of - // characters - private String str; - // Whether we need a valid advance when rendering this string - // (i.e., whether it has other single glyphs coming after it) - private boolean needAdvance; - - // Creates a Glyph representing an individual Unicode character - public Glyph(int unicodeID, - int glyphCode, - float advance, - GlyphVector singleUnicodeGlyphVector, - GlyphProducer producer) { - this.unicodeID = unicodeID; - this.glyphCode = glyphCode; - this.advance = advance; - this.singleUnicodeGlyphVector = singleUnicodeGlyphVector; - this.producer = producer; - } - - // Creates a Glyph representing a sequence of characters, with - // an indication of whether additional single glyphs are being - // rendered after it - public Glyph(String str, boolean needAdvance) { - this.str = str; - this.needAdvance = needAdvance; - } - - /** Returns this glyph's unicode ID */ - public int getUnicodeID() { - return unicodeID; - } - - /** Returns this glyph's (font-specific) glyph code */ - public int getGlyphCode() { - return glyphCode; - } - - /** Returns the advance for this glyph */ - public float getAdvance() { - return advance; - } - - /** Draws this glyph and returns the (x) advance for this glyph */ - public float draw3D(float inX, float inY, float z, float scaleFactor) { - if (str != null) { - draw3D_ROBUST(str, inX, inY, z, scaleFactor); - if (!needAdvance) { - return 0; - } - // Compute and return the advance for this string - GlyphVector gv = font.createGlyphVector(getFontRenderContext(), str); - float totalAdvance = 0; - for (int i = 0; i < gv.getNumGlyphs(); i++) { - totalAdvance += gv.getGlyphMetrics(i).getAdvance(); - } - return totalAdvance; - } - - // This is the code path taken for individual glyphs - if (glyphRectForTextureMapping == null) { - upload(); - } - - try { - if (mPipelinedQuadRenderer == null) { - mPipelinedQuadRenderer = new Pipelined_QuadRenderer(); - } - - TextureRenderer renderer = getBackingStore(); - // Handles case where NPOT texture is used for backing store - TextureCoords wholeImageTexCoords = renderer.getTexture().getImageTexCoords(); - float xScale = wholeImageTexCoords.right(); - float yScale = wholeImageTexCoords.bottom(); - - Rect rect = glyphRectForTextureMapping; - TextData data = (TextData) rect.getUserData(); - data.markUsed(); - - Rectangle2D origRect = data.origRect(); - - float x = inX - (scaleFactor * data.origOriginX()); - float y = inY - (scaleFactor * ((float) origRect.getHeight() - data.origOriginY())); - - int texturex = rect.x() + (data.origin().x - data.origOriginX()); - int texturey = renderer.getHeight() - rect.y() - (int) origRect.getHeight() - - (data.origin().y - data.origOriginY()); - int width = (int) origRect.getWidth(); - int height = (int) origRect.getHeight(); - - float tx1 = xScale * (float) texturex / (float) renderer.getWidth(); - float ty1 = yScale * (1.0f - - ((float) texturey / (float) renderer.getHeight())); - float tx2 = xScale * (float) (texturex + width) / (float) renderer.getWidth(); - float ty2 = yScale * (1.0f - - ((float) (texturey + height) / (float) renderer.getHeight())); - - mPipelinedQuadRenderer.glTexCoord2f(tx1, ty1); - mPipelinedQuadRenderer.glVertex3f(x, y, z); - mPipelinedQuadRenderer.glTexCoord2f(tx2, ty1); - mPipelinedQuadRenderer.glVertex3f(x + (width * scaleFactor), y, - z); - mPipelinedQuadRenderer.glTexCoord2f(tx2, ty2); - mPipelinedQuadRenderer.glVertex3f(x + (width * scaleFactor), - y + (height * scaleFactor), z); - mPipelinedQuadRenderer.glTexCoord2f(tx1, ty2); - mPipelinedQuadRenderer.glVertex3f(x, - y + (height * scaleFactor), z); - } catch (Exception e) { - e.printStackTrace(); - } - return advance; - } - - /** Notifies this glyph that it's been cleared out of the cache */ - public void clear() { - glyphRectForTextureMapping = null; - } - - private void upload() { - GlyphVector gv = getGlyphVector(); - Rectangle2D origBBox = preNormalize(renderDelegate.getBounds(gv, getFontRenderContext())); - Rectangle2D bbox = normalize(origBBox); - Point origin = new Point((int) -bbox.getMinX(), - (int) -bbox.getMinY()); - Rect rect = new Rect(0, 0, (int) bbox.getWidth(), - (int) bbox.getHeight(), - new TextData(null, origin, origBBox, unicodeID)); - packer.add(rect); - glyphRectForTextureMapping = rect; - Graphics2D g = getGraphics2D(); - // OK, should now have an (x, y) for this rectangle; rasterize - // the glyph - int strx = rect.x() + origin.x; - int stry = rect.y() + origin.y; - - // Clear out the area we're going to draw into - g.setComposite(AlphaComposite.Clear); - g.fillRect(rect.x(), rect.y(), rect.w(), rect.h()); - g.setComposite(AlphaComposite.Src); - - // Draw the string - renderDelegate.drawGlyphVector(g, gv, strx, stry); - - if (DRAW_BBOXES) { - TextData data = (TextData) rect.getUserData(); - // Draw a bounding box on the backing store - g.drawRect(strx - data.origOriginX(), - stry - data.origOriginY(), - (int) data.origRect().getWidth(), - (int) data.origRect().getHeight()); - g.drawRect(strx - data.origin().x, - stry - data.origin().y, - rect.w(), - rect.h()); - } - - // Mark this region of the TextureRenderer as dirty - getBackingStore().markDirty(rect.x(), rect.y(), rect.w(), - rect.h()); - // Re-register ourselves with our producer - producer.register(this); - } - - private GlyphVector getGlyphVector() { - GlyphVector gv = singleUnicodeGlyphVector; - if (gv != null) { - singleUnicodeGlyphVector = null; // Don't need this anymore - return gv; - } - singleUnicode[0] = (char) unicodeID; - return font.createGlyphVector(getFontRenderContext(), singleUnicode); - } - } - - class GlyphProducer { - final int undefined = -2; - FontRenderContext fontRenderContext; - List/*<Glyph>*/ glyphsOutput = new ArrayList/*<Glyph>*/(); - // The mapping from unicode character to font-specific glyph ID - int[] unicodes2Glyphs; - // The mapping from glyph ID to Glyph - Glyph[] glyphCache; - // We re-use this for each incoming string - CharSequenceIterator iter = new CharSequenceIterator(); - - GlyphProducer(int fontLengthInGlyphs) { - unicodes2Glyphs = new int[512]; - glyphCache = new Glyph[fontLengthInGlyphs]; - clearAllCacheEntries(); - } - - public List/*<Glyph>*/ getGlyphs(CharSequence inString) { - glyphsOutput.clear(); - iter.initFromCharSequence(inString); - GlyphVector fullRunGlyphVector = font.createGlyphVector(getFontRenderContext(), - iter); - boolean complex = (fullRunGlyphVector.getLayoutFlags() != 0); - if (complex || DISABLE_GLYPH_CACHE) { - // Punt to the robust version of the renderer - glyphsOutput.add(new Glyph(inString.toString(), false)); - return glyphsOutput; - } - - int lengthInGlyphs = fullRunGlyphVector.getNumGlyphs(); - int i = 0; - while (i < lengthInGlyphs) { - Glyph glyph = getGlyph(inString, fullRunGlyphVector, i); - if (glyph != null) { - glyphsOutput.add(glyph); - i++; - } else { - // Assemble a run of characters that don't fit in - // the cache - StringBuffer buf = new StringBuffer(); - while (i < lengthInGlyphs && - getGlyph(inString, fullRunGlyphVector, i) == null) { - buf.append(inString.charAt(i++)); - } - glyphsOutput.add(new Glyph(buf.toString(), - // Any more glyphs after this run? - i < lengthInGlyphs)); - } - } - return glyphsOutput; - } - - public void clearCacheEntry(int unicodeID) { - int glyphID = unicodes2Glyphs[unicodeID]; - if (glyphID != undefined) { - Glyph glyph = glyphCache[glyphID]; - if (glyph != null) { - glyph.clear(); - } - glyphCache[glyphID] = null; - } - unicodes2Glyphs[unicodeID] = undefined; - } - - public void clearAllCacheEntries() { - for (int i = 0; i < unicodes2Glyphs.length; i++) { - clearCacheEntry(i); - } - } - - public void register(Glyph glyph) { - unicodes2Glyphs[glyph.getUnicodeID()] = glyph.getGlyphCode(); - glyphCache[glyph.getGlyphCode()] = glyph; - } - - public float getGlyphPixelWidth(char unicodeID) { - Glyph glyph = getGlyph(unicodeID); - if (glyph != null) { - return glyph.getAdvance(); - } - - // Have to do this the hard / uncached way - singleUnicode[0] = unicodeID; - GlyphVector gv = font.createGlyphVector(fontRenderContext, - singleUnicode); - return gv.getGlyphMetrics(0).getAdvance(); - } - - // Returns a glyph object for this single glyph. Returns null - // if the unicode or glyph ID would be out of bounds of the - // glyph cache. - private Glyph getGlyph(CharSequence inString, - GlyphVector fullRunGlyphVector, - int index) { - char unicodeID = inString.charAt(index); - - if (unicodeID >= unicodes2Glyphs.length) { - return null; - } - - int glyphID = unicodes2Glyphs[unicodeID]; - if (glyphID != undefined) { - return glyphCache[glyphID]; - } - - // Must fabricate the glyph - singleUnicode[0] = unicodeID; - GlyphVector gv = font.createGlyphVector(getFontRenderContext(), singleUnicode); - return getGlyph(unicodeID, gv, fullRunGlyphVector.getGlyphMetrics(index)); - } - - // It's unclear whether this variant might produce less - // optimal results than if we can see the entire GlyphVector - // for the incoming string - private Glyph getGlyph(int unicodeID) { - if (unicodeID >= unicodes2Glyphs.length) { - return null; - } - - int glyphID = unicodes2Glyphs[unicodeID]; - if (glyphID != undefined) { - return glyphCache[glyphID]; - } - singleUnicode[0] = (char) unicodeID; - GlyphVector gv = font.createGlyphVector(getFontRenderContext(), singleUnicode); - return getGlyph(unicodeID, gv, gv.getGlyphMetrics(0)); - } - - private Glyph getGlyph(int unicodeID, - GlyphVector singleUnicodeGlyphVector, - GlyphMetrics metrics) { - int glyphCode = singleUnicodeGlyphVector.getGlyphCode(0); - // Have seen huge glyph codes (65536) coming out of some fonts in some Unicode situations - if (glyphCode >= glyphCache.length) { - return null; - } - Glyph glyph = new Glyph(unicodeID, - glyphCode, - metrics.getAdvance(), - singleUnicodeGlyphVector, - this); - register(glyph); - return glyph; - } - } - - class Pipelined_QuadRenderer { - int mOutstandingGlyphsVerticesPipeline = 0; - FloatBuffer mTexCoords; - FloatBuffer mVertCoords; - boolean usingVBOs; - int mVBO_For_ResuableTileVertices; - int mVBO_For_ResuableTileTexCoords; - - Pipelined_QuadRenderer() { - GL2 gl = GLContext.getCurrentGL().getGL2(); - mVertCoords = BufferUtil.newFloatBuffer(kTotalBufferSizeCoordsVerts); - mTexCoords = BufferUtil.newFloatBuffer(kTotalBufferSizeCoordsTex); - - usingVBOs = is15Available(gl); - - if (usingVBOs) { - try { - int[] vbos = new int[2]; - gl.glGenBuffers(2, IntBuffer.wrap(vbos)); - - mVBO_For_ResuableTileVertices = vbos[0]; - mVBO_For_ResuableTileTexCoords = vbos[1]; - - gl.glBindBuffer(GL2.GL_ARRAY_BUFFER, - mVBO_For_ResuableTileVertices); - gl.glBufferData(GL2.GL_ARRAY_BUFFER, kTotalBufferSizeBytesVerts, - null, GL2.GL_STREAM_DRAW); // stream draw because this is a single quad use pipeline - - gl.glBindBuffer(GL2.GL_ARRAY_BUFFER, - mVBO_For_ResuableTileTexCoords); - gl.glBufferData(GL2.GL_ARRAY_BUFFER, kTotalBufferSizeBytesTex, - null, GL2.GL_STREAM_DRAW); // stream draw because this is a single quad use pipeline - } catch (Exception e) { - isExtensionAvailable_GL_VERSION_1_5 = false; - usingVBOs = false; - } - } - } - - public void glTexCoord2f(float v, float v1) { - mTexCoords.put(v); - mTexCoords.put(v1); - } - - public void glVertex3f(float inX, float inY, float inZ) { - mVertCoords.put(inX); - mVertCoords.put(inY); - mVertCoords.put(inZ); - - mOutstandingGlyphsVerticesPipeline++; - - if (mOutstandingGlyphsVerticesPipeline >= kTotalBufferSizeVerts) { - this.draw(); - } - } - - private void draw() { - if (useVertexArrays) { - drawVertexArrays(); - } else { - drawIMMEDIATE(); - } - } - - private void drawVertexArrays() { - if (mOutstandingGlyphsVerticesPipeline > 0) { - GL2 gl = GLContext.getCurrentGL().getGL2(); - - TextureRenderer renderer = getBackingStore(); - Texture texture = renderer.getTexture(); // triggers texture uploads. Maybe this should be more obvious? - - mVertCoords.rewind(); - mTexCoords.rewind(); - - gl.glEnableClientState(GL2.GL_VERTEX_ARRAY); - - if (usingVBOs) { - gl.glBindBuffer(GL2.GL_ARRAY_BUFFER, - mVBO_For_ResuableTileVertices); - gl.glBufferSubData(GL2.GL_ARRAY_BUFFER, 0, - mOutstandingGlyphsVerticesPipeline * kSizeInBytes_OneVertices_VertexData, - mVertCoords); // upload only the new stuff - gl.glVertexPointer(3, GL2.GL_FLOAT, 0, 0); - } else { - gl.glVertexPointer(3, GL2.GL_FLOAT, 0, mVertCoords); - } - - gl.glEnableClientState(GL2.GL_TEXTURE_COORD_ARRAY); - - if (usingVBOs) { - gl.glBindBuffer(GL2.GL_ARRAY_BUFFER, - mVBO_For_ResuableTileTexCoords); - gl.glBufferSubData(GL2.GL_ARRAY_BUFFER, 0, - mOutstandingGlyphsVerticesPipeline * kSizeInBytes_OneVertices_TexData, - mTexCoords); // upload only the new stuff - gl.glTexCoordPointer(2, GL2.GL_FLOAT, 0, 0); - } else { - gl.glTexCoordPointer(2, GL2.GL_FLOAT, 0, mTexCoords); - } - - gl.glDrawArrays(GL2.GL_QUADS, 0, - mOutstandingGlyphsVerticesPipeline); - - mVertCoords.rewind(); - mTexCoords.rewind(); - mOutstandingGlyphsVerticesPipeline = 0; - } - } - - private void drawIMMEDIATE() { - if (mOutstandingGlyphsVerticesPipeline > 0) { - TextureRenderer renderer = getBackingStore(); - Texture texture = renderer.getTexture(); // triggers texture uploads. Maybe this should be more obvious? - - GL2 gl = GLContext.getCurrentGL().getGL2(); - gl.glBegin(GL2.GL_QUADS); - - try { - int numberOfQuads = mOutstandingGlyphsVerticesPipeline / 4; - mVertCoords.rewind(); - mTexCoords.rewind(); - - for (int i = 0; i < numberOfQuads; i++) { - gl.glTexCoord2f(mTexCoords.get(), mTexCoords.get()); - gl.glVertex3f(mVertCoords.get(), mVertCoords.get(), - mVertCoords.get()); - - gl.glTexCoord2f(mTexCoords.get(), mTexCoords.get()); - gl.glVertex3f(mVertCoords.get(), mVertCoords.get(), - mVertCoords.get()); - - gl.glTexCoord2f(mTexCoords.get(), mTexCoords.get()); - gl.glVertex3f(mVertCoords.get(), mVertCoords.get(), - mVertCoords.get()); - - gl.glTexCoord2f(mTexCoords.get(), mTexCoords.get()); - gl.glVertex3f(mVertCoords.get(), mVertCoords.get(), - mVertCoords.get()); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - gl.glEnd(); - mVertCoords.rewind(); - mTexCoords.rewind(); - mOutstandingGlyphsVerticesPipeline = 0; - } - } - } - } - - class DebugListener implements GLEventListener { - private GLU glu; - private Frame frame; - - DebugListener(GL gl, Frame frame) { - this.glu = GLU.createGLU(gl); - this.frame = frame; - } - - public void display(GLAutoDrawable drawable) { - GL2 gl = GLContext.getCurrentGL().getGL2(); - gl.glClear(GL2.GL_DEPTH_BUFFER_BIT | GL2.GL_COLOR_BUFFER_BIT); - - if (packer == null) { - return; - } - - TextureRenderer rend = getBackingStore(); - final int w = rend.getWidth(); - final int h = rend.getHeight(); - rend.beginOrthoRendering(w, h); - rend.drawOrthoRect(0, 0); - rend.endOrthoRendering(); - - if ((frame.getWidth() != w) || (frame.getHeight() != h)) { - EventQueue.invokeLater(new Runnable() { - public void run() { - frame.setSize(w, h); - } - }); - } - } - - public void dispose(GLAutoDrawable drawable) { - glu.destroy(); - glu=null; - frame=null; - } - - // Unused methods - public void init(GLAutoDrawable drawable) { - } - - public void reshape(GLAutoDrawable drawable, int x, int y, int width, - int height) { - } - - public void displayChanged(GLAutoDrawable drawable, - boolean modeChanged, boolean deviceChanged) { - } - } - - /** - * Sets whether vertex arrays are being used internally for - * rendering, or whether text is rendered using the OpenGL - * immediate mode commands. This is provided as a concession for - * certain graphics cards which have poor vertex array - * performance. Defaults to true. - */ - public void setUseVertexArrays(boolean useVertexArrays) { - this.useVertexArrays = useVertexArrays; - } - - /** - * Indicates whether vertex arrays are being used internally for - * rendering, or whether text is rendered using the OpenGL - * immediate mode commands. Defaults to true. - */ - public boolean getUseVertexArrays() { - return useVertexArrays; - } - - /** - * Sets whether smoothing (i.e., GL_LINEAR filtering) is enabled - * in the backing TextureRenderer of this TextRenderer. A few - * graphics cards do not behave well when this is enabled, - * resulting in fuzzy text. Defaults to true. - */ - public void setSmoothing(boolean smoothing) { - this.smoothing = smoothing; - getBackingStore().setSmoothing(smoothing); - } - - /** - * Indicates whether smoothing is enabled in the backing - * TextureRenderer of this TextRenderer. A few graphics cards do - * not behave well when this is enabled, resulting in fuzzy text. - * Defaults to true. - */ - public boolean getSmoothing() { - return smoothing; - } - - private boolean is15Available(GL gl) { - if (!checkFor_isExtensionAvailable_GL_VERSION_1_5) { - isExtensionAvailable_GL_VERSION_1_5 = gl.isExtensionAvailable("GL_VERSION_1_5"); - checkFor_isExtensionAvailable_GL_VERSION_1_5 = true; - } - return isExtensionAvailable_GL_VERSION_1_5; - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/awt/TextureRenderer.java b/src/jogl/classes/com/sun/opengl/util/awt/TextureRenderer.java deleted file mode 100755 index 86ea1dbc7..000000000 --- a/src/jogl/classes/com/sun/opengl/util/awt/TextureRenderer.java +++ /dev/null @@ -1,699 +0,0 @@ -/* - * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.awt; - -import java.awt.Color; -import java.awt.Dimension; -import java.awt.Graphics2D; -import java.awt.Image; -import java.awt.Rectangle; -import java.awt.image.*; - -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import javax.media.opengl.glu.gl2.*; -import com.sun.opengl.util.texture.*; -import com.sun.opengl.util.texture.spi.*; -import com.sun.opengl.util.texture.awt.*; - -/** Provides the ability to render into an OpenGL {@link - com.sun.opengl.util.texture.Texture Texture} using the Java 2D - APIs. This renderer class uses an internal Java 2D image (of - unspecified type) for its backing store and flushes portions of - that image to an OpenGL texture on demand. The resulting OpenGL - texture can then be mapped on to a polygon for display. */ - -public class TextureRenderer { - // For now, we supply only a BufferedImage back-end for this - // renderer. In theory we could use the Java 2D/JOGL bridge to fully - // accelerate the rendering paths, but there are restrictions on - // what work can be done where; for example, Graphics2D-related work - // must not be done on the Queue Flusher Thread, but JOGL's - // OpenGL-related work must be. This implies that the user's code - // would need to be split up into multiple callbacks run from the - // appropriate threads, which would be somewhat unfortunate. - - // Whether we have an alpha channel in the (RGB/A) backing store - private boolean alpha; - - // Whether we're using only a GL_INTENSITY backing store - private boolean intensity; - - // Whether we're attempting to use automatic mipmap generation support - private boolean mipmap; - - // Whether smoothing is enabled for the OpenGL texture (switching - // between GL_LINEAR and GL_NEAREST filtering) - private boolean smoothing = true; - private boolean smoothingChanged; - - // The backing store itself - private BufferedImage image; - - private Texture texture; - private AWTTextureData textureData; - private boolean mustReallocateTexture; - private Rectangle dirtyRegion; - - private GLUgl2 glu = new GLUgl2(); - - // Current color - private float r = 1.0f; - private float g = 1.0f; - private float b = 1.0f; - private float a = 1.0f; - - /** Creates a new renderer with backing store of the specified width - and height. If <CODE>alpha</CODE> is true, allocates an alpha - channel in the backing store image. No mipmap support is - requested. - - @param width the width of the texture to render into - @param height the height of the texture to render into - @param alpha whether to allocate an alpha channel for the texture - */ - public TextureRenderer(int width, int height, boolean alpha) { - this(width, height, alpha, false); - } - - /** Creates a new renderer with backing store of the specified width - and height. If <CODE>alpha</CODE> is true, allocates an alpha channel in the - backing store image. If <CODE>mipmap</CODE> is true, attempts to use OpenGL's - automatic mipmap generation for better smoothing when rendering - the TextureRenderer's contents at a distance. - - @param width the width of the texture to render into - @param height the height of the texture to render into - @param alpha whether to allocate an alpha channel for the texture - @param mipmap whether to attempt use of automatic mipmap generation - */ - public TextureRenderer(int width, int height, boolean alpha, boolean mipmap) { - this(width, height, alpha, false, mipmap); - } - - // Internal constructor to avoid confusion since alpha only makes - // sense when intensity is not set - private TextureRenderer(int width, int height, boolean alpha, boolean intensity, boolean mipmap) { - this.alpha = alpha; - this.intensity = intensity; - this.mipmap = mipmap; - init(width, height); - } - - /** Creates a new renderer with a special kind of backing store - which acts only as an alpha channel. No mipmap support is - requested. Internally, this associates a GL_INTENSITY OpenGL - texture with the backing store. */ - public static TextureRenderer createAlphaOnlyRenderer(int width, int height) { - return createAlphaOnlyRenderer(width, height, false); - } - - /** Creates a new renderer with a special kind of backing store - which acts only as an alpha channel. If <CODE>mipmap</CODE> is - true, attempts to use OpenGL's automatic mipmap generation for - better smoothing when rendering the TextureRenderer's contents - at a distance. Internally, this associates a GL_INTENSITY OpenGL - texture with the backing store. */ - public static TextureRenderer createAlphaOnlyRenderer(int width, int height, boolean mipmap) { - return new TextureRenderer(width, height, false, true, mipmap); - } - - /** Returns the width of the backing store of this renderer. - - @return the width of the backing store of this renderer - */ - public int getWidth() { - return image.getWidth(); - } - - /** Returns the height of the backing store of this renderer. - - @return the height of the backing store of this renderer - */ - public int getHeight() { - return image.getHeight(); - } - - /** Returns the size of the backing store of this renderer in a - newly-allocated {@link java.awt.Dimension Dimension} object. - - @return the size of the backing store of this renderer - */ - public Dimension getSize() { - return getSize(null); - } - - /** Returns the size of the backing store of this renderer. Uses the - {@link java.awt.Dimension Dimension} object if one is supplied, - or allocates a new one if null is passed. - - @param d a {@link java.awt.Dimension Dimension} object in which - to store the results, or null to allocate a new one - - @return the size of the backing store of this renderer - */ - public Dimension getSize(Dimension d) { - if (d == null) - d = new Dimension(); - d.setSize(image.getWidth(), image.getHeight()); - return d; - } - - /** Sets the size of the backing store of this renderer. This may - cause the OpenGL texture object associated with this renderer to - be invalidated; it is not recommended to cache this texture - object outside this class but to instead call {@link #getTexture - getTexture} when it is needed. - - @param width the new width of the backing store of this renderer - @param height the new height of the backing store of this renderer - @throws GLException If an OpenGL context is not current when this method is called - */ - public void setSize(int width, int height) throws GLException { - init(width, height); - } - - /** Sets the size of the backing store of this renderer. This may - cause the OpenGL texture object associated with this renderer to - be invalidated. - - @param d the new size of the backing store of this renderer - @throws GLException If an OpenGL context is not current when this method is called - */ - public void setSize(Dimension d) throws GLException { - setSize(d.width, d.height); - } - - /** Sets whether smoothing is enabled for the OpenGL texture; if so, - uses GL_LINEAR interpolation for the minification and - magnification filters. Defaults to true. Changes to this setting - will not take effect until the next call to {@link - #beginOrthoRendering beginOrthoRendering}. - - @param smoothing whether smoothing is enabled for the OpenGL texture - */ - public void setSmoothing(boolean smoothing) { - this.smoothing = smoothing; - smoothingChanged = true; - } - - /** Returns whether smoothing is enabled for the OpenGL texture; see - {@link #setSmoothing setSmoothing}. Defaults to true. - - @return whether smoothing is enabled for the OpenGL texture - */ - public boolean getSmoothing() { - return smoothing; - } - - /** Creates a {@link java.awt.Graphics2D Graphics2D} instance for - rendering to the backing store of this renderer. The returned - object should be disposed of using the normal {@link - java.awt.Graphics#dispose() Graphics.dispose()} method once it - is no longer being used. - - @return a new {@link java.awt.Graphics2D Graphics2D} object for - rendering into the backing store of this renderer - */ - public Graphics2D createGraphics() { - return image.createGraphics(); - } - - /** Returns the underlying Java 2D {@link java.awt.Image Image} - being rendered into. */ - public Image getImage() { - return image; - } - - /** Marks the given region of the TextureRenderer as dirty. This - region, and any previously set dirty regions, will be - automatically synchronized with the underlying Texture during - the next {@link #getTexture getTexture} operation, at which - point the dirty region will be cleared. It is not necessary for - an OpenGL context to be current when this method is called. - - @param x the x coordinate (in Java 2D coordinates -- relative to - upper left) of the region to update - @param y the y coordinate (in Java 2D coordinates -- relative to - upper left) of the region to update - @param width the width of the region to update - @param height the height of the region to update - */ - public void markDirty(int x, int y, int width, int height) { - Rectangle curRegion = new Rectangle(x, y, width, height); - if (dirtyRegion == null) { - dirtyRegion = curRegion; - } else { - dirtyRegion.add(curRegion); - } - } - - /** Returns the underlying OpenGL Texture object associated with - this renderer, synchronizing any dirty regions of the - TextureRenderer with the underlying OpenGL texture. - - @throws GLException If an OpenGL context is not current when this method is called - */ - public Texture getTexture() throws GLException { - if (dirtyRegion != null) { - sync(dirtyRegion.x, dirtyRegion.y, dirtyRegion.width, dirtyRegion.height); - dirtyRegion = null; - } - - ensureTexture(); - return texture; - } - - /** Disposes all resources associated with this renderer. It is not - valid to use this renderer after calling this method. - - @throws GLException If an OpenGL context is not current when this method is called - */ - public void dispose() throws GLException { - if (texture != null) { - texture.dispose(); - texture = null; - } - if (image != null) { - image.flush(); - image = null; - } - } - - /** Convenience method which assists in rendering portions of the - OpenGL texture to the screen, if the application intends to draw - them as a flat overlay on to the screen. Pushes OpenGL state - bits (GL_ENABLE_BIT, GL_DEPTH_BUFFER_BIT and GL_TRANSFORM_BIT); - disables the depth test, back-face culling, and lighting; - enables the texture in this renderer; and sets up the viewing - matrices for orthographic rendering where the coordinates go - from (0, 0) at the lower left to (width, height) at the upper - right. Equivalent to beginOrthoRendering(width, height, true). - {@link #endOrthoRendering} must be used in conjunction with this - method to restore all OpenGL states. - - @param width the width of the current on-screen OpenGL drawable - @param height the height of the current on-screen OpenGL drawable - - @throws GLException If an OpenGL context is not current when this method is called - */ - public void beginOrthoRendering(int width, int height) throws GLException { - beginOrthoRendering(width, height, true); - } - - /** Convenience method which assists in rendering portions of the - OpenGL texture to the screen, if the application intends to draw - them as a flat overlay on to the screen. Pushes OpenGL state - bits (GL_ENABLE_BIT, GL_DEPTH_BUFFER_BIT and GL_TRANSFORM_BIT); - disables the depth test (if the "disableDepthTest" argument is - true), back-face culling, and lighting; enables the texture in - this renderer; and sets up the viewing matrices for orthographic - rendering where the coordinates go from (0, 0) at the lower left - to (width, height) at the upper right. {@link - #endOrthoRendering} must be used in conjunction with this method - to restore all OpenGL states. - - @param width the width of the current on-screen OpenGL drawable - @param height the height of the current on-screen OpenGL drawable - @param disableDepthTest whether the depth test should be disabled - - @throws GLException If an OpenGL context is not current when this method is called - */ - public void beginOrthoRendering(int width, int height, boolean disableDepthTest) throws GLException { - beginRendering(true, width, height, disableDepthTest); - } - - /** Convenience method which assists in rendering portions of the - OpenGL texture to the screen as 2D quads in 3D space. Pushes - OpenGL state (GL_ENABLE_BIT); disables lighting; and enables the - texture in this renderer. Unlike {@link #beginOrthoRendering - beginOrthoRendering}, does not modify the depth test, back-face - culling, lighting, or the modelview or projection matrices. The - user is responsible for setting up the view matrices for correct - results of {@link #draw3DRect draw3DRect}. {@link - #end3DRendering} must be used in conjunction with this method to - restore all OpenGL states. - - @throws GLException If an OpenGL context is not current when this method is called - */ - public void begin3DRendering() throws GLException { - beginRendering(false, 0, 0, false); - } - - /** Changes the color of the polygons, and therefore the drawn - images, this TextureRenderer produces. Use of this method is - optional. The TextureRenderer uses the GL_MODULATE texture - environment mode, which causes the portions of the rendered - texture to be multiplied by the color of the rendered - polygons. The polygon color can be varied to achieve effects - like tinting of the overall output or fading in and out by - changing the alpha of the color. <P> - - Each component ranges from 0.0f - 1.0f. The alpha component, if - used, does not need to be premultiplied into the color channels - as described in the documentation for {@link - com.sun.opengl.util.texture.Texture Texture}, although - premultiplied colors are used internally. The default color is - opaque white. - - @param r the red component of the new color - @param g the green component of the new color - @param b the blue component of the new color - @param a the alpha component of the new color, 0.0f = completely - transparent, 1.0f = completely opaque - @throws GLException If an OpenGL context is not current when this method is called - */ - public void setColor(float r, float g, float b, float a) throws GLException { - GL2 gl = GLContext.getCurrentGL().getGL2(); - this.r = r * a; - this.g = g * a; - this.b = b * a; - this.a = a; - - gl.glColor4f(this.r, this.g, this.b, this.a); - } - - private float[] compArray; - /** Changes the current color of this TextureRenderer to the - supplied one. The default color is opaque white. See {@link - #setColor(float,float,float,float) setColor} for more details. - - @param color the new color to use for rendering - @throws GLException If an OpenGL context is not current when this method is called - */ - public void setColor(Color color) throws GLException { - // Get color's RGBA components as floats in the range [0,1]. - if (compArray == null) { - compArray = new float[4]; - } - color.getRGBComponents(compArray); - setColor(compArray[0], compArray[1], compArray[2], compArray[3]); - } - - /** Draws an orthographically projected rectangle containing all of - the underlying texture to the specified location on the - screen. All (x, y) coordinates are specified relative to the - lower left corner of either the texture image or the current - OpenGL drawable. This method is equivalent to - <code>drawOrthoRect(screenx, screeny, 0, 0, getWidth(), - getHeight());</code>. - - @param screenx the on-screen x coordinate at which to draw the rectangle - @param screeny the on-screen y coordinate (relative to lower left) at - which to draw the rectangle - - @throws GLException If an OpenGL context is not current when this method is called - */ - public void drawOrthoRect(int screenx, int screeny) throws GLException { - drawOrthoRect(screenx, screeny, 0, 0, getWidth(), getHeight()); - } - - /** Draws an orthographically projected rectangle of the underlying - texture to the specified location on the screen. All (x, y) - coordinates are specified relative to the lower left corner of - either the texture image or the current OpenGL drawable. - - @param screenx the on-screen x coordinate at which to draw the rectangle - @param screeny the on-screen y coordinate (relative to lower left) at - which to draw the rectangle - @param texturex the x coordinate of the pixel in the texture of - the lower left portion of the rectangle to draw - @param texturey the y coordinate of the pixel in the texture - (relative to lower left) of the lower left portion of the - rectangle to draw - @param width the width of the rectangle to draw - @param height the height of the rectangle to draw - - @throws GLException If an OpenGL context is not current when this method is called - */ - public void drawOrthoRect(int screenx, int screeny, - int texturex, int texturey, - int width, int height) throws GLException { - draw3DRect(screenx, screeny, 0, texturex, texturey, width, height, 1); - } - - /** Draws a rectangle of the underlying texture to the specified 3D - location. In the current coordinate system, the lower left - corner of the rectangle is placed at (x, y, z), and the upper - right corner is placed at (x + width * scaleFactor, y + height * - scaleFactor, z). The lower left corner of the sub-rectangle of - the texture is (texturex, texturey) and the upper right corner - is (texturex + width, texturey + height). For back-face culling - purposes, the rectangle is drawn with counterclockwise - orientation of the vertices when viewed from the front. - - @param x the x coordinate at which to draw the rectangle - @param y the y coordinate at which to draw the rectangle - @param z the z coordinate at which to draw the rectangle - @param texturex the x coordinate of the pixel in the texture of - the lower left portion of the rectangle to draw - @param texturey the y coordinate of the pixel in the texture - (relative to lower left) of the lower left portion of the - rectangle to draw - @param width the width in texels of the rectangle to draw - @param height the height in texels of the rectangle to draw - @param scaleFactor the scale factor to apply (multiplicatively) - to the size of the drawn rectangle - - @throws GLException If an OpenGL context is not current when this method is called - */ - public void draw3DRect(float x, float y, float z, - int texturex, int texturey, - int width, int height, - float scaleFactor) throws GLException { - GL2 gl = GLContext.getCurrentGL().getGL2(); - Texture texture = getTexture(); - TextureCoords coords = texture.getSubImageTexCoords(texturex, texturey, - texturex + width, - texturey + height); - gl.glBegin(GL2.GL_QUADS); - gl.glTexCoord2f(coords.left(), coords.bottom()); - gl.glVertex3f(x, y, z); - gl.glTexCoord2f(coords.right(), coords.bottom()); - gl.glVertex3f(x + width * scaleFactor, y, z); - gl.glTexCoord2f(coords.right(), coords.top()); - gl.glVertex3f(x + width * scaleFactor, y + height * scaleFactor, z); - gl.glTexCoord2f(coords.left(), coords.top()); - gl.glVertex3f(x, y + height * scaleFactor, z); - gl.glEnd(); - } - - /** Convenience method which assists in rendering portions of the - OpenGL texture to the screen, if the application intends to draw - them as a flat overlay on to the screen. Must be used if {@link - #beginOrthoRendering} is used to set up the rendering stage for - this overlay. - - @throws GLException If an OpenGL context is not current when this method is called - */ - public void endOrthoRendering() throws GLException { - endRendering(true); - } - - /** Convenience method which assists in rendering portions of the - OpenGL texture to the screen as 2D quads in 3D space. Must be - used if {@link #begin3DRendering} is used to set up the - rendering stage for this overlay. - - @throws GLException If an OpenGL context is not current when this method is called - */ - public void end3DRendering() throws GLException { - endRendering(false); - } - - /** Indicates whether automatic mipmap generation is in use for this - TextureRenderer. The result of this method may change from true - to false if it is discovered during allocation of the - TextureRenderer's backing store that automatic mipmap generation - is not supported at the OpenGL level. */ - public boolean isUsingAutoMipmapGeneration() { - return mipmap; - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - private void beginRendering(boolean ortho, int width, int height, boolean disableDepthTestForOrtho) { - GL2 gl = GLContext.getCurrentGL().getGL2(); - int attribBits = - GL2.GL_ENABLE_BIT | GL2.GL_TEXTURE_BIT | GL2.GL_COLOR_BUFFER_BIT | - (ortho ? (GL2.GL_DEPTH_BUFFER_BIT | GL2.GL_TRANSFORM_BIT) : 0); - gl.glPushAttrib(attribBits); - gl.glDisable(GL2.GL_LIGHTING); - if (ortho) { - if (disableDepthTestForOrtho) { - gl.glDisable(GL2.GL_DEPTH_TEST); - } - gl.glDisable(GL2.GL_CULL_FACE); - gl.glMatrixMode(GL2.GL_PROJECTION); - gl.glPushMatrix(); - gl.glLoadIdentity(); - glu.gluOrtho2D(0, width, 0, height); - gl.glMatrixMode(GL2.GL_MODELVIEW); - gl.glPushMatrix(); - gl.glLoadIdentity(); - gl.glMatrixMode(GL2.GL_TEXTURE); - gl.glPushMatrix(); - gl.glLoadIdentity(); - } - gl.glEnable(GL2.GL_BLEND); - gl.glBlendFunc(GL2.GL_ONE, GL2.GL_ONE_MINUS_SRC_ALPHA); - Texture texture = getTexture(); - texture.enable(); - texture.bind(); - gl.glTexEnvi(GL2.GL_TEXTURE_ENV, GL2.GL_TEXTURE_ENV_MODE, GL2.GL_MODULATE); - // Change polygon color to last saved - gl.glColor4f(r, g, b, a); - if (smoothingChanged) { - smoothingChanged = false; - if (smoothing) { - texture.setTexParameteri(GL2.GL_TEXTURE_MAG_FILTER, GL2.GL_LINEAR); - if (mipmap) { - texture.setTexParameteri(GL2.GL_TEXTURE_MIN_FILTER, GL2.GL_LINEAR_MIPMAP_LINEAR); - } else { - texture.setTexParameteri(GL2.GL_TEXTURE_MIN_FILTER, GL2.GL_LINEAR); - } - } else { - texture.setTexParameteri(GL2.GL_TEXTURE_MIN_FILTER, GL2.GL_NEAREST); - texture.setTexParameteri(GL2.GL_TEXTURE_MAG_FILTER, GL2.GL_NEAREST); - } - } - } - - private void endRendering(boolean ortho) { - GL2 gl = GLContext.getCurrentGL().getGL2(); - Texture texture = getTexture(); - texture.disable(); - if (ortho) { - gl.glMatrixMode(GL2.GL_PROJECTION); - gl.glPopMatrix(); - gl.glMatrixMode(GL2.GL_MODELVIEW); - gl.glPopMatrix(); - gl.glMatrixMode(GL2.GL_TEXTURE); - gl.glPopMatrix(); - } - gl.glPopAttrib(); - } - - private void init(int width, int height) { - GL2 gl = GLContext.getCurrentGL().getGL2(); - // Discard previous BufferedImage if any - if (image != null) { - image.flush(); - image = null; - } - - // Infer the internal format if not an intensity texture - int internalFormat = (intensity ? GL2.GL_INTENSITY : 0); - int imageType = - (intensity ? BufferedImage.TYPE_BYTE_GRAY : - (alpha ? BufferedImage.TYPE_INT_ARGB_PRE : BufferedImage.TYPE_INT_RGB)); - image = new BufferedImage(width, height, imageType); - // Always realllocate the TextureData associated with this - // BufferedImage; it's just a reference to the contents but we - // need it in order to update sub-regions of the underlying - // texture - textureData = new AWTTextureData(gl.getGLProfile(), internalFormat, 0, mipmap, image); - // For now, always reallocate the underlying OpenGL texture when - // the backing store size changes - mustReallocateTexture = true; - } - - /** Synchronizes the specified region of the backing store down to - the underlying OpenGL texture. If {@link #markDirty markDirty} - is used instead to indicate the regions that are out of sync, - this method does not need to be called. - - @param x the x coordinate (in Java 2D coordinates -- relative to - upper left) of the region to update - @param y the y coordinate (in Java 2D coordinates -- relative to - upper left) of the region to update - @param width the width of the region to update - @param height the height of the region to update - - @throws GLException If an OpenGL context is not current when this method is called - */ - private void sync(int x, int y, int width, int height) throws GLException { - // Force allocation if necessary - boolean canSkipUpdate = ensureTexture(); - - if (!canSkipUpdate) { - // Update specified region. - // NOTE that because BufferedImage-based TextureDatas now don't - // do anything to their contents, the coordinate systems for - // OpenGL and Java 2D actually line up correctly for - // updateSubImage calls, so we don't need to do any argument - // conversion here (i.e., flipping the Y coordinate). - texture.updateSubImage(textureData, 0, x, y, x, y, width, height); - } - } - - // Returns true if the texture was newly allocated, false if not - private boolean ensureTexture() { - if (mustReallocateTexture) { - if (texture != null) { - texture.dispose(); - texture = null; - } - mustReallocateTexture = false; - } - - if (texture == null) { - texture = TextureIO.newTexture(textureData); - if (mipmap && !texture.isUsingAutoMipmapGeneration()) { - // Only try this once - texture.dispose(); - mipmap = false; - textureData.setMipmap(false); - texture = TextureIO.newTexture(textureData); - } - - if (!smoothing) { - // The TextureIO classes default to GL_LINEAR filtering - texture.setTexParameteri(GL2.GL_TEXTURE_MIN_FILTER, GL2.GL_NEAREST); - texture.setTexParameteri(GL2.GL_TEXTURE_MAG_FILTER, GL2.GL_NEAREST); - } - return true; - } - - return false; - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/gl2/BitmapCharRec.java b/src/jogl/classes/com/sun/opengl/util/gl2/BitmapCharRec.java deleted file mode 100644 index 9738be60a..000000000 --- a/src/jogl/classes/com/sun/opengl/util/gl2/BitmapCharRec.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.gl2; - -/* Copyright (c) Mark J. Kilgard, 1994, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -class BitmapCharRec { - public int width; - public int height; - public float xorig; - public float yorig; - public float advance; - public byte[] bitmap; - - public BitmapCharRec(int width, - int height, - float xorig, - float yorig, - float advance, - byte[] bitmap) { - this.width = width; - this.height = height; - this.xorig = xorig; - this.yorig = yorig; - this.advance = advance; - this.bitmap = bitmap; - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/gl2/BitmapFontRec.java b/src/jogl/classes/com/sun/opengl/util/gl2/BitmapFontRec.java deleted file mode 100644 index d110c262b..000000000 --- a/src/jogl/classes/com/sun/opengl/util/gl2/BitmapFontRec.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.gl2; - -/* Copyright (c) Mark J. Kilgard, 1994, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -class BitmapFontRec { - public String name; - public int num_chars; - public int first; - public BitmapCharRec[] ch; - - public BitmapFontRec(String name, - int num_chars, - int first, - BitmapCharRec[] ch) { - this.name = name; - this.num_chars = num_chars; - this.first = first; - this.ch = ch; - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/gl2/CoordRec.java b/src/jogl/classes/com/sun/opengl/util/gl2/CoordRec.java deleted file mode 100644 index e87354dbf..000000000 --- a/src/jogl/classes/com/sun/opengl/util/gl2/CoordRec.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.gl2; - -/* Copyright (c) Mark J. Kilgard, 1994, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -class CoordRec { - public float x; - public float y; - - public CoordRec(float x, float y) { - this.x = x; - this.y = y; - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/gl2/GLUT.java b/src/jogl/classes/com/sun/opengl/util/gl2/GLUT.java deleted file mode 100644 index 5a1f7d12d..000000000 --- a/src/jogl/classes/com/sun/opengl/util/gl2/GLUT.java +++ /dev/null @@ -1,1342 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.gl2; - -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import javax.media.opengl.glu.gl2.*; - -/** Subset of the routines provided by the GLUT interface. Note the - signatures of many of the methods are necessarily different than - the corresponding C version. A GLUT object must only be used from - one particular thread at a time. <P> - - Copyright (c) Mark J. Kilgard, 1994, 1997. <P> - - (c) Copyright 1993, Silicon Graphics, Inc. <P> - - ALL RIGHTS RESERVED <P> - - Permission to use, copy, modify, and distribute this software - for any purpose and without fee is hereby granted, provided - that the above copyright notice appear in all copies and that - both the copyright notice and this permission notice appear in - supporting documentation, and that the name of Silicon - Graphics, Inc. not be used in advertising or publicity - pertaining to distribution of the software without specific, - written prior permission. <P> - - THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU - "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR - OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF - MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO - EVENT SHALL SILICON GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE - ELSE FOR ANY DIRECT, SPECIAL, INCIDENTAL, INDIRECT OR - CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER, - INCLUDING WITHOUT LIMITATION, LOSS OF PROFIT, LOSS OF USE, - SAVINGS OR REVENUE, OR THE CLAIMS OF THIRD PARTIES, WHETHER OR - NOT SILICON GRAPHICS, INC. HAS BEEN ADVISED OF THE POSSIBILITY - OF SUCH LOSS, HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - ARISING OUT OF OR IN CONNECTION WITH THE POSSESSION, USE OR - PERFORMANCE OF THIS SOFTWARE. <P> - - US Government Users Restricted Rights <P> - - Use, duplication, or disclosure by the Government is subject to - restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - (c)(1)(ii) of the Rights in Technical Data and Computer - Software clause at DFARS 252.227-7013 and/or in similar or - successor clauses in the FAR or the DOD or NASA FAR - Supplement. Unpublished-- rights reserved under the copyright - laws of the United States. Contractor/manufacturer is Silicon - Graphics, Inc., 2011 N. Shoreline Blvd., Mountain View, CA - 94039-7311. <P> - - OpenGL(TM) is a trademark of Silicon Graphics, Inc. <P> -*/ - -public class GLUT { - public static final int STROKE_ROMAN = 0; - public static final int STROKE_MONO_ROMAN = 1; - public static final int BITMAP_9_BY_15 = 2; - public static final int BITMAP_8_BY_13 = 3; - public static final int BITMAP_TIMES_ROMAN_10 = 4; - public static final int BITMAP_TIMES_ROMAN_24 = 5; - public static final int BITMAP_HELVETICA_10 = 6; - public static final int BITMAP_HELVETICA_12 = 7; - public static final int BITMAP_HELVETICA_18 = 8; - - private GLUgl2 glu = new GLUgl2(); - - //---------------------------------------------------------------------- - // Shapes - // - - public void glutWireSphere(double radius, int slices, int stacks) { - quadObjInit(glu); - glu.gluQuadricDrawStyle(quadObj, GLU.GLU_LINE); - glu.gluQuadricNormals(quadObj, GLU.GLU_SMOOTH); - /* If we ever changed/used the texture or orientation state - of quadObj, we'd need to change it to the defaults here - with gluQuadricTexture and/or gluQuadricOrientation. */ - glu.gluSphere(quadObj, radius, slices, stacks); - } - - public void glutSolidSphere(double radius, int slices, int stacks) { - quadObjInit(glu); - glu.gluQuadricDrawStyle(quadObj, GLU.GLU_FILL); - glu.gluQuadricNormals(quadObj, GLU.GLU_SMOOTH); - /* If we ever changed/used the texture or orientation state - of quadObj, we'd need to change it to the defaults here - with gluQuadricTexture and/or gluQuadricOrientation. */ - glu.gluSphere(quadObj, radius, slices, stacks); - } - - public void glutWireCone(double base, double height, - int slices, int stacks) { - quadObjInit(glu); - glu.gluQuadricDrawStyle(quadObj, GLU.GLU_LINE); - glu.gluQuadricNormals(quadObj, GLU.GLU_SMOOTH); - /* If we ever changed/used the texture or orientation state - of quadObj, we'd need to change it to the defaults here - with gluQuadricTexture and/or gluQuadricOrientation. */ - glu.gluCylinder(quadObj, base, 0.0, height, slices, stacks); - } - - public void glutSolidCone(double base, double height, - int slices, int stacks) { - quadObjInit(glu); - glu.gluQuadricDrawStyle(quadObj, GLU.GLU_FILL); - glu.gluQuadricNormals(quadObj, GLU.GLU_SMOOTH); - /* If we ever changed/used the texture or orientation state - of quadObj, we'd need to change it to the defaults here - with gluQuadricTexture and/or gluQuadricOrientation. */ - glu.gluCylinder(quadObj, base, 0.0, height, slices, stacks); - } - - public void glutWireCylinder(double radius, double height, int slices, int stacks) { - quadObjInit(glu); - glu.gluQuadricDrawStyle(quadObj, GLU.GLU_LINE); - glu.gluQuadricNormals(quadObj, GLU.GLU_SMOOTH); - /* If we ever changed/used the texture or orientation state - of quadObj, we'd need to change it to the defaults here - with gluQuadricTexture and/or gluQuadricOrientation. */ - glu.gluCylinder(quadObj, radius, radius, height, slices, stacks); - } - - public void glutSolidCylinder(double radius, double height, int slices, int stacks) { - GL2 gl = GLUgl2.getCurrentGL2(); - - // Prepare table of points for drawing end caps - double [] x = new double[slices]; - double [] y = new double[slices]; - double angleDelta = Math.PI * 2 / slices; - double angle = 0; - for (int i = 0 ; i < slices ; i ++) { - angle = i * angleDelta; - x[i] = Math.cos(angle) * radius; - y[i] = Math.sin(angle) * radius; - } - - // Draw bottom cap - gl.glBegin(GL2.GL_TRIANGLE_FAN); - gl.glNormal3d(0,0,-1); - gl.glVertex3d(0,0,0); - for (int i = 0 ; i < slices ; i ++) { - gl.glVertex3d(x[i], y[i], 0); - } - gl.glVertex3d(x[0], y[0], 0); - gl.glEnd(); - - // Draw top cap - gl.glBegin(GL2.GL_TRIANGLE_FAN); - gl.glNormal3d(0,0,1); - gl.glVertex3d(0,0,height); - for (int i = 0 ; i < slices ; i ++) { - gl.glVertex3d(x[i], y[i], height); - } - gl.glVertex3d(x[0], y[0], height); - gl.glEnd(); - - // Draw walls - quadObjInit(glu); - glu.gluQuadricDrawStyle(quadObj, GLU.GLU_FILL); - glu.gluQuadricNormals(quadObj, GLU.GLU_SMOOTH); - /* If we ever changed/used the texture or orientation state - of quadObj, we'd need to change it to the defaults here - with gluQuadricTexture and/or gluQuadricOrientation. */ - glu.gluCylinder(quadObj, radius, radius, height, slices, stacks); - } - - public void glutWireCube(float size) { - drawBox(GLUgl2.getCurrentGL2(), size, GL2.GL_LINE_LOOP); - } - - public void glutSolidCube(float size) { - drawBox(GLUgl2.getCurrentGL2(), size, GL2.GL_QUADS); - } - - public void glutWireTorus(double innerRadius, double outerRadius, - int nsides, int rings) { - GL2 gl = GLUgl2.getCurrentGL2(); - gl.glPushAttrib(GL2.GL_POLYGON_BIT); - gl.glPolygonMode(GL2.GL_FRONT_AND_BACK, GL2.GL_LINE); - doughnut(gl, innerRadius, outerRadius, nsides, rings); - gl.glPopAttrib(); - } - - public void glutSolidTorus(double innerRadius, double outerRadius, - int nsides, int rings) { - doughnut(GLUgl2.getCurrentGL2(), innerRadius, outerRadius, nsides, rings); - } - - public void glutWireDodecahedron() { - dodecahedron(GLUgl2.getCurrentGL2(), GL2.GL_LINE_LOOP); - } - - public void glutSolidDodecahedron() { - dodecahedron(GLUgl2.getCurrentGL2(), GL2.GL_TRIANGLE_FAN); - } - - public void glutWireOctahedron() { - octahedron(GLUgl2.getCurrentGL2(), GL2.GL_LINE_LOOP); - } - - public void glutSolidOctahedron() { - octahedron(GLUgl2.getCurrentGL2(), GL2.GL_TRIANGLES); - } - - public void glutWireIcosahedron() { - icosahedron(GLUgl2.getCurrentGL2(), GL2.GL_LINE_LOOP); - } - - public void glutSolidIcosahedron() { - icosahedron(GLUgl2.getCurrentGL2(), GL2.GL_TRIANGLES); - } - - public void glutWireTetrahedron() { - tetrahedron(GLUgl2.getCurrentGL2(), GL2.GL_LINE_LOOP); - } - - public void glutSolidTetrahedron() { - tetrahedron(GLUgl2.getCurrentGL2(), GL2.GL_TRIANGLES); - } - -/** - * Renders the teapot as a solid shape of the specified size. The teapot is - * created in a way that replicates the C GLUT implementation. - * - * @param scale - * the factor by which to scale the teapot - */ - public void glutSolidTeapot(double scale) { - glutSolidTeapot(scale, true); - } - - /** - * Renders the teapot as a solid shape of the specified size. The teapot can - * either be created in a way that is backward-compatible with the standard - * C glut library (i.e. broken), or in a more pleasing way (i.e. with - * surfaces whose front-faces point outwards and standing on the z=0 plane, - * instead of the y=-1 plane). Both surface normals and texture coordinates - * for the teapot are generated. The teapot is generated with OpenGL - * evaluators. - * - * @param scale - * the factor by which to scale the teapot - * @param cStyle - * whether to create the teapot in exactly the same way as in the C - * implementation of GLUT - */ - public void glutSolidTeapot(double scale, boolean cStyle) { - teapot(GLUgl2.getCurrentGL2(), 14, scale, GL2.GL_FILL, cStyle); - } - - /** - * Renders the teapot as a wireframe shape of the specified size. The teapot - * is created in a way that replicates the C GLUT implementation. - * - * @param scale - * the factor by which to scale the teapot - */ - public void glutWireTeapot(double scale) { - glutWireTeapot(scale, true); - } - - /** - * Renders the teapot as a wireframe shape of the specified size. The teapot - * can either be created in a way that is backward-compatible with the - * standard C glut library (i.e. broken), or in a more pleasing way (i.e. - * with surfaces whose front-faces point outwards and standing on the z=0 - * plane, instead of the y=-1 plane). Both surface normals and texture - * coordinates for the teapot are generated. The teapot is generated with - * OpenGL evaluators. - * - * @param scale - * the factor by which to scale the teapot - * @param cStyle - * whether to create the teapot in exactly the same way as in the C - * implementation of GLUT - */ - public void glutWireTeapot(double scale, boolean cStyle) { - teapot(GLUgl2.getCurrentGL2(), 10, scale, GL2.GL_LINE, cStyle); - } - - //---------------------------------------------------------------------- - // Fonts - // - - public void glutBitmapCharacter(int font, char character) { - GL2 gl = GLUgl2.getCurrentGL2(); - int[] swapbytes = new int[1]; - int[] lsbfirst = new int[1]; - int[] rowlength = new int[1]; - int[] skiprows = new int[1]; - int[] skippixels = new int[1]; - int[] alignment = new int[1]; - beginBitmap(gl, - swapbytes, - lsbfirst, - rowlength, - skiprows, - skippixels, - alignment); - bitmapCharacterImpl(gl, font, character); - endBitmap(gl, - swapbytes, - lsbfirst, - rowlength, - skiprows, - skippixels, - alignment); - } - - public void glutBitmapString (int font, String string) { - GL2 gl = GLUgl2.getCurrentGL2(); - int[] swapbytes = new int[1]; - int[] lsbfirst = new int[1]; - int[] rowlength = new int[1]; - int[] skiprows = new int[1]; - int[] skippixels = new int[1]; - int[] alignment = new int[1]; - beginBitmap(gl, - swapbytes, - lsbfirst, - rowlength, - skiprows, - skippixels, - alignment); - int len = string.length(); - for (int i = 0; i < len; i++) { - bitmapCharacterImpl(gl, font, string.charAt(i)); - } - endBitmap(gl, - swapbytes, - lsbfirst, - rowlength, - skiprows, - skippixels, - alignment); - } - - public int glutBitmapWidth (int font, char character) { - BitmapFontRec fontinfo = getBitmapFont(font); - int c = character & 0xFFFF; - if (c < fontinfo.first || c >= fontinfo.first + fontinfo.num_chars) - return 0; - BitmapCharRec ch = fontinfo.ch[c - fontinfo.first]; - if (ch != null) - return (int) ch.advance; - else - return 0; - } - - public void glutStrokeCharacter(int font, char character) { - GL2 gl = GLUgl2.getCurrentGL2(); - StrokeFontRec fontinfo = getStrokeFont(font); - int c = character & 0xFFFF; - if (c < 0 || c >= fontinfo.num_chars) - return; - StrokeCharRec ch = fontinfo.ch[c]; - if (ch != null) { - for (int i = 0; i < ch.num_strokes; i++) { - StrokeRec stroke = ch.stroke[i]; - gl.glBegin(GL2.GL_LINE_STRIP); - for (int j = 0; j < stroke.num_coords; j++) { - CoordRec coord = stroke.coord[j]; - gl.glVertex2f(coord.x, coord.y); - } - gl.glEnd(); - } - gl.glTranslatef(ch.right, 0.0f, 0.0f); - } - } - - public void glutStrokeString(int font, String string) { - GL2 gl = GLUgl2.getCurrentGL2(); - StrokeFontRec fontinfo = getStrokeFont(font); - int len = string.length(); - for (int pos = 0; pos < len; pos++) { - int c = string.charAt(pos) & 0xFFFF; - if (c < 0 || c >= fontinfo.num_chars) - continue; - StrokeCharRec ch = fontinfo.ch[c]; - if (ch != null) { - for (int i = 0; i < ch.num_strokes; i++) { - StrokeRec stroke = ch.stroke[i]; - gl.glBegin(GL2.GL_LINE_STRIP); - for (int j = 0; j < stroke.num_coords; j++) { - CoordRec coord = stroke.coord[j]; - gl.glVertex2f(coord.x, coord.y); - } - gl.glEnd(); - } - gl.glTranslatef(ch.right, 0.0f, 0.0f); - } - } - } - - public int glutStrokeWidth (int font, char character) { - return (int) glutStrokeWidthf(font, character); - } - - public float glutStrokeWidthf (int font, char character) { - StrokeFontRec fontinfo = getStrokeFont(font); - int c = character & 0xFFFF; - if (c < 0 || c >= fontinfo.num_chars) - return 0; - StrokeCharRec ch = fontinfo.ch[c]; - if (ch != null) - return ch.right; - else - return 0; - } - - public int glutBitmapLength (int font, String string) { - BitmapFontRec fontinfo = getBitmapFont(font); - int length = 0; - int len = string.length(); - for (int pos = 0; pos < len; pos++) { - int c = string.charAt(pos) & 0xFFFF; - if (c >= fontinfo.first && c < fontinfo.first + fontinfo.num_chars) { - BitmapCharRec ch = fontinfo.ch[c - fontinfo.first]; - if (ch != null) - length += ch.advance; - } - } - return length; - } - - public int glutStrokeLength (int font, String string) { - return (int) glutStrokeLengthf(font, string); - } - - public float glutStrokeLengthf (int font, String string) { - StrokeFontRec fontinfo = getStrokeFont(font); - float length = 0; - int len = string.length(); - for (int i = 0; i < len; i++) { - char c = string.charAt(i); - if (c >= 0 && c < fontinfo.num_chars) { - StrokeCharRec ch = fontinfo.ch[c]; - if (ch != null) - length += ch.right; - } - } - return length; - } - - /** - This function draws a wireframe dodecahedron whose - facets are rhombic and - whose vertices are at unit radius. - No facet lies normal to any coordinate axes. - The polyhedron is centered at the origin. - */ - public void glutWireRhombicDodecahedron() { - GL2 gl = GLUgl2.getCurrentGL2(); - for( int i = 0; i < 12; i++ ) { - gl.glBegin( GL2.GL_LINE_LOOP ); - gl.glNormal3dv( rdod_n[ i ],0 ); - gl.glVertex3dv( rdod_r[ rdod_v[ i ][ 0 ] ],0 ); - gl.glVertex3dv( rdod_r[ rdod_v[ i ][ 1 ] ],0 ); - gl.glVertex3dv( rdod_r[ rdod_v[ i ][ 2 ] ],0 ); - gl.glVertex3dv( rdod_r[ rdod_v[ i ][ 3 ] ],0 ); - gl.glEnd( ); - } - } - - /** - This function draws a solid-shaded dodecahedron - whose facets are rhombic and - whose vertices are at unit radius. - No facet lies normal to any coordinate axes. - The polyhedron is centered at the origin. - */ - public void glutSolidRhombicDodecahedron() { - GL2 gl = GLUgl2.getCurrentGL2(); - gl.glBegin( GL2.GL_QUADS ); - for( int i = 0; i < 12; i++ ) { - gl.glNormal3dv( rdod_n[ i ],0 ); - gl.glVertex3dv( rdod_r[ rdod_v[ i ][ 0 ] ],0 ); - gl.glVertex3dv( rdod_r[ rdod_v[ i ][ 1 ] ],0 ); - gl.glVertex3dv( rdod_r[ rdod_v[ i ][ 2 ] ],0 ); - gl.glVertex3dv( rdod_r[ rdod_v[ i ][ 3 ] ],0 ); - } - gl.glEnd( ); - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - //---------------------------------------------------------------------- - // Shape implementation - // - - private GLUquadric quadObj; - private void quadObjInit(GLUgl2 glu) { - if (quadObj == null) { - quadObj = glu.gluNewQuadric(); - } - if (quadObj == null) { - throw new GLException("Out of memory"); - } - } - - private static void doughnut(GL2 gl, double r, double R, int nsides, int rings) { - int i, j; - float theta, phi, theta1; - float cosTheta, sinTheta; - float cosTheta1, sinTheta1; - float ringDelta, sideDelta; - - ringDelta = (float) (2.0 * Math.PI / rings); - sideDelta = (float) (2.0 * Math.PI / nsides); - - theta = 0.0f; - cosTheta = 1.0f; - sinTheta = 0.0f; - for (i = rings - 1; i >= 0; i--) { - theta1 = theta + ringDelta; - cosTheta1 = (float) Math.cos(theta1); - sinTheta1 = (float) Math.sin(theta1); - gl.glBegin(GL2.GL_QUAD_STRIP); - phi = 0.0f; - for (j = nsides; j >= 0; j--) { - float cosPhi, sinPhi, dist; - - phi += sideDelta; - cosPhi = (float) Math.cos(phi); - sinPhi = (float) Math.sin(phi); - dist = (float) (R + r * cosPhi); - - gl.glNormal3f(cosTheta1 * cosPhi, -sinTheta1 * cosPhi, sinPhi); - gl.glVertex3f(cosTheta1 * dist, -sinTheta1 * dist, (float) r * sinPhi); - gl.glNormal3f(cosTheta * cosPhi, -sinTheta * cosPhi, sinPhi); - gl.glVertex3f(cosTheta * dist, -sinTheta * dist, (float) r * sinPhi); - } - gl.glEnd(); - theta = theta1; - cosTheta = cosTheta1; - sinTheta = sinTheta1; - } - } - - private static float[][] boxVertices; - private static final float[][] boxNormals = { - {-1.0f, 0.0f, 0.0f}, - {0.0f, 1.0f, 0.0f}, - {1.0f, 0.0f, 0.0f}, - {0.0f, -1.0f, 0.0f}, - {0.0f, 0.0f, 1.0f}, - {0.0f, 0.0f, -1.0f} - }; - private static final int[][] boxFaces = { - {0, 1, 2, 3}, - {3, 2, 6, 7}, - {7, 6, 5, 4}, - {4, 5, 1, 0}, - {5, 6, 2, 1}, - {7, 4, 0, 3} - }; - private void drawBox(GL2 gl, float size, int type) { - if (boxVertices == null) { - float[][] v = new float[8][]; - for (int i = 0; i < 8; i++) { - v[i] = new float[3]; - } - v[0][0] = v[1][0] = v[2][0] = v[3][0] = -0.5f; - v[4][0] = v[5][0] = v[6][0] = v[7][0] = 0.5f; - v[0][1] = v[1][1] = v[4][1] = v[5][1] = -0.5f; - v[2][1] = v[3][1] = v[6][1] = v[7][1] = 0.5f; - v[0][2] = v[3][2] = v[4][2] = v[7][2] = -0.5f; - v[1][2] = v[2][2] = v[5][2] = v[6][2] = 0.5f; - boxVertices = v; - } - float[][] v = boxVertices; - float[][] n = boxNormals; - int[][] faces = boxFaces; - for (int i = 5; i >= 0; i--) { - gl.glBegin(type); - gl.glNormal3fv(n[i], 0); - float[] vt = v[faces[i][0]]; - gl.glVertex3f(vt[0] * size, vt[1] * size, vt[2] * size); - vt = v[faces[i][1]]; - gl.glVertex3f(vt[0] * size, vt[1] * size, vt[2] * size); - vt = v[faces[i][2]]; - gl.glVertex3f(vt[0] * size, vt[1] * size, vt[2] * size); - vt = v[faces[i][3]]; - gl.glVertex3f(vt[0] * size, vt[1] * size, vt[2] * size); - gl.glEnd(); - } - } - - private float[][] dodec; - - private void initDodecahedron() { - dodec = new float[20][]; - for (int i = 0; i < dodec.length; i++) { - dodec[i] = new float[3]; - } - - float alpha, beta; - - alpha = (float) Math.sqrt(2.0f / (3.0f + Math.sqrt(5.0))); - beta = 1.0f + (float) Math.sqrt(6.0 / (3.0 + Math.sqrt(5.0)) - - 2.0 + 2.0 * Math.sqrt(2.0 / (3.0 + Math.sqrt(5.0)))); - dodec[0][0] = -alpha; dodec[0][1] = 0; dodec[0][2] = beta; - dodec[1][0] = alpha; dodec[1][1] = 0; dodec[1][2] = beta; - dodec[2][0] = -1; dodec[2][1] = -1; dodec[2][2] = -1; - dodec[3][0] = -1; dodec[3][1] = -1; dodec[3][2] = 1; - dodec[4][0] = -1; dodec[4][1] = 1; dodec[4][2] = -1; - dodec[5][0] = -1; dodec[5][1] = 1; dodec[5][2] = 1; - dodec[6][0] = 1; dodec[6][1] = -1; dodec[6][2] = -1; - dodec[7][0] = 1; dodec[7][1] = -1; dodec[7][2] = 1; - dodec[8][0] = 1; dodec[8][1] = 1; dodec[8][2] = -1; - dodec[9][0] = 1; dodec[9][1] = 1; dodec[9][2] = 1; - dodec[10][0] = beta; dodec[10][1] = alpha; dodec[10][2] = 0; - dodec[11][0] = beta; dodec[11][1] = -alpha; dodec[11][2] = 0; - dodec[12][0] = -beta; dodec[12][1] = alpha; dodec[12][2] = 0; - dodec[13][0] = -beta; dodec[13][1] = -alpha; dodec[13][2] = 0; - dodec[14][0] = -alpha; dodec[14][1] = 0; dodec[14][2] = -beta; - dodec[15][0] = alpha; dodec[15][1] = 0; dodec[15][2] = -beta; - dodec[16][0] = 0; dodec[16][1] = beta; dodec[16][2] = alpha; - dodec[17][0] = 0; dodec[17][1] = beta; dodec[17][2] = -alpha; - dodec[18][0] = 0; dodec[18][1] = -beta; dodec[18][2] = alpha; - dodec[19][0] = 0; dodec[19][1] = -beta; dodec[19][2] = -alpha; - } - - private static void diff3(float[] a, float[] b, float[] c) { - c[0] = a[0] - b[0]; - c[1] = a[1] - b[1]; - c[2] = a[2] - b[2]; - } - - private static void crossprod(float[] v1, float[] v2, float[] prod) { - float[] p = new float[3]; /* in case prod == v1 or v2 */ - - p[0] = v1[1] * v2[2] - v2[1] * v1[2]; - p[1] = v1[2] * v2[0] - v2[2] * v1[0]; - p[2] = v1[0] * v2[1] - v2[0] * v1[1]; - prod[0] = p[0]; - prod[1] = p[1]; - prod[2] = p[2]; - } - - private static void normalize(float[] v) { - float d; - - d = (float) Math.sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); - if (d == 0.0) { - v[0] = d = 1.0f; - } - d = 1 / d; - v[0] *= d; - v[1] *= d; - v[2] *= d; - } - - private void pentagon(GL2 gl, int a, int b, int c, int d, int e, int shadeType) { - float[] n0 = new float[3]; - float[] d1 = new float[3]; - float[] d2 = new float[3]; - - diff3(dodec[a], dodec[b], d1); - diff3(dodec[b], dodec[c], d2); - crossprod(d1, d2, n0); - normalize(n0); - - gl.glBegin(shadeType); - gl.glNormal3fv(n0, 0); - gl.glVertex3fv(dodec[a], 0); - gl.glVertex3fv(dodec[b], 0); - gl.glVertex3fv(dodec[c], 0); - gl.glVertex3fv(dodec[d], 0); - gl.glVertex3fv(dodec[e], 0); - gl.glEnd(); - } - - private void dodecahedron(GL2 gl, int type) { - if (dodec == null) { - initDodecahedron(); - } - pentagon(gl, 0, 1, 9, 16, 5, type); - pentagon(gl, 1, 0, 3, 18, 7, type); - pentagon(gl, 1, 7, 11, 10, 9, type); - pentagon(gl, 11, 7, 18, 19, 6, type); - pentagon(gl, 8, 17, 16, 9, 10, type); - pentagon(gl, 2, 14, 15, 6, 19, type); - pentagon(gl, 2, 13, 12, 4, 14, type); - pentagon(gl, 2, 19, 18, 3, 13, type); - pentagon(gl, 3, 0, 5, 12, 13, type); - pentagon(gl, 6, 15, 8, 10, 11, type); - pentagon(gl, 4, 17, 8, 15, 14, type); - pentagon(gl, 4, 12, 5, 16, 17, type); - } - - private static void recorditem(GL2 gl, float[] n1, float[] n2, float[] n3, int shadeType) { - float[] q0 = new float[3]; - float[] q1 = new float[3]; - - diff3(n1, n2, q0); - diff3(n2, n3, q1); - crossprod(q0, q1, q1); - normalize(q1); - - gl.glBegin(shadeType); - gl.glNormal3fv(q1, 0); - gl.glVertex3fv(n1, 0); - gl.glVertex3fv(n2, 0); - gl.glVertex3fv(n3, 0); - gl.glEnd(); - } - - private static void subdivide(GL2 gl, float[] v0, float[] v1, float[] v2, int shadeType) { - int depth; - float[] w0 = new float[3]; - float[] w1 = new float[3]; - float[] w2 = new float[3]; - float l; - int i, j, k, n; - - depth = 1; - for (i = 0; i < depth; i++) { - for (j = 0; i + j < depth; j++) { - k = depth - i - j; - for (n = 0; n < 3; n++) { - w0[n] = (i * v0[n] + j * v1[n] + k * v2[n]) / depth; - w1[n] = ((i + 1) * v0[n] + j * v1[n] + (k - 1) * v2[n]) - / depth; - w2[n] = (i * v0[n] + (j + 1) * v1[n] + (k - 1) * v2[n]) - / depth; - } - l = (float) Math.sqrt(w0[0] * w0[0] + w0[1] * w0[1] + w0[2] * w0[2]); - w0[0] /= l; - w0[1] /= l; - w0[2] /= l; - l = (float) Math.sqrt(w1[0] * w1[0] + w1[1] * w1[1] + w1[2] * w1[2]); - w1[0] /= l; - w1[1] /= l; - w1[2] /= l; - l = (float) Math.sqrt(w2[0] * w2[0] + w2[1] * w2[1] + w2[2] * w2[2]); - w2[0] /= l; - w2[1] /= l; - w2[2] /= l; - recorditem(gl, w1, w0, w2, shadeType); - } - } - } - - private static void drawtriangle(GL2 gl, int i, float[][] data, int[][] ndx, int shadeType) { - float[] x0 = data[ndx[i][0]]; - float[] x1 = data[ndx[i][1]]; - float[] x2 = data[ndx[i][2]]; - subdivide(gl, x0, x1, x2, shadeType); - } - - /* octahedron data: The octahedron produced is centered at the - origin and has radius 1.0 */ - private static final float[][] odata = - { - {1.0f, 0.0f, 0.0f}, - {-1.0f, 0.0f, 0.0f}, - {0.0f, 1.0f, 0.0f}, - {0.0f, -1.0f, 0.0f}, - {0.0f, 0.0f, 1.0f}, - {0.0f, 0.0f, -1.0f} - }; - - private static final int[][] ondex = - { - {0, 4, 2}, - {1, 2, 4}, - {0, 3, 4}, - {1, 4, 3}, - {0, 2, 5}, - {1, 5, 2}, - {0, 5, 3}, - {1, 3, 5} - }; - - private static void octahedron(GL2 gl, int shadeType) { - int i; - - for (i = 7; i >= 0; i--) { - drawtriangle(gl, i, odata, ondex, shadeType); - } - } - - /* icosahedron data: These numbers are rigged to make an - icosahedron of radius 1.0 */ - - private static final float X = .525731112119133606f; - private static final float Z = .850650808352039932f; - - private static final float[][] idata = - { - {-X, 0, Z}, - {X, 0, Z}, - {-X, 0, -Z}, - {X, 0, -Z}, - {0, Z, X}, - {0, Z, -X}, - {0, -Z, X}, - {0, -Z, -X}, - {Z, X, 0}, - {-Z, X, 0}, - {Z, -X, 0}, - {-Z, -X, 0} - }; - - private static final int[][] index = - { - {0, 4, 1}, - {0, 9, 4}, - {9, 5, 4}, - {4, 5, 8}, - {4, 8, 1}, - {8, 10, 1}, - {8, 3, 10}, - {5, 3, 8}, - {5, 2, 3}, - {2, 7, 3}, - {7, 10, 3}, - {7, 6, 10}, - {7, 11, 6}, - {11, 0, 6}, - {0, 1, 6}, - {6, 1, 10}, - {9, 0, 11}, - {9, 11, 2}, - {9, 2, 5}, - {7, 2, 11}, - }; - - private static void icosahedron(GL2 gl, int shadeType) { - int i; - - for (i = 19; i >= 0; i--) { - drawtriangle(gl, i, idata, index, shadeType); - } - } - - /* rhombic dodecahedron data: */ - - private static final double rdod_r[][] = - { - { 0.0, 0.0, 1.0 }, - { 0.707106781187, 0.000000000000, 0.5 }, - { 0.000000000000, 0.707106781187, 0.5 }, - { -0.707106781187, 0.000000000000, 0.5 }, - { 0.000000000000, -0.707106781187, 0.5 }, - { 0.707106781187, 0.707106781187, 0.0 }, - { -0.707106781187, 0.707106781187, 0.0 }, - { -0.707106781187, -0.707106781187, 0.0 }, - { 0.707106781187, -0.707106781187, 0.0 }, - { 0.707106781187, 0.000000000000, -0.5 }, - { 0.000000000000, 0.707106781187, -0.5 }, - { -0.707106781187, 0.000000000000, -0.5 }, - { 0.000000000000, -0.707106781187, -0.5 }, - { 0.0, 0.0, -1.0 } - }; - - private static final int rdod_v[][] = - { - { 0, 1, 5, 2 }, - { 0, 2, 6, 3 }, - { 0, 3, 7, 4 }, - { 0, 4, 8, 1 }, - { 5, 10, 6, 2 }, - { 6, 11, 7, 3 }, - { 7, 12, 8, 4 }, - { 8, 9, 5, 1 }, - { 5, 9, 13, 10 }, - { 6, 10, 13, 11 }, - { 7, 11, 13, 12 }, - { 8, 12, 13, 9 } - }; - - private static final double rdod_n[][] = - { - { 0.353553390594, 0.353553390594, 0.5 }, - { -0.353553390594, 0.353553390594, 0.5 }, - { -0.353553390594, -0.353553390594, 0.5 }, - { 0.353553390594, -0.353553390594, 0.5 }, - { 0.000000000000, 1.000000000000, 0.0 }, - { -1.000000000000, 0.000000000000, 0.0 }, - { 0.000000000000, -1.000000000000, 0.0 }, - { 1.000000000000, 0.000000000000, 0.0 }, - { 0.353553390594, 0.353553390594, -0.5 }, - { -0.353553390594, 0.353553390594, -0.5 }, - { -0.353553390594, -0.353553390594, -0.5 }, - { 0.353553390594, -0.353553390594, -0.5 } - }; - - /* tetrahedron data: */ - - private static final float T = 1.73205080756887729f; - - private static final float[][] tdata = - { - {T, T, T}, - {T, -T, -T}, - {-T, T, -T}, - {-T, -T, T} - }; - - private static final int[][] tndex = - { - {0, 1, 3}, - {2, 1, 0}, - {3, 2, 0}, - {1, 2, 3} - }; - - private static final void tetrahedron(GL2 gl, int shadeType) { - for (int i = 3; i >= 0; i--) - drawtriangle(gl, i, tdata, tndex, shadeType); - } - - // Teapot implementation (a modified port of glut_teapot.c) - // - // Rim, body, lid, and bottom data must be reflected in x and - // y; handle and spout data across the y axis only. - private static final int[][] teapotPatchData = { - /* rim */ - {102, 103, 104, 105, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, - /* body */ - {12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27}, - {24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40}, - /* lid */ - {96, 96, 96, 96, 97, 98, 99, 100, 101, 101, 101, 101, 0, 1, 2, 3,}, - {0, 1, 2, 3, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117}, - /* bottom */ - {118, 118, 118, 118, 124, 122, 119, 121, 123, 126, 125, 120, 40, 39, 38, 37}, - /* handle */ - {41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56}, - {53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 28, 65, 66, 67}, - /* spout */ - {68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83}, - {80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95} - }; - private static final float[][] teapotCPData = { - {0.2f, 0f, 2.7f}, - {0.2f, -0.112f, 2.7f}, - {0.112f, -0.2f, 2.7f}, - {0f, -0.2f, 2.7f}, - {1.3375f, 0f, 2.53125f}, - {1.3375f, -0.749f, 2.53125f}, - {0.749f, -1.3375f, 2.53125f}, - {0f, -1.3375f, 2.53125f}, - {1.4375f, 0f, 2.53125f}, - {1.4375f, -0.805f, 2.53125f}, - {0.805f, -1.4375f, 2.53125f}, - {0f, -1.4375f, 2.53125f}, - {1.5f, 0f, 2.4f}, - {1.5f, -0.84f, 2.4f}, - {0.84f, -1.5f, 2.4f}, - {0f, -1.5f, 2.4f}, - {1.75f, 0f, 1.875f}, - {1.75f, -0.98f, 1.875f}, - {0.98f, -1.75f, 1.875f}, - {0f, -1.75f, 1.875f}, - {2f, 0f, 1.35f}, - {2f, -1.12f, 1.35f}, - {1.12f, -2f, 1.35f}, - {0f, -2f, 1.35f}, - {2f, 0f, 0.9f}, - {2f, -1.12f, 0.9f}, - {1.12f, -2f, 0.9f}, - {0f, -2f, 0.9f}, - {-2f, 0f, 0.9f}, - {2f, 0f, 0.45f}, - {2f, -1.12f, 0.45f}, - {1.12f, -2f, 0.45f}, - {0f, -2f, 0.45f}, - {1.5f, 0f, 0.225f}, - {1.5f, -0.84f, 0.225f}, - {0.84f, -1.5f, 0.225f}, - {0f, -1.5f, 0.225f}, - {1.5f, 0f, 0.15f}, - {1.5f, -0.84f, 0.15f}, - {0.84f, -1.5f, 0.15f}, - {0f, -1.5f, 0.15f}, - {-1.6f, 0f, 2.025f}, - {-1.6f, -0.3f, 2.025f}, - {-1.5f, -0.3f, 2.25f}, - {-1.5f, 0f, 2.25f}, - {-2.3f, 0f, 2.025f}, - {-2.3f, -0.3f, 2.025f}, - {-2.5f, -0.3f, 2.25f}, - {-2.5f, 0f, 2.25f}, - {-2.7f, 0f, 2.025f}, - {-2.7f, -0.3f, 2.025f}, - {-3f, -0.3f, 2.25f}, - {-3f, 0f, 2.25f}, - {-2.7f, 0f, 1.8f}, - {-2.7f, -0.3f, 1.8f}, - {-3f, -0.3f, 1.8f}, - {-3f, 0f, 1.8f}, - {-2.7f, 0f, 1.575f}, - {-2.7f, -0.3f, 1.575f}, - {-3f, -0.3f, 1.35f}, - {-3f, 0f, 1.35f}, - {-2.5f, 0f, 1.125f}, - {-2.5f, -0.3f, 1.125f}, - {-2.65f, -0.3f, 0.9375f}, - {-2.65f, 0f, 0.9375f}, - {-2f, -0.3f, 0.9f}, - {-1.9f, -0.3f, 0.6f}, - {-1.9f, 0f, 0.6f}, - {1.7f, 0f, 1.425f}, - {1.7f, -0.66f, 1.425f}, - {1.7f, -0.66f, 0.6f}, - {1.7f, 0f, 0.6f}, - {2.6f, 0f, 1.425f}, - {2.6f, -0.66f, 1.425f}, - {3.1f, -0.66f, 0.825f}, - {3.1f, 0f, 0.825f}, - {2.3f, 0f, 2.1f}, - {2.3f, -0.25f, 2.1f}, - {2.4f, -0.25f, 2.025f}, - {2.4f, 0f, 2.025f}, - {2.7f, 0f, 2.4f}, - {2.7f, -0.25f, 2.4f}, - {3.3f, -0.25f, 2.4f}, - {3.3f, 0f, 2.4f}, - {2.8f, 0f, 2.475f}, - {2.8f, -0.25f, 2.475f}, - {3.525f, -0.25f, 2.49375f}, - {3.525f, 0f, 2.49375f}, - {2.9f, 0f, 2.475f}, - {2.9f, -0.15f, 2.475f}, - {3.45f, -0.15f, 2.5125f}, - {3.45f, 0f, 2.5125f}, - {2.8f, 0f, 2.4f}, - {2.8f, -0.15f, 2.4f}, - {3.2f, -0.15f, 2.4f}, - {3.2f, 0f, 2.4f}, - {0f, 0f, 3.15f}, - {0.8f, 0f, 3.15f}, - {0.8f, -0.45f, 3.15f}, - {0.45f, -0.8f, 3.15f}, - {0f, -0.8f, 3.15f}, - {0f, 0f, 2.85f}, - {1.4f, 0f, 2.4f}, - {1.4f, -0.784f, 2.4f}, - {0.784f, -1.4f, 2.4f}, - {0f, -1.4f, 2.4f}, - {0.4f, 0f, 2.55f}, - {0.4f, -0.224f, 2.55f}, - {0.224f, -0.4f, 2.55f}, - {0f, -0.4f, 2.55f}, - {1.3f, 0f, 2.55f}, - {1.3f, -0.728f, 2.55f}, - {0.728f, -1.3f, 2.55f}, - {0f, -1.3f, 2.55f}, - {1.3f, 0f, 2.4f}, - {1.3f, -0.728f, 2.4f}, - {0.728f, -1.3f, 2.4f}, - {0f, -1.3f, 2.4f}, - {0f, 0f, 0f}, - {1.425f, -0.798f, 0f}, - {1.5f, 0f, 0.075f}, - {1.425f, 0f, 0f}, - {0.798f, -1.425f, 0f}, - {0f, -1.5f, 0.075f}, - {0f, -1.425f, 0f}, - {1.5f, -0.84f, 0.075f}, - {0.84f, -1.5f, 0.075f} - }; - // Since GL2.glMap2f expects a packed array of floats, we must convert - // from a 3-dimensional array to a 1-dimensional array - private static final float[] teapotTex = { - 0, 0, 1, 0, 0, 1, 1, 1 - }; - - private static void teapot(GL2 gl, - int grid, - double scale, - int type, - boolean backCompatible) - { - // As mentioned above, GL2.glMap2f expects a packed array of floats - float[] p = new float[4*4*3]; - float[] q = new float[4*4*3]; - float[] r = new float[4*4*3]; - float[] s = new float[4*4*3]; - int i, j, k, l; - - gl.glPushAttrib(GL2.GL_ENABLE_BIT | GL2.GL_EVAL_BIT | GL2.GL_POLYGON_BIT); - gl.glEnable(GL2.GL_AUTO_NORMAL); - gl.glEnable(GL2.GL_NORMALIZE); - gl.glEnable(GL2.GL_MAP2_VERTEX_3); - gl.glEnable(GL2.GL_MAP2_TEXTURE_COORD_2); - gl.glPushMatrix(); - if (!backCompatible) { - // The time has come to have the teapot no longer be inside out - gl.glFrontFace(GL2.GL_CW); - gl.glScaled(0.5*scale, 0.5*scale, 0.5*scale); - } else { - // We want the teapot in it's backward compatible position and - // orientation - gl.glRotatef(270.0f, 1, 0, 0); - gl.glScalef((float)(0.5 * scale), - (float)(0.5 * scale), - (float)(0.5 * scale)); - gl.glTranslatef(0.0f, 0.0f, -1.5f); - } - for (i = 0; i < 10; i++) { - for (j = 0; j < 4; j++) { - for (k = 0; k < 4; k++) { - for (l = 0; l < 3; l++) { - p[(j*4+k)*3+l] = teapotCPData[teapotPatchData[i][j * 4 + k]][l]; - q[(j*4+k)*3+l] = - teapotCPData[teapotPatchData[i][j * 4 + (3 - k)]][l]; - if (l == 1) - q[(j*4+k)*3+l] *= -1.0; - if (i < 6) { - r[(j*4+k)*3+l] = - teapotCPData[teapotPatchData[i][j * 4 + (3 - k)]][l]; - if (l == 0) - r[(j*4+k)*3+l] *= -1.0; - s[(j*4+k)*3+l] = teapotCPData[teapotPatchData[i][j * 4 + k]][l]; - if (l == 0) - s[(j*4+k)*3+l] *= -1.0; - if (l == 1) - s[(j*4+k)*3+l] *= -1.0; - } - } - } - } - gl.glMap2f(GL2.GL_MAP2_TEXTURE_COORD_2, 0, 1, 2, 2, 0, 1, 4, 2, teapotTex, 0); - gl.glMap2f(GL2.GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, p, 0); - gl.glMapGrid2f(grid, 0.0f, 1.0f, grid, 0.0f, 1.0f); - evaluateTeapotMesh(gl, grid, type, i, !backCompatible); - gl.glMap2f(GL2.GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, q, 0); - evaluateTeapotMesh(gl, grid, type, i, !backCompatible); - if (i < 6) { - gl.glMap2f(GL2.GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, r, 0); - evaluateTeapotMesh(gl, grid, type, i, !backCompatible); - gl.glMap2f(GL2.GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, s, 0); - evaluateTeapotMesh(gl, grid, type, i, !backCompatible); - } - } - gl.glPopMatrix(); - gl.glPopAttrib(); - } - - private static void evaluateTeapotMesh(GL2 gl, - int grid, - int type, - int partNum, - boolean repairSingularities) - { - if (repairSingularities && (partNum == 5 || partNum == 3)) { - // Instead of using evaluators that give bad results at singularities, - // evaluate by hand - gl.glPolygonMode(GL2.GL_FRONT_AND_BACK, type); - for (int nv = 0; nv < grid; nv++) { - if (nv == 0) { - // Draw a small triangle-fan to fill the hole - gl.glDisable(GL2.GL_AUTO_NORMAL); - gl.glNormal3f(0, 0, partNum == 3 ? 1 : -1); - gl.glBegin(GL2.GL_TRIANGLE_FAN); - { - gl.glEvalCoord2f(0, 0); - // Note that we draw in clock-wise order to match the evaluator - // method - for (int nu = 0; nu <= grid; nu++) - { - gl.glEvalCoord2f(nu / (float)grid, (1f / grid) / (float)grid); - } - } - gl.glEnd(); - gl.glEnable(GL2.GL_AUTO_NORMAL); - } - // Draw the rest of the piece as an evaluated quad-strip - gl.glBegin(GL2.GL_QUAD_STRIP); - { - // Note that we draw in clock-wise order to match the evaluator method - for (int nu = grid; nu >= 0; nu--) { - gl.glEvalCoord2f(nu / (float)grid, (nv + 1) / (float)grid); - gl.glEvalCoord2f(nu / (float)grid, Math.max(nv, 1f / grid) - / (float)grid); - } - } - gl.glEnd(); - } - } else { - gl.glEvalMesh2(type, 0, grid, 0, grid); - } - } - - //---------------------------------------------------------------------- - // Font implementation - // - - private static void bitmapCharacterImpl(GL2 gl, int font, char cin) { - BitmapFontRec fontinfo = getBitmapFont(font); - int c = cin & 0xFFFF; - if (c < fontinfo.first || - c >= fontinfo.first + fontinfo.num_chars) - return; - BitmapCharRec ch = fontinfo.ch[c - fontinfo.first]; - if (ch != null) { - gl.glBitmap(ch.width, ch.height, ch.xorig, ch.yorig, - ch.advance, 0, ch.bitmap, 0); - } - } - - private static final BitmapFontRec[] bitmapFonts = new BitmapFontRec[9]; - private static final StrokeFontRec[] strokeFonts = new StrokeFontRec[9]; - - private static BitmapFontRec getBitmapFont(int font) { - BitmapFontRec rec = bitmapFonts[font]; - if (rec == null) { - switch (font) { - case BITMAP_9_BY_15: - rec = GLUTBitmap9x15.glutBitmap9By15; - break; - case BITMAP_8_BY_13: - rec = GLUTBitmap8x13.glutBitmap8By13; - break; - case BITMAP_TIMES_ROMAN_10: - rec = GLUTBitmapTimesRoman10.glutBitmapTimesRoman10; - break; - case BITMAP_TIMES_ROMAN_24: - rec = GLUTBitmapTimesRoman24.glutBitmapTimesRoman24; - break; - case BITMAP_HELVETICA_10: - rec = GLUTBitmapHelvetica10.glutBitmapHelvetica10; - break; - case BITMAP_HELVETICA_12: - rec = GLUTBitmapHelvetica12.glutBitmapHelvetica12; - break; - case BITMAP_HELVETICA_18: - rec = GLUTBitmapHelvetica18.glutBitmapHelvetica18; - break; - default: - throw new GLException("Unknown bitmap font number " + font); - } - bitmapFonts[font] = rec; - } - return rec; - } - - private static StrokeFontRec getStrokeFont(int font) { - StrokeFontRec rec = strokeFonts[font]; - if (rec == null) { - switch (font) { - case STROKE_ROMAN: - rec = GLUTStrokeRoman.glutStrokeRoman; - break; - case STROKE_MONO_ROMAN: - rec = GLUTStrokeMonoRoman.glutStrokeMonoRoman; - break; - default: - throw new GLException("Unknown stroke font number " + font); - } - } - return rec; - } - - private static void beginBitmap(GL2 gl, - int[] swapbytes, - int[] lsbfirst, - int[] rowlength, - int[] skiprows, - int[] skippixels, - int[] alignment) { - gl.glGetIntegerv(GL2.GL_UNPACK_SWAP_BYTES, swapbytes, 0); - gl.glGetIntegerv(GL2.GL_UNPACK_LSB_FIRST, lsbfirst, 0); - gl.glGetIntegerv(GL2.GL_UNPACK_ROW_LENGTH, rowlength, 0); - gl.glGetIntegerv(GL2.GL_UNPACK_SKIP_ROWS, skiprows, 0); - gl.glGetIntegerv(GL2.GL_UNPACK_SKIP_PIXELS, skippixels, 0); - gl.glGetIntegerv(GL2.GL_UNPACK_ALIGNMENT, alignment, 0); - /* Little endian machines (DEC Alpha for example) could - benefit from setting GL_UNPACK_LSB_FIRST to GL_TRUE - instead of GL_FALSE, but this would require changing the - generated bitmaps too. */ - gl.glPixelStorei(GL2.GL_UNPACK_SWAP_BYTES, GL2.GL_FALSE); - gl.glPixelStorei(GL2.GL_UNPACK_LSB_FIRST, GL2.GL_FALSE); - gl.glPixelStorei(GL2.GL_UNPACK_ROW_LENGTH, 0); - gl.glPixelStorei(GL2.GL_UNPACK_SKIP_ROWS, 0); - gl.glPixelStorei(GL2.GL_UNPACK_SKIP_PIXELS, 0); - gl.glPixelStorei(GL2.GL_UNPACK_ALIGNMENT, 1); - } - - private static void endBitmap(GL2 gl, - int[] swapbytes, - int[] lsbfirst, - int[] rowlength, - int[] skiprows, - int[] skippixels, - int[] alignment) { - /* Restore saved modes. */ - gl.glPixelStorei(GL2.GL_UNPACK_SWAP_BYTES, swapbytes[0]); - gl.glPixelStorei(GL2.GL_UNPACK_LSB_FIRST, lsbfirst[0]); - gl.glPixelStorei(GL2.GL_UNPACK_ROW_LENGTH, rowlength[0]); - gl.glPixelStorei(GL2.GL_UNPACK_SKIP_ROWS, skiprows[0]); - gl.glPixelStorei(GL2.GL_UNPACK_SKIP_PIXELS, skippixels[0]); - gl.glPixelStorei(GL2.GL_UNPACK_ALIGNMENT, alignment[0]); - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/gl2/GLUTBitmap8x13.java b/src/jogl/classes/com/sun/opengl/util/gl2/GLUTBitmap8x13.java deleted file mode 100644 index b6e5c425a..000000000 --- a/src/jogl/classes/com/sun/opengl/util/gl2/GLUTBitmap8x13.java +++ /dev/null @@ -1,2078 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.gl2; - -class GLUTBitmap8x13 { - -/* GENERATED FILE -- DO NOT MODIFY */ - - -static final BitmapCharRec ch0 = new BitmapCharRec(0,0,0,0,8,null); - -static final BitmapCharRec ch32 = new BitmapCharRec(0,0,0,0,8,null); - -static final BitmapCharRec ch127 = new BitmapCharRec(0,0,0,0,8,null); - -static final BitmapCharRec ch160 = new BitmapCharRec(0,0,0,0,8,null); - -/* char: 0xff */ - -static final byte[] ch255data = { -(byte) 0x78,(byte) 0x84,(byte) 0x4,(byte) 0x74,(byte) 0x8c,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x0,(byte) 0x0,(byte) 0x48,(byte) 0x48, -}; - -static final BitmapCharRec ch255 = new BitmapCharRec(6,12,-1,2,8,ch255data); - -/* char: 0xfe */ - -static final byte[] ch254data = { -(byte) 0x80,(byte) 0x80,(byte) 0xb8,(byte) 0xc4,(byte) 0x84,(byte) 0x84,(byte) 0xc4,(byte) 0xb8,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch254 = new BitmapCharRec(6,10,-1,2,8,ch254data); - -/* char: 0xfd */ - -static final byte[] ch253data = { -(byte) 0x78,(byte) 0x84,(byte) 0x4,(byte) 0x74,(byte) 0x8c,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x0,(byte) 0x0,(byte) 0x20,(byte) 0x10, -}; - -static final BitmapCharRec ch253 = new BitmapCharRec(6,12,-1,2,8,ch253data); - -/* char: 0xfc */ - -static final byte[] ch252data = { -(byte) 0x74,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x0,(byte) 0x0,(byte) 0x48,(byte) 0x48, -}; - -static final BitmapCharRec ch252 = new BitmapCharRec(6,10,-1,0,8,ch252data); - -/* char: 0xfb */ - -static final byte[] ch251data = { -(byte) 0x74,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x0,(byte) 0x0,(byte) 0x48,(byte) 0x30, -}; - -static final BitmapCharRec ch251 = new BitmapCharRec(6,10,-1,0,8,ch251data); - -/* char: 0xfa */ - -static final byte[] ch250data = { -(byte) 0x74,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x0,(byte) 0x0,(byte) 0x20,(byte) 0x10, -}; - -static final BitmapCharRec ch250 = new BitmapCharRec(6,10,-1,0,8,ch250data); - -/* char: 0xf9 */ - -static final byte[] ch249data = { -(byte) 0x74,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x0,(byte) 0x0,(byte) 0x10,(byte) 0x20, -}; - -static final BitmapCharRec ch249 = new BitmapCharRec(6,10,-1,0,8,ch249data); - -/* char: 0xf8 */ - -static final byte[] ch248data = { -(byte) 0x80,(byte) 0x78,(byte) 0xc4,(byte) 0xa4,(byte) 0x94,(byte) 0x8c,(byte) 0x78,(byte) 0x4, -}; - -static final BitmapCharRec ch248 = new BitmapCharRec(6,8,-1,1,8,ch248data); - -/* char: 0xf7 */ - -static final byte[] ch247data = { -(byte) 0x20,(byte) 0x20,(byte) 0x0,(byte) 0xf8,(byte) 0x0,(byte) 0x20,(byte) 0x20, -}; - -static final BitmapCharRec ch247 = new BitmapCharRec(5,7,-1,-1,8,ch247data); - -/* char: 0xf6 */ - -static final byte[] ch246data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x78,(byte) 0x0,(byte) 0x0,(byte) 0x48,(byte) 0x48, -}; - -static final BitmapCharRec ch246 = new BitmapCharRec(6,10,-1,0,8,ch246data); - -/* char: 0xf5 */ - -static final byte[] ch245data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x78,(byte) 0x0,(byte) 0x0,(byte) 0x50,(byte) 0x28, -}; - -static final BitmapCharRec ch245 = new BitmapCharRec(6,10,-1,0,8,ch245data); - -/* char: 0xf4 */ - -static final byte[] ch244data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x78,(byte) 0x0,(byte) 0x0,(byte) 0x48,(byte) 0x30, -}; - -static final BitmapCharRec ch244 = new BitmapCharRec(6,10,-1,0,8,ch244data); - -/* char: 0xf3 */ - -static final byte[] ch243data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x78,(byte) 0x0,(byte) 0x0,(byte) 0x20,(byte) 0x10, -}; - -static final BitmapCharRec ch243 = new BitmapCharRec(6,10,-1,0,8,ch243data); - -/* char: 0xf2 */ - -static final byte[] ch242data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x78,(byte) 0x0,(byte) 0x0,(byte) 0x10,(byte) 0x20, -}; - -static final BitmapCharRec ch242 = new BitmapCharRec(6,10,-1,0,8,ch242data); - -/* char: 0xf1 */ - -static final byte[] ch241data = { -(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0xc4,(byte) 0xb8,(byte) 0x0,(byte) 0x0,(byte) 0x50,(byte) 0x28, -}; - -static final BitmapCharRec ch241 = new BitmapCharRec(6,10,-1,0,8,ch241data); - -/* char: 0xf0 */ - -static final byte[] ch240data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x78,(byte) 0x8,(byte) 0x50,(byte) 0x30,(byte) 0x48, -}; - -static final BitmapCharRec ch240 = new BitmapCharRec(6,10,-1,0,8,ch240data); - -/* char: 0xef */ - -static final byte[] ch239data = { -(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x60,(byte) 0x0,(byte) 0x0,(byte) 0x50,(byte) 0x50, -}; - -static final BitmapCharRec ch239 = new BitmapCharRec(5,10,-1,0,8,ch239data); - -/* char: 0xee */ - -static final byte[] ch238data = { -(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x60,(byte) 0x0,(byte) 0x0,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch238 = new BitmapCharRec(5,10,-1,0,8,ch238data); - -/* char: 0xed */ - -static final byte[] ch237data = { -(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x60,(byte) 0x0,(byte) 0x0,(byte) 0x40,(byte) 0x20, -}; - -static final BitmapCharRec ch237 = new BitmapCharRec(5,10,-1,0,8,ch237data); - -/* char: 0xec */ - -static final byte[] ch236data = { -(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x60,(byte) 0x0,(byte) 0x0,(byte) 0x20,(byte) 0x40, -}; - -static final BitmapCharRec ch236 = new BitmapCharRec(5,10,-1,0,8,ch236data); - -/* char: 0xeb */ - -static final byte[] ch235data = { -(byte) 0x78,(byte) 0x84,(byte) 0x80,(byte) 0xfc,(byte) 0x84,(byte) 0x78,(byte) 0x0,(byte) 0x0,(byte) 0x48,(byte) 0x48, -}; - -static final BitmapCharRec ch235 = new BitmapCharRec(6,10,-1,0,8,ch235data); - -/* char: 0xea */ - -static final byte[] ch234data = { -(byte) 0x78,(byte) 0x84,(byte) 0x80,(byte) 0xfc,(byte) 0x84,(byte) 0x78,(byte) 0x0,(byte) 0x0,(byte) 0x48,(byte) 0x30, -}; - -static final BitmapCharRec ch234 = new BitmapCharRec(6,10,-1,0,8,ch234data); - -/* char: 0xe9 */ - -static final byte[] ch233data = { -(byte) 0x78,(byte) 0x84,(byte) 0x80,(byte) 0xfc,(byte) 0x84,(byte) 0x78,(byte) 0x0,(byte) 0x0,(byte) 0x20,(byte) 0x10, -}; - -static final BitmapCharRec ch233 = new BitmapCharRec(6,10,-1,0,8,ch233data); - -/* char: 0xe8 */ - -static final byte[] ch232data = { -(byte) 0x78,(byte) 0x84,(byte) 0x80,(byte) 0xfc,(byte) 0x84,(byte) 0x78,(byte) 0x0,(byte) 0x0,(byte) 0x10,(byte) 0x20, -}; - -static final BitmapCharRec ch232 = new BitmapCharRec(6,10,-1,0,8,ch232data); - -/* char: 0xe7 */ - -static final byte[] ch231data = { -(byte) 0x20,(byte) 0x10,(byte) 0x78,(byte) 0x84,(byte) 0x80,(byte) 0x80,(byte) 0x84,(byte) 0x78, -}; - -static final BitmapCharRec ch231 = new BitmapCharRec(6,8,-1,2,8,ch231data); - -/* char: 0xe6 */ - -static final byte[] ch230data = { -(byte) 0x6c,(byte) 0x92,(byte) 0x90,(byte) 0x7c,(byte) 0x12,(byte) 0x6c, -}; - -static final BitmapCharRec ch230 = new BitmapCharRec(7,6,0,0,8,ch230data); - -/* char: 0xe5 */ - -static final byte[] ch229data = { -(byte) 0x74,(byte) 0x8c,(byte) 0x84,(byte) 0x7c,(byte) 0x4,(byte) 0x78,(byte) 0x0,(byte) 0x30,(byte) 0x48,(byte) 0x30, -}; - -static final BitmapCharRec ch229 = new BitmapCharRec(6,10,-1,0,8,ch229data); - -/* char: 0xe4 */ - -static final byte[] ch228data = { -(byte) 0x74,(byte) 0x8c,(byte) 0x84,(byte) 0x7c,(byte) 0x4,(byte) 0x78,(byte) 0x0,(byte) 0x0,(byte) 0x48,(byte) 0x48, -}; - -static final BitmapCharRec ch228 = new BitmapCharRec(6,10,-1,0,8,ch228data); - -/* char: 0xe3 */ - -static final byte[] ch227data = { -(byte) 0x74,(byte) 0x8c,(byte) 0x84,(byte) 0x7c,(byte) 0x4,(byte) 0x78,(byte) 0x0,(byte) 0x0,(byte) 0x50,(byte) 0x28, -}; - -static final BitmapCharRec ch227 = new BitmapCharRec(6,10,-1,0,8,ch227data); - -/* char: 0xe2 */ - -static final byte[] ch226data = { -(byte) 0x74,(byte) 0x8c,(byte) 0x84,(byte) 0x7c,(byte) 0x4,(byte) 0x78,(byte) 0x0,(byte) 0x0,(byte) 0x48,(byte) 0x30, -}; - -static final BitmapCharRec ch226 = new BitmapCharRec(6,10,-1,0,8,ch226data); - -/* char: 0xe1 */ - -static final byte[] ch225data = { -(byte) 0x74,(byte) 0x8c,(byte) 0x84,(byte) 0x7c,(byte) 0x4,(byte) 0x78,(byte) 0x0,(byte) 0x0,(byte) 0x20,(byte) 0x10, -}; - -static final BitmapCharRec ch225 = new BitmapCharRec(6,10,-1,0,8,ch225data); - -/* char: 0xe0 */ - -static final byte[] ch224data = { -(byte) 0x74,(byte) 0x8c,(byte) 0x84,(byte) 0x7c,(byte) 0x4,(byte) 0x78,(byte) 0x0,(byte) 0x0,(byte) 0x10,(byte) 0x20, -}; - -static final BitmapCharRec ch224 = new BitmapCharRec(6,10,-1,0,8,ch224data); - -/* char: 0xdf */ - -static final byte[] ch223data = { -(byte) 0x80,(byte) 0xb8,(byte) 0xc4,(byte) 0x84,(byte) 0x84,(byte) 0xf8,(byte) 0x84,(byte) 0x84,(byte) 0x78, -}; - -static final BitmapCharRec ch223 = new BitmapCharRec(6,9,-1,1,8,ch223data); - -/* char: 0xde */ - -static final byte[] ch222data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xf8,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0xf8,(byte) 0x80, -}; - -static final BitmapCharRec ch222 = new BitmapCharRec(6,9,-1,0,8,ch222data); - -/* char: 0xdd */ - -static final byte[] ch221data = { -(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x50,(byte) 0x88,(byte) 0x88,(byte) 0x0,(byte) 0x20,(byte) 0x10, -}; - -static final BitmapCharRec ch221 = new BitmapCharRec(5,10,-1,0,8,ch221data); - -/* char: 0xdc */ - -static final byte[] ch220data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x0,(byte) 0x48,(byte) 0x48, -}; - -static final BitmapCharRec ch220 = new BitmapCharRec(6,10,-1,0,8,ch220data); - -/* char: 0xdb */ - -static final byte[] ch219data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x0,(byte) 0x48,(byte) 0x30, -}; - -static final BitmapCharRec ch219 = new BitmapCharRec(6,10,-1,0,8,ch219data); - -/* char: 0xda */ - -static final byte[] ch218data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x0,(byte) 0x20,(byte) 0x10, -}; - -static final BitmapCharRec ch218 = new BitmapCharRec(6,10,-1,0,8,ch218data); - -/* char: 0xd9 */ - -static final byte[] ch217data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x0,(byte) 0x10,(byte) 0x20, -}; - -static final BitmapCharRec ch217 = new BitmapCharRec(6,10,-1,0,8,ch217data); - -/* char: 0xd8 */ - -static final byte[] ch216data = { -(byte) 0x80,(byte) 0x78,(byte) 0xc4,(byte) 0xa4,(byte) 0xa4,(byte) 0xa4,(byte) 0x94,(byte) 0x94,(byte) 0x8c,(byte) 0x78,(byte) 0x4, -}; - -static final BitmapCharRec ch216 = new BitmapCharRec(6,11,-1,1,8,ch216data); - -/* char: 0xd7 */ - -static final byte[] ch215data = { -(byte) 0x84,(byte) 0x48,(byte) 0x30,(byte) 0x30,(byte) 0x48,(byte) 0x84, -}; - -static final BitmapCharRec ch215 = new BitmapCharRec(6,6,-1,-1,8,ch215data); - -/* char: 0xd6 */ - -static final byte[] ch214data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x0,(byte) 0x28,(byte) 0x28, -}; - -static final BitmapCharRec ch214 = new BitmapCharRec(7,10,0,0,8,ch214data); - -/* char: 0xd5 */ - -static final byte[] ch213data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x0,(byte) 0x28,(byte) 0x14, -}; - -static final BitmapCharRec ch213 = new BitmapCharRec(7,10,0,0,8,ch213data); - -/* char: 0xd4 */ - -static final byte[] ch212data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x0,(byte) 0x24,(byte) 0x18, -}; - -static final BitmapCharRec ch212 = new BitmapCharRec(7,10,0,0,8,ch212data); - -/* char: 0xd3 */ - -static final byte[] ch211data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x0,(byte) 0x10,(byte) 0x8, -}; - -static final BitmapCharRec ch211 = new BitmapCharRec(7,10,0,0,8,ch211data); - -/* char: 0xd2 */ - -static final byte[] ch210data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x0,(byte) 0x8,(byte) 0x10, -}; - -static final BitmapCharRec ch210 = new BitmapCharRec(7,10,0,0,8,ch210data); - -/* char: 0xd1 */ - -static final byte[] ch209data = { -(byte) 0x82,(byte) 0x86,(byte) 0x8a,(byte) 0x92,(byte) 0xa2,(byte) 0xc2,(byte) 0x82,(byte) 0x0,(byte) 0x28,(byte) 0x14, -}; - -static final BitmapCharRec ch209 = new BitmapCharRec(7,10,0,0,8,ch209data); - -/* char: 0xd0 */ - -static final byte[] ch208data = { -(byte) 0xfc,(byte) 0x42,(byte) 0x42,(byte) 0x42,(byte) 0xe2,(byte) 0x42,(byte) 0x42,(byte) 0x42,(byte) 0xfc, -}; - -static final BitmapCharRec ch208 = new BitmapCharRec(7,9,0,0,8,ch208data); - -/* char: 0xcf */ - -static final byte[] ch207data = { -(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0xf8,(byte) 0x0,(byte) 0x50,(byte) 0x50, -}; - -static final BitmapCharRec ch207 = new BitmapCharRec(5,10,-1,0,8,ch207data); - -/* char: 0xce */ - -static final byte[] ch206data = { -(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0xf8,(byte) 0x0,(byte) 0x48,(byte) 0x30, -}; - -static final BitmapCharRec ch206 = new BitmapCharRec(5,10,-1,0,8,ch206data); - -/* char: 0xcd */ - -static final byte[] ch205data = { -(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0xf8,(byte) 0x0,(byte) 0x20,(byte) 0x10, -}; - -static final BitmapCharRec ch205 = new BitmapCharRec(5,10,-1,0,8,ch205data); - -/* char: 0xcc */ - -static final byte[] ch204data = { -(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0xf8,(byte) 0x0,(byte) 0x10,(byte) 0x20, -}; - -static final BitmapCharRec ch204 = new BitmapCharRec(5,10,-1,0,8,ch204data); - -/* char: 0xcb */ - -static final byte[] ch203data = { -(byte) 0xfc,(byte) 0x80,(byte) 0x80,(byte) 0xf0,(byte) 0x80,(byte) 0x80,(byte) 0xfc,(byte) 0x0,(byte) 0x48,(byte) 0x48, -}; - -static final BitmapCharRec ch203 = new BitmapCharRec(6,10,-1,0,8,ch203data); - -/* char: 0xca */ - -static final byte[] ch202data = { -(byte) 0xfc,(byte) 0x80,(byte) 0x80,(byte) 0xf0,(byte) 0x80,(byte) 0x80,(byte) 0xfc,(byte) 0x0,(byte) 0x48,(byte) 0x30, -}; - -static final BitmapCharRec ch202 = new BitmapCharRec(6,10,-1,0,8,ch202data); - -/* char: 0xc9 */ - -static final byte[] ch201data = { -(byte) 0xfc,(byte) 0x80,(byte) 0x80,(byte) 0xf0,(byte) 0x80,(byte) 0x80,(byte) 0xfc,(byte) 0x0,(byte) 0x20,(byte) 0x10, -}; - -static final BitmapCharRec ch201 = new BitmapCharRec(6,10,-1,0,8,ch201data); - -/* char: 0xc8 */ - -static final byte[] ch200data = { -(byte) 0xfc,(byte) 0x80,(byte) 0x80,(byte) 0xf0,(byte) 0x80,(byte) 0x80,(byte) 0xfc,(byte) 0x0,(byte) 0x10,(byte) 0x20, -}; - -static final BitmapCharRec ch200 = new BitmapCharRec(6,10,-1,0,8,ch200data); - -/* char: 0xc7 */ - -static final byte[] ch199data = { -(byte) 0x20,(byte) 0x10,(byte) 0x78,(byte) 0x84,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x84,(byte) 0x78, -}; - -static final BitmapCharRec ch199 = new BitmapCharRec(6,11,-1,2,8,ch199data); - -/* char: 0xc6 */ - -static final byte[] ch198data = { -(byte) 0x9e,(byte) 0x90,(byte) 0x90,(byte) 0xf0,(byte) 0x9c,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x6e, -}; - -static final BitmapCharRec ch198 = new BitmapCharRec(7,9,0,0,8,ch198data); - -/* char: 0xc5 */ - -static final byte[] ch197data = { -(byte) 0x84,(byte) 0x84,(byte) 0xfc,(byte) 0x84,(byte) 0x84,(byte) 0x48,(byte) 0x30,(byte) 0x30,(byte) 0x48,(byte) 0x30, -}; - -static final BitmapCharRec ch197 = new BitmapCharRec(6,10,-1,0,8,ch197data); - -/* char: 0xc4 */ - -static final byte[] ch196data = { -(byte) 0x84,(byte) 0x84,(byte) 0xfc,(byte) 0x84,(byte) 0x84,(byte) 0x48,(byte) 0x30,(byte) 0x0,(byte) 0x48,(byte) 0x48, -}; - -static final BitmapCharRec ch196 = new BitmapCharRec(6,10,-1,0,8,ch196data); - -/* char: 0xc3 */ - -static final byte[] ch195data = { -(byte) 0x84,(byte) 0x84,(byte) 0xfc,(byte) 0x84,(byte) 0x84,(byte) 0x48,(byte) 0x30,(byte) 0x0,(byte) 0x50,(byte) 0x28, -}; - -static final BitmapCharRec ch195 = new BitmapCharRec(6,10,-1,0,8,ch195data); - -/* char: 0xc2 */ - -static final byte[] ch194data = { -(byte) 0x84,(byte) 0x84,(byte) 0xfc,(byte) 0x84,(byte) 0x84,(byte) 0x48,(byte) 0x30,(byte) 0x0,(byte) 0x48,(byte) 0x30, -}; - -static final BitmapCharRec ch194 = new BitmapCharRec(6,10,-1,0,8,ch194data); - -/* char: 0xc1 */ - -static final byte[] ch193data = { -(byte) 0x84,(byte) 0x84,(byte) 0xfc,(byte) 0x84,(byte) 0x84,(byte) 0x48,(byte) 0x30,(byte) 0x0,(byte) 0x20,(byte) 0x10, -}; - -static final BitmapCharRec ch193 = new BitmapCharRec(6,10,-1,0,8,ch193data); - -/* char: 0xc0 */ - -static final byte[] ch192data = { -(byte) 0x84,(byte) 0x84,(byte) 0xfc,(byte) 0x84,(byte) 0x84,(byte) 0x48,(byte) 0x30,(byte) 0x0,(byte) 0x10,(byte) 0x20, -}; - -static final BitmapCharRec ch192 = new BitmapCharRec(6,10,-1,0,8,ch192data); - -/* char: 0xbf */ - -static final byte[] ch191data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x80,(byte) 0x40,(byte) 0x20,(byte) 0x20,(byte) 0x0,(byte) 0x20, -}; - -static final BitmapCharRec ch191 = new BitmapCharRec(6,9,-1,0,8,ch191data); - -/* char: 0xbe */ - -static final byte[] ch190data = { -(byte) 0x6,(byte) 0x1a,(byte) 0x12,(byte) 0xa,(byte) 0x66,(byte) 0x92,(byte) 0x10,(byte) 0x20,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch190 = new BitmapCharRec(7,10,0,0,8,ch190data); - -/* char: 0xbd */ - -static final byte[] ch189data = { -(byte) 0x1e,(byte) 0x10,(byte) 0xc,(byte) 0x2,(byte) 0xf2,(byte) 0x4c,(byte) 0x40,(byte) 0x40,(byte) 0xc0,(byte) 0x40, -}; - -static final BitmapCharRec ch189 = new BitmapCharRec(7,10,0,0,8,ch189data); - -/* char: 0xbc */ - -static final byte[] ch188data = { -(byte) 0x6,(byte) 0x1a,(byte) 0x12,(byte) 0xa,(byte) 0xe6,(byte) 0x42,(byte) 0x40,(byte) 0x40,(byte) 0xc0,(byte) 0x40, -}; - -static final BitmapCharRec ch188 = new BitmapCharRec(7,10,0,0,8,ch188data); - -/* char: 0xbb */ - -static final byte[] ch187data = { -(byte) 0x90,(byte) 0x48,(byte) 0x24,(byte) 0x12,(byte) 0x24,(byte) 0x48,(byte) 0x90, -}; - -static final BitmapCharRec ch187 = new BitmapCharRec(7,7,0,-1,8,ch187data); - -/* char: 0xba */ - -static final byte[] ch186data = { -(byte) 0xf0,(byte) 0x0,(byte) 0x60,(byte) 0x90,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch186 = new BitmapCharRec(4,6,-1,-3,8,ch186data); - -/* char: 0xb9 */ - -static final byte[] ch185data = { -(byte) 0xe0,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xc0,(byte) 0x40, -}; - -static final BitmapCharRec ch185 = new BitmapCharRec(3,6,-1,-4,8,ch185data); - -/* char: 0xb8 */ - -static final byte[] ch184data = { -(byte) 0xc0,(byte) 0x40, -}; - -static final BitmapCharRec ch184 = new BitmapCharRec(2,2,-3,2,8,ch184data); - -/* char: 0xb7 */ - -static final byte[] ch183data = { -(byte) 0xc0, -}; - -static final BitmapCharRec ch183 = new BitmapCharRec(2,1,-3,-4,8,ch183data); - -/* char: 0xb6 */ - -static final byte[] ch182data = { -(byte) 0x28,(byte) 0x28,(byte) 0x28,(byte) 0x28,(byte) 0x68,(byte) 0xe8,(byte) 0xe8,(byte) 0xe8,(byte) 0x7c, -}; - -static final BitmapCharRec ch182 = new BitmapCharRec(6,9,-1,0,8,ch182data); - -/* char: 0xb5 */ - -static final byte[] ch181data = { -(byte) 0x80,(byte) 0xb4,(byte) 0xcc,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84, -}; - -static final BitmapCharRec ch181 = new BitmapCharRec(6,7,-1,1,8,ch181data); - -/* char: 0xb4 */ - -static final byte[] ch180data = { -(byte) 0x80,(byte) 0x40, -}; - -static final BitmapCharRec ch180 = new BitmapCharRec(2,2,-3,-8,8,ch180data); - -/* char: 0xb3 */ - -static final byte[] ch179data = { -(byte) 0x60,(byte) 0x90,(byte) 0x10,(byte) 0x20,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch179 = new BitmapCharRec(4,6,-1,-4,8,ch179data); - -/* char: 0xb2 */ - -static final byte[] ch178data = { -(byte) 0xf0,(byte) 0x80,(byte) 0x60,(byte) 0x10,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch178 = new BitmapCharRec(4,6,-1,-4,8,ch178data); - -/* char: 0xb1 */ - -static final byte[] ch177data = { -(byte) 0xf8,(byte) 0x0,(byte) 0x20,(byte) 0x20,(byte) 0xf8,(byte) 0x20,(byte) 0x20, -}; - -static final BitmapCharRec ch177 = new BitmapCharRec(5,7,-1,-1,8,ch177data); - -/* char: 0xb0 */ - -static final byte[] ch176data = { -(byte) 0x60,(byte) 0x90,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch176 = new BitmapCharRec(4,4,-2,-5,8,ch176data); - -/* char: 0xaf */ - -static final byte[] ch175data = { -(byte) 0xfc, -}; - -static final BitmapCharRec ch175 = new BitmapCharRec(6,1,-1,-8,8,ch175data); - -/* char: 0xae */ - -static final byte[] ch174data = { -(byte) 0x38,(byte) 0x44,(byte) 0xaa,(byte) 0xb2,(byte) 0xaa,(byte) 0xaa,(byte) 0x92,(byte) 0x44,(byte) 0x38, -}; - -static final BitmapCharRec ch174 = new BitmapCharRec(7,9,0,-1,8,ch174data); - -/* char: 0xad */ - -static final byte[] ch173data = { -(byte) 0xfc, -}; - -static final BitmapCharRec ch173 = new BitmapCharRec(6,1,-1,-4,8,ch173data); - -/* char: 0xac */ - -static final byte[] ch172data = { -(byte) 0x4,(byte) 0x4,(byte) 0x4,(byte) 0xfc, -}; - -static final BitmapCharRec ch172 = new BitmapCharRec(6,4,-1,-1,8,ch172data); - -/* char: 0xab */ - -static final byte[] ch171data = { -(byte) 0x12,(byte) 0x24,(byte) 0x48,(byte) 0x90,(byte) 0x48,(byte) 0x24,(byte) 0x12, -}; - -static final BitmapCharRec ch171 = new BitmapCharRec(7,7,0,-1,8,ch171data); - -/* char: 0xaa */ - -static final byte[] ch170data = { -(byte) 0xf8,(byte) 0x0,(byte) 0x78,(byte) 0x88,(byte) 0x78,(byte) 0x8,(byte) 0x70, -}; - -static final BitmapCharRec ch170 = new BitmapCharRec(5,7,-1,-2,8,ch170data); - -/* char: 0xa9 */ - -static final byte[] ch169data = { -(byte) 0x38,(byte) 0x44,(byte) 0x92,(byte) 0xaa,(byte) 0xa2,(byte) 0xaa,(byte) 0x92,(byte) 0x44,(byte) 0x38, -}; - -static final BitmapCharRec ch169 = new BitmapCharRec(7,9,0,-1,8,ch169data); - -/* char: 0xa8 */ - -static final byte[] ch168data = { -(byte) 0xd8, -}; - -static final BitmapCharRec ch168 = new BitmapCharRec(5,1,-1,-8,8,ch168data); - -/* char: 0xa7 */ - -static final byte[] ch167data = { -(byte) 0x60,(byte) 0x90,(byte) 0x10,(byte) 0x60,(byte) 0x90,(byte) 0x90,(byte) 0x60,(byte) 0x80,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch167 = new BitmapCharRec(4,10,-2,0,8,ch167data); - -/* char: 0xa6 */ - -static final byte[] ch166data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x0,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch166 = new BitmapCharRec(1,9,-3,0,8,ch166data); - -/* char: 0xa5 */ - -static final byte[] ch165data = { -(byte) 0x10,(byte) 0x10,(byte) 0x7c,(byte) 0x10,(byte) 0x7c,(byte) 0x28,(byte) 0x44,(byte) 0x82,(byte) 0x82, -}; - -static final BitmapCharRec ch165 = new BitmapCharRec(7,9,0,0,8,ch165data); - -/* char: 0xa4 */ - -static final byte[] ch164data = { -(byte) 0x84,(byte) 0x78,(byte) 0x48,(byte) 0x48,(byte) 0x78,(byte) 0x84, -}; - -static final BitmapCharRec ch164 = new BitmapCharRec(6,6,-1,-1,8,ch164data); - -/* char: 0xa3 */ - -static final byte[] ch163data = { -(byte) 0xdc,(byte) 0x62,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x70,(byte) 0x20,(byte) 0x22,(byte) 0x1c, -}; - -static final BitmapCharRec ch163 = new BitmapCharRec(7,9,0,0,8,ch163data); - -/* char: 0xa2 */ - -static final byte[] ch162data = { -(byte) 0x20,(byte) 0x70,(byte) 0xa8,(byte) 0xa0,(byte) 0xa0,(byte) 0xa8,(byte) 0x70,(byte) 0x20, -}; - -static final BitmapCharRec ch162 = new BitmapCharRec(5,8,-1,-1,8,ch162data); - -/* char: 0xa1 */ - -static final byte[] ch161data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x0,(byte) 0x80, -}; - -static final BitmapCharRec ch161 = new BitmapCharRec(1,9,-3,0,8,ch161data); - -/* char: 0x7e '~' */ - -static final byte[] ch126data = { -(byte) 0x90,(byte) 0xa8,(byte) 0x48, -}; - -static final BitmapCharRec ch126 = new BitmapCharRec(5,3,-1,-6,8,ch126data); - -/* char: 0x7d '}' */ - -static final byte[] ch125data = { -(byte) 0xe0,(byte) 0x10,(byte) 0x10,(byte) 0x20,(byte) 0x18,(byte) 0x20,(byte) 0x10,(byte) 0x10,(byte) 0xe0, -}; - -static final BitmapCharRec ch125 = new BitmapCharRec(5,9,-1,0,8,ch125data); - -/* char: 0x7c '|' */ - -static final byte[] ch124data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch124 = new BitmapCharRec(1,9,-3,0,8,ch124data); - -/* char: 0x7b '{' */ - -static final byte[] ch123data = { -(byte) 0x38,(byte) 0x40,(byte) 0x40,(byte) 0x20,(byte) 0xc0,(byte) 0x20,(byte) 0x40,(byte) 0x40,(byte) 0x38, -}; - -static final BitmapCharRec ch123 = new BitmapCharRec(5,9,-2,0,8,ch123data); - -/* char: 0x7a 'z' */ - -static final byte[] ch122data = { -(byte) 0xfc,(byte) 0x40,(byte) 0x20,(byte) 0x10,(byte) 0x8,(byte) 0xfc, -}; - -static final BitmapCharRec ch122 = new BitmapCharRec(6,6,-1,0,8,ch122data); - -/* char: 0x79 'y' */ - -static final byte[] ch121data = { -(byte) 0x78,(byte) 0x84,(byte) 0x4,(byte) 0x74,(byte) 0x8c,(byte) 0x84,(byte) 0x84,(byte) 0x84, -}; - -static final BitmapCharRec ch121 = new BitmapCharRec(6,8,-1,2,8,ch121data); - -/* char: 0x78 'x' */ - -static final byte[] ch120data = { -(byte) 0x84,(byte) 0x48,(byte) 0x30,(byte) 0x30,(byte) 0x48,(byte) 0x84, -}; - -static final BitmapCharRec ch120 = new BitmapCharRec(6,6,-1,0,8,ch120data); - -/* char: 0x77 'w' */ - -static final byte[] ch119data = { -(byte) 0x44,(byte) 0xaa,(byte) 0x92,(byte) 0x92,(byte) 0x82,(byte) 0x82, -}; - -static final BitmapCharRec ch119 = new BitmapCharRec(7,6,0,0,8,ch119data); - -/* char: 0x76 'v' */ - -static final byte[] ch118data = { -(byte) 0x20,(byte) 0x50,(byte) 0x50,(byte) 0x88,(byte) 0x88,(byte) 0x88, -}; - -static final BitmapCharRec ch118 = new BitmapCharRec(5,6,-1,0,8,ch118data); - -/* char: 0x75 'u' */ - -static final byte[] ch117data = { -(byte) 0x74,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88, -}; - -static final BitmapCharRec ch117 = new BitmapCharRec(6,6,-1,0,8,ch117data); - -/* char: 0x74 't' */ - -static final byte[] ch116data = { -(byte) 0x38,(byte) 0x44,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xf8,(byte) 0x40,(byte) 0x40, -}; - -static final BitmapCharRec ch116 = new BitmapCharRec(6,8,-1,0,8,ch116data); - -/* char: 0x73 's' */ - -static final byte[] ch115data = { -(byte) 0x78,(byte) 0x84,(byte) 0x18,(byte) 0x60,(byte) 0x84,(byte) 0x78, -}; - -static final BitmapCharRec ch115 = new BitmapCharRec(6,6,-1,0,8,ch115data); - -/* char: 0x72 'r' */ - -static final byte[] ch114data = { -(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x44,(byte) 0xb8, -}; - -static final BitmapCharRec ch114 = new BitmapCharRec(6,6,-1,0,8,ch114data); - -/* char: 0x71 'q' */ - -static final byte[] ch113data = { -(byte) 0x4,(byte) 0x4,(byte) 0x4,(byte) 0x74,(byte) 0x8c,(byte) 0x84,(byte) 0x8c,(byte) 0x74, -}; - -static final BitmapCharRec ch113 = new BitmapCharRec(6,8,-1,2,8,ch113data); - -/* char: 0x70 'p' */ - -static final byte[] ch112data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xb8,(byte) 0xc4,(byte) 0x84,(byte) 0xc4,(byte) 0xb8, -}; - -static final BitmapCharRec ch112 = new BitmapCharRec(6,8,-1,2,8,ch112data); - -/* char: 0x6f 'o' */ - -static final byte[] ch111data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x78, -}; - -static final BitmapCharRec ch111 = new BitmapCharRec(6,6,-1,0,8,ch111data); - -/* char: 0x6e 'n' */ - -static final byte[] ch110data = { -(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0xc4,(byte) 0xb8, -}; - -static final BitmapCharRec ch110 = new BitmapCharRec(6,6,-1,0,8,ch110data); - -/* char: 0x6d 'm' */ - -static final byte[] ch109data = { -(byte) 0x82,(byte) 0x92,(byte) 0x92,(byte) 0x92,(byte) 0x92,(byte) 0xec, -}; - -static final BitmapCharRec ch109 = new BitmapCharRec(7,6,0,0,8,ch109data); - -/* char: 0x6c 'l' */ - -static final byte[] ch108data = { -(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x60, -}; - -static final BitmapCharRec ch108 = new BitmapCharRec(5,9,-1,0,8,ch108data); - -/* char: 0x6b 'k' */ - -static final byte[] ch107data = { -(byte) 0x84,(byte) 0x88,(byte) 0x90,(byte) 0xe0,(byte) 0x90,(byte) 0x88,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch107 = new BitmapCharRec(6,9,-1,0,8,ch107data); - -/* char: 0x6a 'j' */ - -static final byte[] ch106data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x18,(byte) 0x0,(byte) 0x8, -}; - -static final BitmapCharRec ch106 = new BitmapCharRec(5,10,-1,2,8,ch106data); - -/* char: 0x69 'i' */ - -static final byte[] ch105data = { -(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x60,(byte) 0x0,(byte) 0x20, -}; - -static final BitmapCharRec ch105 = new BitmapCharRec(5,8,-1,0,8,ch105data); - -/* char: 0x68 'h' */ - -static final byte[] ch104data = { -(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0xc4,(byte) 0xb8,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch104 = new BitmapCharRec(6,9,-1,0,8,ch104data); - -/* char: 0x67 'g' */ - -static final byte[] ch103data = { -(byte) 0x78,(byte) 0x84,(byte) 0x78,(byte) 0x80,(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x74, -}; - -static final BitmapCharRec ch103 = new BitmapCharRec(6,8,-1,2,8,ch103data); - -/* char: 0x66 'f' */ - -static final byte[] ch102data = { -(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xf8,(byte) 0x40,(byte) 0x40,(byte) 0x44,(byte) 0x38, -}; - -static final BitmapCharRec ch102 = new BitmapCharRec(6,9,-1,0,8,ch102data); - -/* char: 0x65 'e' */ - -static final byte[] ch101data = { -(byte) 0x78,(byte) 0x84,(byte) 0x80,(byte) 0xfc,(byte) 0x84,(byte) 0x78, -}; - -static final BitmapCharRec ch101 = new BitmapCharRec(6,6,-1,0,8,ch101data); - -/* char: 0x64 'd' */ - -static final byte[] ch100data = { -(byte) 0x74,(byte) 0x8c,(byte) 0x84,(byte) 0x84,(byte) 0x8c,(byte) 0x74,(byte) 0x4,(byte) 0x4,(byte) 0x4, -}; - -static final BitmapCharRec ch100 = new BitmapCharRec(6,9,-1,0,8,ch100data); - -/* char: 0x63 'c' */ - -static final byte[] ch99data = { -(byte) 0x78,(byte) 0x84,(byte) 0x80,(byte) 0x80,(byte) 0x84,(byte) 0x78, -}; - -static final BitmapCharRec ch99 = new BitmapCharRec(6,6,-1,0,8,ch99data); - -/* char: 0x62 'b' */ - -static final byte[] ch98data = { -(byte) 0xb8,(byte) 0xc4,(byte) 0x84,(byte) 0x84,(byte) 0xc4,(byte) 0xb8,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch98 = new BitmapCharRec(6,9,-1,0,8,ch98data); - -/* char: 0x61 'a' */ - -static final byte[] ch97data = { -(byte) 0x74,(byte) 0x8c,(byte) 0x84,(byte) 0x7c,(byte) 0x4,(byte) 0x78, -}; - -static final BitmapCharRec ch97 = new BitmapCharRec(6,6,-1,0,8,ch97data); - -/* char: 0x60 '`' */ - -static final byte[] ch96data = { -(byte) 0x10,(byte) 0x60,(byte) 0xe0, -}; - -static final BitmapCharRec ch96 = new BitmapCharRec(4,3,-2,-6,8,ch96data); - -/* char: 0x5f '_' */ - -static final byte[] ch95data = { -(byte) 0xfe, -}; - -static final BitmapCharRec ch95 = new BitmapCharRec(7,1,0,1,8,ch95data); - -/* char: 0x5e '^' */ - -static final byte[] ch94data = { -(byte) 0x88,(byte) 0x50,(byte) 0x20, -}; - -static final BitmapCharRec ch94 = new BitmapCharRec(5,3,-1,-6,8,ch94data); - -/* char: 0x5d ']' */ - -static final byte[] ch93data = { -(byte) 0xf0,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0xf0, -}; - -static final BitmapCharRec ch93 = new BitmapCharRec(4,9,-1,0,8,ch93data); - -/* char: 0x5c '\' */ - -static final byte[] ch92data = { -(byte) 0x2,(byte) 0x2,(byte) 0x4,(byte) 0x8,(byte) 0x10,(byte) 0x20,(byte) 0x40,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch92 = new BitmapCharRec(7,9,0,0,8,ch92data); - -/* char: 0x5b '[' */ - -static final byte[] ch91data = { -(byte) 0xf0,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xf0, -}; - -static final BitmapCharRec ch91 = new BitmapCharRec(4,9,-2,0,8,ch91data); - -/* char: 0x5a 'Z' */ - -static final byte[] ch90data = { -(byte) 0xfc,(byte) 0x80,(byte) 0x80,(byte) 0x40,(byte) 0x20,(byte) 0x10,(byte) 0x8,(byte) 0x4,(byte) 0xfc, -}; - -static final BitmapCharRec ch90 = new BitmapCharRec(6,9,-1,0,8,ch90data); - -/* char: 0x59 'Y' */ - -static final byte[] ch89data = { -(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x28,(byte) 0x44,(byte) 0x82,(byte) 0x82, -}; - -static final BitmapCharRec ch89 = new BitmapCharRec(7,9,0,0,8,ch89data); - -/* char: 0x58 'X' */ - -static final byte[] ch88data = { -(byte) 0x82,(byte) 0x82,(byte) 0x44,(byte) 0x28,(byte) 0x10,(byte) 0x28,(byte) 0x44,(byte) 0x82,(byte) 0x82, -}; - -static final BitmapCharRec ch88 = new BitmapCharRec(7,9,0,0,8,ch88data); - -/* char: 0x57 'W' */ - -static final byte[] ch87data = { -(byte) 0x44,(byte) 0xaa,(byte) 0x92,(byte) 0x92,(byte) 0x92,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82, -}; - -static final BitmapCharRec ch87 = new BitmapCharRec(7,9,0,0,8,ch87data); - -/* char: 0x56 'V' */ - -static final byte[] ch86data = { -(byte) 0x10,(byte) 0x28,(byte) 0x28,(byte) 0x28,(byte) 0x44,(byte) 0x44,(byte) 0x44,(byte) 0x82,(byte) 0x82, -}; - -static final BitmapCharRec ch86 = new BitmapCharRec(7,9,0,0,8,ch86data); - -/* char: 0x55 'U' */ - -static final byte[] ch85data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84, -}; - -static final BitmapCharRec ch85 = new BitmapCharRec(6,9,-1,0,8,ch85data); - -/* char: 0x54 'T' */ - -static final byte[] ch84data = { -(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0xfe, -}; - -static final BitmapCharRec ch84 = new BitmapCharRec(7,9,0,0,8,ch84data); - -/* char: 0x53 'S' */ - -static final byte[] ch83data = { -(byte) 0x78,(byte) 0x84,(byte) 0x4,(byte) 0x4,(byte) 0x78,(byte) 0x80,(byte) 0x80,(byte) 0x84,(byte) 0x78, -}; - -static final BitmapCharRec ch83 = new BitmapCharRec(6,9,-1,0,8,ch83data); - -/* char: 0x52 'R' */ - -static final byte[] ch82data = { -(byte) 0x84,(byte) 0x88,(byte) 0x90,(byte) 0xa0,(byte) 0xf8,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0xf8, -}; - -static final BitmapCharRec ch82 = new BitmapCharRec(6,9,-1,0,8,ch82data); - -/* char: 0x51 'Q' */ - -static final byte[] ch81data = { -(byte) 0x4,(byte) 0x78,(byte) 0x94,(byte) 0xa4,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x78, -}; - -static final BitmapCharRec ch81 = new BitmapCharRec(6,10,-1,1,8,ch81data); - -/* char: 0x50 'P' */ - -static final byte[] ch80data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xf8,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0xf8, -}; - -static final BitmapCharRec ch80 = new BitmapCharRec(6,9,-1,0,8,ch80data); - -/* char: 0x4f 'O' */ - -static final byte[] ch79data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x78, -}; - -static final BitmapCharRec ch79 = new BitmapCharRec(6,9,-1,0,8,ch79data); - -/* char: 0x4e 'N' */ - -static final byte[] ch78data = { -(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x8c,(byte) 0x94,(byte) 0xa4,(byte) 0xc4,(byte) 0x84,(byte) 0x84, -}; - -static final BitmapCharRec ch78 = new BitmapCharRec(6,9,-1,0,8,ch78data); - -/* char: 0x4d 'M' */ - -static final byte[] ch77data = { -(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x92,(byte) 0x92,(byte) 0xaa,(byte) 0xc6,(byte) 0x82,(byte) 0x82, -}; - -static final BitmapCharRec ch77 = new BitmapCharRec(7,9,0,0,8,ch77data); - -/* char: 0x4c 'L' */ - -static final byte[] ch76data = { -(byte) 0xfc,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch76 = new BitmapCharRec(6,9,-1,0,8,ch76data); - -/* char: 0x4b 'K' */ - -static final byte[] ch75data = { -(byte) 0x84,(byte) 0x88,(byte) 0x90,(byte) 0xa0,(byte) 0xc0,(byte) 0xa0,(byte) 0x90,(byte) 0x88,(byte) 0x84, -}; - -static final BitmapCharRec ch75 = new BitmapCharRec(6,9,-1,0,8,ch75data); - -/* char: 0x4a 'J' */ - -static final byte[] ch74data = { -(byte) 0x70,(byte) 0x88,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x3c, -}; - -static final BitmapCharRec ch74 = new BitmapCharRec(6,9,-1,0,8,ch74data); - -/* char: 0x49 'I' */ - -static final byte[] ch73data = { -(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0xf8, -}; - -static final BitmapCharRec ch73 = new BitmapCharRec(5,9,-1,0,8,ch73data); - -/* char: 0x48 'H' */ - -static final byte[] ch72data = { -(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0xfc,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84, -}; - -static final BitmapCharRec ch72 = new BitmapCharRec(6,9,-1,0,8,ch72data); - -/* char: 0x47 'G' */ - -static final byte[] ch71data = { -(byte) 0x74,(byte) 0x8c,(byte) 0x84,(byte) 0x9c,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x84,(byte) 0x78, -}; - -static final BitmapCharRec ch71 = new BitmapCharRec(6,9,-1,0,8,ch71data); - -/* char: 0x46 'F' */ - -static final byte[] ch70data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xf0,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xfc, -}; - -static final BitmapCharRec ch70 = new BitmapCharRec(6,9,-1,0,8,ch70data); - -/* char: 0x45 'E' */ - -static final byte[] ch69data = { -(byte) 0xfc,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xf0,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xfc, -}; - -static final BitmapCharRec ch69 = new BitmapCharRec(6,9,-1,0,8,ch69data); - -/* char: 0x44 'D' */ - -static final byte[] ch68data = { -(byte) 0xfc,(byte) 0x42,(byte) 0x42,(byte) 0x42,(byte) 0x42,(byte) 0x42,(byte) 0x42,(byte) 0x42,(byte) 0xfc, -}; - -static final BitmapCharRec ch68 = new BitmapCharRec(7,9,0,0,8,ch68data); - -/* char: 0x43 'C' */ - -static final byte[] ch67data = { -(byte) 0x78,(byte) 0x84,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x84,(byte) 0x78, -}; - -static final BitmapCharRec ch67 = new BitmapCharRec(6,9,-1,0,8,ch67data); - -/* char: 0x42 'B' */ - -static final byte[] ch66data = { -(byte) 0xfc,(byte) 0x42,(byte) 0x42,(byte) 0x42,(byte) 0x7c,(byte) 0x42,(byte) 0x42,(byte) 0x42,(byte) 0xfc, -}; - -static final BitmapCharRec ch66 = new BitmapCharRec(7,9,0,0,8,ch66data); - -/* char: 0x41 'A' */ - -static final byte[] ch65data = { -(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0xfc,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x48,(byte) 0x30, -}; - -static final BitmapCharRec ch65 = new BitmapCharRec(6,9,-1,0,8,ch65data); - -/* char: 0x40 '@' */ - -static final byte[] ch64data = { -(byte) 0x78,(byte) 0x80,(byte) 0x94,(byte) 0xac,(byte) 0xa4,(byte) 0x9c,(byte) 0x84,(byte) 0x84,(byte) 0x78, -}; - -static final BitmapCharRec ch64 = new BitmapCharRec(6,9,-1,0,8,ch64data); - -/* char: 0x3f '?' */ - -static final byte[] ch63data = { -(byte) 0x10,(byte) 0x0,(byte) 0x10,(byte) 0x10,(byte) 0x8,(byte) 0x4,(byte) 0x84,(byte) 0x84,(byte) 0x78, -}; - -static final BitmapCharRec ch63 = new BitmapCharRec(6,9,-1,0,8,ch63data); - -/* char: 0x3e '>' */ - -static final byte[] ch62data = { -(byte) 0x80,(byte) 0x40,(byte) 0x20,(byte) 0x10,(byte) 0x8,(byte) 0x10,(byte) 0x20,(byte) 0x40,(byte) 0x80, -}; - -static final BitmapCharRec ch62 = new BitmapCharRec(5,9,-1,0,8,ch62data); - -/* char: 0x3d '=' */ - -static final byte[] ch61data = { -(byte) 0xfc,(byte) 0x0,(byte) 0x0,(byte) 0xfc, -}; - -static final BitmapCharRec ch61 = new BitmapCharRec(6,4,-1,-2,8,ch61data); - -/* char: 0x3c '<' */ - -static final byte[] ch60data = { -(byte) 0x8,(byte) 0x10,(byte) 0x20,(byte) 0x40,(byte) 0x80,(byte) 0x40,(byte) 0x20,(byte) 0x10,(byte) 0x8, -}; - -static final BitmapCharRec ch60 = new BitmapCharRec(5,9,-2,0,8,ch60data); - -/* char: 0x3b ';' */ - -static final byte[] ch59data = { -(byte) 0x80,(byte) 0x60,(byte) 0x70,(byte) 0x0,(byte) 0x0,(byte) 0x20,(byte) 0x70,(byte) 0x20, -}; - -static final BitmapCharRec ch59 = new BitmapCharRec(4,8,-1,1,8,ch59data); - -/* char: 0x3a ':' */ - -static final byte[] ch58data = { -(byte) 0x40,(byte) 0xe0,(byte) 0x40,(byte) 0x0,(byte) 0x0,(byte) 0x40,(byte) 0xe0,(byte) 0x40, -}; - -static final BitmapCharRec ch58 = new BitmapCharRec(3,8,-2,1,8,ch58data); - -/* char: 0x39 '9' */ - -static final byte[] ch57data = { -(byte) 0x70,(byte) 0x8,(byte) 0x4,(byte) 0x4,(byte) 0x74,(byte) 0x8c,(byte) 0x84,(byte) 0x84,(byte) 0x78, -}; - -static final BitmapCharRec ch57 = new BitmapCharRec(6,9,-1,0,8,ch57data); - -/* char: 0x38 '8' */ - -static final byte[] ch56data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x78, -}; - -static final BitmapCharRec ch56 = new BitmapCharRec(6,9,-1,0,8,ch56data); - -/* char: 0x37 '7' */ - -static final byte[] ch55data = { -(byte) 0x40,(byte) 0x40,(byte) 0x20,(byte) 0x20,(byte) 0x10,(byte) 0x10,(byte) 0x8,(byte) 0x4,(byte) 0xfc, -}; - -static final BitmapCharRec ch55 = new BitmapCharRec(6,9,-1,0,8,ch55data); - -/* char: 0x36 '6' */ - -static final byte[] ch54data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0xc4,(byte) 0xb8,(byte) 0x80,(byte) 0x80,(byte) 0x40,(byte) 0x38, -}; - -static final BitmapCharRec ch54 = new BitmapCharRec(6,9,-1,0,8,ch54data); - -/* char: 0x35 '5' */ - -static final byte[] ch53data = { -(byte) 0x78,(byte) 0x84,(byte) 0x4,(byte) 0x4,(byte) 0xc4,(byte) 0xb8,(byte) 0x80,(byte) 0x80,(byte) 0xfc, -}; - -static final BitmapCharRec ch53 = new BitmapCharRec(6,9,-1,0,8,ch53data); - -/* char: 0x34 '4' */ - -static final byte[] ch52data = { -(byte) 0x8,(byte) 0x8,(byte) 0xfc,(byte) 0x88,(byte) 0x88,(byte) 0x48,(byte) 0x28,(byte) 0x18,(byte) 0x8, -}; - -static final BitmapCharRec ch52 = new BitmapCharRec(6,9,-1,0,8,ch52data); - -/* char: 0x33 '3' */ - -static final byte[] ch51data = { -(byte) 0x78,(byte) 0x84,(byte) 0x4,(byte) 0x4,(byte) 0x38,(byte) 0x10,(byte) 0x8,(byte) 0x4,(byte) 0xfc, -}; - -static final BitmapCharRec ch51 = new BitmapCharRec(6,9,-1,0,8,ch51data); - -/* char: 0x32 '2' */ - -static final byte[] ch50data = { -(byte) 0xfc,(byte) 0x80,(byte) 0x40,(byte) 0x30,(byte) 0x8,(byte) 0x4,(byte) 0x84,(byte) 0x84,(byte) 0x78, -}; - -static final BitmapCharRec ch50 = new BitmapCharRec(6,9,-1,0,8,ch50data); - -/* char: 0x31 '1' */ - -static final byte[] ch49data = { -(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0xa0,(byte) 0x60,(byte) 0x20, -}; - -static final BitmapCharRec ch49 = new BitmapCharRec(5,9,-1,0,8,ch49data); - -/* char: 0x30 '0' */ - -static final byte[] ch48data = { -(byte) 0x30,(byte) 0x48,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x48,(byte) 0x30, -}; - -static final BitmapCharRec ch48 = new BitmapCharRec(6,9,-1,0,8,ch48data); - -/* char: 0x2f '/' */ - -static final byte[] ch47data = { -(byte) 0x80,(byte) 0x80,(byte) 0x40,(byte) 0x20,(byte) 0x10,(byte) 0x8,(byte) 0x4,(byte) 0x2,(byte) 0x2, -}; - -static final BitmapCharRec ch47 = new BitmapCharRec(7,9,0,0,8,ch47data); - -/* char: 0x2e '.' */ - -static final byte[] ch46data = { -(byte) 0x40,(byte) 0xe0,(byte) 0x40, -}; - -static final BitmapCharRec ch46 = new BitmapCharRec(3,3,-2,1,8,ch46data); - -/* char: 0x2d '-' */ - -static final byte[] ch45data = { -(byte) 0xfc, -}; - -static final BitmapCharRec ch45 = new BitmapCharRec(6,1,-1,-4,8,ch45data); - -/* char: 0x2c ',' */ - -static final byte[] ch44data = { -(byte) 0x80,(byte) 0x60,(byte) 0x70, -}; - -static final BitmapCharRec ch44 = new BitmapCharRec(4,3,-1,1,8,ch44data); - -/* char: 0x2b '+' */ - -static final byte[] ch43data = { -(byte) 0x20,(byte) 0x20,(byte) 0xf8,(byte) 0x20,(byte) 0x20, -}; - -static final BitmapCharRec ch43 = new BitmapCharRec(5,5,-1,-2,8,ch43data); - -/* char: 0x2a '*' */ - -static final byte[] ch42data = { -(byte) 0x48,(byte) 0x30,(byte) 0xfc,(byte) 0x30,(byte) 0x48, -}; - -static final BitmapCharRec ch42 = new BitmapCharRec(6,5,-1,-2,8,ch42data); - -/* char: 0x29 ')' */ - -static final byte[] ch41data = { -(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x40,(byte) 0x40,(byte) 0x80, -}; - -static final BitmapCharRec ch41 = new BitmapCharRec(3,9,-2,0,8,ch41data); - -/* char: 0x28 '(' */ - -static final byte[] ch40data = { -(byte) 0x20,(byte) 0x40,(byte) 0x40,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x20, -}; - -static final BitmapCharRec ch40 = new BitmapCharRec(3,9,-3,0,8,ch40data); - -/* char: 0x27 ''' */ - -static final byte[] ch39data = { -(byte) 0x80,(byte) 0x60,(byte) 0x70, -}; - -static final BitmapCharRec ch39 = new BitmapCharRec(4,3,-1,-6,8,ch39data); - -/* char: 0x26 '&' */ - -static final byte[] ch38data = { -(byte) 0x74,(byte) 0x88,(byte) 0x94,(byte) 0x60,(byte) 0x90,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch38 = new BitmapCharRec(6,7,-1,0,8,ch38data); - -/* char: 0x25 '%' */ - -static final byte[] ch37data = { -(byte) 0x88,(byte) 0x54,(byte) 0x48,(byte) 0x20,(byte) 0x10,(byte) 0x10,(byte) 0x48,(byte) 0xa4,(byte) 0x44, -}; - -static final BitmapCharRec ch37 = new BitmapCharRec(6,9,-1,0,8,ch37data); - -/* char: 0x24 '$' */ - -static final byte[] ch36data = { -(byte) 0x20,(byte) 0xf0,(byte) 0x28,(byte) 0x70,(byte) 0xa0,(byte) 0x78,(byte) 0x20, -}; - -static final BitmapCharRec ch36 = new BitmapCharRec(5,7,-1,-1,8,ch36data); - -/* char: 0x23 '#' */ - -static final byte[] ch35data = { -(byte) 0x48,(byte) 0x48,(byte) 0xfc,(byte) 0x48,(byte) 0xfc,(byte) 0x48,(byte) 0x48, -}; - -static final BitmapCharRec ch35 = new BitmapCharRec(6,7,-1,-1,8,ch35data); - -/* char: 0x22 '"' */ - -static final byte[] ch34data = { -(byte) 0x90,(byte) 0x90,(byte) 0x90, -}; - -static final BitmapCharRec ch34 = new BitmapCharRec(4,3,-2,-6,8,ch34data); - -/* char: 0x21 '!' */ - -static final byte[] ch33data = { -(byte) 0x80,(byte) 0x0,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch33 = new BitmapCharRec(1,9,-3,0,8,ch33data); - -/* char: 0x1f */ - -static final byte[] ch31data = { -(byte) 0x80, -}; - -static final BitmapCharRec ch31 = new BitmapCharRec(1,1,-3,-3,8,ch31data); - -/* char: 0x1e */ - -static final byte[] ch30data = { -(byte) 0xdc,(byte) 0x62,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x70,(byte) 0x20,(byte) 0x22,(byte) 0x1c, -}; - -static final BitmapCharRec ch30 = new BitmapCharRec(7,9,0,0,8,ch30data); - -/* char: 0x1d */ - -static final byte[] ch29data = { -(byte) 0x80,(byte) 0x40,(byte) 0xfe,(byte) 0x10,(byte) 0xfe,(byte) 0x4,(byte) 0x2, -}; - -static final BitmapCharRec ch29 = new BitmapCharRec(7,7,0,0,8,ch29data); - -/* char: 0x1c */ - -static final byte[] ch28data = { -(byte) 0x88,(byte) 0x48,(byte) 0x48,(byte) 0x48,(byte) 0x48,(byte) 0xfc, -}; - -static final BitmapCharRec ch28 = new BitmapCharRec(6,6,-1,0,8,ch28data); - -/* char: 0x1b */ - -static final byte[] ch27data = { -(byte) 0xfe,(byte) 0x80,(byte) 0x20,(byte) 0x8,(byte) 0x2,(byte) 0x8,(byte) 0x20,(byte) 0x80, -}; - -static final BitmapCharRec ch27 = new BitmapCharRec(7,8,0,0,8,ch27data); - -/* char: 0x1a */ - -static final byte[] ch26data = { -(byte) 0xfe,(byte) 0x2,(byte) 0x8,(byte) 0x20,(byte) 0x80,(byte) 0x20,(byte) 0x8,(byte) 0x2, -}; - -static final BitmapCharRec ch26 = new BitmapCharRec(7,8,0,0,8,ch26data); - -/* char: 0x19 */ - -static final byte[] ch25data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch25 = new BitmapCharRec(1,13,-3,2,8,ch25data); - -/* char: 0x18 */ - -static final byte[] ch24data = { -(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0xff, -}; - -static final BitmapCharRec ch24 = new BitmapCharRec(8,6,0,2,8,ch24data); - -/* char: 0x17 */ - -static final byte[] ch23data = { -(byte) 0xff,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10, -}; - -static final BitmapCharRec ch23 = new BitmapCharRec(8,8,0,-3,8,ch23data); - -/* char: 0x16 */ - -static final byte[] ch22data = { -(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0xf0,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10, -}; - -static final BitmapCharRec ch22 = new BitmapCharRec(4,13,0,2,8,ch22data); - -/* char: 0x15 */ - -static final byte[] ch21data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xf8,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch21 = new BitmapCharRec(5,13,-3,2,8,ch21data); - -/* char: 0x14 */ - -static final byte[] ch20data = { -(byte) 0xff, -}; - -static final BitmapCharRec ch20 = new BitmapCharRec(8,1,0,1,8,ch20data); - -/* char: 0x13 */ - -static final byte[] ch19data = { -(byte) 0xff, -}; - -static final BitmapCharRec ch19 = new BitmapCharRec(8,1,0,-1,8,ch19data); - -/* char: 0x12 */ - -static final byte[] ch18data = { -(byte) 0xff, -}; - -static final BitmapCharRec ch18 = new BitmapCharRec(8,1,0,-3,8,ch18data); - -/* char: 0x11 */ - -static final byte[] ch17data = { -(byte) 0xff, -}; - -static final BitmapCharRec ch17 = new BitmapCharRec(8,1,0,-5,8,ch17data); - -/* char: 0x10 */ - -static final byte[] ch16data = { -(byte) 0xff, -}; - -static final BitmapCharRec ch16 = new BitmapCharRec(8,1,0,-7,8,ch16data); - -/* char: 0xf */ - -static final byte[] ch15data = { -(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0xff,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10, -}; - -static final BitmapCharRec ch15 = new BitmapCharRec(8,13,0,2,8,ch15data); - -/* char: 0xe */ - -static final byte[] ch14data = { -(byte) 0xf8,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch14 = new BitmapCharRec(5,8,-3,-3,8,ch14data); - -/* char: 0xd */ - -static final byte[] ch13data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xf8, -}; - -static final BitmapCharRec ch13 = new BitmapCharRec(5,6,-3,2,8,ch13data); - -/* char: 0xc */ - -static final byte[] ch12data = { -(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0xf0, -}; - -static final BitmapCharRec ch12 = new BitmapCharRec(4,6,0,2,8,ch12data); - -/* char: 0xb */ - -static final byte[] ch11data = { -(byte) 0xf0,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10, -}; - -static final BitmapCharRec ch11 = new BitmapCharRec(4,8,0,-3,8,ch11data); - -/* char: 0xa */ - -static final byte[] ch10data = { -(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x3e,(byte) 0x20,(byte) 0x50,(byte) 0x88,(byte) 0x88, -}; - -static final BitmapCharRec ch10 = new BitmapCharRec(7,9,0,2,8,ch10data); - -/* char: 0x9 */ - -static final byte[] ch9data = { -(byte) 0x3e,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x88,(byte) 0x98,(byte) 0xa8,(byte) 0xc8,(byte) 0x88, -}; - -static final BitmapCharRec ch9 = new BitmapCharRec(7,9,0,2,8,ch9data); - -/* char: 0x8 */ - -static final byte[] ch8data = { -(byte) 0xfe,(byte) 0x10,(byte) 0x10,(byte) 0xfe,(byte) 0x10,(byte) 0x10, -}; - -static final BitmapCharRec ch8 = new BitmapCharRec(7,6,0,0,8,ch8data); - -/* char: 0x7 */ - -static final byte[] ch7data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch7 = new BitmapCharRec(5,4,-1,-5,8,ch7data); - -/* char: 0x6 */ - -static final byte[] ch6data = { -(byte) 0x20,(byte) 0x20,(byte) 0x3c,(byte) 0x20,(byte) 0x3e,(byte) 0xf8,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch6 = new BitmapCharRec(7,9,0,2,8,ch6data); - -/* char: 0x5 */ - -static final byte[] ch5data = { -(byte) 0x22,(byte) 0x22,(byte) 0x3c,(byte) 0x22,(byte) 0x3c,(byte) 0x78,(byte) 0x80,(byte) 0x80,(byte) 0x78, -}; - -static final BitmapCharRec ch5 = new BitmapCharRec(7,9,0,2,8,ch5data); - -/* char: 0x4 */ - -static final byte[] ch4data = { -(byte) 0x10,(byte) 0x10,(byte) 0x1c,(byte) 0x10,(byte) 0x9e,(byte) 0x80,(byte) 0xe0,(byte) 0x80,(byte) 0xf0, -}; - -static final BitmapCharRec ch4 = new BitmapCharRec(7,9,0,2,8,ch4data); - -/* char: 0x3 */ - -static final byte[] ch3data = { -(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x3e,(byte) 0x88,(byte) 0x88,(byte) 0xf8,(byte) 0x88,(byte) 0x88, -}; - -static final BitmapCharRec ch3 = new BitmapCharRec(7,9,0,2,8,ch3data); - -/* char: 0x2 */ - -static final byte[] ch2data = { -(byte) 0x55,(byte) 0xaa,(byte) 0x55,(byte) 0xaa,(byte) 0x55,(byte) 0xaa,(byte) 0x55,(byte) 0xaa,(byte) 0x55,(byte) 0xaa,(byte) 0x55,(byte) 0xaa, -}; - -static final BitmapCharRec ch2 = new BitmapCharRec(8,12,0,2,8,ch2data); - -/* char: 0x1 */ - -static final byte[] ch1data = { -(byte) 0x10,(byte) 0x38,(byte) 0x7c,(byte) 0xfe,(byte) 0x7c,(byte) 0x38,(byte) 0x10, -}; - -static final BitmapCharRec ch1 = new BitmapCharRec(7,7,0,-1,8,ch1data); - -static final BitmapCharRec[] chars = { -ch0, -ch1, -ch2, -ch3, -ch4, -ch5, -ch6, -ch7, -ch8, -ch9, -ch10, -ch11, -ch12, -ch13, -ch14, -ch15, -ch16, -ch17, -ch18, -ch19, -ch20, -ch21, -ch22, -ch23, -ch24, -ch25, -ch26, -ch27, -ch28, -ch29, -ch30, -ch31, -ch32, -ch33, -ch34, -ch35, -ch36, -ch37, -ch38, -ch39, -ch40, -ch41, -ch42, -ch43, -ch44, -ch45, -ch46, -ch47, -ch48, -ch49, -ch50, -ch51, -ch52, -ch53, -ch54, -ch55, -ch56, -ch57, -ch58, -ch59, -ch60, -ch61, -ch62, -ch63, -ch64, -ch65, -ch66, -ch67, -ch68, -ch69, -ch70, -ch71, -ch72, -ch73, -ch74, -ch75, -ch76, -ch77, -ch78, -ch79, -ch80, -ch81, -ch82, -ch83, -ch84, -ch85, -ch86, -ch87, -ch88, -ch89, -ch90, -ch91, -ch92, -ch93, -ch94, -ch95, -ch96, -ch97, -ch98, -ch99, -ch100, -ch101, -ch102, -ch103, -ch104, -ch105, -ch106, -ch107, -ch108, -ch109, -ch110, -ch111, -ch112, -ch113, -ch114, -ch115, -ch116, -ch117, -ch118, -ch119, -ch120, -ch121, -ch122, -ch123, -ch124, -ch125, -ch126, -ch127, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -ch160, -ch161, -ch162, -ch163, -ch164, -ch165, -ch166, -ch167, -ch168, -ch169, -ch170, -ch171, -ch172, -ch173, -ch174, -ch175, -ch176, -ch177, -ch178, -ch179, -ch180, -ch181, -ch182, -ch183, -ch184, -ch185, -ch186, -ch187, -ch188, -ch189, -ch190, -ch191, -ch192, -ch193, -ch194, -ch195, -ch196, -ch197, -ch198, -ch199, -ch200, -ch201, -ch202, -ch203, -ch204, -ch205, -ch206, -ch207, -ch208, -ch209, -ch210, -ch211, -ch212, -ch213, -ch214, -ch215, -ch216, -ch217, -ch218, -ch219, -ch220, -ch221, -ch222, -ch223, -ch224, -ch225, -ch226, -ch227, -ch228, -ch229, -ch230, -ch231, -ch232, -ch233, -ch234, -ch235, -ch236, -ch237, -ch238, -ch239, -ch240, -ch241, -ch242, -ch243, -ch244, -ch245, -ch246, -ch247, -ch248, -ch249, -ch250, -ch251, -ch252, -ch253, -ch254, -ch255, -}; - - public static final BitmapFontRec glutBitmap8By13 = new BitmapFontRec("-misc-fixed-medium-r-normal--13-120-75-75-C-80-iso8859-1", - 256, - 0, - chars); -} diff --git a/src/jogl/classes/com/sun/opengl/util/gl2/GLUTBitmap9x15.java b/src/jogl/classes/com/sun/opengl/util/gl2/GLUTBitmap9x15.java deleted file mode 100644 index bba9a8fc5..000000000 --- a/src/jogl/classes/com/sun/opengl/util/gl2/GLUTBitmap9x15.java +++ /dev/null @@ -1,2079 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.gl2; - -class GLUTBitmap9x15 { - -/* GENERATED FILE -- DO NOT MODIFY */ - -static final BitmapCharRec ch0 = new BitmapCharRec(0,0,0,0,9,null); - -static final BitmapCharRec ch32 = new BitmapCharRec(0,0,0,0,9,null); - -static final BitmapCharRec ch127 = new BitmapCharRec(0,0,0,0,9,null); - -static final BitmapCharRec ch160 = new BitmapCharRec(0,0,0,0,9,null); - -/* char: 0xff */ - -static final byte[] ch255data = { -(byte) 0x78,(byte) 0x84,(byte) 0x4,(byte) 0x74,(byte) 0x8c,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x0,(byte) 0x0,(byte) 0x28,(byte) 0x28, -}; - -static final BitmapCharRec ch255 = new BitmapCharRec(6,14,-1,3,9,ch255data); - -/* char: 0xfe */ - -static final byte[] ch254data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xbc,(byte) 0xc2,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0xc2,(byte) 0xbc,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch254 = new BitmapCharRec(7,12,-1,3,9,ch254data); - -/* char: 0xfd */ - -static final byte[] ch253data = { -(byte) 0x78,(byte) 0x84,(byte) 0x4,(byte) 0x74,(byte) 0x8c,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x0,(byte) 0x0,(byte) 0x30,(byte) 0x8, -}; - -static final BitmapCharRec ch253 = new BitmapCharRec(6,14,-1,3,9,ch253data); - -/* char: 0xfc */ - -static final byte[] ch252data = { -(byte) 0x7a,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x0,(byte) 0x0,(byte) 0x28,(byte) 0x28, -}; - -static final BitmapCharRec ch252 = new BitmapCharRec(7,11,-1,0,9,ch252data); - -/* char: 0xfb */ - -static final byte[] ch251data = { -(byte) 0x7a,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x0,(byte) 0x0,(byte) 0x44,(byte) 0x38, -}; - -static final BitmapCharRec ch251 = new BitmapCharRec(7,11,-1,0,9,ch251data); - -/* char: 0xfa */ - -static final byte[] ch250data = { -(byte) 0x7a,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x0,(byte) 0x0,(byte) 0x30,(byte) 0x8, -}; - -static final BitmapCharRec ch250 = new BitmapCharRec(7,11,-1,0,9,ch250data); - -/* char: 0xf9 */ - -static final byte[] ch249data = { -(byte) 0x7a,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x0,(byte) 0x0,(byte) 0x18,(byte) 0x20, -}; - -static final BitmapCharRec ch249 = new BitmapCharRec(7,11,-1,0,9,ch249data); - -/* char: 0xf8 */ - -static final byte[] ch248data = { -(byte) 0x80,(byte) 0x7c,(byte) 0xa2,(byte) 0xa2,(byte) 0x92,(byte) 0x8a,(byte) 0x8a,(byte) 0x7c,(byte) 0x2, -}; - -static final BitmapCharRec ch248 = new BitmapCharRec(7,9,-1,1,9,ch248data); - -/* char: 0xf7 */ - -static final byte[] ch247data = { -(byte) 0x10,(byte) 0x38,(byte) 0x10,(byte) 0x0,(byte) 0xfe,(byte) 0x0,(byte) 0x10,(byte) 0x38,(byte) 0x10, -}; - -static final BitmapCharRec ch247 = new BitmapCharRec(7,9,-1,0,9,ch247data); - -/* char: 0xf6 */ - -static final byte[] ch246data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x0,(byte) 0x0,(byte) 0x28,(byte) 0x28, -}; - -static final BitmapCharRec ch246 = new BitmapCharRec(7,11,-1,0,9,ch246data); - -/* char: 0xf5 */ - -static final byte[] ch245data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x0,(byte) 0x0,(byte) 0x50,(byte) 0x28, -}; - -static final BitmapCharRec ch245 = new BitmapCharRec(7,11,-1,0,9,ch245data); - -/* char: 0xf4 */ - -static final byte[] ch244data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x0,(byte) 0x0,(byte) 0x44,(byte) 0x38, -}; - -static final BitmapCharRec ch244 = new BitmapCharRec(7,11,-1,0,9,ch244data); - -/* char: 0xf3 */ - -static final byte[] ch243data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x0,(byte) 0x0,(byte) 0x30,(byte) 0x8, -}; - -static final BitmapCharRec ch243 = new BitmapCharRec(7,11,-1,0,9,ch243data); - -/* char: 0xf2 */ - -static final byte[] ch242data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x0,(byte) 0x0,(byte) 0x18,(byte) 0x20, -}; - -static final BitmapCharRec ch242 = new BitmapCharRec(7,11,-1,0,9,ch242data); - -/* char: 0xf1 */ - -static final byte[] ch241data = { -(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0xc2,(byte) 0xbc,(byte) 0x0,(byte) 0x0,(byte) 0x50,(byte) 0x28, -}; - -static final BitmapCharRec ch241 = new BitmapCharRec(7,11,-1,0,9,ch241data); - -/* char: 0xf0 */ - -static final byte[] ch240data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x8,(byte) 0x50,(byte) 0x30,(byte) 0x48, -}; - -static final BitmapCharRec ch240 = new BitmapCharRec(7,11,-1,0,9,ch240data); - -/* char: 0xef */ - -static final byte[] ch239data = { -(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0xe0,(byte) 0x0,(byte) 0x0,(byte) 0x50,(byte) 0x50, -}; - -static final BitmapCharRec ch239 = new BitmapCharRec(5,11,-2,0,9,ch239data); - -/* char: 0xee */ - -static final byte[] ch238data = { -(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0xe0,(byte) 0x0,(byte) 0x0,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch238 = new BitmapCharRec(5,11,-2,0,9,ch238data); - -/* char: 0xed */ - -static final byte[] ch237data = { -(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0xe0,(byte) 0x0,(byte) 0x0,(byte) 0x60,(byte) 0x10, -}; - -static final BitmapCharRec ch237 = new BitmapCharRec(5,11,-2,0,9,ch237data); - -/* char: 0xec */ - -static final byte[] ch236data = { -(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0xe0,(byte) 0x0,(byte) 0x0,(byte) 0x30,(byte) 0x40, -}; - -static final BitmapCharRec ch236 = new BitmapCharRec(5,11,-2,0,9,ch236data); - -/* char: 0xeb */ - -static final byte[] ch235data = { -(byte) 0x7c,(byte) 0x80,(byte) 0x80,(byte) 0xfe,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x0,(byte) 0x0,(byte) 0x28,(byte) 0x28, -}; - -static final BitmapCharRec ch235 = new BitmapCharRec(7,11,-1,0,9,ch235data); - -/* char: 0xea */ - -static final byte[] ch234data = { -(byte) 0x7c,(byte) 0x80,(byte) 0x80,(byte) 0xfe,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x0,(byte) 0x0,(byte) 0x44,(byte) 0x38, -}; - -static final BitmapCharRec ch234 = new BitmapCharRec(7,11,-1,0,9,ch234data); - -/* char: 0xe9 */ - -static final byte[] ch233data = { -(byte) 0x7c,(byte) 0x80,(byte) 0x80,(byte) 0xfe,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x0,(byte) 0x0,(byte) 0x30,(byte) 0x8, -}; - -static final BitmapCharRec ch233 = new BitmapCharRec(7,11,-1,0,9,ch233data); - -/* char: 0xe8 */ - -static final byte[] ch232data = { -(byte) 0x7c,(byte) 0x80,(byte) 0x80,(byte) 0xfe,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x0,(byte) 0x0,(byte) 0x18,(byte) 0x20, -}; - -static final BitmapCharRec ch232 = new BitmapCharRec(7,11,-1,0,9,ch232data); - -/* char: 0xe7 */ - -static final byte[] ch231data = { -(byte) 0x30,(byte) 0x48,(byte) 0x18,(byte) 0x7c,(byte) 0x82,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x82,(byte) 0x7c, -}; - -static final BitmapCharRec ch231 = new BitmapCharRec(7,10,-1,3,9,ch231data); - -/* char: 0xe6 */ - -static final byte[] ch230data = { -(byte) 0x6e,(byte) 0x92,(byte) 0x90,(byte) 0x7c,(byte) 0x12,(byte) 0x92,(byte) 0x6c, -}; - -static final BitmapCharRec ch230 = new BitmapCharRec(7,7,-1,0,9,ch230data); - -/* char: 0xe5 */ - -static final byte[] ch229data = { -(byte) 0x7a,(byte) 0x86,(byte) 0x82,(byte) 0x7e,(byte) 0x2,(byte) 0x2,(byte) 0x7c,(byte) 0x0,(byte) 0x18,(byte) 0x24,(byte) 0x18, -}; - -static final BitmapCharRec ch229 = new BitmapCharRec(7,11,-1,0,9,ch229data); - -/* char: 0xe4 */ - -static final byte[] ch228data = { -(byte) 0x7a,(byte) 0x86,(byte) 0x82,(byte) 0x7e,(byte) 0x2,(byte) 0x2,(byte) 0x7c,(byte) 0x0,(byte) 0x0,(byte) 0x28,(byte) 0x28, -}; - -static final BitmapCharRec ch228 = new BitmapCharRec(7,11,-1,0,9,ch228data); - -/* char: 0xe3 */ - -static final byte[] ch227data = { -(byte) 0x7a,(byte) 0x86,(byte) 0x82,(byte) 0x7e,(byte) 0x2,(byte) 0x2,(byte) 0x7c,(byte) 0x0,(byte) 0x0,(byte) 0x50,(byte) 0x28, -}; - -static final BitmapCharRec ch227 = new BitmapCharRec(7,11,-1,0,9,ch227data); - -/* char: 0xe2 */ - -static final byte[] ch226data = { -(byte) 0x7a,(byte) 0x86,(byte) 0x82,(byte) 0x7e,(byte) 0x2,(byte) 0x2,(byte) 0x7c,(byte) 0x0,(byte) 0x0,(byte) 0x44,(byte) 0x38, -}; - -static final BitmapCharRec ch226 = new BitmapCharRec(7,11,-1,0,9,ch226data); - -/* char: 0xe1 */ - -static final byte[] ch225data = { -(byte) 0x7a,(byte) 0x86,(byte) 0x82,(byte) 0x7e,(byte) 0x2,(byte) 0x2,(byte) 0x7c,(byte) 0x0,(byte) 0x0,(byte) 0x30,(byte) 0x8, -}; - -static final BitmapCharRec ch225 = new BitmapCharRec(7,11,-1,0,9,ch225data); - -/* char: 0xe0 */ - -static final byte[] ch224data = { -(byte) 0x7a,(byte) 0x86,(byte) 0x82,(byte) 0x7e,(byte) 0x2,(byte) 0x2,(byte) 0x7c,(byte) 0x0,(byte) 0x0,(byte) 0x18,(byte) 0x20, -}; - -static final BitmapCharRec ch224 = new BitmapCharRec(7,11,-1,0,9,ch224data); - -/* char: 0xdf */ - -static final byte[] ch223data = { -(byte) 0x80,(byte) 0xbc,(byte) 0xc2,(byte) 0x82,(byte) 0x82,(byte) 0xfc,(byte) 0x82,(byte) 0x82,(byte) 0x7c, -}; - -static final BitmapCharRec ch223 = new BitmapCharRec(7,9,-1,1,9,ch223data); - -/* char: 0xde */ - -static final byte[] ch222data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xfc,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0xfc,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch222 = new BitmapCharRec(7,10,-1,0,9,ch222data); - -/* char: 0xdd */ - -static final byte[] ch221data = { -(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x28,(byte) 0x44,(byte) 0x82,(byte) 0x82,(byte) 0x0,(byte) 0x30,(byte) 0x8, -}; - -static final BitmapCharRec ch221 = new BitmapCharRec(7,11,-1,0,9,ch221data); - -/* char: 0xdc */ - -static final byte[] ch220data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x0,(byte) 0x28,(byte) 0x28, -}; - -static final BitmapCharRec ch220 = new BitmapCharRec(7,11,-1,0,9,ch220data); - -/* char: 0xdb */ - -static final byte[] ch219data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x0,(byte) 0x44,(byte) 0x38, -}; - -static final BitmapCharRec ch219 = new BitmapCharRec(7,11,-1,0,9,ch219data); - -/* char: 0xda */ - -static final byte[] ch218data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x0,(byte) 0x30,(byte) 0x8, -}; - -static final BitmapCharRec ch218 = new BitmapCharRec(7,11,-1,0,9,ch218data); - -/* char: 0xd9 */ - -static final byte[] ch217data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x0,(byte) 0x18,(byte) 0x20, -}; - -static final BitmapCharRec ch217 = new BitmapCharRec(7,11,-1,0,9,ch217data); - -/* char: 0xd8 */ - -static final byte[] ch216data = { -(byte) 0x80,(byte) 0x7c,(byte) 0xc2,(byte) 0xa2,(byte) 0xa2,(byte) 0x92,(byte) 0x92,(byte) 0x8a,(byte) 0x8a,(byte) 0x86,(byte) 0x7c,(byte) 0x2, -}; - -static final BitmapCharRec ch216 = new BitmapCharRec(7,12,-1,1,9,ch216data); - -/* char: 0xd7 */ - -static final byte[] ch215data = { -(byte) 0x82,(byte) 0x44,(byte) 0x28,(byte) 0x10,(byte) 0x28,(byte) 0x44,(byte) 0x82, -}; - -static final BitmapCharRec ch215 = new BitmapCharRec(7,7,-1,-1,9,ch215data); - -/* char: 0xd6 */ - -static final byte[] ch214data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x0,(byte) 0x28,(byte) 0x28, -}; - -static final BitmapCharRec ch214 = new BitmapCharRec(7,11,-1,0,9,ch214data); - -/* char: 0xd5 */ - -static final byte[] ch213data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x0,(byte) 0x50,(byte) 0x28, -}; - -static final BitmapCharRec ch213 = new BitmapCharRec(7,11,-1,0,9,ch213data); - -/* char: 0xd4 */ - -static final byte[] ch212data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x0,(byte) 0x44,(byte) 0x38, -}; - -static final BitmapCharRec ch212 = new BitmapCharRec(7,11,-1,0,9,ch212data); - -/* char: 0xd3 */ - -static final byte[] ch211data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x0,(byte) 0x30,(byte) 0x8, -}; - -static final BitmapCharRec ch211 = new BitmapCharRec(7,11,-1,0,9,ch211data); - -/* char: 0xd2 */ - -static final byte[] ch210data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x0,(byte) 0x18,(byte) 0x20, -}; - -static final BitmapCharRec ch210 = new BitmapCharRec(7,11,-1,0,9,ch210data); - -/* char: 0xd1 */ - -static final byte[] ch209data = { -(byte) 0x82,(byte) 0x86,(byte) 0x8a,(byte) 0x92,(byte) 0x92,(byte) 0xa2,(byte) 0xc2,(byte) 0x82,(byte) 0x0,(byte) 0x50,(byte) 0x28, -}; - -static final BitmapCharRec ch209 = new BitmapCharRec(7,11,-1,0,9,ch209data); - -/* char: 0xd0 */ - -static final byte[] ch208data = { -(byte) 0xfc,(byte) 0x42,(byte) 0x42,(byte) 0x42,(byte) 0x42,(byte) 0xf2,(byte) 0x42,(byte) 0x42,(byte) 0x42,(byte) 0xfc, -}; - -static final BitmapCharRec ch208 = new BitmapCharRec(7,10,-1,0,9,ch208data); - -/* char: 0xcf */ - -static final byte[] ch207data = { -(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0xf8,(byte) 0x0,(byte) 0x50,(byte) 0x50, -}; - -static final BitmapCharRec ch207 = new BitmapCharRec(5,11,-2,0,9,ch207data); - -/* char: 0xce */ - -static final byte[] ch206data = { -(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0xf8,(byte) 0x0,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch206 = new BitmapCharRec(5,11,-2,0,9,ch206data); - -/* char: 0xcd */ - -static final byte[] ch205data = { -(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0xf8,(byte) 0x0,(byte) 0x60,(byte) 0x10, -}; - -static final BitmapCharRec ch205 = new BitmapCharRec(5,11,-2,0,9,ch205data); - -/* char: 0xcc */ - -static final byte[] ch204data = { -(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0xf8,(byte) 0x0,(byte) 0x30,(byte) 0x40, -}; - -static final BitmapCharRec ch204 = new BitmapCharRec(5,11,-2,0,9,ch204data); - -/* char: 0xcb */ - -static final byte[] ch203data = { -(byte) 0xfe,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x78,(byte) 0x40,(byte) 0x40,(byte) 0xfe,(byte) 0x0,(byte) 0x28,(byte) 0x28, -}; - -static final BitmapCharRec ch203 = new BitmapCharRec(7,11,-1,0,9,ch203data); - -/* char: 0xca */ - -static final byte[] ch202data = { -(byte) 0xfe,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x78,(byte) 0x40,(byte) 0x40,(byte) 0xfe,(byte) 0x0,(byte) 0x44,(byte) 0x38, -}; - -static final BitmapCharRec ch202 = new BitmapCharRec(7,11,-1,0,9,ch202data); - -/* char: 0xc9 */ - -static final byte[] ch201data = { -(byte) 0xfe,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x78,(byte) 0x40,(byte) 0x40,(byte) 0xfe,(byte) 0x0,(byte) 0x30,(byte) 0x8, -}; - -static final BitmapCharRec ch201 = new BitmapCharRec(7,11,-1,0,9,ch201data); - -/* char: 0xc8 */ - -static final byte[] ch200data = { -(byte) 0xfe,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x78,(byte) 0x40,(byte) 0x40,(byte) 0xfe,(byte) 0x0,(byte) 0x18,(byte) 0x20, -}; - -static final BitmapCharRec ch200 = new BitmapCharRec(7,11,-1,0,9,ch200data); - -/* char: 0xc7 */ - -static final byte[] ch199data = { -(byte) 0x30,(byte) 0x48,(byte) 0x18,(byte) 0x7c,(byte) 0x82,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x82,(byte) 0x7c, -}; - -static final BitmapCharRec ch199 = new BitmapCharRec(7,13,-1,3,9,ch199data); - -/* char: 0xc6 */ - -static final byte[] ch198data = { -(byte) 0x9e,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0xfc,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x6e, -}; - -static final BitmapCharRec ch198 = new BitmapCharRec(7,10,-1,0,9,ch198data); - -/* char: 0xc5 */ - -static final byte[] ch197data = { -(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0xfe,(byte) 0x82,(byte) 0x82,(byte) 0x44,(byte) 0x38,(byte) 0x10,(byte) 0x28,(byte) 0x10, -}; - -static final BitmapCharRec ch197 = new BitmapCharRec(7,11,-1,0,9,ch197data); - -/* char: 0xc4 */ - -static final byte[] ch196data = { -(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0xfe,(byte) 0x82,(byte) 0x82,(byte) 0x44,(byte) 0x38,(byte) 0x0,(byte) 0x28,(byte) 0x28, -}; - -static final BitmapCharRec ch196 = new BitmapCharRec(7,11,-1,0,9,ch196data); - -/* char: 0xc3 */ - -static final byte[] ch195data = { -(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0xfe,(byte) 0x82,(byte) 0x82,(byte) 0x44,(byte) 0x38,(byte) 0x0,(byte) 0x50,(byte) 0x28, -}; - -static final BitmapCharRec ch195 = new BitmapCharRec(7,11,-1,0,9,ch195data); - -/* char: 0xc2 */ - -static final byte[] ch194data = { -(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0xfe,(byte) 0x82,(byte) 0x82,(byte) 0x44,(byte) 0x38,(byte) 0x0,(byte) 0x44,(byte) 0x38, -}; - -static final BitmapCharRec ch194 = new BitmapCharRec(7,11,-1,0,9,ch194data); - -/* char: 0xc1 */ - -static final byte[] ch193data = { -(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0xfe,(byte) 0x82,(byte) 0x82,(byte) 0x44,(byte) 0x38,(byte) 0x0,(byte) 0x30,(byte) 0x8, -}; - -static final BitmapCharRec ch193 = new BitmapCharRec(7,11,-1,0,9,ch193data); - -/* char: 0xc0 */ - -static final byte[] ch192data = { -(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0xfe,(byte) 0x82,(byte) 0x82,(byte) 0x44,(byte) 0x38,(byte) 0x0,(byte) 0x18,(byte) 0x20, -}; - -static final BitmapCharRec ch192 = new BitmapCharRec(7,11,-1,0,9,ch192data); - -/* char: 0xbf */ - -static final byte[] ch191data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x80,(byte) 0x40,(byte) 0x20,(byte) 0x10,(byte) 0x10,(byte) 0x0,(byte) 0x10, -}; - -static final BitmapCharRec ch191 = new BitmapCharRec(7,10,-1,0,9,ch191data); - -/* char: 0xbe */ - -static final byte[] ch190data = { -(byte) 0x6,(byte) 0x1a,(byte) 0x12,(byte) 0xa,(byte) 0x66,(byte) 0x92,(byte) 0x10,(byte) 0x20,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch190 = new BitmapCharRec(7,10,-1,0,9,ch190data); - -/* char: 0xbd */ - -static final byte[] ch189data = { -(byte) 0x1e,(byte) 0x10,(byte) 0xc,(byte) 0x2,(byte) 0xf2,(byte) 0x4c,(byte) 0x40,(byte) 0x40,(byte) 0xc0,(byte) 0x40, -}; - -static final BitmapCharRec ch189 = new BitmapCharRec(7,10,-1,0,9,ch189data); - -/* char: 0xbc */ - -static final byte[] ch188data = { -(byte) 0x6,(byte) 0x1a,(byte) 0x12,(byte) 0xa,(byte) 0xe6,(byte) 0x42,(byte) 0x40,(byte) 0x40,(byte) 0xc0,(byte) 0x40, -}; - -static final BitmapCharRec ch188 = new BitmapCharRec(7,10,-1,0,9,ch188data); - -/* char: 0xbb */ - -static final byte[] ch187data = { -(byte) 0x90,(byte) 0x48,(byte) 0x24,(byte) 0x12,(byte) 0x12,(byte) 0x24,(byte) 0x48,(byte) 0x90, -}; - -static final BitmapCharRec ch187 = new BitmapCharRec(7,8,-1,-1,9,ch187data); - -/* char: 0xba */ - -static final byte[] ch186data = { -(byte) 0xf8,(byte) 0x0,(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch186 = new BitmapCharRec(5,6,-1,-5,9,ch186data); - -/* char: 0xb9 */ - -static final byte[] ch185data = { -(byte) 0xe0,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xc0,(byte) 0x40, -}; - -static final BitmapCharRec ch185 = new BitmapCharRec(3,6,-1,-4,9,ch185data); - -/* char: 0xb8 */ - -static final byte[] ch184data = { -(byte) 0x60,(byte) 0x90,(byte) 0x30, -}; - -static final BitmapCharRec ch184 = new BitmapCharRec(4,3,-2,3,9,ch184data); - -/* char: 0xb7 */ - -static final byte[] ch183data = { -(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch183 = new BitmapCharRec(2,2,-4,-4,9,ch183data); - -/* char: 0xb6 */ - -static final byte[] ch182data = { -(byte) 0xa,(byte) 0xa,(byte) 0xa,(byte) 0xa,(byte) 0xa,(byte) 0x7a,(byte) 0x8a,(byte) 0x8a,(byte) 0x8a,(byte) 0x7e, -}; - -static final BitmapCharRec ch182 = new BitmapCharRec(7,10,-1,0,9,ch182data); - -/* char: 0xb5 */ - -static final byte[] ch181data = { -(byte) 0x80,(byte) 0x80,(byte) 0xba,(byte) 0xc6,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82, -}; - -static final BitmapCharRec ch181 = new BitmapCharRec(7,9,-1,2,9,ch181data); - -/* char: 0xb4 */ - -static final byte[] ch180data = { -(byte) 0xc0,(byte) 0x20, -}; - -static final BitmapCharRec ch180 = new BitmapCharRec(3,2,-3,-9,9,ch180data); - -/* char: 0xb3 */ - -static final byte[] ch179data = { -(byte) 0x60,(byte) 0x90,(byte) 0x10,(byte) 0x20,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch179 = new BitmapCharRec(4,6,-1,-4,9,ch179data); - -/* char: 0xb2 */ - -static final byte[] ch178data = { -(byte) 0xf0,(byte) 0x80,(byte) 0x60,(byte) 0x10,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch178 = new BitmapCharRec(4,6,-1,-4,9,ch178data); - -/* char: 0xb1 */ - -static final byte[] ch177data = { -(byte) 0xfe,(byte) 0x0,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0xfe,(byte) 0x10,(byte) 0x10,(byte) 0x10, -}; - -static final BitmapCharRec ch177 = new BitmapCharRec(7,9,-1,-1,9,ch177data); - -/* char: 0xb0 */ - -static final byte[] ch176data = { -(byte) 0x60,(byte) 0x90,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch176 = new BitmapCharRec(4,4,-3,-6,9,ch176data); - -/* char: 0xaf */ - -static final byte[] ch175data = { -(byte) 0xfc, -}; - -static final BitmapCharRec ch175 = new BitmapCharRec(6,1,-1,-9,9,ch175data); - -/* char: 0xae */ - -static final byte[] ch174data = { -(byte) 0x3c,(byte) 0x42,(byte) 0xa5,(byte) 0xa9,(byte) 0xbd,(byte) 0xa5,(byte) 0xb9,(byte) 0x42,(byte) 0x3c, -}; - -static final BitmapCharRec ch174 = new BitmapCharRec(8,9,0,-1,9,ch174data); - -/* char: 0xad */ - -static final byte[] ch173data = { -(byte) 0xfc, -}; - -static final BitmapCharRec ch173 = new BitmapCharRec(6,1,-1,-4,9,ch173data); - -/* char: 0xac */ - -static final byte[] ch172data = { -(byte) 0x4,(byte) 0x4,(byte) 0x4,(byte) 0xfc, -}; - -static final BitmapCharRec ch172 = new BitmapCharRec(6,4,-1,-2,9,ch172data); - -/* char: 0xab */ - -static final byte[] ch171data = { -(byte) 0x12,(byte) 0x24,(byte) 0x48,(byte) 0x90,(byte) 0x90,(byte) 0x48,(byte) 0x24,(byte) 0x12, -}; - -static final BitmapCharRec ch171 = new BitmapCharRec(7,8,-1,-1,9,ch171data); - -/* char: 0xaa */ - -static final byte[] ch170data = { -(byte) 0xf8,(byte) 0x0,(byte) 0x78,(byte) 0x90,(byte) 0x70,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch170 = new BitmapCharRec(5,7,-3,-3,9,ch170data); - -/* char: 0xa9 */ - -static final byte[] ch169data = { -(byte) 0x3c,(byte) 0x42,(byte) 0x99,(byte) 0xa5,(byte) 0xa1,(byte) 0xa5,(byte) 0x99,(byte) 0x42,(byte) 0x3c, -}; - -static final BitmapCharRec ch169 = new BitmapCharRec(8,9,0,-1,9,ch169data); - -/* char: 0xa8 */ - -static final byte[] ch168data = { -(byte) 0xa0,(byte) 0xa0, -}; - -static final BitmapCharRec ch168 = new BitmapCharRec(3,2,-3,-9,9,ch168data); - -/* char: 0xa7 */ - -static final byte[] ch167data = { -(byte) 0x70,(byte) 0x88,(byte) 0x8,(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x70,(byte) 0x80,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch167 = new BitmapCharRec(5,11,-2,1,9,ch167data); - -/* char: 0xa6 */ - -static final byte[] ch166data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x0,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch166 = new BitmapCharRec(1,11,-4,1,9,ch166data); - -/* char: 0xa5 */ - -static final byte[] ch165data = { -(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x7c,(byte) 0x10,(byte) 0x7c,(byte) 0x28,(byte) 0x44,(byte) 0x82,(byte) 0x82, -}; - -static final BitmapCharRec ch165 = new BitmapCharRec(7,10,-1,0,9,ch165data); - -/* char: 0xa4 */ - -static final byte[] ch164data = { -(byte) 0x82,(byte) 0x7c,(byte) 0x44,(byte) 0x44,(byte) 0x7c,(byte) 0x82, -}; - -static final BitmapCharRec ch164 = new BitmapCharRec(7,6,-1,-3,9,ch164data); - -/* char: 0xa3 */ - -static final byte[] ch163data = { -(byte) 0x5c,(byte) 0xa2,(byte) 0x60,(byte) 0x20,(byte) 0x20,(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x22,(byte) 0x1c, -}; - -static final BitmapCharRec ch163 = new BitmapCharRec(7,10,-1,0,9,ch163data); - -/* char: 0xa2 */ - -static final byte[] ch162data = { -(byte) 0x40,(byte) 0x78,(byte) 0xa4,(byte) 0xa0,(byte) 0x90,(byte) 0x94,(byte) 0x78,(byte) 0x8, -}; - -static final BitmapCharRec ch162 = new BitmapCharRec(6,8,-1,0,9,ch162data); - -/* char: 0xa1 */ - -static final byte[] ch161data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x0,(byte) 0x0,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch161 = new BitmapCharRec(1,11,-4,0,9,ch161data); - -/* char: 0x7e '~' */ - -static final byte[] ch126data = { -(byte) 0x8c,(byte) 0x92,(byte) 0x62, -}; - -static final BitmapCharRec ch126 = new BitmapCharRec(7,3,-1,-7,9,ch126data); - -/* char: 0x7d '}' */ - -static final byte[] ch125data = { -(byte) 0xe0,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x20,(byte) 0x18,(byte) 0x18,(byte) 0x20,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0xe0, -}; - -static final BitmapCharRec ch125 = new BitmapCharRec(5,12,-1,1,9,ch125data); - -/* char: 0x7c '|' */ - -static final byte[] ch124data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch124 = new BitmapCharRec(1,12,-4,1,9,ch124data); - -/* char: 0x7b '{' */ - -static final byte[] ch123data = { -(byte) 0x38,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x20,(byte) 0xc0,(byte) 0xc0,(byte) 0x20,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x38, -}; - -static final BitmapCharRec ch123 = new BitmapCharRec(5,12,-3,1,9,ch123data); - -/* char: 0x7a 'z' */ - -static final byte[] ch122data = { -(byte) 0xfe,(byte) 0x40,(byte) 0x20,(byte) 0x10,(byte) 0x8,(byte) 0x4,(byte) 0xfe, -}; - -static final BitmapCharRec ch122 = new BitmapCharRec(7,7,-1,0,9,ch122data); - -/* char: 0x79 'y' */ - -static final byte[] ch121data = { -(byte) 0x78,(byte) 0x84,(byte) 0x4,(byte) 0x74,(byte) 0x8c,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84, -}; - -static final BitmapCharRec ch121 = new BitmapCharRec(6,10,-1,3,9,ch121data); - -/* char: 0x78 'x' */ - -static final byte[] ch120data = { -(byte) 0x82,(byte) 0x44,(byte) 0x28,(byte) 0x10,(byte) 0x28,(byte) 0x44,(byte) 0x82, -}; - -static final BitmapCharRec ch120 = new BitmapCharRec(7,7,-1,0,9,ch120data); - -/* char: 0x77 'w' */ - -static final byte[] ch119data = { -(byte) 0x44,(byte) 0xaa,(byte) 0x92,(byte) 0x92,(byte) 0x92,(byte) 0x82,(byte) 0x82, -}; - -static final BitmapCharRec ch119 = new BitmapCharRec(7,7,-1,0,9,ch119data); - -/* char: 0x76 'v' */ - -static final byte[] ch118data = { -(byte) 0x10,(byte) 0x28,(byte) 0x28,(byte) 0x44,(byte) 0x44,(byte) 0x82,(byte) 0x82, -}; - -static final BitmapCharRec ch118 = new BitmapCharRec(7,7,-1,0,9,ch118data); - -/* char: 0x75 'u' */ - -static final byte[] ch117data = { -(byte) 0x7a,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84, -}; - -static final BitmapCharRec ch117 = new BitmapCharRec(7,7,-1,0,9,ch117data); - -/* char: 0x74 't' */ - -static final byte[] ch116data = { -(byte) 0x1c,(byte) 0x22,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0xfc,(byte) 0x20,(byte) 0x20, -}; - -static final BitmapCharRec ch116 = new BitmapCharRec(7,9,-1,0,9,ch116data); - -/* char: 0x73 's' */ - -static final byte[] ch115data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x2,(byte) 0x7c,(byte) 0x80,(byte) 0x82,(byte) 0x7c, -}; - -static final BitmapCharRec ch115 = new BitmapCharRec(7,7,-1,0,9,ch115data); - -/* char: 0x72 'r' */ - -static final byte[] ch114data = { -(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x42,(byte) 0x62,(byte) 0x9c, -}; - -static final BitmapCharRec ch114 = new BitmapCharRec(7,7,-1,0,9,ch114data); - -/* char: 0x71 'q' */ - -static final byte[] ch113data = { -(byte) 0x2,(byte) 0x2,(byte) 0x2,(byte) 0x7a,(byte) 0x86,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x86,(byte) 0x7a, -}; - -static final BitmapCharRec ch113 = new BitmapCharRec(7,10,-1,3,9,ch113data); - -/* char: 0x70 'p' */ - -static final byte[] ch112data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xbc,(byte) 0xc2,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0xc2,(byte) 0xbc, -}; - -static final BitmapCharRec ch112 = new BitmapCharRec(7,10,-1,3,9,ch112data); - -/* char: 0x6f 'o' */ - -static final byte[] ch111data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c, -}; - -static final BitmapCharRec ch111 = new BitmapCharRec(7,7,-1,0,9,ch111data); - -/* char: 0x6e 'n' */ - -static final byte[] ch110data = { -(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0xc2,(byte) 0xbc, -}; - -static final BitmapCharRec ch110 = new BitmapCharRec(7,7,-1,0,9,ch110data); - -/* char: 0x6d 'm' */ - -static final byte[] ch109data = { -(byte) 0x82,(byte) 0x92,(byte) 0x92,(byte) 0x92,(byte) 0x92,(byte) 0x92,(byte) 0xec, -}; - -static final BitmapCharRec ch109 = new BitmapCharRec(7,7,-1,0,9,ch109data); - -/* char: 0x6c 'l' */ - -static final byte[] ch108data = { -(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0xe0, -}; - -static final BitmapCharRec ch108 = new BitmapCharRec(5,10,-2,0,9,ch108data); - -/* char: 0x6b 'k' */ - -static final byte[] ch107data = { -(byte) 0x82,(byte) 0x8c,(byte) 0xb0,(byte) 0xc0,(byte) 0xb0,(byte) 0x8c,(byte) 0x82,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch107 = new BitmapCharRec(7,10,-1,0,9,ch107data); - -/* char: 0x6a 'j' */ - -static final byte[] ch106data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x4,(byte) 0x4,(byte) 0x4,(byte) 0x4,(byte) 0x4,(byte) 0x1c,(byte) 0x0,(byte) 0x0,(byte) 0xc, -}; - -static final BitmapCharRec ch106 = new BitmapCharRec(6,13,-1,3,9,ch106data); - -/* char: 0x69 'i' */ - -static final byte[] ch105data = { -(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0xe0,(byte) 0x0,(byte) 0x0,(byte) 0x60, -}; - -static final BitmapCharRec ch105 = new BitmapCharRec(5,10,-2,0,9,ch105data); - -/* char: 0x68 'h' */ - -static final byte[] ch104data = { -(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0xc2,(byte) 0xbc,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch104 = new BitmapCharRec(7,10,-1,0,9,ch104data); - -/* char: 0x67 'g' */ - -static final byte[] ch103data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x80,(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x7a, -}; - -static final BitmapCharRec ch103 = new BitmapCharRec(7,10,-1,3,9,ch103data); - -/* char: 0x66 'f' */ - -static final byte[] ch102data = { -(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x22,(byte) 0x22,(byte) 0x1c, -}; - -static final BitmapCharRec ch102 = new BitmapCharRec(7,10,-1,0,9,ch102data); - -/* char: 0x65 'e' */ - -static final byte[] ch101data = { -(byte) 0x7c,(byte) 0x80,(byte) 0x80,(byte) 0xfe,(byte) 0x82,(byte) 0x82,(byte) 0x7c, -}; - -static final BitmapCharRec ch101 = new BitmapCharRec(7,7,-1,0,9,ch101data); - -/* char: 0x64 'd' */ - -static final byte[] ch100data = { -(byte) 0x7a,(byte) 0x86,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x86,(byte) 0x7a,(byte) 0x2,(byte) 0x2,(byte) 0x2, -}; - -static final BitmapCharRec ch100 = new BitmapCharRec(7,10,-1,0,9,ch100data); - -/* char: 0x63 'c' */ - -static final byte[] ch99data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x82,(byte) 0x7c, -}; - -static final BitmapCharRec ch99 = new BitmapCharRec(7,7,-1,0,9,ch99data); - -/* char: 0x62 'b' */ - -static final byte[] ch98data = { -(byte) 0xbc,(byte) 0xc2,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0xc2,(byte) 0xbc,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch98 = new BitmapCharRec(7,10,-1,0,9,ch98data); - -/* char: 0x61 'a' */ - -static final byte[] ch97data = { -(byte) 0x7a,(byte) 0x86,(byte) 0x82,(byte) 0x7e,(byte) 0x2,(byte) 0x2,(byte) 0x7c, -}; - -static final BitmapCharRec ch97 = new BitmapCharRec(7,7,-1,0,9,ch97data); - -/* char: 0x60 '`' */ - -static final byte[] ch96data = { -(byte) 0x10,(byte) 0x20,(byte) 0x40,(byte) 0xc0, -}; - -static final BitmapCharRec ch96 = new BitmapCharRec(4,4,-3,-6,9,ch96data); - -/* char: 0x5f '_' */ - -static final byte[] ch95data = { -(byte) 0xff, -}; - -static final BitmapCharRec ch95 = new BitmapCharRec(8,1,0,1,9,ch95data); - -/* char: 0x5e '^' */ - -static final byte[] ch94data = { -(byte) 0x82,(byte) 0x44,(byte) 0x28,(byte) 0x10, -}; - -static final BitmapCharRec ch94 = new BitmapCharRec(7,4,-1,-6,9,ch94data); - -/* char: 0x5d ']' */ - -static final byte[] ch93data = { -(byte) 0xf0,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0xf0, -}; - -static final BitmapCharRec ch93 = new BitmapCharRec(4,12,-2,1,9,ch93data); - -/* char: 0x5c '\' */ - -static final byte[] ch92data = { -(byte) 0x2,(byte) 0x4,(byte) 0x4,(byte) 0x8,(byte) 0x10,(byte) 0x10,(byte) 0x20,(byte) 0x40,(byte) 0x40,(byte) 0x80, -}; - -static final BitmapCharRec ch92 = new BitmapCharRec(7,10,-1,0,9,ch92data); - -/* char: 0x5b '[' */ - -static final byte[] ch91data = { -(byte) 0xf0,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xf0, -}; - -static final BitmapCharRec ch91 = new BitmapCharRec(4,12,-3,1,9,ch91data); - -/* char: 0x5a 'Z' */ - -static final byte[] ch90data = { -(byte) 0xfe,(byte) 0x80,(byte) 0x80,(byte) 0x40,(byte) 0x20,(byte) 0x10,(byte) 0x8,(byte) 0x4,(byte) 0x2,(byte) 0xfe, -}; - -static final BitmapCharRec ch90 = new BitmapCharRec(7,10,-1,0,9,ch90data); - -/* char: 0x59 'Y' */ - -static final byte[] ch89data = { -(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x28,(byte) 0x44,(byte) 0x82,(byte) 0x82, -}; - -static final BitmapCharRec ch89 = new BitmapCharRec(7,10,-1,0,9,ch89data); - -/* char: 0x58 'X' */ - -static final byte[] ch88data = { -(byte) 0x82,(byte) 0x82,(byte) 0x44,(byte) 0x28,(byte) 0x10,(byte) 0x10,(byte) 0x28,(byte) 0x44,(byte) 0x82,(byte) 0x82, -}; - -static final BitmapCharRec ch88 = new BitmapCharRec(7,10,-1,0,9,ch88data); - -/* char: 0x57 'W' */ - -static final byte[] ch87data = { -(byte) 0x44,(byte) 0xaa,(byte) 0x92,(byte) 0x92,(byte) 0x92,(byte) 0x92,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82, -}; - -static final BitmapCharRec ch87 = new BitmapCharRec(7,10,-1,0,9,ch87data); - -/* char: 0x56 'V' */ - -static final byte[] ch86data = { -(byte) 0x10,(byte) 0x28,(byte) 0x28,(byte) 0x28,(byte) 0x44,(byte) 0x44,(byte) 0x44,(byte) 0x82,(byte) 0x82,(byte) 0x82, -}; - -static final BitmapCharRec ch86 = new BitmapCharRec(7,10,-1,0,9,ch86data); - -/* char: 0x55 'U' */ - -static final byte[] ch85data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82, -}; - -static final BitmapCharRec ch85 = new BitmapCharRec(7,10,-1,0,9,ch85data); - -/* char: 0x54 'T' */ - -static final byte[] ch84data = { -(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0xfe, -}; - -static final BitmapCharRec ch84 = new BitmapCharRec(7,10,-1,0,9,ch84data); - -/* char: 0x53 'S' */ - -static final byte[] ch83data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x2,(byte) 0xc,(byte) 0x70,(byte) 0x80,(byte) 0x82,(byte) 0x82,(byte) 0x7c, -}; - -static final BitmapCharRec ch83 = new BitmapCharRec(7,10,-1,0,9,ch83data); - -/* char: 0x52 'R' */ - -static final byte[] ch82data = { -(byte) 0x82,(byte) 0x82,(byte) 0x84,(byte) 0x88,(byte) 0x90,(byte) 0xfc,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0xfc, -}; - -static final BitmapCharRec ch82 = new BitmapCharRec(7,10,-1,0,9,ch82data); - -/* char: 0x51 'Q' */ - -static final byte[] ch81data = { -(byte) 0x6,(byte) 0x8,(byte) 0x7c,(byte) 0x92,(byte) 0xa2,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c, -}; - -static final BitmapCharRec ch81 = new BitmapCharRec(7,12,-1,2,9,ch81data); - -/* char: 0x50 'P' */ - -static final byte[] ch80data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xfc,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0xfc, -}; - -static final BitmapCharRec ch80 = new BitmapCharRec(7,10,-1,0,9,ch80data); - -/* char: 0x4f 'O' */ - -static final byte[] ch79data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c, -}; - -static final BitmapCharRec ch79 = new BitmapCharRec(7,10,-1,0,9,ch79data); - -/* char: 0x4e 'N' */ - -static final byte[] ch78data = { -(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x86,(byte) 0x8a,(byte) 0x92,(byte) 0xa2,(byte) 0xc2,(byte) 0x82,(byte) 0x82, -}; - -static final BitmapCharRec ch78 = new BitmapCharRec(7,10,-1,0,9,ch78data); - -/* char: 0x4d 'M' */ - -static final byte[] ch77data = { -(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x92,(byte) 0x92,(byte) 0xaa,(byte) 0xaa,(byte) 0xc6,(byte) 0x82,(byte) 0x82, -}; - -static final BitmapCharRec ch77 = new BitmapCharRec(7,10,-1,0,9,ch77data); - -/* char: 0x4c 'L' */ - -static final byte[] ch76data = { -(byte) 0xfe,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch76 = new BitmapCharRec(7,10,-1,0,9,ch76data); - -/* char: 0x4b 'K' */ - -static final byte[] ch75data = { -(byte) 0x82,(byte) 0x84,(byte) 0x88,(byte) 0x90,(byte) 0xa0,(byte) 0xe0,(byte) 0x90,(byte) 0x88,(byte) 0x84,(byte) 0x82, -}; - -static final BitmapCharRec ch75 = new BitmapCharRec(7,10,-1,0,9,ch75data); - -/* char: 0x4a 'J' */ - -static final byte[] ch74data = { -(byte) 0x78,(byte) 0x84,(byte) 0x4,(byte) 0x4,(byte) 0x4,(byte) 0x4,(byte) 0x4,(byte) 0x4,(byte) 0x4,(byte) 0x1e, -}; - -static final BitmapCharRec ch74 = new BitmapCharRec(7,10,-1,0,9,ch74data); - -/* char: 0x49 'I' */ - -static final byte[] ch73data = { -(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0xf8, -}; - -static final BitmapCharRec ch73 = new BitmapCharRec(5,10,-2,0,9,ch73data); - -/* char: 0x48 'H' */ - -static final byte[] ch72data = { -(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0xfe,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82, -}; - -static final BitmapCharRec ch72 = new BitmapCharRec(7,10,-1,0,9,ch72data); - -/* char: 0x47 'G' */ - -static final byte[] ch71data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x8e,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x82,(byte) 0x7c, -}; - -static final BitmapCharRec ch71 = new BitmapCharRec(7,10,-1,0,9,ch71data); - -/* char: 0x46 'F' */ - -static final byte[] ch70data = { -(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x78,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xfe, -}; - -static final BitmapCharRec ch70 = new BitmapCharRec(7,10,-1,0,9,ch70data); - -/* char: 0x45 'E' */ - -static final byte[] ch69data = { -(byte) 0xfe,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x78,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xfe, -}; - -static final BitmapCharRec ch69 = new BitmapCharRec(7,10,-1,0,9,ch69data); - -/* char: 0x44 'D' */ - -static final byte[] ch68data = { -(byte) 0xfc,(byte) 0x42,(byte) 0x42,(byte) 0x42,(byte) 0x42,(byte) 0x42,(byte) 0x42,(byte) 0x42,(byte) 0x42,(byte) 0xfc, -}; - -static final BitmapCharRec ch68 = new BitmapCharRec(7,10,-1,0,9,ch68data); - -/* char: 0x43 'C' */ - -static final byte[] ch67data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x82,(byte) 0x7c, -}; - -static final BitmapCharRec ch67 = new BitmapCharRec(7,10,-1,0,9,ch67data); - -/* char: 0x42 'B' */ - -static final byte[] ch66data = { -(byte) 0xfc,(byte) 0x42,(byte) 0x42,(byte) 0x42,(byte) 0x42,(byte) 0x7c,(byte) 0x42,(byte) 0x42,(byte) 0x42,(byte) 0xfc, -}; - -static final BitmapCharRec ch66 = new BitmapCharRec(7,10,-1,0,9,ch66data); - -/* char: 0x41 'A' */ - -static final byte[] ch65data = { -(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0xfe,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x44,(byte) 0x28,(byte) 0x10, -}; - -static final BitmapCharRec ch65 = new BitmapCharRec(7,10,-1,0,9,ch65data); - -/* char: 0x40 '@' */ - -static final byte[] ch64data = { -(byte) 0x7c,(byte) 0x80,(byte) 0x80,(byte) 0x9a,(byte) 0xa6,(byte) 0xa2,(byte) 0x9e,(byte) 0x82,(byte) 0x82,(byte) 0x7c, -}; - -static final BitmapCharRec ch64 = new BitmapCharRec(7,10,-1,0,9,ch64data); - -/* char: 0x3f '?' */ - -static final byte[] ch63data = { -(byte) 0x10,(byte) 0x0,(byte) 0x10,(byte) 0x10,(byte) 0x8,(byte) 0x4,(byte) 0x2,(byte) 0x82,(byte) 0x82,(byte) 0x7c, -}; - -static final BitmapCharRec ch63 = new BitmapCharRec(7,10,-1,0,9,ch63data); - -/* char: 0x3e '>' */ - -static final byte[] ch62data = { -(byte) 0x80,(byte) 0x40,(byte) 0x20,(byte) 0x10,(byte) 0x8,(byte) 0x8,(byte) 0x10,(byte) 0x20,(byte) 0x40,(byte) 0x80, -}; - -static final BitmapCharRec ch62 = new BitmapCharRec(5,10,-2,0,9,ch62data); - -/* char: 0x3d '=' */ - -static final byte[] ch61data = { -(byte) 0xfe,(byte) 0x0,(byte) 0x0,(byte) 0xfe, -}; - -static final BitmapCharRec ch61 = new BitmapCharRec(7,4,-1,-2,9,ch61data); - -/* char: 0x3c '<' */ - -static final byte[] ch60data = { -(byte) 0x8,(byte) 0x10,(byte) 0x20,(byte) 0x40,(byte) 0x80,(byte) 0x80,(byte) 0x40,(byte) 0x20,(byte) 0x10,(byte) 0x8, -}; - -static final BitmapCharRec ch60 = new BitmapCharRec(5,10,-2,0,9,ch60data); - -/* char: 0x3b ';' */ - -static final byte[] ch59data = { -(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0xc0,(byte) 0xc0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch59 = new BitmapCharRec(2,10,-4,3,9,ch59data); - -/* char: 0x3a ':' */ - -static final byte[] ch58data = { -(byte) 0xc0,(byte) 0xc0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch58 = new BitmapCharRec(2,7,-4,0,9,ch58data); - -/* char: 0x39 '9' */ - -static final byte[] ch57data = { -(byte) 0x78,(byte) 0x4,(byte) 0x2,(byte) 0x2,(byte) 0x7a,(byte) 0x86,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c, -}; - -static final BitmapCharRec ch57 = new BitmapCharRec(7,10,-1,0,9,ch57data); - -/* char: 0x38 '8' */ - -static final byte[] ch56data = { -(byte) 0x38,(byte) 0x44,(byte) 0x82,(byte) 0x82,(byte) 0x44,(byte) 0x38,(byte) 0x44,(byte) 0x82,(byte) 0x44,(byte) 0x38, -}; - -static final BitmapCharRec ch56 = new BitmapCharRec(7,10,-1,0,9,ch56data); - -/* char: 0x37 '7' */ - -static final byte[] ch55data = { -(byte) 0x40,(byte) 0x40,(byte) 0x20,(byte) 0x20,(byte) 0x10,(byte) 0x8,(byte) 0x4,(byte) 0x2,(byte) 0x2,(byte) 0xfe, -}; - -static final BitmapCharRec ch55 = new BitmapCharRec(7,10,-1,0,9,ch55data); - -/* char: 0x36 '6' */ - -static final byte[] ch54data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0xc2,(byte) 0xbc,(byte) 0x80,(byte) 0x80,(byte) 0x40,(byte) 0x3c, -}; - -static final BitmapCharRec ch54 = new BitmapCharRec(7,10,-1,0,9,ch54data); - -/* char: 0x35 '5' */ - -static final byte[] ch53data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x2,(byte) 0x2,(byte) 0x2,(byte) 0xc2,(byte) 0xbc,(byte) 0x80,(byte) 0x80,(byte) 0xfe, -}; - -static final BitmapCharRec ch53 = new BitmapCharRec(7,10,-1,0,9,ch53data); - -/* char: 0x34 '4' */ - -static final byte[] ch52data = { -(byte) 0x4,(byte) 0x4,(byte) 0x4,(byte) 0xfe,(byte) 0x84,(byte) 0x44,(byte) 0x24,(byte) 0x14,(byte) 0xc,(byte) 0x4, -}; - -static final BitmapCharRec ch52 = new BitmapCharRec(7,10,-1,0,9,ch52data); - -/* char: 0x33 '3' */ - -static final byte[] ch51data = { -(byte) 0x7c,(byte) 0x82,(byte) 0x2,(byte) 0x2,(byte) 0x2,(byte) 0x1c,(byte) 0x8,(byte) 0x4,(byte) 0x2,(byte) 0xfe, -}; - -static final BitmapCharRec ch51 = new BitmapCharRec(7,10,-1,0,9,ch51data); - -/* char: 0x32 '2' */ - -static final byte[] ch50data = { -(byte) 0xfe,(byte) 0x80,(byte) 0x40,(byte) 0x30,(byte) 0x8,(byte) 0x4,(byte) 0x2,(byte) 0x82,(byte) 0x82,(byte) 0x7c, -}; - -static final BitmapCharRec ch50 = new BitmapCharRec(7,10,-1,0,9,ch50data); - -/* char: 0x31 '1' */ - -static final byte[] ch49data = { -(byte) 0xfe,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x90,(byte) 0x50,(byte) 0x30,(byte) 0x10, -}; - -static final BitmapCharRec ch49 = new BitmapCharRec(7,10,-1,0,9,ch49data); - -/* char: 0x30 '0' */ - -static final byte[] ch48data = { -(byte) 0x38,(byte) 0x44,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x44,(byte) 0x38, -}; - -static final BitmapCharRec ch48 = new BitmapCharRec(7,10,-1,0,9,ch48data); - -/* char: 0x2f '/' */ - -static final byte[] ch47data = { -(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x20,(byte) 0x10,(byte) 0x10,(byte) 0x8,(byte) 0x4,(byte) 0x4,(byte) 0x2, -}; - -static final BitmapCharRec ch47 = new BitmapCharRec(7,10,-1,0,9,ch47data); - -/* char: 0x2e '.' */ - -static final byte[] ch46data = { -(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch46 = new BitmapCharRec(2,2,-4,0,9,ch46data); - -/* char: 0x2d '-' */ - -static final byte[] ch45data = { -(byte) 0xfe, -}; - -static final BitmapCharRec ch45 = new BitmapCharRec(7,1,-1,-4,9,ch45data); - -/* char: 0x2c ',' */ - -static final byte[] ch44data = { -(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch44 = new BitmapCharRec(2,5,-4,3,9,ch44data); - -/* char: 0x2b '+' */ - -static final byte[] ch43data = { -(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0xfe,(byte) 0x10,(byte) 0x10,(byte) 0x10, -}; - -static final BitmapCharRec ch43 = new BitmapCharRec(7,7,-1,-1,9,ch43data); - -/* char: 0x2a '*' */ - -static final byte[] ch42data = { -(byte) 0x10,(byte) 0x92,(byte) 0x54,(byte) 0x38,(byte) 0x54,(byte) 0x92,(byte) 0x10, -}; - -static final BitmapCharRec ch42 = new BitmapCharRec(7,7,-1,-1,9,ch42data); - -/* char: 0x29 ')' */ - -static final byte[] ch41data = { -(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x40,(byte) 0x40,(byte) 0x80, -}; - -static final BitmapCharRec ch41 = new BitmapCharRec(3,12,-3,1,9,ch41data); - -/* char: 0x28 '(' */ - -static final byte[] ch40data = { -(byte) 0x20,(byte) 0x40,(byte) 0x40,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x20, -}; - -static final BitmapCharRec ch40 = new BitmapCharRec(3,12,-3,1,9,ch40data); - -/* char: 0x27 ''' */ - -static final byte[] ch39data = { -(byte) 0x80,(byte) 0x40,(byte) 0x20,(byte) 0x30, -}; - -static final BitmapCharRec ch39 = new BitmapCharRec(4,4,-3,-6,9,ch39data); - -/* char: 0x26 '&' */ - -static final byte[] ch38data = { -(byte) 0x62,(byte) 0x94,(byte) 0x88,(byte) 0x94,(byte) 0x62,(byte) 0x60,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch38 = new BitmapCharRec(7,10,-1,0,9,ch38data); - -/* char: 0x25 '%' */ - -static final byte[] ch37data = { -(byte) 0x84,(byte) 0x4a,(byte) 0x4a,(byte) 0x24,(byte) 0x10,(byte) 0x10,(byte) 0x48,(byte) 0xa4,(byte) 0xa4,(byte) 0x42, -}; - -static final BitmapCharRec ch37 = new BitmapCharRec(7,10,-1,0,9,ch37data); - -/* char: 0x24 '$' */ - -static final byte[] ch36data = { -(byte) 0x10,(byte) 0x7c,(byte) 0x92,(byte) 0x12,(byte) 0x12,(byte) 0x14,(byte) 0x38,(byte) 0x50,(byte) 0x90,(byte) 0x92,(byte) 0x7c,(byte) 0x10, -}; - -static final BitmapCharRec ch36 = new BitmapCharRec(7,12,-1,1,9,ch36data); - -/* char: 0x23 '#' */ - -static final byte[] ch35data = { -(byte) 0x48,(byte) 0x48,(byte) 0xfc,(byte) 0x48,(byte) 0x48,(byte) 0xfc,(byte) 0x48,(byte) 0x48, -}; - -static final BitmapCharRec ch35 = new BitmapCharRec(6,8,-1,-1,9,ch35data); - -/* char: 0x22 '"' */ - -static final byte[] ch34data = { -(byte) 0x90,(byte) 0x90,(byte) 0x90, -}; - -static final BitmapCharRec ch34 = new BitmapCharRec(4,3,-3,-7,9,ch34data); - -/* char: 0x21 '!' */ - -static final byte[] ch33data = { -(byte) 0x80,(byte) 0x80,(byte) 0x0,(byte) 0x0,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch33 = new BitmapCharRec(1,11,-4,0,9,ch33data); - -/* char: 0x1f */ - -static final byte[] ch31data = { -(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch31 = new BitmapCharRec(2,2,-4,-2,9,ch31data); - -/* char: 0x1e */ - -static final byte[] ch30data = { -(byte) 0x5c,(byte) 0xa2,(byte) 0x60,(byte) 0x20,(byte) 0x20,(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x22,(byte) 0x1c, -}; - -static final BitmapCharRec ch30 = new BitmapCharRec(7,10,-1,0,9,ch30data); - -/* char: 0x1d */ - -static final byte[] ch29data = { -(byte) 0x80,(byte) 0x40,(byte) 0xfe,(byte) 0x10,(byte) 0xfe,(byte) 0x4,(byte) 0x2, -}; - -static final BitmapCharRec ch29 = new BitmapCharRec(7,7,-1,0,9,ch29data); - -/* char: 0x1c */ - -static final byte[] ch28data = { -(byte) 0x44,(byte) 0x24,(byte) 0x24,(byte) 0x24,(byte) 0x24,(byte) 0x24,(byte) 0xfe, -}; - -static final BitmapCharRec ch28 = new BitmapCharRec(7,7,-1,0,9,ch28data); - -/* char: 0x1b */ - -static final byte[] ch27data = { -(byte) 0xfe,(byte) 0x0,(byte) 0x80,(byte) 0x40,(byte) 0x20,(byte) 0x10,(byte) 0x8,(byte) 0x8,(byte) 0x10,(byte) 0x20,(byte) 0x40,(byte) 0x80, -}; - -static final BitmapCharRec ch27 = new BitmapCharRec(7,12,-1,2,9,ch27data); - -/* char: 0x1a */ - -static final byte[] ch26data = { -(byte) 0xfc,(byte) 0x0,(byte) 0x4,(byte) 0x8,(byte) 0x10,(byte) 0x20,(byte) 0x40,(byte) 0x40,(byte) 0x20,(byte) 0x10,(byte) 0x8,(byte) 0x4, -}; - -static final BitmapCharRec ch26 = new BitmapCharRec(6,12,-2,2,9,ch26data); - -/* char: 0x19 */ - -static final byte[] ch25data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch25 = new BitmapCharRec(1,15,-4,3,9,ch25data); - -/* char: 0x18 */ - -static final byte[] ch24data = { -(byte) 0x8,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0xff,(byte) 0x80, -}; - -static final BitmapCharRec ch24 = new BitmapCharRec(9,7,0,3,9,ch24data); - -/* char: 0x17 */ - -static final byte[] ch23data = { -(byte) 0xff,(byte) 0x80,(byte) 0x8,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0x8,(byte) 0x0, -(byte) 0x8,(byte) 0x0, -}; - -static final BitmapCharRec ch23 = new BitmapCharRec(9,9,0,-3,9,ch23data); - -/* char: 0x16 */ - -static final byte[] ch22data = { -(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0xf8,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x8, -}; - -static final BitmapCharRec ch22 = new BitmapCharRec(5,15,0,3,9,ch22data); - -/* char: 0x15 */ - -static final byte[] ch21data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xf8,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch21 = new BitmapCharRec(5,15,-4,3,9,ch21data); - -/* char: 0x14 */ - -static final byte[] ch20data = { -(byte) 0xff,(byte) 0x80, -}; - -static final BitmapCharRec ch20 = new BitmapCharRec(9,1,0,1,9,ch20data); - -/* char: 0x13 */ - -static final byte[] ch19data = { -(byte) 0xff,(byte) 0x80, -}; - -static final BitmapCharRec ch19 = new BitmapCharRec(9,1,0,-1,9,ch19data); - -/* char: 0x12 */ - -static final byte[] ch18data = { -(byte) 0xff,(byte) 0x80, -}; - -static final BitmapCharRec ch18 = new BitmapCharRec(9,1,0,-3,9,ch18data); - -/* char: 0x11 */ - -static final byte[] ch17data = { -(byte) 0xff,(byte) 0x80, -}; - -static final BitmapCharRec ch17 = new BitmapCharRec(9,1,0,-5,9,ch17data); - -/* char: 0x10 */ - -static final byte[] ch16data = { -(byte) 0xff,(byte) 0x80, -}; - -static final BitmapCharRec ch16 = new BitmapCharRec(9,1,0,-7,9,ch16data); - -/* char: 0xf */ - -static final byte[] ch15data = { -(byte) 0x8,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0xff,(byte) 0x80,(byte) 0x8,(byte) 0x0, -(byte) 0x8,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0x8,(byte) 0x0, -}; - -static final BitmapCharRec ch15 = new BitmapCharRec(9,15,0,3,9,ch15data); - -/* char: 0xe */ - -static final byte[] ch14data = { -(byte) 0xf8,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch14 = new BitmapCharRec(5,9,-4,-3,9,ch14data); - -/* char: 0xd */ - -static final byte[] ch13data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xf8, -}; - -static final BitmapCharRec ch13 = new BitmapCharRec(5,7,-4,3,9,ch13data); - -/* char: 0xc */ - -static final byte[] ch12data = { -(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0xf8, -}; - -static final BitmapCharRec ch12 = new BitmapCharRec(5,7,0,3,9,ch12data); - -/* char: 0xb */ - -static final byte[] ch11data = { -(byte) 0xf8,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x8, -}; - -static final BitmapCharRec ch11 = new BitmapCharRec(5,9,0,-3,9,ch11data); - -/* char: 0xa */ - -static final byte[] ch10data = { -(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x3e,(byte) 0x0,(byte) 0x20,(byte) 0x50,(byte) 0x88,(byte) 0x88, -}; - -static final BitmapCharRec ch10 = new BitmapCharRec(7,10,-1,2,9,ch10data); - -/* char: 0x9 */ - -static final byte[] ch9data = { -(byte) 0x3e,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x88,(byte) 0x98,(byte) 0xa8,(byte) 0xc8,(byte) 0x88, -}; - -static final BitmapCharRec ch9 = new BitmapCharRec(7,10,-1,2,9,ch9data); - -/* char: 0x8 */ - -static final byte[] ch8data = { -(byte) 0xfe,(byte) 0x10,(byte) 0x10,(byte) 0xfe,(byte) 0x10,(byte) 0x10, -}; - -static final BitmapCharRec ch8 = new BitmapCharRec(7,6,-1,0,9,ch8data); - -/* char: 0x7 */ - -static final byte[] ch7data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch7 = new BitmapCharRec(5,4,-2,-6,9,ch7data); - -/* char: 0x6 */ - -static final byte[] ch6data = { -(byte) 0x20,(byte) 0x20,(byte) 0x3c,(byte) 0x20,(byte) 0x3e,(byte) 0x0,(byte) 0xf8,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch6 = new BitmapCharRec(7,10,-1,2,9,ch6data); - -/* char: 0x5 */ - -static final byte[] ch5data = { -(byte) 0x22,(byte) 0x22,(byte) 0x3c,(byte) 0x22,(byte) 0x3c,(byte) 0x0,(byte) 0x78,(byte) 0x80,(byte) 0x80,(byte) 0x78, -}; - -static final BitmapCharRec ch5 = new BitmapCharRec(7,10,-1,2,9,ch5data); - -/* char: 0x4 */ - -static final byte[] ch4data = { -(byte) 0x10,(byte) 0x10,(byte) 0x1c,(byte) 0x10,(byte) 0x1e,(byte) 0x80,(byte) 0x80,(byte) 0xe0,(byte) 0x80,(byte) 0xf0, -}; - -static final BitmapCharRec ch4 = new BitmapCharRec(7,10,-1,2,9,ch4data); - -/* char: 0x3 */ - -static final byte[] ch3data = { -(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x3e,(byte) 0x0,(byte) 0x88,(byte) 0x88,(byte) 0xf8,(byte) 0x88,(byte) 0x88, -}; - -static final BitmapCharRec ch3 = new BitmapCharRec(7,10,-1,2,9,ch3data); - -/* char: 0x2 */ - -static final byte[] ch2data = { -(byte) 0x55,(byte) 0xaa,(byte) 0x55,(byte) 0xaa,(byte) 0x55,(byte) 0xaa,(byte) 0x55,(byte) 0xaa,(byte) 0x55,(byte) 0xaa,(byte) 0x55,(byte) 0xaa,(byte) 0x55,(byte) 0xaa, -}; - -static final BitmapCharRec ch2 = new BitmapCharRec(8,14,0,3,9,ch2data); - -/* char: 0x1 */ - -static final byte[] ch1data = { -(byte) 0x10,(byte) 0x38,(byte) 0x7c,(byte) 0xfe,(byte) 0x7c,(byte) 0x38,(byte) 0x10, -}; - -static final BitmapCharRec ch1 = new BitmapCharRec(7,7,-1,0,9,ch1data); - -static final BitmapCharRec[] chars = { -ch0, -ch1, -ch2, -ch3, -ch4, -ch5, -ch6, -ch7, -ch8, -ch9, -ch10, -ch11, -ch12, -ch13, -ch14, -ch15, -ch16, -ch17, -ch18, -ch19, -ch20, -ch21, -ch22, -ch23, -ch24, -ch25, -ch26, -ch27, -ch28, -ch29, -ch30, -ch31, -ch32, -ch33, -ch34, -ch35, -ch36, -ch37, -ch38, -ch39, -ch40, -ch41, -ch42, -ch43, -ch44, -ch45, -ch46, -ch47, -ch48, -ch49, -ch50, -ch51, -ch52, -ch53, -ch54, -ch55, -ch56, -ch57, -ch58, -ch59, -ch60, -ch61, -ch62, -ch63, -ch64, -ch65, -ch66, -ch67, -ch68, -ch69, -ch70, -ch71, -ch72, -ch73, -ch74, -ch75, -ch76, -ch77, -ch78, -ch79, -ch80, -ch81, -ch82, -ch83, -ch84, -ch85, -ch86, -ch87, -ch88, -ch89, -ch90, -ch91, -ch92, -ch93, -ch94, -ch95, -ch96, -ch97, -ch98, -ch99, -ch100, -ch101, -ch102, -ch103, -ch104, -ch105, -ch106, -ch107, -ch108, -ch109, -ch110, -ch111, -ch112, -ch113, -ch114, -ch115, -ch116, -ch117, -ch118, -ch119, -ch120, -ch121, -ch122, -ch123, -ch124, -ch125, -ch126, -ch127, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -ch160, -ch161, -ch162, -ch163, -ch164, -ch165, -ch166, -ch167, -ch168, -ch169, -ch170, -ch171, -ch172, -ch173, -ch174, -ch175, -ch176, -ch177, -ch178, -ch179, -ch180, -ch181, -ch182, -ch183, -ch184, -ch185, -ch186, -ch187, -ch188, -ch189, -ch190, -ch191, -ch192, -ch193, -ch194, -ch195, -ch196, -ch197, -ch198, -ch199, -ch200, -ch201, -ch202, -ch203, -ch204, -ch205, -ch206, -ch207, -ch208, -ch209, -ch210, -ch211, -ch212, -ch213, -ch214, -ch215, -ch216, -ch217, -ch218, -ch219, -ch220, -ch221, -ch222, -ch223, -ch224, -ch225, -ch226, -ch227, -ch228, -ch229, -ch230, -ch231, -ch232, -ch233, -ch234, -ch235, -ch236, -ch237, -ch238, -ch239, -ch240, -ch241, -ch242, -ch243, -ch244, -ch245, -ch246, -ch247, -ch248, -ch249, -ch250, -ch251, -ch252, -ch253, -ch254, -ch255, -}; - - public static final BitmapFontRec glutBitmap9By15 = new BitmapFontRec("-misc-fixed-medium-r-normal--15-140-75-75-C-90-iso8859-1", - 256, - 0, - chars); -} diff --git a/src/jogl/classes/com/sun/opengl/util/gl2/GLUTBitmapHelvetica10.java b/src/jogl/classes/com/sun/opengl/util/gl2/GLUTBitmapHelvetica10.java deleted file mode 100644 index cca045ffa..000000000 --- a/src/jogl/classes/com/sun/opengl/util/gl2/GLUTBitmapHelvetica10.java +++ /dev/null @@ -1,1798 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.gl2; - -class GLUTBitmapHelvetica10 { - -/* GENERATED FILE -- DO NOT MODIFY */ - -/* char: 0xff */ - -static final byte[] ch255data = { -(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x60,(byte) 0xa0,(byte) 0xa0,(byte) 0x90,(byte) 0x90,(byte) 0x0,(byte) 0x50, -}; - -static final BitmapCharRec ch255 = new BitmapCharRec(4,10,0,2,5,ch255data); - -/* char: 0xfe */ - -static final byte[] ch254data = { -(byte) 0x80,(byte) 0x80,(byte) 0xb0,(byte) 0xc8,(byte) 0x88,(byte) 0x88,(byte) 0xc8,(byte) 0xb0,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch254 = new BitmapCharRec(5,10,0,2,6,ch254data); - -/* char: 0xfd */ - -static final byte[] ch253data = { -(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x60,(byte) 0xa0,(byte) 0xa0,(byte) 0x90,(byte) 0x90,(byte) 0x0,(byte) 0x20,(byte) 0x10, -}; - -static final BitmapCharRec ch253 = new BitmapCharRec(4,11,0,2,5,ch253data); - -/* char: 0xfc */ - -static final byte[] ch252data = { -(byte) 0x70,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x0,(byte) 0x50, -}; - -static final BitmapCharRec ch252 = new BitmapCharRec(4,8,0,0,5,ch252data); - -/* char: 0xfb */ - -static final byte[] ch251data = { -(byte) 0x70,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x0,(byte) 0x50,(byte) 0x20, -}; - -static final BitmapCharRec ch251 = new BitmapCharRec(4,9,0,0,5,ch251data); - -/* char: 0xfa */ - -static final byte[] ch250data = { -(byte) 0x70,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x0,(byte) 0x40,(byte) 0x20, -}; - -static final BitmapCharRec ch250 = new BitmapCharRec(4,9,0,0,5,ch250data); - -/* char: 0xf9 */ - -static final byte[] ch249data = { -(byte) 0x70,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x0,(byte) 0x20,(byte) 0x40, -}; - -static final BitmapCharRec ch249 = new BitmapCharRec(4,9,0,0,5,ch249data); - -/* char: 0xf8 */ - -static final byte[] ch248data = { -(byte) 0x70,(byte) 0x88,(byte) 0xc8,(byte) 0xa8,(byte) 0x98,(byte) 0x74, -}; - -static final BitmapCharRec ch248 = new BitmapCharRec(6,6,0,0,6,ch248data); - -/* char: 0xf7 */ - -static final byte[] ch247data = { -(byte) 0x20,(byte) 0x0,(byte) 0xf8,(byte) 0x0,(byte) 0x20, -}; - -static final BitmapCharRec ch247 = new BitmapCharRec(5,5,0,-1,6,ch247data); - -/* char: 0xf6 */ - -static final byte[] ch246data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x70,(byte) 0x0,(byte) 0x50, -}; - -static final BitmapCharRec ch246 = new BitmapCharRec(5,8,0,0,6,ch246data); - -/* char: 0xf5 */ - -static final byte[] ch245data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x70,(byte) 0x0,(byte) 0x50,(byte) 0x28, -}; - -static final BitmapCharRec ch245 = new BitmapCharRec(5,9,0,0,6,ch245data); - -/* char: 0xf4 */ - -static final byte[] ch244data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x70,(byte) 0x0,(byte) 0x50,(byte) 0x20, -}; - -static final BitmapCharRec ch244 = new BitmapCharRec(5,9,0,0,6,ch244data); - -/* char: 0xf3 */ - -static final byte[] ch243data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x70,(byte) 0x0,(byte) 0x20,(byte) 0x10, -}; - -static final BitmapCharRec ch243 = new BitmapCharRec(5,9,0,0,6,ch243data); - -/* char: 0xf2 */ - -static final byte[] ch242data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x70,(byte) 0x0,(byte) 0x20,(byte) 0x40, -}; - -static final BitmapCharRec ch242 = new BitmapCharRec(5,9,0,0,6,ch242data); - -/* char: 0xf1 */ - -static final byte[] ch241data = { -(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0xe0,(byte) 0x0,(byte) 0xa0,(byte) 0x50, -}; - -static final BitmapCharRec ch241 = new BitmapCharRec(4,9,0,0,5,ch241data); - -/* char: 0xf0 */ - -static final byte[] ch240data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x78,(byte) 0x90,(byte) 0x60,(byte) 0x50, -}; - -static final BitmapCharRec ch240 = new BitmapCharRec(5,9,0,0,6,ch240data); - -/* char: 0xef */ - -static final byte[] ch239data = { -(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x0,(byte) 0xa0, -}; - -static final BitmapCharRec ch239 = new BitmapCharRec(3,8,0,0,2,ch239data); - -/* char: 0xee */ - -static final byte[] ch238data = { -(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x0,(byte) 0xa0,(byte) 0x40, -}; - -static final BitmapCharRec ch238 = new BitmapCharRec(3,9,1,0,2,ch238data); - -/* char: 0xed */ - -static final byte[] ch237data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x0,(byte) 0x80,(byte) 0x40, -}; - -static final BitmapCharRec ch237 = new BitmapCharRec(2,9,0,0,2,ch237data); - -/* char: 0xec */ - -static final byte[] ch236data = { -(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x0,(byte) 0x40,(byte) 0x80, -}; - -static final BitmapCharRec ch236 = new BitmapCharRec(2,9,1,0,2,ch236data); - -/* char: 0xeb */ - -static final byte[] ch235data = { -(byte) 0x60,(byte) 0x90,(byte) 0x80,(byte) 0xf0,(byte) 0x90,(byte) 0x60,(byte) 0x0,(byte) 0x50, -}; - -static final BitmapCharRec ch235 = new BitmapCharRec(4,8,0,0,5,ch235data); - -/* char: 0xea */ - -static final byte[] ch234data = { -(byte) 0x60,(byte) 0x90,(byte) 0x80,(byte) 0xf0,(byte) 0x90,(byte) 0x60,(byte) 0x0,(byte) 0x50,(byte) 0x20, -}; - -static final BitmapCharRec ch234 = new BitmapCharRec(4,9,0,0,5,ch234data); - -/* char: 0xe9 */ - -static final byte[] ch233data = { -(byte) 0x60,(byte) 0x90,(byte) 0x80,(byte) 0xf0,(byte) 0x90,(byte) 0x60,(byte) 0x0,(byte) 0x40,(byte) 0x20, -}; - -static final BitmapCharRec ch233 = new BitmapCharRec(4,9,0,0,5,ch233data); - -/* char: 0xe8 */ - -static final byte[] ch232data = { -(byte) 0x60,(byte) 0x90,(byte) 0x80,(byte) 0xf0,(byte) 0x90,(byte) 0x60,(byte) 0x0,(byte) 0x20,(byte) 0x40, -}; - -static final BitmapCharRec ch232 = new BitmapCharRec(4,9,0,0,5,ch232data); - -/* char: 0xe7 */ - -static final byte[] ch231data = { -(byte) 0x60,(byte) 0x20,(byte) 0x60,(byte) 0x90,(byte) 0x80,(byte) 0x80,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch231 = new BitmapCharRec(4,8,0,2,5,ch231data); - -/* char: 0xe6 */ - -static final byte[] ch230data = { -(byte) 0x6c,(byte) 0x92,(byte) 0x90,(byte) 0x7e,(byte) 0x12,(byte) 0xec, -}; - -static final BitmapCharRec ch230 = new BitmapCharRec(7,6,0,0,8,ch230data); - -/* char: 0xe5 */ - -static final byte[] ch229data = { -(byte) 0x68,(byte) 0x90,(byte) 0x90,(byte) 0x70,(byte) 0x10,(byte) 0xe0,(byte) 0x20,(byte) 0x50,(byte) 0x20, -}; - -static final BitmapCharRec ch229 = new BitmapCharRec(5,9,0,0,5,ch229data); - -/* char: 0xe4 */ - -static final byte[] ch228data = { -(byte) 0x68,(byte) 0x90,(byte) 0x90,(byte) 0x70,(byte) 0x10,(byte) 0xe0,(byte) 0x0,(byte) 0x50, -}; - -static final BitmapCharRec ch228 = new BitmapCharRec(5,8,0,0,5,ch228data); - -/* char: 0xe3 */ - -static final byte[] ch227data = { -(byte) 0x68,(byte) 0x90,(byte) 0x90,(byte) 0x70,(byte) 0x10,(byte) 0xe0,(byte) 0x0,(byte) 0xa0,(byte) 0x50, -}; - -static final BitmapCharRec ch227 = new BitmapCharRec(5,9,0,0,5,ch227data); - -/* char: 0xe2 */ - -static final byte[] ch226data = { -(byte) 0x68,(byte) 0x90,(byte) 0x90,(byte) 0x70,(byte) 0x10,(byte) 0xe0,(byte) 0x0,(byte) 0x50,(byte) 0x20, -}; - -static final BitmapCharRec ch226 = new BitmapCharRec(5,9,0,0,5,ch226data); - -/* char: 0xe1 */ - -static final byte[] ch225data = { -(byte) 0x68,(byte) 0x90,(byte) 0x90,(byte) 0x70,(byte) 0x10,(byte) 0xe0,(byte) 0x0,(byte) 0x20,(byte) 0x10, -}; - -static final BitmapCharRec ch225 = new BitmapCharRec(5,9,0,0,5,ch225data); - -/* char: 0xe0 */ - -static final byte[] ch224data = { -(byte) 0x68,(byte) 0x90,(byte) 0x90,(byte) 0x70,(byte) 0x10,(byte) 0xe0,(byte) 0x0,(byte) 0x20,(byte) 0x40, -}; - -static final BitmapCharRec ch224 = new BitmapCharRec(5,9,0,0,5,ch224data); - -/* char: 0xdf */ - -static final byte[] ch223data = { -(byte) 0xa0,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0xa0,(byte) 0x90,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch223 = new BitmapCharRec(4,8,0,0,5,ch223data); - -/* char: 0xde */ - -static final byte[] ch222data = { -(byte) 0x80,(byte) 0x80,(byte) 0xf0,(byte) 0x88,(byte) 0x88,(byte) 0xf0,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch222 = new BitmapCharRec(5,8,-1,0,7,ch222data); - -/* char: 0xdd */ - -static final byte[] ch221data = { -(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x28,(byte) 0x28,(byte) 0x44,(byte) 0x44,(byte) 0x82,(byte) 0x0,(byte) 0x10,(byte) 0x8, -}; - -static final BitmapCharRec ch221 = new BitmapCharRec(7,11,0,0,7,ch221data); - -/* char: 0xdc */ - -static final byte[] ch220data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x0,(byte) 0x48, -}; - -static final BitmapCharRec ch220 = new BitmapCharRec(6,10,-1,0,8,ch220data); - -/* char: 0xdb */ - -static final byte[] ch219data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x0,(byte) 0x28,(byte) 0x10, -}; - -static final BitmapCharRec ch219 = new BitmapCharRec(6,11,-1,0,8,ch219data); - -/* char: 0xda */ - -static final byte[] ch218data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x0,(byte) 0x20,(byte) 0x10, -}; - -static final BitmapCharRec ch218 = new BitmapCharRec(6,11,-1,0,8,ch218data); - -/* char: 0xd9 */ - -static final byte[] ch217data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x0,(byte) 0x10,(byte) 0x20, -}; - -static final BitmapCharRec ch217 = new BitmapCharRec(6,11,-1,0,8,ch217data); - -/* char: 0xd8 */ - -static final byte[] ch216data = { -(byte) 0x80,(byte) 0x78,(byte) 0xc4,(byte) 0xa4,(byte) 0xa4,(byte) 0x94,(byte) 0x94,(byte) 0x8c,(byte) 0x78,(byte) 0x4, -}; - -static final BitmapCharRec ch216 = new BitmapCharRec(6,10,-1,1,8,ch216data); - -/* char: 0xd7 */ - -static final byte[] ch215data = { -(byte) 0x88,(byte) 0x50,(byte) 0x20,(byte) 0x50,(byte) 0x88, -}; - -static final BitmapCharRec ch215 = new BitmapCharRec(5,5,0,-1,6,ch215data); - -/* char: 0xd6 */ - -static final byte[] ch214data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x78,(byte) 0x0,(byte) 0x48, -}; - -static final BitmapCharRec ch214 = new BitmapCharRec(6,10,-1,0,8,ch214data); - -/* char: 0xd5 */ - -static final byte[] ch213data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x78,(byte) 0x0,(byte) 0x50,(byte) 0x28, -}; - -static final BitmapCharRec ch213 = new BitmapCharRec(6,11,-1,0,8,ch213data); - -/* char: 0xd4 */ - -static final byte[] ch212data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x78,(byte) 0x0,(byte) 0x28,(byte) 0x10, -}; - -static final BitmapCharRec ch212 = new BitmapCharRec(6,11,-1,0,8,ch212data); - -/* char: 0xd3 */ - -static final byte[] ch211data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x78,(byte) 0x0,(byte) 0x10,(byte) 0x8, -}; - -static final BitmapCharRec ch211 = new BitmapCharRec(6,11,-1,0,8,ch211data); - -/* char: 0xd2 */ - -static final byte[] ch210data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x78,(byte) 0x0,(byte) 0x10,(byte) 0x20, -}; - -static final BitmapCharRec ch210 = new BitmapCharRec(6,11,-1,0,8,ch210data); - -/* char: 0xd1 */ - -static final byte[] ch209data = { -(byte) 0x8c,(byte) 0x8c,(byte) 0x94,(byte) 0x94,(byte) 0xa4,(byte) 0xa4,(byte) 0xc4,(byte) 0xc4,(byte) 0x0,(byte) 0x50,(byte) 0x28, -}; - -static final BitmapCharRec ch209 = new BitmapCharRec(6,11,-1,0,8,ch209data); - -/* char: 0xd0 */ - -static final byte[] ch208data = { -(byte) 0x78,(byte) 0x44,(byte) 0x42,(byte) 0x42,(byte) 0xf2,(byte) 0x42,(byte) 0x44,(byte) 0x78, -}; - -static final BitmapCharRec ch208 = new BitmapCharRec(7,8,0,0,8,ch208data); - -/* char: 0xcf */ - -static final byte[] ch207data = { -(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x0,(byte) 0xa0, -}; - -static final BitmapCharRec ch207 = new BitmapCharRec(3,10,0,0,3,ch207data); - -/* char: 0xce */ - -static final byte[] ch206data = { -(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x0,(byte) 0xa0,(byte) 0x40, -}; - -static final BitmapCharRec ch206 = new BitmapCharRec(3,11,0,0,3,ch206data); - -/* char: 0xcd */ - -static final byte[] ch205data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x0,(byte) 0x80,(byte) 0x40, -}; - -static final BitmapCharRec ch205 = new BitmapCharRec(2,11,-1,0,3,ch205data); - -/* char: 0xcc */ - -static final byte[] ch204data = { -(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x0,(byte) 0x40,(byte) 0x80, -}; - -static final BitmapCharRec ch204 = new BitmapCharRec(2,11,0,0,3,ch204data); - -/* char: 0xcb */ - -static final byte[] ch203data = { -(byte) 0xf8,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xf8,(byte) 0x80,(byte) 0x80,(byte) 0xf8,(byte) 0x0,(byte) 0x50, -}; - -static final BitmapCharRec ch203 = new BitmapCharRec(5,10,-1,0,7,ch203data); - -/* char: 0xca */ - -static final byte[] ch202data = { -(byte) 0xf8,(byte) 0x80,(byte) 0x80,(byte) 0xf8,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xf8,(byte) 0x0,(byte) 0x50,(byte) 0x20, -}; - -static final BitmapCharRec ch202 = new BitmapCharRec(5,11,-1,0,7,ch202data); - -/* char: 0xc9 */ - -static final byte[] ch201data = { -(byte) 0xf8,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xf8,(byte) 0x80,(byte) 0x80,(byte) 0xf8,(byte) 0x0,(byte) 0x20,(byte) 0x10, -}; - -static final BitmapCharRec ch201 = new BitmapCharRec(5,11,-1,0,7,ch201data); - -/* char: 0xc8 */ - -static final byte[] ch200data = { -(byte) 0xf8,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xf8,(byte) 0x80,(byte) 0x80,(byte) 0xf8,(byte) 0x0,(byte) 0x20,(byte) 0x40, -}; - -static final BitmapCharRec ch200 = new BitmapCharRec(5,11,-1,0,7,ch200data); - -/* char: 0xc7 */ - -static final byte[] ch199data = { -(byte) 0x30,(byte) 0x10,(byte) 0x78,(byte) 0x84,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x84,(byte) 0x78, -}; - -static final BitmapCharRec ch199 = new BitmapCharRec(6,10,-1,2,8,ch199data); - -/* char: 0xc6 */ - -static final byte[] ch198data = { -(byte) 0x8f,(byte) 0x80,(byte) 0x88,(byte) 0x0,(byte) 0x78,(byte) 0x0,(byte) 0x48,(byte) 0x0,(byte) 0x2f,(byte) 0x80,(byte) 0x28,(byte) 0x0,(byte) 0x18,(byte) 0x0,(byte) 0x1f,(byte) 0x80, -}; - -static final BitmapCharRec ch198 = new BitmapCharRec(9,8,0,0,10,ch198data); - -/* char: 0xc5 */ - -static final byte[] ch197data = { -(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x44,(byte) 0x28,(byte) 0x28,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x28,(byte) 0x10, -}; - -static final BitmapCharRec ch197 = new BitmapCharRec(7,11,0,0,7,ch197data); - -/* char: 0xc4 */ - -static final byte[] ch196data = { -(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x44,(byte) 0x28,(byte) 0x28,(byte) 0x10,(byte) 0x10,(byte) 0x0,(byte) 0x28, -}; - -static final BitmapCharRec ch196 = new BitmapCharRec(7,10,0,0,7,ch196data); - -/* char: 0xc3 */ - -static final byte[] ch195data = { -(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x44,(byte) 0x28,(byte) 0x28,(byte) 0x10,(byte) 0x10,(byte) 0x0,(byte) 0x28,(byte) 0x14, -}; - -static final BitmapCharRec ch195 = new BitmapCharRec(7,11,0,0,7,ch195data); - -/* char: 0xc2 */ - -static final byte[] ch194data = { -(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x44,(byte) 0x28,(byte) 0x28,(byte) 0x10,(byte) 0x10,(byte) 0x0,(byte) 0x28,(byte) 0x10, -}; - -static final BitmapCharRec ch194 = new BitmapCharRec(7,11,0,0,7,ch194data); - -/* char: 0xc1 */ - -static final byte[] ch193data = { -(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x44,(byte) 0x28,(byte) 0x28,(byte) 0x10,(byte) 0x10,(byte) 0x0,(byte) 0x10,(byte) 0x8, -}; - -static final BitmapCharRec ch193 = new BitmapCharRec(7,11,0,0,7,ch193data); - -/* char: 0xc0 */ - -static final byte[] ch192data = { -(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x44,(byte) 0x28,(byte) 0x28,(byte) 0x10,(byte) 0x10,(byte) 0x0,(byte) 0x10,(byte) 0x20, -}; - -static final BitmapCharRec ch192 = new BitmapCharRec(7,11,0,0,7,ch192data); - -/* char: 0xbf */ - -static final byte[] ch191data = { -(byte) 0x60,(byte) 0x90,(byte) 0x80,(byte) 0x40,(byte) 0x20,(byte) 0x20,(byte) 0x0,(byte) 0x20, -}; - -static final BitmapCharRec ch191 = new BitmapCharRec(4,8,-1,2,6,ch191data); - -/* char: 0xbe */ - -static final byte[] ch190data = { -(byte) 0x21,(byte) 0x0,(byte) 0x17,(byte) 0x80,(byte) 0x13,(byte) 0x0,(byte) 0x9,(byte) 0x0,(byte) 0xc8,(byte) 0x0,(byte) 0x24,(byte) 0x0,(byte) 0x44,(byte) 0x0,(byte) 0xe2,(byte) 0x0, -}; - -static final BitmapCharRec ch190 = new BitmapCharRec(9,8,0,0,9,ch190data); - -/* char: 0xbd */ - -static final byte[] ch189data = { -(byte) 0x27,(byte) 0x12,(byte) 0x15,(byte) 0xb,(byte) 0x48,(byte) 0x44,(byte) 0xc4,(byte) 0x42, -}; - -static final BitmapCharRec ch189 = new BitmapCharRec(8,8,0,0,9,ch189data); - -/* char: 0xbc */ - -static final byte[] ch188data = { -(byte) 0x21,(byte) 0x0,(byte) 0x17,(byte) 0x80,(byte) 0x13,(byte) 0x0,(byte) 0x9,(byte) 0x0,(byte) 0x48,(byte) 0x0,(byte) 0x44,(byte) 0x0,(byte) 0xc4,(byte) 0x0,(byte) 0x42,(byte) 0x0, -}; - -static final BitmapCharRec ch188 = new BitmapCharRec(9,8,0,0,9,ch188data); - -/* char: 0xbb */ - -static final byte[] ch187data = { -(byte) 0xa0,(byte) 0x50,(byte) 0x28,(byte) 0x50,(byte) 0xa0, -}; - -static final BitmapCharRec ch187 = new BitmapCharRec(5,5,0,0,6,ch187data); - -/* char: 0xba */ - -static final byte[] ch186data = { -(byte) 0xe0,(byte) 0x0,(byte) 0xe0,(byte) 0xa0,(byte) 0xe0, -}; - -static final BitmapCharRec ch186 = new BitmapCharRec(3,5,0,-3,4,ch186data); - -/* char: 0xb9 */ - -static final byte[] ch185data = { -(byte) 0x40,(byte) 0x40,(byte) 0xc0,(byte) 0x40, -}; - -static final BitmapCharRec ch185 = new BitmapCharRec(2,4,0,-3,3,ch185data); - -/* char: 0xb8 */ - -static final byte[] ch184data = { -(byte) 0xc0,(byte) 0x40, -}; - -static final BitmapCharRec ch184 = new BitmapCharRec(2,2,0,2,3,ch184data); - -/* char: 0xb7 */ - -static final byte[] ch183data = { -(byte) 0xc0, -}; - -static final BitmapCharRec ch183 = new BitmapCharRec(2,1,0,-3,3,ch183data); - -/* char: 0xb6 */ - -static final byte[] ch182data = { -(byte) 0x28,(byte) 0x28,(byte) 0x28,(byte) 0x28,(byte) 0x28,(byte) 0x68,(byte) 0xe8,(byte) 0xe8,(byte) 0xe8,(byte) 0x7c, -}; - -static final BitmapCharRec ch182 = new BitmapCharRec(6,10,0,2,6,ch182data); - -/* char: 0xb5 */ - -static final byte[] ch181data = { -(byte) 0x80,(byte) 0x80,(byte) 0xf0,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x90, -}; - -static final BitmapCharRec ch181 = new BitmapCharRec(4,8,0,2,5,ch181data); - -/* char: 0xb4 */ - -static final byte[] ch180data = { -(byte) 0x80,(byte) 0x40, -}; - -static final BitmapCharRec ch180 = new BitmapCharRec(2,2,0,-6,3,ch180data); - -/* char: 0xb3 */ - -static final byte[] ch179data = { -(byte) 0xc0,(byte) 0x20,(byte) 0x40,(byte) 0xe0, -}; - -static final BitmapCharRec ch179 = new BitmapCharRec(3,4,0,-3,3,ch179data); - -/* char: 0xb2 */ - -static final byte[] ch178data = { -(byte) 0xe0,(byte) 0x40,(byte) 0xa0,(byte) 0x60, -}; - -static final BitmapCharRec ch178 = new BitmapCharRec(3,4,0,-3,3,ch178data); - -/* char: 0xb1 */ - -static final byte[] ch177data = { -(byte) 0xf8,(byte) 0x0,(byte) 0x20,(byte) 0x20,(byte) 0xf8,(byte) 0x20,(byte) 0x20, -}; - -static final BitmapCharRec ch177 = new BitmapCharRec(5,7,0,0,6,ch177data); - -/* char: 0xb0 */ - -static final byte[] ch176data = { -(byte) 0x60,(byte) 0x90,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch176 = new BitmapCharRec(4,4,0,-3,4,ch176data); - -/* char: 0xaf */ - -static final byte[] ch175data = { -(byte) 0xe0, -}; - -static final BitmapCharRec ch175 = new BitmapCharRec(3,1,0,-7,3,ch175data); - -/* char: 0xae */ - -static final byte[] ch174data = { -(byte) 0x38,(byte) 0x44,(byte) 0xaa,(byte) 0xb2,(byte) 0xba,(byte) 0x44,(byte) 0x38, -}; - -static final BitmapCharRec ch174 = new BitmapCharRec(7,7,-1,0,9,ch174data); - -/* char: 0xad */ - -static final byte[] ch173data = { -(byte) 0xe0, -}; - -static final BitmapCharRec ch173 = new BitmapCharRec(3,1,0,-3,4,ch173data); - -/* char: 0xac */ - -static final byte[] ch172data = { -(byte) 0x8,(byte) 0x8,(byte) 0xf8, -}; - -static final BitmapCharRec ch172 = new BitmapCharRec(5,3,-1,-2,7,ch172data); - -/* char: 0xab */ - -static final byte[] ch171data = { -(byte) 0x28,(byte) 0x50,(byte) 0xa0,(byte) 0x50,(byte) 0x28, -}; - -static final BitmapCharRec ch171 = new BitmapCharRec(5,5,0,0,6,ch171data); - -/* char: 0xaa */ - -static final byte[] ch170data = { -(byte) 0xe0,(byte) 0x0,(byte) 0xa0,(byte) 0x20,(byte) 0xe0, -}; - -static final BitmapCharRec ch170 = new BitmapCharRec(3,5,0,-3,4,ch170data); - -/* char: 0xa9 */ - -static final byte[] ch169data = { -(byte) 0x38,(byte) 0x44,(byte) 0x9a,(byte) 0xa2,(byte) 0x9a,(byte) 0x44,(byte) 0x38, -}; - -static final BitmapCharRec ch169 = new BitmapCharRec(7,7,-1,0,9,ch169data); - -/* char: 0xa8 */ - -static final byte[] ch168data = { -(byte) 0xa0, -}; - -static final BitmapCharRec ch168 = new BitmapCharRec(3,1,0,-7,3,ch168data); - -/* char: 0xa7 */ - -static final byte[] ch167data = { -(byte) 0x70,(byte) 0x88,(byte) 0x18,(byte) 0x70,(byte) 0xc8,(byte) 0x98,(byte) 0x70,(byte) 0xc0,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch167 = new BitmapCharRec(5,10,0,2,6,ch167data); - -/* char: 0xa6 */ - -static final byte[] ch166data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x0,(byte) 0x0,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch166 = new BitmapCharRec(1,10,-1,2,3,ch166data); - -/* char: 0xa5 */ - -static final byte[] ch165data = { -(byte) 0x20,(byte) 0xf8,(byte) 0x20,(byte) 0xf8,(byte) 0x50,(byte) 0x50,(byte) 0x88,(byte) 0x88, -}; - -static final BitmapCharRec ch165 = new BitmapCharRec(5,8,0,0,6,ch165data); - -/* char: 0xa4 */ - -static final byte[] ch164data = { -(byte) 0x90,(byte) 0x60,(byte) 0x90,(byte) 0x90,(byte) 0x60,(byte) 0x90, -}; - -static final BitmapCharRec ch164 = new BitmapCharRec(4,6,0,-1,5,ch164data); - -/* char: 0xa3 */ - -static final byte[] ch163data = { -(byte) 0xb0,(byte) 0x48,(byte) 0x40,(byte) 0x40,(byte) 0xe0,(byte) 0x40,(byte) 0x48,(byte) 0x30, -}; - -static final BitmapCharRec ch163 = new BitmapCharRec(5,8,0,0,6,ch163data); - -/* char: 0xa2 */ - -static final byte[] ch162data = { -(byte) 0x40,(byte) 0x70,(byte) 0xa8,(byte) 0xa0,(byte) 0xa0,(byte) 0xa8,(byte) 0x70,(byte) 0x10, -}; - -static final BitmapCharRec ch162 = new BitmapCharRec(5,8,0,1,6,ch162data); - -/* char: 0xa1 */ - -static final byte[] ch161data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x0,(byte) 0x80, -}; - -static final BitmapCharRec ch161 = new BitmapCharRec(1,8,-1,2,3,ch161data); - -/* char: 0xa0 */ - -static final BitmapCharRec ch160 = new BitmapCharRec(0,0,0,0,3,null); - -/* char: 0x7e '~' */ - -static final byte[] ch126data = { -(byte) 0x98,(byte) 0x64, -}; - -static final BitmapCharRec ch126 = new BitmapCharRec(6,2,0,-3,7,ch126data); - -/* char: 0x7d '}' */ - -static final byte[] ch125data = { -(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x20,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x80, -}; - -static final BitmapCharRec ch125 = new BitmapCharRec(3,10,0,2,3,ch125data); - -/* char: 0x7c '|' */ - -static final byte[] ch124data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch124 = new BitmapCharRec(1,10,-1,2,3,ch124data); - -/* char: 0x7b '{' */ - -static final byte[] ch123data = { -(byte) 0x20,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x20, -}; - -static final BitmapCharRec ch123 = new BitmapCharRec(3,10,0,2,3,ch123data); - -/* char: 0x7a 'z' */ - -static final byte[] ch122data = { -(byte) 0xf0,(byte) 0x80,(byte) 0x40,(byte) 0x20,(byte) 0x10,(byte) 0xf0, -}; - -static final BitmapCharRec ch122 = new BitmapCharRec(4,6,0,0,5,ch122data); - -/* char: 0x79 'y' */ - -static final byte[] ch121data = { -(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x60,(byte) 0xa0,(byte) 0xa0,(byte) 0x90,(byte) 0x90, -}; - -static final BitmapCharRec ch121 = new BitmapCharRec(4,8,0,2,5,ch121data); - -/* char: 0x78 'x' */ - -static final byte[] ch120data = { -(byte) 0x88,(byte) 0x88,(byte) 0x50,(byte) 0x20,(byte) 0x50,(byte) 0x88, -}; - -static final BitmapCharRec ch120 = new BitmapCharRec(5,6,0,0,6,ch120data); - -/* char: 0x77 'w' */ - -static final byte[] ch119data = { -(byte) 0x28,(byte) 0x28,(byte) 0x54,(byte) 0x54,(byte) 0x92,(byte) 0x92, -}; - -static final BitmapCharRec ch119 = new BitmapCharRec(7,6,0,0,8,ch119data); - -/* char: 0x76 'v' */ - -static final byte[] ch118data = { -(byte) 0x20,(byte) 0x20,(byte) 0x50,(byte) 0x50,(byte) 0x88,(byte) 0x88, -}; - -static final BitmapCharRec ch118 = new BitmapCharRec(5,6,0,0,6,ch118data); - -/* char: 0x75 'u' */ - -static final byte[] ch117data = { -(byte) 0x70,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x90, -}; - -static final BitmapCharRec ch117 = new BitmapCharRec(4,6,0,0,5,ch117data); - -/* char: 0x74 't' */ - -static final byte[] ch116data = { -(byte) 0x60,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xe0,(byte) 0x40,(byte) 0x40, -}; - -static final BitmapCharRec ch116 = new BitmapCharRec(3,8,0,0,4,ch116data); - -/* char: 0x73 's' */ - -static final byte[] ch115data = { -(byte) 0x60,(byte) 0x90,(byte) 0x10,(byte) 0x60,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch115 = new BitmapCharRec(4,6,0,0,5,ch115data); - -/* char: 0x72 'r' */ - -static final byte[] ch114data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xc0,(byte) 0xa0, -}; - -static final BitmapCharRec ch114 = new BitmapCharRec(3,6,0,0,4,ch114data); - -/* char: 0x71 'q' */ - -static final byte[] ch113data = { -(byte) 0x8,(byte) 0x8,(byte) 0x68,(byte) 0x98,(byte) 0x88,(byte) 0x88,(byte) 0x98,(byte) 0x68, -}; - -static final BitmapCharRec ch113 = new BitmapCharRec(5,8,0,2,6,ch113data); - -/* char: 0x70 'p' */ - -static final byte[] ch112data = { -(byte) 0x80,(byte) 0x80,(byte) 0xb0,(byte) 0xc8,(byte) 0x88,(byte) 0x88,(byte) 0xc8,(byte) 0xb0, -}; - -static final BitmapCharRec ch112 = new BitmapCharRec(5,8,0,2,6,ch112data); - -/* char: 0x6f 'o' */ - -static final byte[] ch111data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch111 = new BitmapCharRec(5,6,0,0,6,ch111data); - -/* char: 0x6e 'n' */ - -static final byte[] ch110data = { -(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0xc8,(byte) 0xb0, -}; - -static final BitmapCharRec ch110 = new BitmapCharRec(5,6,0,0,6,ch110data); - -/* char: 0x6d 'm' */ - -static final byte[] ch109data = { -(byte) 0x92,(byte) 0x92,(byte) 0x92,(byte) 0x92,(byte) 0x92,(byte) 0xec, -}; - -static final BitmapCharRec ch109 = new BitmapCharRec(7,6,0,0,8,ch109data); - -/* char: 0x6c 'l' */ - -static final byte[] ch108data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch108 = new BitmapCharRec(1,8,0,0,2,ch108data); - -/* char: 0x6b 'k' */ - -static final byte[] ch107data = { -(byte) 0x90,(byte) 0x90,(byte) 0xa0,(byte) 0xc0,(byte) 0xa0,(byte) 0x90,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch107 = new BitmapCharRec(4,8,0,0,5,ch107data); - -/* char: 0x6a 'j' */ - -static final byte[] ch106data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x0,(byte) 0x80, -}; - -static final BitmapCharRec ch106 = new BitmapCharRec(1,9,0,1,2,ch106data); - -/* char: 0x69 'i' */ - -static final byte[] ch105data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x0,(byte) 0x80, -}; - -static final BitmapCharRec ch105 = new BitmapCharRec(1,8,0,0,2,ch105data); - -/* char: 0x68 'h' */ - -static final byte[] ch104data = { -(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0xc8,(byte) 0xb0,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch104 = new BitmapCharRec(5,8,0,0,6,ch104data); - -/* char: 0x67 'g' */ - -static final byte[] ch103data = { -(byte) 0x70,(byte) 0x8,(byte) 0x68,(byte) 0x98,(byte) 0x88,(byte) 0x88,(byte) 0x98,(byte) 0x68, -}; - -static final BitmapCharRec ch103 = new BitmapCharRec(5,8,0,2,6,ch103data); - -/* char: 0x66 'f' */ - -static final byte[] ch102data = { -(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xe0,(byte) 0x40,(byte) 0x30, -}; - -static final BitmapCharRec ch102 = new BitmapCharRec(4,8,0,0,4,ch102data); - -/* char: 0x65 'e' */ - -static final byte[] ch101data = { -(byte) 0x60,(byte) 0x90,(byte) 0x80,(byte) 0xf0,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch101 = new BitmapCharRec(4,6,0,0,5,ch101data); - -/* char: 0x64 'd' */ - -static final byte[] ch100data = { -(byte) 0x68,(byte) 0x98,(byte) 0x88,(byte) 0x88,(byte) 0x98,(byte) 0x68,(byte) 0x8,(byte) 0x8, -}; - -static final BitmapCharRec ch100 = new BitmapCharRec(5,8,0,0,6,ch100data); - -/* char: 0x63 'c' */ - -static final byte[] ch99data = { -(byte) 0x60,(byte) 0x90,(byte) 0x80,(byte) 0x80,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch99 = new BitmapCharRec(4,6,0,0,5,ch99data); - -/* char: 0x62 'b' */ - -static final byte[] ch98data = { -(byte) 0xb0,(byte) 0xc8,(byte) 0x88,(byte) 0x88,(byte) 0xc8,(byte) 0xb0,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch98 = new BitmapCharRec(5,8,0,0,6,ch98data); - -/* char: 0x61 'a' */ - -static final byte[] ch97data = { -(byte) 0x68,(byte) 0x90,(byte) 0x90,(byte) 0x70,(byte) 0x10,(byte) 0xe0, -}; - -static final BitmapCharRec ch97 = new BitmapCharRec(5,6,0,0,5,ch97data); - -/* char: 0x60 '`' */ - -static final byte[] ch96data = { -(byte) 0x80,(byte) 0x80,(byte) 0x40, -}; - -static final BitmapCharRec ch96 = new BitmapCharRec(2,3,0,-5,3,ch96data); - -/* char: 0x5f '_' */ - -static final byte[] ch95data = { -(byte) 0xfc, -}; - -static final BitmapCharRec ch95 = new BitmapCharRec(6,1,0,2,6,ch95data); - -/* char: 0x5e '^' */ - -static final byte[] ch94data = { -(byte) 0x88,(byte) 0x50,(byte) 0x50,(byte) 0x20,(byte) 0x20, -}; - -static final BitmapCharRec ch94 = new BitmapCharRec(5,5,0,-3,6,ch94data); - -/* char: 0x5d ']' */ - -static final byte[] ch93data = { -(byte) 0xc0,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xc0, -}; - -static final BitmapCharRec ch93 = new BitmapCharRec(2,10,0,2,3,ch93data); - -/* char: 0x5c '\' */ - -static final byte[] ch92data = { -(byte) 0x20,(byte) 0x20,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch92 = new BitmapCharRec(3,8,0,0,3,ch92data); - -/* char: 0x5b '[' */ - -static final byte[] ch91data = { -(byte) 0xc0,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xc0, -}; - -static final BitmapCharRec ch91 = new BitmapCharRec(2,10,-1,2,3,ch91data); - -/* char: 0x5a 'Z' */ - -static final byte[] ch90data = { -(byte) 0xf8,(byte) 0x80,(byte) 0x40,(byte) 0x20,(byte) 0x20,(byte) 0x10,(byte) 0x8,(byte) 0xf8, -}; - -static final BitmapCharRec ch90 = new BitmapCharRec(5,8,-1,0,7,ch90data); - -/* char: 0x59 'Y' */ - -static final byte[] ch89data = { -(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x28,(byte) 0x28,(byte) 0x44,(byte) 0x44,(byte) 0x82, -}; - -static final BitmapCharRec ch89 = new BitmapCharRec(7,8,0,0,7,ch89data); - -/* char: 0x58 'X' */ - -static final byte[] ch88data = { -(byte) 0x88,(byte) 0x88,(byte) 0x50,(byte) 0x50,(byte) 0x20,(byte) 0x50,(byte) 0x88,(byte) 0x88, -}; - -static final BitmapCharRec ch88 = new BitmapCharRec(5,8,-1,0,7,ch88data); - -/* char: 0x57 'W' */ - -static final byte[] ch87data = { -(byte) 0x22,(byte) 0x0,(byte) 0x22,(byte) 0x0,(byte) 0x22,(byte) 0x0,(byte) 0x55,(byte) 0x0,(byte) 0x49,(byte) 0x0,(byte) 0x49,(byte) 0x0,(byte) 0x88,(byte) 0x80,(byte) 0x88,(byte) 0x80, -}; - -static final BitmapCharRec ch87 = new BitmapCharRec(9,8,0,0,9,ch87data); - -/* char: 0x56 'V' */ - -static final byte[] ch86data = { -(byte) 0x10,(byte) 0x28,(byte) 0x28,(byte) 0x44,(byte) 0x44,(byte) 0x44,(byte) 0x82,(byte) 0x82, -}; - -static final BitmapCharRec ch86 = new BitmapCharRec(7,8,0,0,7,ch86data); - -/* char: 0x55 'U' */ - -static final byte[] ch85data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84, -}; - -static final BitmapCharRec ch85 = new BitmapCharRec(6,8,-1,0,8,ch85data); - -/* char: 0x54 'T' */ - -static final byte[] ch84data = { -(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0xf8, -}; - -static final BitmapCharRec ch84 = new BitmapCharRec(5,8,0,0,5,ch84data); - -/* char: 0x53 'S' */ - -static final byte[] ch83data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x8,(byte) 0x70,(byte) 0x80,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch83 = new BitmapCharRec(5,8,-1,0,7,ch83data); - -/* char: 0x52 'R' */ - -static final byte[] ch82data = { -(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0xf0,(byte) 0x88,(byte) 0x88,(byte) 0xf0, -}; - -static final BitmapCharRec ch82 = new BitmapCharRec(5,8,-1,0,7,ch82data); - -/* char: 0x51 'Q' */ - -static final byte[] ch81data = { -(byte) 0x2,(byte) 0x7c,(byte) 0x8c,(byte) 0x94,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x78, -}; - -static final BitmapCharRec ch81 = new BitmapCharRec(7,9,-1,1,8,ch81data); - -/* char: 0x50 'P' */ - -static final byte[] ch80data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xf0,(byte) 0x88,(byte) 0x88,(byte) 0xf0, -}; - -static final BitmapCharRec ch80 = new BitmapCharRec(5,8,-1,0,7,ch80data); - -/* char: 0x4f 'O' */ - -static final byte[] ch79data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x78, -}; - -static final BitmapCharRec ch79 = new BitmapCharRec(6,8,-1,0,8,ch79data); - -/* char: 0x4e 'N' */ - -static final byte[] ch78data = { -(byte) 0x8c,(byte) 0x8c,(byte) 0x94,(byte) 0x94,(byte) 0xa4,(byte) 0xa4,(byte) 0xc4,(byte) 0xc4, -}; - -static final BitmapCharRec ch78 = new BitmapCharRec(6,8,-1,0,8,ch78data); - -/* char: 0x4d 'M' */ - -static final byte[] ch77data = { -(byte) 0x92,(byte) 0x92,(byte) 0x92,(byte) 0xaa,(byte) 0xaa,(byte) 0xc6,(byte) 0xc6,(byte) 0x82, -}; - -static final BitmapCharRec ch77 = new BitmapCharRec(7,8,-1,0,9,ch77data); - -/* char: 0x4c 'L' */ - -static final byte[] ch76data = { -(byte) 0xf0,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch76 = new BitmapCharRec(4,8,-1,0,6,ch76data); - -/* char: 0x4b 'K' */ - -static final byte[] ch75data = { -(byte) 0x88,(byte) 0x88,(byte) 0x90,(byte) 0x90,(byte) 0xe0,(byte) 0xa0,(byte) 0x90,(byte) 0x88, -}; - -static final BitmapCharRec ch75 = new BitmapCharRec(5,8,-1,0,7,ch75data); - -/* char: 0x4a 'J' */ - -static final byte[] ch74data = { -(byte) 0x60,(byte) 0x90,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10, -}; - -static final BitmapCharRec ch74 = new BitmapCharRec(4,8,0,0,5,ch74data); - -/* char: 0x49 'I' */ - -static final byte[] ch73data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch73 = new BitmapCharRec(1,8,-1,0,3,ch73data); - -/* char: 0x48 'H' */ - -static final byte[] ch72data = { -(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0xfc,(byte) 0x84,(byte) 0x84,(byte) 0x84, -}; - -static final BitmapCharRec ch72 = new BitmapCharRec(6,8,-1,0,8,ch72data); - -/* char: 0x47 'G' */ - -static final byte[] ch71data = { -(byte) 0x74,(byte) 0x8c,(byte) 0x84,(byte) 0x8c,(byte) 0x80,(byte) 0x80,(byte) 0x84,(byte) 0x78, -}; - -static final BitmapCharRec ch71 = new BitmapCharRec(6,8,-1,0,8,ch71data); - -/* char: 0x46 'F' */ - -static final byte[] ch70data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xf0,(byte) 0x80,(byte) 0x80,(byte) 0xf8, -}; - -static final BitmapCharRec ch70 = new BitmapCharRec(5,8,-1,0,6,ch70data); - -/* char: 0x45 'E' */ - -static final byte[] ch69data = { -(byte) 0xf8,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xf8,(byte) 0x80,(byte) 0x80,(byte) 0xf8, -}; - -static final BitmapCharRec ch69 = new BitmapCharRec(5,8,-1,0,7,ch69data); - -/* char: 0x44 'D' */ - -static final byte[] ch68data = { -(byte) 0xf0,(byte) 0x88,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x88,(byte) 0xf0, -}; - -static final BitmapCharRec ch68 = new BitmapCharRec(6,8,-1,0,8,ch68data); - -/* char: 0x43 'C' */ - -static final byte[] ch67data = { -(byte) 0x78,(byte) 0x84,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x84,(byte) 0x78, -}; - -static final BitmapCharRec ch67 = new BitmapCharRec(6,8,-1,0,8,ch67data); - -/* char: 0x42 'B' */ - -static final byte[] ch66data = { -(byte) 0xf0,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0xf0,(byte) 0x88,(byte) 0x88,(byte) 0xf0, -}; - -static final BitmapCharRec ch66 = new BitmapCharRec(5,8,-1,0,7,ch66data); - -/* char: 0x41 'A' */ - -static final byte[] ch65data = { -(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x44,(byte) 0x28,(byte) 0x28,(byte) 0x10,(byte) 0x10, -}; - -static final BitmapCharRec ch65 = new BitmapCharRec(7,8,0,0,7,ch65data); - -/* char: 0x40 '@' */ - -static final byte[] ch64data = { -(byte) 0x3e,(byte) 0x0,(byte) 0x40,(byte) 0x0,(byte) 0x9b,(byte) 0x0,(byte) 0xa4,(byte) 0x80,(byte) 0xa4,(byte) 0x80,(byte) 0xa2,(byte) 0x40,(byte) 0x92,(byte) 0x40,(byte) 0x4d,(byte) 0x40, -(byte) 0x20,(byte) 0x80,(byte) 0x1f,(byte) 0x0, -}; - -static final BitmapCharRec ch64 = new BitmapCharRec(10,10,0,2,11,ch64data); - -/* char: 0x3f '?' */ - -static final byte[] ch63data = { -(byte) 0x40,(byte) 0x0,(byte) 0x40,(byte) 0x40,(byte) 0x20,(byte) 0x10,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch63 = new BitmapCharRec(4,8,-1,0,6,ch63data); - -/* char: 0x3e '>' */ - -static final byte[] ch62data = { -(byte) 0x80,(byte) 0x40,(byte) 0x20,(byte) 0x40,(byte) 0x80, -}; - -static final BitmapCharRec ch62 = new BitmapCharRec(3,5,-1,-1,6,ch62data); - -/* char: 0x3d '=' */ - -static final byte[] ch61data = { -(byte) 0xf0,(byte) 0x0,(byte) 0xf0, -}; - -static final BitmapCharRec ch61 = new BitmapCharRec(4,3,0,-2,5,ch61data); - -/* char: 0x3c '<' */ - -static final byte[] ch60data = { -(byte) 0x20,(byte) 0x40,(byte) 0x80,(byte) 0x40,(byte) 0x20, -}; - -static final BitmapCharRec ch60 = new BitmapCharRec(3,5,-1,-1,6,ch60data); - -/* char: 0x3b ';' */ - -static final byte[] ch59data = { -(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x40, -}; - -static final BitmapCharRec ch59 = new BitmapCharRec(2,8,0,2,3,ch59data); - -/* char: 0x3a ':' */ - -static final byte[] ch58data = { -(byte) 0x80,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x80, -}; - -static final BitmapCharRec ch58 = new BitmapCharRec(1,6,-1,0,3,ch58data); - -/* char: 0x39 '9' */ - -static final byte[] ch57data = { -(byte) 0x70,(byte) 0x88,(byte) 0x8,(byte) 0x68,(byte) 0x98,(byte) 0x88,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch57 = new BitmapCharRec(5,8,0,0,6,ch57data); - -/* char: 0x38 '8' */ - -static final byte[] ch56data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch56 = new BitmapCharRec(5,8,0,0,6,ch56data); - -/* char: 0x37 '7' */ - -static final byte[] ch55data = { -(byte) 0x40,(byte) 0x40,(byte) 0x20,(byte) 0x20,(byte) 0x10,(byte) 0x10,(byte) 0x8,(byte) 0xf8, -}; - -static final BitmapCharRec ch55 = new BitmapCharRec(5,8,0,0,6,ch55data); - -/* char: 0x36 '6' */ - -static final byte[] ch54data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0xc8,(byte) 0xb0,(byte) 0x80,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch54 = new BitmapCharRec(5,8,0,0,6,ch54data); - -/* char: 0x35 '5' */ - -static final byte[] ch53data = { -(byte) 0x70,(byte) 0x88,(byte) 0x8,(byte) 0x8,(byte) 0xf0,(byte) 0x80,(byte) 0x80,(byte) 0xf8, -}; - -static final BitmapCharRec ch53 = new BitmapCharRec(5,8,0,0,6,ch53data); - -/* char: 0x34 '4' */ - -static final byte[] ch52data = { -(byte) 0x10,(byte) 0x10,(byte) 0xf8,(byte) 0x90,(byte) 0x50,(byte) 0x50,(byte) 0x30,(byte) 0x10, -}; - -static final BitmapCharRec ch52 = new BitmapCharRec(5,8,0,0,6,ch52data); - -/* char: 0x33 '3' */ - -static final byte[] ch51data = { -(byte) 0x70,(byte) 0x88,(byte) 0x8,(byte) 0x8,(byte) 0x30,(byte) 0x8,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch51 = new BitmapCharRec(5,8,0,0,6,ch51data); - -/* char: 0x32 '2' */ - -static final byte[] ch50data = { -(byte) 0xf8,(byte) 0x80,(byte) 0x40,(byte) 0x30,(byte) 0x8,(byte) 0x8,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch50 = new BitmapCharRec(5,8,0,0,6,ch50data); - -/* char: 0x31 '1' */ - -static final byte[] ch49data = { -(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xc0,(byte) 0x40, -}; - -static final BitmapCharRec ch49 = new BitmapCharRec(2,8,-1,0,6,ch49data); - -/* char: 0x30 '0' */ - -static final byte[] ch48data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch48 = new BitmapCharRec(5,8,0,0,6,ch48data); - -/* char: 0x2f '/' */ - -static final byte[] ch47data = { -(byte) 0x80,(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x20,(byte) 0x20, -}; - -static final BitmapCharRec ch47 = new BitmapCharRec(3,8,0,0,3,ch47data); - -/* char: 0x2e '.' */ - -static final byte[] ch46data = { -(byte) 0x80, -}; - -static final BitmapCharRec ch46 = new BitmapCharRec(1,1,-1,0,3,ch46data); - -/* char: 0x2d '-' */ - -static final byte[] ch45data = { -(byte) 0xf8, -}; - -static final BitmapCharRec ch45 = new BitmapCharRec(5,1,-1,-3,7,ch45data); - -/* char: 0x2c ',' */ - -static final byte[] ch44data = { -(byte) 0x80,(byte) 0x40,(byte) 0x40, -}; - -static final BitmapCharRec ch44 = new BitmapCharRec(2,3,0,2,3,ch44data); - -/* char: 0x2b '+' */ - -static final byte[] ch43data = { -(byte) 0x20,(byte) 0x20,(byte) 0xf8,(byte) 0x20,(byte) 0x20, -}; - -static final BitmapCharRec ch43 = new BitmapCharRec(5,5,0,-1,6,ch43data); - -/* char: 0x2a '*' */ - -static final byte[] ch42data = { -(byte) 0xa0,(byte) 0x40,(byte) 0xa0, -}; - -static final BitmapCharRec ch42 = new BitmapCharRec(3,3,0,-5,4,ch42data); - -/* char: 0x29 ')' */ - -static final byte[] ch41data = { -(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x40,(byte) 0x40,(byte) 0x80, -}; - -static final BitmapCharRec ch41 = new BitmapCharRec(3,10,-1,2,4,ch41data); - -/* char: 0x28 '(' */ - -static final byte[] ch40data = { -(byte) 0x20,(byte) 0x40,(byte) 0x40,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x20, -}; - -static final BitmapCharRec ch40 = new BitmapCharRec(3,10,0,2,4,ch40data); - -/* char: 0x27 ''' */ - -static final byte[] ch39data = { -(byte) 0x80,(byte) 0x40,(byte) 0x40, -}; - -static final BitmapCharRec ch39 = new BitmapCharRec(2,3,-1,-5,3,ch39data); - -/* char: 0x26 '&' */ - -static final byte[] ch38data = { -(byte) 0x64,(byte) 0x98,(byte) 0x98,(byte) 0xa4,(byte) 0x60,(byte) 0x50,(byte) 0x50,(byte) 0x20, -}; - -static final BitmapCharRec ch38 = new BitmapCharRec(6,8,-1,0,8,ch38data); - -/* char: 0x25 '%' */ - -static final byte[] ch37data = { -(byte) 0x26,(byte) 0x29,(byte) 0x16,(byte) 0x10,(byte) 0x8,(byte) 0x68,(byte) 0x94,(byte) 0x64, -}; - -static final BitmapCharRec ch37 = new BitmapCharRec(8,8,0,0,9,ch37data); - -/* char: 0x24 '$' */ - -static final byte[] ch36data = { -(byte) 0x20,(byte) 0x70,(byte) 0xa8,(byte) 0x28,(byte) 0x70,(byte) 0xa0,(byte) 0xa8,(byte) 0x70,(byte) 0x20, -}; - -static final BitmapCharRec ch36 = new BitmapCharRec(5,9,0,1,6,ch36data); - -/* char: 0x23 '#' */ - -static final byte[] ch35data = { -(byte) 0x50,(byte) 0x50,(byte) 0xf8,(byte) 0x28,(byte) 0x7c,(byte) 0x28,(byte) 0x28, -}; - -static final BitmapCharRec ch35 = new BitmapCharRec(6,7,0,0,6,ch35data); - -/* char: 0x22 '"' */ - -static final byte[] ch34data = { -(byte) 0xa0,(byte) 0xa0, -}; - -static final BitmapCharRec ch34 = new BitmapCharRec(3,2,-1,-6,4,ch34data); - -/* char: 0x21 '!' */ - -static final byte[] ch33data = { -(byte) 0x80,(byte) 0x0,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch33 = new BitmapCharRec(1,8,-1,0,3,ch33data); - -/* char: 0x20 ' ' */ - -static final BitmapCharRec ch32 = new BitmapCharRec(0,0,0,0,3,null); - -static final BitmapCharRec[] chars = { -ch32, -ch33, -ch34, -ch35, -ch36, -ch37, -ch38, -ch39, -ch40, -ch41, -ch42, -ch43, -ch44, -ch45, -ch46, -ch47, -ch48, -ch49, -ch50, -ch51, -ch52, -ch53, -ch54, -ch55, -ch56, -ch57, -ch58, -ch59, -ch60, -ch61, -ch62, -ch63, -ch64, -ch65, -ch66, -ch67, -ch68, -ch69, -ch70, -ch71, -ch72, -ch73, -ch74, -ch75, -ch76, -ch77, -ch78, -ch79, -ch80, -ch81, -ch82, -ch83, -ch84, -ch85, -ch86, -ch87, -ch88, -ch89, -ch90, -ch91, -ch92, -ch93, -ch94, -ch95, -ch96, -ch97, -ch98, -ch99, -ch100, -ch101, -ch102, -ch103, -ch104, -ch105, -ch106, -ch107, -ch108, -ch109, -ch110, -ch111, -ch112, -ch113, -ch114, -ch115, -ch116, -ch117, -ch118, -ch119, -ch120, -ch121, -ch122, -ch123, -ch124, -ch125, -ch126, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -ch160, -ch161, -ch162, -ch163, -ch164, -ch165, -ch166, -ch167, -ch168, -ch169, -ch170, -ch171, -ch172, -ch173, -ch174, -ch175, -ch176, -ch177, -ch178, -ch179, -ch180, -ch181, -ch182, -ch183, -ch184, -ch185, -ch186, -ch187, -ch188, -ch189, -ch190, -ch191, -ch192, -ch193, -ch194, -ch195, -ch196, -ch197, -ch198, -ch199, -ch200, -ch201, -ch202, -ch203, -ch204, -ch205, -ch206, -ch207, -ch208, -ch209, -ch210, -ch211, -ch212, -ch213, -ch214, -ch215, -ch216, -ch217, -ch218, -ch219, -ch220, -ch221, -ch222, -ch223, -ch224, -ch225, -ch226, -ch227, -ch228, -ch229, -ch230, -ch231, -ch232, -ch233, -ch234, -ch235, -ch236, -ch237, -ch238, -ch239, -ch240, -ch241, -ch242, -ch243, -ch244, -ch245, -ch246, -ch247, -ch248, -ch249, -ch250, -ch251, -ch252, -ch253, -ch254, -ch255, -}; - - public static final BitmapFontRec glutBitmapHelvetica10 = new BitmapFontRec("-adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1", - 224, - 32, - chars); -} diff --git a/src/jogl/classes/com/sun/opengl/util/gl2/GLUTBitmapHelvetica12.java b/src/jogl/classes/com/sun/opengl/util/gl2/GLUTBitmapHelvetica12.java deleted file mode 100644 index b73c82fa9..000000000 --- a/src/jogl/classes/com/sun/opengl/util/gl2/GLUTBitmapHelvetica12.java +++ /dev/null @@ -1,1808 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.gl2; - -class GLUTBitmapHelvetica12 { - -/* GENERATED FILE -- DO NOT MODIFY */ - -/* char: 0xff */ - -static final byte[] ch255data = { -(byte) 0xc0,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x30,(byte) 0x50,(byte) 0x50,(byte) 0x48,(byte) 0x88,(byte) 0x88,(byte) 0x0,(byte) 0x50, -}; - -static final BitmapCharRec ch255 = new BitmapCharRec(5,12,-1,3,7,ch255data); - -/* char: 0xfe */ - -static final byte[] ch254data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xb0,(byte) 0xc8,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0xc8,(byte) 0xb0,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch254 = new BitmapCharRec(5,12,-1,3,7,ch254data); - -/* char: 0xfd */ - -static final byte[] ch253data = { -(byte) 0x80,(byte) 0x40,(byte) 0x20,(byte) 0x20,(byte) 0x50,(byte) 0x50,(byte) 0x90,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x0,(byte) 0x20,(byte) 0x10, -}; - -static final BitmapCharRec ch253 = new BitmapCharRec(5,13,-1,3,7,ch253data); - -/* char: 0xfc */ - -static final byte[] ch252data = { -(byte) 0x68,(byte) 0x98,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x0,(byte) 0x50, -}; - -static final BitmapCharRec ch252 = new BitmapCharRec(5,9,-1,0,7,ch252data); - -/* char: 0xfb */ - -static final byte[] ch251data = { -(byte) 0x68,(byte) 0x98,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x0,(byte) 0x50,(byte) 0x20, -}; - -static final BitmapCharRec ch251 = new BitmapCharRec(5,10,-1,0,7,ch251data); - -/* char: 0xfa */ - -static final byte[] ch250data = { -(byte) 0x68,(byte) 0x98,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x0,(byte) 0x20,(byte) 0x10, -}; - -static final BitmapCharRec ch250 = new BitmapCharRec(5,10,-1,0,7,ch250data); - -/* char: 0xf9 */ - -static final byte[] ch249data = { -(byte) 0x68,(byte) 0x98,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x0,(byte) 0x20,(byte) 0x40, -}; - -static final BitmapCharRec ch249 = new BitmapCharRec(5,10,-1,0,7,ch249data); - -/* char: 0xf8 */ - -static final byte[] ch248data = { -(byte) 0xb8,(byte) 0x44,(byte) 0x64,(byte) 0x54,(byte) 0x4c,(byte) 0x44,(byte) 0x3a, -}; - -static final BitmapCharRec ch248 = new BitmapCharRec(7,7,0,0,7,ch248data); - -/* char: 0xf7 */ - -static final byte[] ch247data = { -(byte) 0x20,(byte) 0x0,(byte) 0xf8,(byte) 0x0,(byte) 0x20, -}; - -static final BitmapCharRec ch247 = new BitmapCharRec(5,5,-1,-1,7,ch247data); - -/* char: 0xf6 */ - -static final byte[] ch246data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x70,(byte) 0x0,(byte) 0x50, -}; - -static final BitmapCharRec ch246 = new BitmapCharRec(5,9,-1,0,7,ch246data); - -/* char: 0xf5 */ - -static final byte[] ch245data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x70,(byte) 0x0,(byte) 0x50,(byte) 0x28, -}; - -static final BitmapCharRec ch245 = new BitmapCharRec(5,10,-1,0,7,ch245data); - -/* char: 0xf4 */ - -static final byte[] ch244data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x70,(byte) 0x0,(byte) 0x50,(byte) 0x20, -}; - -static final BitmapCharRec ch244 = new BitmapCharRec(5,10,-1,0,7,ch244data); - -/* char: 0xf3 */ - -static final byte[] ch243data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x70,(byte) 0x0,(byte) 0x20,(byte) 0x10, -}; - -static final BitmapCharRec ch243 = new BitmapCharRec(5,10,-1,0,7,ch243data); - -/* char: 0xf2 */ - -static final byte[] ch242data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x70,(byte) 0x0,(byte) 0x20,(byte) 0x40, -}; - -static final BitmapCharRec ch242 = new BitmapCharRec(5,10,-1,0,7,ch242data); - -/* char: 0xf1 */ - -static final byte[] ch241data = { -(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0xc8,(byte) 0xb0,(byte) 0x0,(byte) 0x50,(byte) 0x28, -}; - -static final BitmapCharRec ch241 = new BitmapCharRec(5,10,-1,0,7,ch241data); - -/* char: 0xf0 */ - -static final byte[] ch240data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x78,(byte) 0x8,(byte) 0x50,(byte) 0x30,(byte) 0x68, -}; - -static final BitmapCharRec ch240 = new BitmapCharRec(5,10,-1,0,7,ch240data); - -/* char: 0xef */ - -static final byte[] ch239data = { -(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x0,(byte) 0xa0, -}; - -static final BitmapCharRec ch239 = new BitmapCharRec(3,9,0,0,3,ch239data); - -/* char: 0xee */ - -static final byte[] ch238data = { -(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x0,(byte) 0xa0,(byte) 0x40, -}; - -static final BitmapCharRec ch238 = new BitmapCharRec(3,10,0,0,3,ch238data); - -/* char: 0xed */ - -static final byte[] ch237data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x0,(byte) 0x80,(byte) 0x40, -}; - -static final BitmapCharRec ch237 = new BitmapCharRec(2,10,-1,0,3,ch237data); - -/* char: 0xec */ - -static final byte[] ch236data = { -(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x0,(byte) 0x40,(byte) 0x80, -}; - -static final BitmapCharRec ch236 = new BitmapCharRec(2,10,0,0,3,ch236data); - -/* char: 0xeb */ - -static final byte[] ch235data = { -(byte) 0x70,(byte) 0x88,(byte) 0x80,(byte) 0xf8,(byte) 0x88,(byte) 0x88,(byte) 0x70,(byte) 0x0,(byte) 0x50, -}; - -static final BitmapCharRec ch235 = new BitmapCharRec(5,9,-1,0,7,ch235data); - -/* char: 0xea */ - -static final byte[] ch234data = { -(byte) 0x70,(byte) 0x88,(byte) 0x80,(byte) 0xf8,(byte) 0x88,(byte) 0x88,(byte) 0x70,(byte) 0x0,(byte) 0x50,(byte) 0x20, -}; - -static final BitmapCharRec ch234 = new BitmapCharRec(5,10,-1,0,7,ch234data); - -/* char: 0xe9 */ - -static final byte[] ch233data = { -(byte) 0x70,(byte) 0x88,(byte) 0x80,(byte) 0xf8,(byte) 0x88,(byte) 0x88,(byte) 0x70,(byte) 0x0,(byte) 0x20,(byte) 0x10, -}; - -static final BitmapCharRec ch233 = new BitmapCharRec(5,10,-1,0,7,ch233data); - -/* char: 0xe8 */ - -static final byte[] ch232data = { -(byte) 0x70,(byte) 0x88,(byte) 0x80,(byte) 0xf8,(byte) 0x88,(byte) 0x88,(byte) 0x70,(byte) 0x0,(byte) 0x20,(byte) 0x40, -}; - -static final BitmapCharRec ch232 = new BitmapCharRec(5,10,-1,0,7,ch232data); - -/* char: 0xe7 */ - -static final byte[] ch231data = { -(byte) 0x60,(byte) 0x10,(byte) 0x20,(byte) 0x70,(byte) 0x88,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch231 = new BitmapCharRec(5,10,-1,3,7,ch231data); - -/* char: 0xe6 */ - -static final byte[] ch230data = { -(byte) 0x77,(byte) 0x0,(byte) 0x88,(byte) 0x80,(byte) 0x88,(byte) 0x0,(byte) 0x7f,(byte) 0x80,(byte) 0x8,(byte) 0x80,(byte) 0x88,(byte) 0x80,(byte) 0x77,(byte) 0x0, -}; - -static final BitmapCharRec ch230 = new BitmapCharRec(9,7,-1,0,11,ch230data); - -/* char: 0xe5 */ - -static final byte[] ch229data = { -(byte) 0x74,(byte) 0x88,(byte) 0x88,(byte) 0x78,(byte) 0x8,(byte) 0x88,(byte) 0x70,(byte) 0x30,(byte) 0x48,(byte) 0x30, -}; - -static final BitmapCharRec ch229 = new BitmapCharRec(6,10,-1,0,7,ch229data); - -/* char: 0xe4 */ - -static final byte[] ch228data = { -(byte) 0x74,(byte) 0x88,(byte) 0x88,(byte) 0x78,(byte) 0x8,(byte) 0x88,(byte) 0x70,(byte) 0x0,(byte) 0x50, -}; - -static final BitmapCharRec ch228 = new BitmapCharRec(6,9,-1,0,7,ch228data); - -/* char: 0xe3 */ - -static final byte[] ch227data = { -(byte) 0x74,(byte) 0x88,(byte) 0x88,(byte) 0x78,(byte) 0x8,(byte) 0x88,(byte) 0x70,(byte) 0x0,(byte) 0x50,(byte) 0x28, -}; - -static final BitmapCharRec ch227 = new BitmapCharRec(6,10,-1,0,7,ch227data); - -/* char: 0xe2 */ - -static final byte[] ch226data = { -(byte) 0x74,(byte) 0x88,(byte) 0x88,(byte) 0x78,(byte) 0x8,(byte) 0x88,(byte) 0x70,(byte) 0x0,(byte) 0x50,(byte) 0x20, -}; - -static final BitmapCharRec ch226 = new BitmapCharRec(6,10,-1,0,7,ch226data); - -/* char: 0xe1 */ - -static final byte[] ch225data = { -(byte) 0x74,(byte) 0x88,(byte) 0x88,(byte) 0x78,(byte) 0x8,(byte) 0x88,(byte) 0x70,(byte) 0x0,(byte) 0x20,(byte) 0x10, -}; - -static final BitmapCharRec ch225 = new BitmapCharRec(6,10,-1,0,7,ch225data); - -/* char: 0xe0 */ - -static final byte[] ch224data = { -(byte) 0x74,(byte) 0x88,(byte) 0x88,(byte) 0x78,(byte) 0x8,(byte) 0x88,(byte) 0x70,(byte) 0x0,(byte) 0x10,(byte) 0x20, -}; - -static final BitmapCharRec ch224 = new BitmapCharRec(6,10,-1,0,7,ch224data); - -/* char: 0xdf */ - -static final byte[] ch223data = { -(byte) 0xb0,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0xb0,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch223 = new BitmapCharRec(5,9,-1,0,7,ch223data); - -/* char: 0xde */ - -static final byte[] ch222data = { -(byte) 0x80,(byte) 0x80,(byte) 0xf8,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0xf8,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch222 = new BitmapCharRec(6,9,-1,0,8,ch222data); - -/* char: 0xdd */ - -static final byte[] ch221data = { -(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x28,(byte) 0x44,(byte) 0x44,(byte) 0x82,(byte) 0x82,(byte) 0x0,(byte) 0x10,(byte) 0x8, -}; - -static final BitmapCharRec ch221 = new BitmapCharRec(7,12,-1,0,9,ch221data); - -/* char: 0xdc */ - -static final byte[] ch220data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x0,(byte) 0x48, -}; - -static final BitmapCharRec ch220 = new BitmapCharRec(6,11,-1,0,8,ch220data); - -/* char: 0xdb */ - -static final byte[] ch219data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x0,(byte) 0x28,(byte) 0x10, -}; - -static final BitmapCharRec ch219 = new BitmapCharRec(6,12,-1,0,8,ch219data); - -/* char: 0xda */ - -static final byte[] ch218data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x0,(byte) 0x10,(byte) 0x8, -}; - -static final BitmapCharRec ch218 = new BitmapCharRec(6,12,-1,0,8,ch218data); - -/* char: 0xd9 */ - -static final byte[] ch217data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x0,(byte) 0x10,(byte) 0x20, -}; - -static final BitmapCharRec ch217 = new BitmapCharRec(6,12,-1,0,8,ch217data); - -/* char: 0xd8 */ - -static final byte[] ch216data = { -(byte) 0x80,(byte) 0x0,(byte) 0x5e,(byte) 0x0,(byte) 0x21,(byte) 0x0,(byte) 0x50,(byte) 0x80,(byte) 0x48,(byte) 0x80,(byte) 0x44,(byte) 0x80,(byte) 0x44,(byte) 0x80,(byte) 0x42,(byte) 0x80, -(byte) 0x21,(byte) 0x0,(byte) 0x1e,(byte) 0x80,(byte) 0x0,(byte) 0x40, -}; - -static final BitmapCharRec ch216 = new BitmapCharRec(10,11,0,1,10,ch216data); - -/* char: 0xd7 */ - -static final byte[] ch215data = { -(byte) 0x88,(byte) 0x50,(byte) 0x20,(byte) 0x50,(byte) 0x88, -}; - -static final BitmapCharRec ch215 = new BitmapCharRec(5,5,-1,-1,7,ch215data); - -/* char: 0xd6 */ - -static final byte[] ch214data = { -(byte) 0x3c,(byte) 0x42,(byte) 0x81,(byte) 0x81,(byte) 0x81,(byte) 0x81,(byte) 0x81,(byte) 0x42,(byte) 0x3c,(byte) 0x0,(byte) 0x24, -}; - -static final BitmapCharRec ch214 = new BitmapCharRec(8,11,-1,0,10,ch214data); - -/* char: 0xd5 */ - -static final byte[] ch213data = { -(byte) 0x3c,(byte) 0x42,(byte) 0x81,(byte) 0x81,(byte) 0x81,(byte) 0x81,(byte) 0x81,(byte) 0x42,(byte) 0x3c,(byte) 0x0,(byte) 0x28,(byte) 0x14, -}; - -static final BitmapCharRec ch213 = new BitmapCharRec(8,12,-1,0,10,ch213data); - -/* char: 0xd4 */ - -static final byte[] ch212data = { -(byte) 0x3c,(byte) 0x42,(byte) 0x81,(byte) 0x81,(byte) 0x81,(byte) 0x81,(byte) 0x81,(byte) 0x42,(byte) 0x3c,(byte) 0x0,(byte) 0x14,(byte) 0x8, -}; - -static final BitmapCharRec ch212 = new BitmapCharRec(8,12,-1,0,10,ch212data); - -/* char: 0xd3 */ - -static final byte[] ch211data = { -(byte) 0x3c,(byte) 0x42,(byte) 0x81,(byte) 0x81,(byte) 0x81,(byte) 0x81,(byte) 0x81,(byte) 0x42,(byte) 0x3c,(byte) 0x0,(byte) 0x8,(byte) 0x4, -}; - -static final BitmapCharRec ch211 = new BitmapCharRec(8,12,-1,0,10,ch211data); - -/* char: 0xd2 */ - -static final byte[] ch210data = { -(byte) 0x3c,(byte) 0x42,(byte) 0x81,(byte) 0x81,(byte) 0x81,(byte) 0x81,(byte) 0x81,(byte) 0x42,(byte) 0x3c,(byte) 0x0,(byte) 0x8,(byte) 0x10, -}; - -static final BitmapCharRec ch210 = new BitmapCharRec(8,12,-1,0,10,ch210data); - -/* char: 0xd1 */ - -static final byte[] ch209data = { -(byte) 0x82,(byte) 0x86,(byte) 0x8a,(byte) 0x8a,(byte) 0x92,(byte) 0xa2,(byte) 0xa2,(byte) 0xc2,(byte) 0x82,(byte) 0x0,(byte) 0x28,(byte) 0x14, -}; - -static final BitmapCharRec ch209 = new BitmapCharRec(7,12,-1,0,9,ch209data); - -/* char: 0xd0 */ - -static final byte[] ch208data = { -(byte) 0x7c,(byte) 0x42,(byte) 0x41,(byte) 0x41,(byte) 0xf1,(byte) 0x41,(byte) 0x41,(byte) 0x42,(byte) 0x7c, -}; - -static final BitmapCharRec ch208 = new BitmapCharRec(8,9,0,0,9,ch208data); - -/* char: 0xcf */ - -static final byte[] ch207data = { -(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x0,(byte) 0xa0, -}; - -static final BitmapCharRec ch207 = new BitmapCharRec(3,11,0,0,3,ch207data); - -/* char: 0xce */ - -static final byte[] ch206data = { -(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x0,(byte) 0xa0,(byte) 0x40, -}; - -static final BitmapCharRec ch206 = new BitmapCharRec(3,12,0,0,3,ch206data); - -/* char: 0xcd */ - -static final byte[] ch205data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x0,(byte) 0x80,(byte) 0x40, -}; - -static final BitmapCharRec ch205 = new BitmapCharRec(2,12,-1,0,3,ch205data); - -/* char: 0xcc */ - -static final byte[] ch204data = { -(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x0,(byte) 0x40,(byte) 0x80, -}; - -static final BitmapCharRec ch204 = new BitmapCharRec(2,12,0,0,3,ch204data); - -/* char: 0xcb */ - -static final byte[] ch203data = { -(byte) 0xfc,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xfc,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xfc,(byte) 0x0,(byte) 0x28, -}; - -static final BitmapCharRec ch203 = new BitmapCharRec(6,11,-1,0,8,ch203data); - -/* char: 0xca */ - -static final byte[] ch202data = { -(byte) 0xfc,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xfc,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xfc,(byte) 0x0,(byte) 0x28,(byte) 0x10, -}; - -static final BitmapCharRec ch202 = new BitmapCharRec(6,12,-1,0,8,ch202data); - -/* char: 0xc9 */ - -static final byte[] ch201data = { -(byte) 0xfc,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xfc,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xfc,(byte) 0x0,(byte) 0x10,(byte) 0x8, -}; - -static final BitmapCharRec ch201 = new BitmapCharRec(6,12,-1,0,8,ch201data); - -/* char: 0xc8 */ - -static final byte[] ch200data = { -(byte) 0xfc,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xfc,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xfc,(byte) 0x0,(byte) 0x10,(byte) 0x20, -}; - -static final BitmapCharRec ch200 = new BitmapCharRec(6,12,-1,0,8,ch200data); - -/* char: 0xc7 */ - -static final byte[] ch199data = { -(byte) 0x30,(byte) 0x8,(byte) 0x8,(byte) 0x3c,(byte) 0x42,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x42,(byte) 0x3c, -}; - -static final BitmapCharRec ch199 = new BitmapCharRec(7,12,-1,3,9,ch199data); - -/* char: 0xc6 */ - -static final byte[] ch198data = { -(byte) 0x8f,(byte) 0x80,(byte) 0x88,(byte) 0x0,(byte) 0x88,(byte) 0x0,(byte) 0x78,(byte) 0x0,(byte) 0x4f,(byte) 0x80,(byte) 0x48,(byte) 0x0,(byte) 0x28,(byte) 0x0,(byte) 0x28,(byte) 0x0, -(byte) 0x1f,(byte) 0x80, -}; - -static final BitmapCharRec ch198 = new BitmapCharRec(9,9,-1,0,11,ch198data); - -/* char: 0xc5 */ - -static final byte[] ch197data = { -(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x44,(byte) 0x44,(byte) 0x28,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x28,(byte) 0x10, -}; - -static final BitmapCharRec ch197 = new BitmapCharRec(7,12,-1,0,9,ch197data); - -/* char: 0xc4 */ - -static final byte[] ch196data = { -(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x44,(byte) 0x44,(byte) 0x28,(byte) 0x10,(byte) 0x10,(byte) 0x0,(byte) 0x28, -}; - -static final BitmapCharRec ch196 = new BitmapCharRec(7,11,-1,0,9,ch196data); - -/* char: 0xc3 */ - -static final byte[] ch195data = { -(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x44,(byte) 0x44,(byte) 0x28,(byte) 0x10,(byte) 0x10,(byte) 0x0,(byte) 0x28,(byte) 0x14, -}; - -static final BitmapCharRec ch195 = new BitmapCharRec(7,12,-1,0,9,ch195data); - -/* char: 0xc2 */ - -static final byte[] ch194data = { -(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x44,(byte) 0x44,(byte) 0x28,(byte) 0x10,(byte) 0x10,(byte) 0x0,(byte) 0x28,(byte) 0x10, -}; - -static final BitmapCharRec ch194 = new BitmapCharRec(7,12,-1,0,9,ch194data); - -/* char: 0xc1 */ - -static final byte[] ch193data = { -(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x44,(byte) 0x44,(byte) 0x28,(byte) 0x10,(byte) 0x10,(byte) 0x0,(byte) 0x10,(byte) 0x8, -}; - -static final BitmapCharRec ch193 = new BitmapCharRec(7,12,-1,0,9,ch193data); - -/* char: 0xc0 */ - -static final byte[] ch192data = { -(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x44,(byte) 0x44,(byte) 0x28,(byte) 0x10,(byte) 0x10,(byte) 0x0,(byte) 0x10,(byte) 0x20, -}; - -static final BitmapCharRec ch192 = new BitmapCharRec(7,12,-1,0,9,ch192data); - -/* char: 0xbf */ - -static final byte[] ch191data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x40,(byte) 0x40,(byte) 0x20,(byte) 0x20,(byte) 0x0,(byte) 0x20, -}; - -static final BitmapCharRec ch191 = new BitmapCharRec(5,9,-1,3,7,ch191data); - -/* char: 0xbe */ - -static final byte[] ch190data = { -(byte) 0x21,(byte) 0x0,(byte) 0x17,(byte) 0x80,(byte) 0x15,(byte) 0x0,(byte) 0xb,(byte) 0x0,(byte) 0xc9,(byte) 0x0,(byte) 0x24,(byte) 0x0,(byte) 0x44,(byte) 0x0,(byte) 0x22,(byte) 0x0, -(byte) 0xe1,(byte) 0x0, -}; - -static final BitmapCharRec ch190 = new BitmapCharRec(9,9,0,0,10,ch190data); - -/* char: 0xbd */ - -static final byte[] ch189data = { -(byte) 0x47,(byte) 0x80,(byte) 0x22,(byte) 0x0,(byte) 0x11,(byte) 0x0,(byte) 0x14,(byte) 0x80,(byte) 0x4b,(byte) 0x0,(byte) 0x48,(byte) 0x0,(byte) 0x44,(byte) 0x0,(byte) 0xc2,(byte) 0x0, -(byte) 0x41,(byte) 0x0, -}; - -static final BitmapCharRec ch189 = new BitmapCharRec(9,9,0,0,10,ch189data); - -/* char: 0xbc */ - -static final byte[] ch188data = { -(byte) 0x41,(byte) 0x0,(byte) 0x27,(byte) 0x80,(byte) 0x15,(byte) 0x0,(byte) 0x13,(byte) 0x0,(byte) 0x49,(byte) 0x0,(byte) 0x44,(byte) 0x0,(byte) 0x44,(byte) 0x0,(byte) 0xc2,(byte) 0x0, -(byte) 0x41,(byte) 0x0, -}; - -static final BitmapCharRec ch188 = new BitmapCharRec(9,9,0,0,10,ch188data); - -/* char: 0xbb */ - -static final byte[] ch187data = { -(byte) 0xa0,(byte) 0x50,(byte) 0x28,(byte) 0x50,(byte) 0xa0, -}; - -static final BitmapCharRec ch187 = new BitmapCharRec(5,5,-1,-1,7,ch187data); - -/* char: 0xba */ - -static final byte[] ch186data = { -(byte) 0xe0,(byte) 0x0,(byte) 0xe0,(byte) 0xa0,(byte) 0xe0, -}; - -static final BitmapCharRec ch186 = new BitmapCharRec(3,5,-1,-4,5,ch186data); - -/* char: 0xb9 */ - -static final byte[] ch185data = { -(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xc0,(byte) 0x40, -}; - -static final BitmapCharRec ch185 = new BitmapCharRec(2,5,-1,-3,4,ch185data); - -/* char: 0xb8 */ - -static final byte[] ch184data = { -(byte) 0xc0,(byte) 0x20,(byte) 0x20,(byte) 0x40, -}; - -static final BitmapCharRec ch184 = new BitmapCharRec(3,4,0,3,3,ch184data); - -/* char: 0xb7 */ - -static final byte[] ch183data = { -(byte) 0x80, -}; - -static final BitmapCharRec ch183 = new BitmapCharRec(1,1,-1,-3,3,ch183data); - -/* char: 0xb6 */ - -static final byte[] ch182data = { -(byte) 0x28,(byte) 0x28,(byte) 0x28,(byte) 0x28,(byte) 0x28,(byte) 0x28,(byte) 0x68,(byte) 0xe8,(byte) 0xe8,(byte) 0xe8,(byte) 0x68,(byte) 0x3c, -}; - -static final BitmapCharRec ch182 = new BitmapCharRec(6,12,0,3,7,ch182data); - -/* char: 0xb5 */ - -static final byte[] ch181data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xe8,(byte) 0x98,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88, -}; - -static final BitmapCharRec ch181 = new BitmapCharRec(5,10,-1,3,7,ch181data); - -/* char: 0xb4 */ - -static final byte[] ch180data = { -(byte) 0x80,(byte) 0x40, -}; - -static final BitmapCharRec ch180 = new BitmapCharRec(2,2,0,-8,2,ch180data); - -/* char: 0xb3 */ - -static final byte[] ch179data = { -(byte) 0xc0,(byte) 0x20,(byte) 0x40,(byte) 0x20,(byte) 0xe0, -}; - -static final BitmapCharRec ch179 = new BitmapCharRec(3,5,0,-3,4,ch179data); - -/* char: 0xb2 */ - -static final byte[] ch178data = { -(byte) 0xf0,(byte) 0x40,(byte) 0x20,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch178 = new BitmapCharRec(4,5,0,-3,4,ch178data); - -/* char: 0xb1 */ - -static final byte[] ch177data = { -(byte) 0xf8,(byte) 0x0,(byte) 0x20,(byte) 0x20,(byte) 0xf8,(byte) 0x20,(byte) 0x20, -}; - -static final BitmapCharRec ch177 = new BitmapCharRec(5,7,-1,0,7,ch177data); - -/* char: 0xb0 */ - -static final byte[] ch176data = { -(byte) 0x60,(byte) 0x90,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch176 = new BitmapCharRec(4,4,0,-4,5,ch176data); - -/* char: 0xaf */ - -static final byte[] ch175data = { -(byte) 0xf0, -}; - -static final BitmapCharRec ch175 = new BitmapCharRec(4,1,0,-8,4,ch175data); - -/* char: 0xae */ - -static final byte[] ch174data = { -(byte) 0x3e,(byte) 0x0,(byte) 0x41,(byte) 0x0,(byte) 0x94,(byte) 0x80,(byte) 0x94,(byte) 0x80,(byte) 0x98,(byte) 0x80,(byte) 0x94,(byte) 0x80,(byte) 0x9c,(byte) 0x80,(byte) 0x41,(byte) 0x0, -(byte) 0x3e,(byte) 0x0, -}; - -static final BitmapCharRec ch174 = new BitmapCharRec(9,9,-1,0,11,ch174data); - -/* char: 0xad */ - -static final byte[] ch173data = { -(byte) 0xf0, -}; - -static final BitmapCharRec ch173 = new BitmapCharRec(4,1,0,-3,5,ch173data); - -/* char: 0xac */ - -static final byte[] ch172data = { -(byte) 0x4,(byte) 0x4,(byte) 0x4,(byte) 0xfc, -}; - -static final BitmapCharRec ch172 = new BitmapCharRec(6,4,-1,-2,8,ch172data); - -/* char: 0xab */ - -static final byte[] ch171data = { -(byte) 0x28,(byte) 0x50,(byte) 0xa0,(byte) 0x50,(byte) 0x28, -}; - -static final BitmapCharRec ch171 = new BitmapCharRec(5,5,-1,-1,7,ch171data); - -/* char: 0xaa */ - -static final byte[] ch170data = { -(byte) 0xe0,(byte) 0x0,(byte) 0xa0,(byte) 0x20,(byte) 0xe0, -}; - -static final BitmapCharRec ch170 = new BitmapCharRec(3,5,-1,-4,5,ch170data); - -/* char: 0xa9 */ - -static final byte[] ch169data = { -(byte) 0x3e,(byte) 0x0,(byte) 0x41,(byte) 0x0,(byte) 0x9c,(byte) 0x80,(byte) 0xa2,(byte) 0x80,(byte) 0xa0,(byte) 0x80,(byte) 0xa2,(byte) 0x80,(byte) 0x9c,(byte) 0x80,(byte) 0x41,(byte) 0x0, -(byte) 0x3e,(byte) 0x0, -}; - -static final BitmapCharRec ch169 = new BitmapCharRec(9,9,-1,0,11,ch169data); - -/* char: 0xa8 */ - -static final byte[] ch168data = { -(byte) 0xa0, -}; - -static final BitmapCharRec ch168 = new BitmapCharRec(3,1,0,-8,3,ch168data); - -/* char: 0xa7 */ - -static final byte[] ch167data = { -(byte) 0x70,(byte) 0x88,(byte) 0x8,(byte) 0x30,(byte) 0x48,(byte) 0x88,(byte) 0x88,(byte) 0x90,(byte) 0x60,(byte) 0x80,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch167 = new BitmapCharRec(5,12,0,3,6,ch167data); - -/* char: 0xa6 */ - -static final byte[] ch166data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch166 = new BitmapCharRec(1,11,-1,2,3,ch166data); - -/* char: 0xa5 */ - -static final byte[] ch165data = { -(byte) 0x20,(byte) 0x20,(byte) 0xf8,(byte) 0x20,(byte) 0xf8,(byte) 0x20,(byte) 0x50,(byte) 0x88,(byte) 0x88, -}; - -static final BitmapCharRec ch165 = new BitmapCharRec(5,9,-1,0,7,ch165data); - -/* char: 0xa4 */ - -static final byte[] ch164data = { -(byte) 0x84,(byte) 0x78,(byte) 0x48,(byte) 0x48,(byte) 0x78,(byte) 0x84, -}; - -static final BitmapCharRec ch164 = new BitmapCharRec(6,6,0,-1,7,ch164data); - -/* char: 0xa3 */ - -static final byte[] ch163data = { -(byte) 0xb0,(byte) 0x48,(byte) 0x20,(byte) 0x20,(byte) 0xf0,(byte) 0x40,(byte) 0x40,(byte) 0x48,(byte) 0x30, -}; - -static final BitmapCharRec ch163 = new BitmapCharRec(5,9,-1,0,7,ch163data); - -/* char: 0xa2 */ - -static final byte[] ch162data = { -(byte) 0x40,(byte) 0x70,(byte) 0xc8,(byte) 0xa0,(byte) 0xa0,(byte) 0xa0,(byte) 0xa8,(byte) 0x70,(byte) 0x10, -}; - -static final BitmapCharRec ch162 = new BitmapCharRec(5,9,-1,1,7,ch162data); - -/* char: 0xa1 */ - -static final byte[] ch161data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x0,(byte) 0x80, -}; - -static final BitmapCharRec ch161 = new BitmapCharRec(1,10,-1,3,3,ch161data); - -/* char: 0xa0 */ - -static final BitmapCharRec ch160 = new BitmapCharRec(0,0,0,0,4,null); - -/* char: 0x7e '~' */ - -static final byte[] ch126data = { -(byte) 0x98,(byte) 0x64, -}; - -static final BitmapCharRec ch126 = new BitmapCharRec(6,2,0,-3,7,ch126data); - -/* char: 0x7d '}' */ - -static final byte[] ch125data = { -(byte) 0xc0,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x10,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0xc0, -}; - -static final BitmapCharRec ch125 = new BitmapCharRec(4,12,0,3,4,ch125data); - -/* char: 0x7c '|' */ - -static final byte[] ch124data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch124 = new BitmapCharRec(1,12,-1,3,3,ch124data); - -/* char: 0x7b '{' */ - -static final byte[] ch123data = { -(byte) 0x30,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x30, -}; - -static final BitmapCharRec ch123 = new BitmapCharRec(4,12,0,3,4,ch123data); - -/* char: 0x7a 'z' */ - -static final byte[] ch122data = { -(byte) 0xf0,(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x20,(byte) 0x10,(byte) 0xf0, -}; - -static final BitmapCharRec ch122 = new BitmapCharRec(4,7,-1,0,6,ch122data); - -/* char: 0x79 'y' */ - -static final byte[] ch121data = { -(byte) 0x80,(byte) 0x40,(byte) 0x20,(byte) 0x20,(byte) 0x50,(byte) 0x50,(byte) 0x90,(byte) 0x88,(byte) 0x88,(byte) 0x88, -}; - -static final BitmapCharRec ch121 = new BitmapCharRec(5,10,-1,3,7,ch121data); - -/* char: 0x78 'x' */ - -static final byte[] ch120data = { -(byte) 0x84,(byte) 0x84,(byte) 0x48,(byte) 0x30,(byte) 0x30,(byte) 0x48,(byte) 0x84, -}; - -static final BitmapCharRec ch120 = new BitmapCharRec(6,7,0,0,6,ch120data); - -/* char: 0x77 'w' */ - -static final byte[] ch119data = { -(byte) 0x22,(byte) 0x0,(byte) 0x22,(byte) 0x0,(byte) 0x55,(byte) 0x0,(byte) 0x49,(byte) 0x0,(byte) 0x49,(byte) 0x0,(byte) 0x88,(byte) 0x80,(byte) 0x88,(byte) 0x80, -}; - -static final BitmapCharRec ch119 = new BitmapCharRec(9,7,0,0,9,ch119data); - -/* char: 0x76 'v' */ - -static final byte[] ch118data = { -(byte) 0x20,(byte) 0x20,(byte) 0x50,(byte) 0x50,(byte) 0x88,(byte) 0x88,(byte) 0x88, -}; - -static final BitmapCharRec ch118 = new BitmapCharRec(5,7,-1,0,7,ch118data); - -/* char: 0x75 'u' */ - -static final byte[] ch117data = { -(byte) 0x68,(byte) 0x98,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88, -}; - -static final BitmapCharRec ch117 = new BitmapCharRec(5,7,-1,0,7,ch117data); - -/* char: 0x74 't' */ - -static final byte[] ch116data = { -(byte) 0x60,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xe0,(byte) 0x40,(byte) 0x40, -}; - -static final BitmapCharRec ch116 = new BitmapCharRec(3,9,0,0,3,ch116data); - -/* char: 0x73 's' */ - -static final byte[] ch115data = { -(byte) 0x60,(byte) 0x90,(byte) 0x10,(byte) 0x60,(byte) 0x80,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch115 = new BitmapCharRec(4,7,-1,0,6,ch115data); - -/* char: 0x72 'r' */ - -static final byte[] ch114data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xc0,(byte) 0xa0, -}; - -static final BitmapCharRec ch114 = new BitmapCharRec(3,7,-1,0,4,ch114data); - -/* char: 0x71 'q' */ - -static final byte[] ch113data = { -(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x68,(byte) 0x98,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x98,(byte) 0x68, -}; - -static final BitmapCharRec ch113 = new BitmapCharRec(5,10,-1,3,7,ch113data); - -/* char: 0x70 'p' */ - -static final byte[] ch112data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xb0,(byte) 0xc8,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0xc8,(byte) 0xb0, -}; - -static final BitmapCharRec ch112 = new BitmapCharRec(5,10,-1,3,7,ch112data); - -/* char: 0x6f 'o' */ - -static final byte[] ch111data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch111 = new BitmapCharRec(5,7,-1,0,7,ch111data); - -/* char: 0x6e 'n' */ - -static final byte[] ch110data = { -(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0xc8,(byte) 0xb0, -}; - -static final BitmapCharRec ch110 = new BitmapCharRec(5,7,-1,0,7,ch110data); - -/* char: 0x6d 'm' */ - -static final byte[] ch109data = { -(byte) 0x92,(byte) 0x92,(byte) 0x92,(byte) 0x92,(byte) 0x92,(byte) 0xda,(byte) 0xa4, -}; - -static final BitmapCharRec ch109 = new BitmapCharRec(7,7,-1,0,9,ch109data); - -/* char: 0x6c 'l' */ - -static final byte[] ch108data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch108 = new BitmapCharRec(1,9,-1,0,3,ch108data); - -/* char: 0x6b 'k' */ - -static final byte[] ch107data = { -(byte) 0x88,(byte) 0x90,(byte) 0xa0,(byte) 0xc0,(byte) 0xc0,(byte) 0xa0,(byte) 0x90,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch107 = new BitmapCharRec(5,9,-1,0,6,ch107data); - -/* char: 0x6a 'j' */ - -static final byte[] ch106data = { -(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x0,(byte) 0x40, -}; - -static final BitmapCharRec ch106 = new BitmapCharRec(2,12,0,3,3,ch106data); - -/* char: 0x69 'i' */ - -static final byte[] ch105data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x0,(byte) 0x80, -}; - -static final BitmapCharRec ch105 = new BitmapCharRec(1,9,-1,0,3,ch105data); - -/* char: 0x68 'h' */ - -static final byte[] ch104data = { -(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0xc8,(byte) 0xb0,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch104 = new BitmapCharRec(5,9,-1,0,7,ch104data); - -/* char: 0x67 'g' */ - -static final byte[] ch103data = { -(byte) 0x70,(byte) 0x88,(byte) 0x8,(byte) 0x68,(byte) 0x98,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x98,(byte) 0x68, -}; - -static final BitmapCharRec ch103 = new BitmapCharRec(5,10,-1,3,7,ch103data); - -/* char: 0x66 'f' */ - -static final byte[] ch102data = { -(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xe0,(byte) 0x40,(byte) 0x30, -}; - -static final BitmapCharRec ch102 = new BitmapCharRec(4,9,0,0,3,ch102data); - -/* char: 0x65 'e' */ - -static final byte[] ch101data = { -(byte) 0x70,(byte) 0x88,(byte) 0x80,(byte) 0xf8,(byte) 0x88,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch101 = new BitmapCharRec(5,7,-1,0,7,ch101data); - -/* char: 0x64 'd' */ - -static final byte[] ch100data = { -(byte) 0x68,(byte) 0x98,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x98,(byte) 0x68,(byte) 0x8,(byte) 0x8, -}; - -static final BitmapCharRec ch100 = new BitmapCharRec(5,9,-1,0,7,ch100data); - -/* char: 0x63 'c' */ - -static final byte[] ch99data = { -(byte) 0x70,(byte) 0x88,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch99 = new BitmapCharRec(5,7,-1,0,7,ch99data); - -/* char: 0x62 'b' */ - -static final byte[] ch98data = { -(byte) 0xb0,(byte) 0xc8,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0xc8,(byte) 0xb0,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch98 = new BitmapCharRec(5,9,-1,0,7,ch98data); - -/* char: 0x61 'a' */ - -static final byte[] ch97data = { -(byte) 0x74,(byte) 0x88,(byte) 0x88,(byte) 0x78,(byte) 0x8,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch97 = new BitmapCharRec(6,7,-1,0,7,ch97data); - -/* char: 0x60 '`' */ - -static final byte[] ch96data = { -(byte) 0xc0,(byte) 0x80,(byte) 0x40, -}; - -static final BitmapCharRec ch96 = new BitmapCharRec(2,3,0,-6,3,ch96data); - -/* char: 0x5f '_' */ - -static final byte[] ch95data = { -(byte) 0xfe, -}; - -static final BitmapCharRec ch95 = new BitmapCharRec(7,1,0,2,7,ch95data); - -/* char: 0x5e '^' */ - -static final byte[] ch94data = { -(byte) 0x88,(byte) 0x50,(byte) 0x20, -}; - -static final BitmapCharRec ch94 = new BitmapCharRec(5,3,0,-5,6,ch94data); - -/* char: 0x5d ']' */ - -static final byte[] ch93data = { -(byte) 0xc0,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xc0, -}; - -static final BitmapCharRec ch93 = new BitmapCharRec(2,12,0,3,3,ch93data); - -/* char: 0x5c '\' */ - -static final byte[] ch92data = { -(byte) 0x10,(byte) 0x10,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x40,(byte) 0x40,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch92 = new BitmapCharRec(4,9,0,0,4,ch92data); - -/* char: 0x5b '[' */ - -static final byte[] ch91data = { -(byte) 0xc0,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xc0, -}; - -static final BitmapCharRec ch91 = new BitmapCharRec(2,12,-1,3,3,ch91data); - -/* char: 0x5a 'Z' */ - -static final byte[] ch90data = { -(byte) 0xfe,(byte) 0x80,(byte) 0x40,(byte) 0x20,(byte) 0x10,(byte) 0x8,(byte) 0x4,(byte) 0x2,(byte) 0xfe, -}; - -static final BitmapCharRec ch90 = new BitmapCharRec(7,9,-1,0,9,ch90data); - -/* char: 0x59 'Y' */ - -static final byte[] ch89data = { -(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x28,(byte) 0x44,(byte) 0x44,(byte) 0x82,(byte) 0x82, -}; - -static final BitmapCharRec ch89 = new BitmapCharRec(7,9,-1,0,9,ch89data); - -/* char: 0x58 'X' */ - -static final byte[] ch88data = { -(byte) 0x82,(byte) 0x44,(byte) 0x44,(byte) 0x28,(byte) 0x10,(byte) 0x28,(byte) 0x44,(byte) 0x44,(byte) 0x82, -}; - -static final BitmapCharRec ch88 = new BitmapCharRec(7,9,-1,0,9,ch88data); - -/* char: 0x57 'W' */ - -static final byte[] ch87data = { -(byte) 0x22,(byte) 0x0,(byte) 0x22,(byte) 0x0,(byte) 0x22,(byte) 0x0,(byte) 0x55,(byte) 0x0,(byte) 0x55,(byte) 0x0,(byte) 0x49,(byte) 0x0,(byte) 0x88,(byte) 0x80,(byte) 0x88,(byte) 0x80, -(byte) 0x88,(byte) 0x80, -}; - -static final BitmapCharRec ch87 = new BitmapCharRec(9,9,-1,0,11,ch87data); - -/* char: 0x56 'V' */ - -static final byte[] ch86data = { -(byte) 0x10,(byte) 0x10,(byte) 0x28,(byte) 0x28,(byte) 0x44,(byte) 0x44,(byte) 0x44,(byte) 0x82,(byte) 0x82, -}; - -static final BitmapCharRec ch86 = new BitmapCharRec(7,9,-1,0,9,ch86data); - -/* char: 0x55 'U' */ - -static final byte[] ch85data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x84, -}; - -static final BitmapCharRec ch85 = new BitmapCharRec(6,9,-1,0,8,ch85data); - -/* char: 0x54 'T' */ - -static final byte[] ch84data = { -(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0xfe, -}; - -static final BitmapCharRec ch84 = new BitmapCharRec(7,9,0,0,7,ch84data); - -/* char: 0x53 'S' */ - -static final byte[] ch83data = { -(byte) 0x78,(byte) 0x84,(byte) 0x84,(byte) 0x4,(byte) 0x18,(byte) 0x60,(byte) 0x80,(byte) 0x84,(byte) 0x78, -}; - -static final BitmapCharRec ch83 = new BitmapCharRec(6,9,-1,0,8,ch83data); - -/* char: 0x52 'R' */ - -static final byte[] ch82data = { -(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0x88,(byte) 0xf8,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0xf8, -}; - -static final BitmapCharRec ch82 = new BitmapCharRec(6,9,-1,0,8,ch82data); - -/* char: 0x51 'Q' */ - -static final byte[] ch81data = { -(byte) 0x3d,(byte) 0x42,(byte) 0x85,(byte) 0x89,(byte) 0x81,(byte) 0x81,(byte) 0x81,(byte) 0x42,(byte) 0x3c, -}; - -static final BitmapCharRec ch81 = new BitmapCharRec(8,9,-1,0,10,ch81data); - -/* char: 0x50 'P' */ - -static final byte[] ch80data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xf8,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0xf8, -}; - -static final BitmapCharRec ch80 = new BitmapCharRec(6,9,-1,0,8,ch80data); - -/* char: 0x4f 'O' */ - -static final byte[] ch79data = { -(byte) 0x3c,(byte) 0x42,(byte) 0x81,(byte) 0x81,(byte) 0x81,(byte) 0x81,(byte) 0x81,(byte) 0x42,(byte) 0x3c, -}; - -static final BitmapCharRec ch79 = new BitmapCharRec(8,9,-1,0,10,ch79data); - -/* char: 0x4e 'N' */ - -static final byte[] ch78data = { -(byte) 0x82,(byte) 0x86,(byte) 0x8a,(byte) 0x8a,(byte) 0x92,(byte) 0xa2,(byte) 0xa2,(byte) 0xc2,(byte) 0x82, -}; - -static final BitmapCharRec ch78 = new BitmapCharRec(7,9,-1,0,9,ch78data); - -/* char: 0x4d 'M' */ - -static final byte[] ch77data = { -(byte) 0x88,(byte) 0x80,(byte) 0x88,(byte) 0x80,(byte) 0x94,(byte) 0x80,(byte) 0x94,(byte) 0x80,(byte) 0xa2,(byte) 0x80,(byte) 0xa2,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80, -(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch77 = new BitmapCharRec(9,9,-1,0,11,ch77data); - -/* char: 0x4c 'L' */ - -static final byte[] ch76data = { -(byte) 0xf8,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch76 = new BitmapCharRec(5,9,-1,0,7,ch76data); - -/* char: 0x4b 'K' */ - -static final byte[] ch75data = { -(byte) 0x82,(byte) 0x84,(byte) 0x88,(byte) 0x90,(byte) 0xe0,(byte) 0xa0,(byte) 0x90,(byte) 0x88,(byte) 0x84, -}; - -static final BitmapCharRec ch75 = new BitmapCharRec(7,9,-1,0,8,ch75data); - -/* char: 0x4a 'J' */ - -static final byte[] ch74data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x8,(byte) 0x8, -}; - -static final BitmapCharRec ch74 = new BitmapCharRec(5,9,-1,0,7,ch74data); - -/* char: 0x49 'I' */ - -static final byte[] ch73data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch73 = new BitmapCharRec(1,9,-1,0,3,ch73data); - -/* char: 0x48 'H' */ - -static final byte[] ch72data = { -(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0xfe,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82, -}; - -static final BitmapCharRec ch72 = new BitmapCharRec(7,9,-1,0,9,ch72data); - -/* char: 0x47 'G' */ - -static final byte[] ch71data = { -(byte) 0x3a,(byte) 0x46,(byte) 0x82,(byte) 0x82,(byte) 0x8e,(byte) 0x80,(byte) 0x80,(byte) 0x42,(byte) 0x3c, -}; - -static final BitmapCharRec ch71 = new BitmapCharRec(7,9,-1,0,9,ch71data); - -/* char: 0x46 'F' */ - -static final byte[] ch70data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xf8,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xfc, -}; - -static final BitmapCharRec ch70 = new BitmapCharRec(6,9,-1,0,8,ch70data); - -/* char: 0x45 'E' */ - -static final byte[] ch69data = { -(byte) 0xfc,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xfc,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xfc, -}; - -static final BitmapCharRec ch69 = new BitmapCharRec(6,9,-1,0,8,ch69data); - -/* char: 0x44 'D' */ - -static final byte[] ch68data = { -(byte) 0xf8,(byte) 0x84,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x84,(byte) 0xf8, -}; - -static final BitmapCharRec ch68 = new BitmapCharRec(7,9,-1,0,9,ch68data); - -/* char: 0x43 'C' */ - -static final byte[] ch67data = { -(byte) 0x3c,(byte) 0x42,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x42,(byte) 0x3c, -}; - -static final BitmapCharRec ch67 = new BitmapCharRec(7,9,-1,0,9,ch67data); - -/* char: 0x42 'B' */ - -static final byte[] ch66data = { -(byte) 0xf8,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0xf8,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0xf8, -}; - -static final BitmapCharRec ch66 = new BitmapCharRec(6,9,-1,0,8,ch66data); - -/* char: 0x41 'A' */ - -static final byte[] ch65data = { -(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x7c,(byte) 0x44,(byte) 0x44,(byte) 0x28,(byte) 0x28,(byte) 0x10, -}; - -static final BitmapCharRec ch65 = new BitmapCharRec(7,9,-1,0,9,ch65data); - -/* char: 0x40 '@' */ - -static final byte[] ch64data = { -(byte) 0x3e,(byte) 0x0,(byte) 0x40,(byte) 0x0,(byte) 0x9b,(byte) 0x0,(byte) 0xa6,(byte) 0x80,(byte) 0xa2,(byte) 0x40,(byte) 0xa2,(byte) 0x40,(byte) 0x92,(byte) 0x40,(byte) 0x4d,(byte) 0x40, -(byte) 0x60,(byte) 0x80,(byte) 0x1f,(byte) 0x0, -}; - -static final BitmapCharRec ch64 = new BitmapCharRec(10,10,-1,1,12,ch64data); - -/* char: 0x3f '?' */ - -static final byte[] ch63data = { -(byte) 0x20,(byte) 0x0,(byte) 0x20,(byte) 0x20,(byte) 0x10,(byte) 0x10,(byte) 0x88,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch63 = new BitmapCharRec(5,9,-1,0,7,ch63data); - -/* char: 0x3e '>' */ - -static final byte[] ch62data = { -(byte) 0xc0,(byte) 0x30,(byte) 0xc,(byte) 0x30,(byte) 0xc0, -}; - -static final BitmapCharRec ch62 = new BitmapCharRec(6,5,-1,-1,7,ch62data); - -/* char: 0x3d '=' */ - -static final byte[] ch61data = { -(byte) 0xf8,(byte) 0x0,(byte) 0xf8, -}; - -static final BitmapCharRec ch61 = new BitmapCharRec(5,3,-1,-2,7,ch61data); - -/* char: 0x3c '<' */ - -static final byte[] ch60data = { -(byte) 0xc,(byte) 0x30,(byte) 0xc0,(byte) 0x30,(byte) 0xc, -}; - -static final BitmapCharRec ch60 = new BitmapCharRec(6,5,0,-1,7,ch60data); - -/* char: 0x3b ';' */ - -static final byte[] ch59data = { -(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x40, -}; - -static final BitmapCharRec ch59 = new BitmapCharRec(2,8,0,2,3,ch59data); - -/* char: 0x3a ':' */ - -static final byte[] ch58data = { -(byte) 0x80,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x80, -}; - -static final BitmapCharRec ch58 = new BitmapCharRec(1,6,-1,0,3,ch58data); - -/* char: 0x39 '9' */ - -static final byte[] ch57data = { -(byte) 0x70,(byte) 0x88,(byte) 0x8,(byte) 0x8,(byte) 0x78,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch57 = new BitmapCharRec(5,9,-1,0,7,ch57data); - -/* char: 0x38 '8' */ - -static final byte[] ch56data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch56 = new BitmapCharRec(5,9,-1,0,7,ch56data); - -/* char: 0x37 '7' */ - -static final byte[] ch55data = { -(byte) 0x40,(byte) 0x40,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x10,(byte) 0x10,(byte) 0x8,(byte) 0xf8, -}; - -static final BitmapCharRec ch55 = new BitmapCharRec(5,9,-1,0,7,ch55data); - -/* char: 0x36 '6' */ - -static final byte[] ch54data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0xc8,(byte) 0xb0,(byte) 0x80,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch54 = new BitmapCharRec(5,9,-1,0,7,ch54data); - -/* char: 0x35 '5' */ - -static final byte[] ch53data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x8,(byte) 0x8,(byte) 0xf0,(byte) 0x80,(byte) 0x80,(byte) 0xf8, -}; - -static final BitmapCharRec ch53 = new BitmapCharRec(5,9,-1,0,7,ch53data); - -/* char: 0x34 '4' */ - -static final byte[] ch52data = { -(byte) 0x8,(byte) 0x8,(byte) 0xfc,(byte) 0x88,(byte) 0x48,(byte) 0x28,(byte) 0x28,(byte) 0x18,(byte) 0x8, -}; - -static final BitmapCharRec ch52 = new BitmapCharRec(6,9,0,0,7,ch52data); - -/* char: 0x33 '3' */ - -static final byte[] ch51data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x8,(byte) 0x8,(byte) 0x30,(byte) 0x8,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch51 = new BitmapCharRec(5,9,-1,0,7,ch51data); - -/* char: 0x32 '2' */ - -static final byte[] ch50data = { -(byte) 0xf8,(byte) 0x80,(byte) 0x80,(byte) 0x40,(byte) 0x20,(byte) 0x10,(byte) 0x8,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch50 = new BitmapCharRec(5,9,-1,0,7,ch50data); - -/* char: 0x31 '1' */ - -static final byte[] ch49data = { -(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0xe0,(byte) 0x20, -}; - -static final BitmapCharRec ch49 = new BitmapCharRec(3,9,-1,0,7,ch49data); - -/* char: 0x30 '0' */ - -static final byte[] ch48data = { -(byte) 0x70,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x88,(byte) 0x70, -}; - -static final BitmapCharRec ch48 = new BitmapCharRec(5,9,-1,0,7,ch48data); - -/* char: 0x2f '/' */ - -static final byte[] ch47data = { -(byte) 0x80,(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x20,(byte) 0x20,(byte) 0x10,(byte) 0x10, -}; - -static final BitmapCharRec ch47 = new BitmapCharRec(4,9,0,0,4,ch47data); - -/* char: 0x2e '.' */ - -static final byte[] ch46data = { -(byte) 0x80, -}; - -static final BitmapCharRec ch46 = new BitmapCharRec(1,1,-1,0,3,ch46data); - -/* char: 0x2d '-' */ - -static final byte[] ch45data = { -(byte) 0xf8, -}; - -static final BitmapCharRec ch45 = new BitmapCharRec(5,1,-1,-3,8,ch45data); - -/* char: 0x2c ',' */ - -static final byte[] ch44data = { -(byte) 0x80,(byte) 0x40,(byte) 0x40, -}; - -static final BitmapCharRec ch44 = new BitmapCharRec(2,3,-1,2,4,ch44data); - -/* char: 0x2b '+' */ - -static final byte[] ch43data = { -(byte) 0x20,(byte) 0x20,(byte) 0xf8,(byte) 0x20,(byte) 0x20, -}; - -static final BitmapCharRec ch43 = new BitmapCharRec(5,5,-1,-1,7,ch43data); - -/* char: 0x2a '*' */ - -static final byte[] ch42data = { -(byte) 0xa0,(byte) 0x40,(byte) 0xa0, -}; - -static final BitmapCharRec ch42 = new BitmapCharRec(3,3,-1,-6,5,ch42data); - -/* char: 0x29 ')' */ - -static final byte[] ch41data = { -(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x40,(byte) 0x40,(byte) 0x80, -}; - -static final BitmapCharRec ch41 = new BitmapCharRec(3,12,0,3,4,ch41data); - -/* char: 0x28 '(' */ - -static final byte[] ch40data = { -(byte) 0x20,(byte) 0x40,(byte) 0x40,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x20, -}; - -static final BitmapCharRec ch40 = new BitmapCharRec(3,12,-1,3,4,ch40data); - -/* char: 0x27 ''' */ - -static final byte[] ch39data = { -(byte) 0x80,(byte) 0x40,(byte) 0xc0, -}; - -static final BitmapCharRec ch39 = new BitmapCharRec(2,3,-1,-6,3,ch39data); - -/* char: 0x26 '&' */ - -static final byte[] ch38data = { -(byte) 0x72,(byte) 0x8c,(byte) 0x84,(byte) 0x8a,(byte) 0x50,(byte) 0x30,(byte) 0x48,(byte) 0x48,(byte) 0x30, -}; - -static final BitmapCharRec ch38 = new BitmapCharRec(7,9,-1,0,9,ch38data); - -/* char: 0x25 '%' */ - -static final byte[] ch37data = { -(byte) 0x23,(byte) 0x0,(byte) 0x14,(byte) 0x80,(byte) 0x14,(byte) 0x80,(byte) 0x13,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0x68,(byte) 0x0,(byte) 0x94,(byte) 0x0,(byte) 0x94,(byte) 0x0, -(byte) 0x62,(byte) 0x0, -}; - -static final BitmapCharRec ch37 = new BitmapCharRec(9,9,-1,0,11,ch37data); - -/* char: 0x24 '$' */ - -static final byte[] ch36data = { -(byte) 0x20,(byte) 0x70,(byte) 0xa8,(byte) 0xa8,(byte) 0x28,(byte) 0x70,(byte) 0xa0,(byte) 0xa8,(byte) 0x70,(byte) 0x20, -}; - -static final BitmapCharRec ch36 = new BitmapCharRec(5,10,-1,1,7,ch36data); - -/* char: 0x23 '#' */ - -static final byte[] ch35data = { -(byte) 0x50,(byte) 0x50,(byte) 0x50,(byte) 0xfc,(byte) 0x28,(byte) 0xfc,(byte) 0x28,(byte) 0x28, -}; - -static final BitmapCharRec ch35 = new BitmapCharRec(6,8,0,0,7,ch35data); - -/* char: 0x22 '"' */ - -static final byte[] ch34data = { -(byte) 0xa0,(byte) 0xa0,(byte) 0xa0, -}; - -static final BitmapCharRec ch34 = new BitmapCharRec(3,3,-1,-6,5,ch34data); - -/* char: 0x21 '!' */ - -static final byte[] ch33data = { -(byte) 0x80,(byte) 0x0,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch33 = new BitmapCharRec(1,9,-1,0,3,ch33data); - -/* char: 0x20 ' ' */ - -static final BitmapCharRec ch32 = new BitmapCharRec(0,0,0,0,4,null); - -static final BitmapCharRec[] chars = { -ch32, -ch33, -ch34, -ch35, -ch36, -ch37, -ch38, -ch39, -ch40, -ch41, -ch42, -ch43, -ch44, -ch45, -ch46, -ch47, -ch48, -ch49, -ch50, -ch51, -ch52, -ch53, -ch54, -ch55, -ch56, -ch57, -ch58, -ch59, -ch60, -ch61, -ch62, -ch63, -ch64, -ch65, -ch66, -ch67, -ch68, -ch69, -ch70, -ch71, -ch72, -ch73, -ch74, -ch75, -ch76, -ch77, -ch78, -ch79, -ch80, -ch81, -ch82, -ch83, -ch84, -ch85, -ch86, -ch87, -ch88, -ch89, -ch90, -ch91, -ch92, -ch93, -ch94, -ch95, -ch96, -ch97, -ch98, -ch99, -ch100, -ch101, -ch102, -ch103, -ch104, -ch105, -ch106, -ch107, -ch108, -ch109, -ch110, -ch111, -ch112, -ch113, -ch114, -ch115, -ch116, -ch117, -ch118, -ch119, -ch120, -ch121, -ch122, -ch123, -ch124, -ch125, -ch126, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -ch160, -ch161, -ch162, -ch163, -ch164, -ch165, -ch166, -ch167, -ch168, -ch169, -ch170, -ch171, -ch172, -ch173, -ch174, -ch175, -ch176, -ch177, -ch178, -ch179, -ch180, -ch181, -ch182, -ch183, -ch184, -ch185, -ch186, -ch187, -ch188, -ch189, -ch190, -ch191, -ch192, -ch193, -ch194, -ch195, -ch196, -ch197, -ch198, -ch199, -ch200, -ch201, -ch202, -ch203, -ch204, -ch205, -ch206, -ch207, -ch208, -ch209, -ch210, -ch211, -ch212, -ch213, -ch214, -ch215, -ch216, -ch217, -ch218, -ch219, -ch220, -ch221, -ch222, -ch223, -ch224, -ch225, -ch226, -ch227, -ch228, -ch229, -ch230, -ch231, -ch232, -ch233, -ch234, -ch235, -ch236, -ch237, -ch238, -ch239, -ch240, -ch241, -ch242, -ch243, -ch244, -ch245, -ch246, -ch247, -ch248, -ch249, -ch250, -ch251, -ch252, -ch253, -ch254, -ch255, -}; - - public static final BitmapFontRec glutBitmapHelvetica12 = new BitmapFontRec("-adobe-helvetica-medium-r-normal--12-120-75-75-p-67-iso8859-1", - 224, - 32, - chars); -} diff --git a/src/jogl/classes/com/sun/opengl/util/gl2/GLUTBitmapHelvetica18.java b/src/jogl/classes/com/sun/opengl/util/gl2/GLUTBitmapHelvetica18.java deleted file mode 100644 index cf34a6d25..000000000 --- a/src/jogl/classes/com/sun/opengl/util/gl2/GLUTBitmapHelvetica18.java +++ /dev/null @@ -1,1917 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.gl2; - -class GLUTBitmapHelvetica18 { - -/* GENERATED FILE -- DO NOT MODIFY */ - -/* char: 0xff */ - -static final byte[] ch255data = { -(byte) 0x70,(byte) 0x70,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x3c,(byte) 0x24,(byte) 0x66,(byte) 0x66,(byte) 0x66,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0x0,(byte) 0x66, -(byte) 0x66, -}; - -static final BitmapCharRec ch255 = new BitmapCharRec(8,17,-1,4,10,ch255data); - -/* char: 0xfe */ - -static final byte[] ch254data = { -(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xde,(byte) 0x0,(byte) 0xff,(byte) 0x0,(byte) 0xe3,(byte) 0x0,(byte) 0xc1,(byte) 0x80, -(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xe3,(byte) 0x0,(byte) 0xff,(byte) 0x0,(byte) 0xde,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0, -(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0, -}; - -static final BitmapCharRec ch254 = new BitmapCharRec(9,18,-1,4,11,ch254data); - -/* char: 0xfd */ - -static final byte[] ch253data = { -(byte) 0x70,(byte) 0x70,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x3c,(byte) 0x24,(byte) 0x66,(byte) 0x66,(byte) 0x66,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0x0,(byte) 0x18, -(byte) 0xc,(byte) 0x6, -}; - -static final BitmapCharRec ch253 = new BitmapCharRec(8,18,-1,4,10,ch253data); - -/* char: 0xfc */ - -static final byte[] ch252data = { -(byte) 0x73,(byte) 0xfb,(byte) 0xc7,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0x0,(byte) 0x66,(byte) 0x66, -}; - -static final BitmapCharRec ch252 = new BitmapCharRec(8,13,-1,0,10,ch252data); - -/* char: 0xfb */ - -static final byte[] ch251data = { -(byte) 0x73,(byte) 0xfb,(byte) 0xc7,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0x0,(byte) 0x66,(byte) 0x3c,(byte) 0x18, -}; - -static final BitmapCharRec ch251 = new BitmapCharRec(8,14,-1,0,10,ch251data); - -/* char: 0xfa */ - -static final byte[] ch250data = { -(byte) 0x73,(byte) 0xfb,(byte) 0xc7,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0x0,(byte) 0x18,(byte) 0xc,(byte) 0x6, -}; - -static final BitmapCharRec ch250 = new BitmapCharRec(8,14,-1,0,10,ch250data); - -/* char: 0xf9 */ - -static final byte[] ch249data = { -(byte) 0x73,(byte) 0xfb,(byte) 0xc7,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0x0,(byte) 0xc,(byte) 0x18,(byte) 0x30, -}; - -static final BitmapCharRec ch249 = new BitmapCharRec(8,14,-1,0,10,ch249data); - -/* char: 0xf8 */ - -static final byte[] ch248data = { -(byte) 0xce,(byte) 0x0,(byte) 0x7f,(byte) 0x80,(byte) 0x31,(byte) 0x80,(byte) 0x78,(byte) 0xc0,(byte) 0x6c,(byte) 0xc0,(byte) 0x66,(byte) 0xc0,(byte) 0x63,(byte) 0xc0,(byte) 0x31,(byte) 0x80, -(byte) 0x3f,(byte) 0xc0,(byte) 0xe,(byte) 0x60, -}; - -static final BitmapCharRec ch248 = new BitmapCharRec(11,10,0,0,11,ch248data); - -/* char: 0xf7 */ - -static final byte[] ch247data = { -(byte) 0x18,(byte) 0x18,(byte) 0x0,(byte) 0xff,(byte) 0xff,(byte) 0x0,(byte) 0x18,(byte) 0x18, -}; - -static final BitmapCharRec ch247 = new BitmapCharRec(8,8,-1,-1,10,ch247data); - -/* char: 0xf6 */ - -static final byte[] ch246data = { -(byte) 0x3e,(byte) 0x0,(byte) 0x7f,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0x63,(byte) 0x0, -(byte) 0x7f,(byte) 0x0,(byte) 0x3e,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x36,(byte) 0x0,(byte) 0x36,(byte) 0x0, -}; - -static final BitmapCharRec ch246 = new BitmapCharRec(9,13,-1,0,11,ch246data); - -/* char: 0xf5 */ - -static final byte[] ch245data = { -(byte) 0x3e,(byte) 0x0,(byte) 0x7f,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0x63,(byte) 0x0, -(byte) 0x7f,(byte) 0x0,(byte) 0x3e,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x26,(byte) 0x0,(byte) 0x2d,(byte) 0x0,(byte) 0x19,(byte) 0x0, -}; - -static final BitmapCharRec ch245 = new BitmapCharRec(9,14,-1,0,11,ch245data); - -/* char: 0xf4 */ - -static final byte[] ch244data = { -(byte) 0x3e,(byte) 0x0,(byte) 0x7f,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0x63,(byte) 0x0, -(byte) 0x7f,(byte) 0x0,(byte) 0x3e,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x33,(byte) 0x0,(byte) 0x1e,(byte) 0x0,(byte) 0xc,(byte) 0x0, -}; - -static final BitmapCharRec ch244 = new BitmapCharRec(9,14,-1,0,11,ch244data); - -/* char: 0xf3 */ - -static final byte[] ch243data = { -(byte) 0x3e,(byte) 0x0,(byte) 0x7f,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0x63,(byte) 0x0, -(byte) 0x7f,(byte) 0x0,(byte) 0x3e,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x18,(byte) 0x0,(byte) 0xc,(byte) 0x0,(byte) 0x6,(byte) 0x0, -}; - -static final BitmapCharRec ch243 = new BitmapCharRec(9,14,-1,0,11,ch243data); - -/* char: 0xf2 */ - -static final byte[] ch242data = { -(byte) 0x3e,(byte) 0x0,(byte) 0x7f,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0x63,(byte) 0x0, -(byte) 0x7f,(byte) 0x0,(byte) 0x3e,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0xc,(byte) 0x0,(byte) 0x18,(byte) 0x0,(byte) 0x30,(byte) 0x0, -}; - -static final BitmapCharRec ch242 = new BitmapCharRec(9,14,-1,0,11,ch242data); - -/* char: 0xf1 */ - -static final byte[] ch241data = { -(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xe3,(byte) 0xdf,(byte) 0xce,(byte) 0x0,(byte) 0x4c,(byte) 0x5a,(byte) 0x32, -}; - -static final BitmapCharRec ch241 = new BitmapCharRec(8,14,-1,0,10,ch241data); - -/* char: 0xf0 */ - -static final byte[] ch240data = { -(byte) 0x3e,(byte) 0x0,(byte) 0x7f,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0x63,(byte) 0x0, -(byte) 0x7f,(byte) 0x0,(byte) 0x3e,(byte) 0x0,(byte) 0x4c,(byte) 0x0,(byte) 0x38,(byte) 0x0,(byte) 0x36,(byte) 0x0,(byte) 0x60,(byte) 0x0, -}; - -static final BitmapCharRec ch240 = new BitmapCharRec(9,14,-1,0,11,ch240data); - -/* char: 0xef */ - -static final byte[] ch239data = { -(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x0,(byte) 0xd8,(byte) 0xd8, -}; - -static final BitmapCharRec ch239 = new BitmapCharRec(5,13,0,0,4,ch239data); - -/* char: 0xee */ - -static final byte[] ch238data = { -(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x0,(byte) 0xcc,(byte) 0x78,(byte) 0x30, -}; - -static final BitmapCharRec ch238 = new BitmapCharRec(6,14,1,0,4,ch238data); - -/* char: 0xed */ - -static final byte[] ch237data = { -(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x0,(byte) 0xc0,(byte) 0x60,(byte) 0x30, -}; - -static final BitmapCharRec ch237 = new BitmapCharRec(4,14,0,0,4,ch237data); - -/* char: 0xec */ - -static final byte[] ch236data = { -(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x0,(byte) 0x30,(byte) 0x60,(byte) 0xc0, -}; - -static final BitmapCharRec ch236 = new BitmapCharRec(4,14,0,0,4,ch236data); - -/* char: 0xeb */ - -static final byte[] ch235data = { -(byte) 0x3c,(byte) 0x7f,(byte) 0xe3,(byte) 0xc0,(byte) 0xc0,(byte) 0xff,(byte) 0xc3,(byte) 0xc3,(byte) 0x7e,(byte) 0x3c,(byte) 0x0,(byte) 0x36,(byte) 0x36, -}; - -static final BitmapCharRec ch235 = new BitmapCharRec(8,13,-1,0,10,ch235data); - -/* char: 0xea */ - -static final byte[] ch234data = { -(byte) 0x3c,(byte) 0x7f,(byte) 0xe3,(byte) 0xc0,(byte) 0xc0,(byte) 0xff,(byte) 0xc3,(byte) 0xc3,(byte) 0x7e,(byte) 0x3c,(byte) 0x0,(byte) 0x66,(byte) 0x3c,(byte) 0x18, -}; - -static final BitmapCharRec ch234 = new BitmapCharRec(8,14,-1,0,10,ch234data); - -/* char: 0xe9 */ - -static final byte[] ch233data = { -(byte) 0x3c,(byte) 0x7f,(byte) 0xe3,(byte) 0xc0,(byte) 0xc0,(byte) 0xff,(byte) 0xc3,(byte) 0xc3,(byte) 0x7e,(byte) 0x3c,(byte) 0x0,(byte) 0x18,(byte) 0xc,(byte) 0x6, -}; - -static final BitmapCharRec ch233 = new BitmapCharRec(8,14,-1,0,10,ch233data); - -/* char: 0xe8 */ - -static final byte[] ch232data = { -(byte) 0x3c,(byte) 0x7f,(byte) 0xe3,(byte) 0xc0,(byte) 0xc0,(byte) 0xff,(byte) 0xc3,(byte) 0xc3,(byte) 0x7e,(byte) 0x3c,(byte) 0x0,(byte) 0x18,(byte) 0x30,(byte) 0x60, -}; - -static final BitmapCharRec ch232 = new BitmapCharRec(8,14,-1,0,10,ch232data); - -/* char: 0xe7 */ - -static final byte[] ch231data = { -(byte) 0x78,(byte) 0x6c,(byte) 0xc,(byte) 0x38,(byte) 0x3e,(byte) 0x7f,(byte) 0x63,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0x63,(byte) 0x7f,(byte) 0x3e, -}; - -static final BitmapCharRec ch231 = new BitmapCharRec(8,14,-1,4,10,ch231data); - -/* char: 0xe6 */ - -static final byte[] ch230data = { -(byte) 0x75,(byte) 0xe0,(byte) 0xef,(byte) 0xf8,(byte) 0xc7,(byte) 0x18,(byte) 0xc6,(byte) 0x0,(byte) 0xe6,(byte) 0x0,(byte) 0x7f,(byte) 0xf8,(byte) 0xe,(byte) 0x18,(byte) 0xc6,(byte) 0x18, -(byte) 0xef,(byte) 0xf0,(byte) 0x7d,(byte) 0xe0, -}; - -static final BitmapCharRec ch230 = new BitmapCharRec(13,10,-1,0,15,ch230data); - -/* char: 0xe5 */ - -static final byte[] ch229data = { -(byte) 0x76,(byte) 0xee,(byte) 0xc6,(byte) 0xc6,(byte) 0xe6,(byte) 0x7e,(byte) 0xe,(byte) 0xc6,(byte) 0xee,(byte) 0x7c,(byte) 0x38,(byte) 0x6c,(byte) 0x6c,(byte) 0x38, -}; - -static final BitmapCharRec ch229 = new BitmapCharRec(7,14,-1,0,9,ch229data); - -/* char: 0xe4 */ - -static final byte[] ch228data = { -(byte) 0x76,(byte) 0xee,(byte) 0xc6,(byte) 0xc6,(byte) 0xe6,(byte) 0x7e,(byte) 0xe,(byte) 0xc6,(byte) 0xee,(byte) 0x7c,(byte) 0x0,(byte) 0x6c,(byte) 0x6c, -}; - -static final BitmapCharRec ch228 = new BitmapCharRec(7,13,-1,0,9,ch228data); - -/* char: 0xe3 */ - -static final byte[] ch227data = { -(byte) 0x76,(byte) 0xee,(byte) 0xc6,(byte) 0xc6,(byte) 0xe6,(byte) 0x7e,(byte) 0xe,(byte) 0xc6,(byte) 0xee,(byte) 0x7c,(byte) 0x0,(byte) 0x4c,(byte) 0x5a,(byte) 0x32, -}; - -static final BitmapCharRec ch227 = new BitmapCharRec(7,14,-1,0,9,ch227data); - -/* char: 0xe2 */ - -static final byte[] ch226data = { -(byte) 0x76,(byte) 0xee,(byte) 0xc6,(byte) 0xc6,(byte) 0xe6,(byte) 0x7e,(byte) 0xe,(byte) 0xc6,(byte) 0xee,(byte) 0x7c,(byte) 0x0,(byte) 0x66,(byte) 0x3c,(byte) 0x18, -}; - -static final BitmapCharRec ch226 = new BitmapCharRec(7,14,-1,0,9,ch226data); - -/* char: 0xe1 */ - -static final byte[] ch225data = { -(byte) 0x76,(byte) 0xee,(byte) 0xc6,(byte) 0xc6,(byte) 0xe6,(byte) 0x7e,(byte) 0xe,(byte) 0xc6,(byte) 0xee,(byte) 0x7c,(byte) 0x0,(byte) 0x30,(byte) 0x18,(byte) 0xc, -}; - -static final BitmapCharRec ch225 = new BitmapCharRec(7,14,-1,0,9,ch225data); - -/* char: 0xe0 */ - -static final byte[] ch224data = { -(byte) 0x76,(byte) 0xee,(byte) 0xc6,(byte) 0xc6,(byte) 0xe6,(byte) 0x7e,(byte) 0xe,(byte) 0xc6,(byte) 0xee,(byte) 0x7c,(byte) 0x0,(byte) 0x18,(byte) 0x30,(byte) 0x60, -}; - -static final BitmapCharRec ch224 = new BitmapCharRec(7,14,-1,0,9,ch224data); - -/* char: 0xdf */ - -static final byte[] ch223data = { -(byte) 0xdc,(byte) 0xde,(byte) 0xc6,(byte) 0xc6,(byte) 0xc6,(byte) 0xc6,(byte) 0xdc,(byte) 0xdc,(byte) 0xc6,(byte) 0xc6,(byte) 0xc6,(byte) 0xc6,(byte) 0x7c,(byte) 0x38, -}; - -static final BitmapCharRec ch223 = new BitmapCharRec(7,14,-1,0,9,ch223data); - -/* char: 0xde */ - -static final byte[] ch222data = { -(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xff,(byte) 0x0,(byte) 0xff,(byte) 0x80,(byte) 0xc1,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0, -(byte) 0xc1,(byte) 0xc0,(byte) 0xff,(byte) 0x80,(byte) 0xff,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0, -}; - -static final BitmapCharRec ch222 = new BitmapCharRec(10,14,-1,0,12,ch222data); - -/* char: 0xdd */ - -static final byte[] ch221data = { -(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0xf,(byte) 0x0,(byte) 0x19,(byte) 0x80, -(byte) 0x30,(byte) 0xc0,(byte) 0x30,(byte) 0xc0,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0xc0,(byte) 0x30,(byte) 0xc0,(byte) 0x30,(byte) 0x0,(byte) 0x0,(byte) 0x6,(byte) 0x0, -(byte) 0x3,(byte) 0x0,(byte) 0x1,(byte) 0x80, -}; - -static final BitmapCharRec ch221 = new BitmapCharRec(12,18,-1,0,14,ch221data); - -/* char: 0xdc */ - -static final byte[] ch220data = { -(byte) 0x1f,(byte) 0x0,(byte) 0x7f,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60, -(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0x0,(byte) 0x0,(byte) 0x19,(byte) 0x80, -(byte) 0x19,(byte) 0x80, -}; - -static final BitmapCharRec ch220 = new BitmapCharRec(11,17,-1,0,13,ch220data); - -/* char: 0xdb */ - -static final byte[] ch219data = { -(byte) 0x1f,(byte) 0x0,(byte) 0x7f,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60, -(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0x0,(byte) 0x0,(byte) 0x19,(byte) 0x80, -(byte) 0xf,(byte) 0x0,(byte) 0x6,(byte) 0x0, -}; - -static final BitmapCharRec ch219 = new BitmapCharRec(11,18,-1,0,13,ch219data); - -/* char: 0xda */ - -static final byte[] ch218data = { -(byte) 0x1f,(byte) 0x0,(byte) 0x7f,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60, -(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0x0,(byte) 0x0,(byte) 0xc,(byte) 0x0, -(byte) 0x6,(byte) 0x0,(byte) 0x3,(byte) 0x0, -}; - -static final BitmapCharRec ch218 = new BitmapCharRec(11,18,-1,0,13,ch218data); - -/* char: 0xd9 */ - -static final byte[] ch217data = { -(byte) 0x1f,(byte) 0x0,(byte) 0x7f,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60, -(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0x0,(byte) 0x0,(byte) 0x6,(byte) 0x0, -(byte) 0xc,(byte) 0x0,(byte) 0x18,(byte) 0x0, -}; - -static final BitmapCharRec ch217 = new BitmapCharRec(11,18,-1,0,13,ch217data); - -/* char: 0xd8 */ - -static final byte[] ch216data = { -(byte) 0xc7,(byte) 0xc0,(byte) 0xff,(byte) 0xf0,(byte) 0x78,(byte) 0x38,(byte) 0x38,(byte) 0x18,(byte) 0x6c,(byte) 0x1c,(byte) 0x6e,(byte) 0xc,(byte) 0x67,(byte) 0xc,(byte) 0x63,(byte) 0x8c, -(byte) 0x61,(byte) 0xcc,(byte) 0x70,(byte) 0xdc,(byte) 0x30,(byte) 0x78,(byte) 0x38,(byte) 0x38,(byte) 0x1f,(byte) 0xfc,(byte) 0x7,(byte) 0xcc, -}; - -static final BitmapCharRec ch216 = new BitmapCharRec(14,14,0,0,15,ch216data); - -/* char: 0xd7 */ - -static final byte[] ch215data = { -(byte) 0xc0,(byte) 0xc0,(byte) 0x61,(byte) 0x80,(byte) 0x33,(byte) 0x0,(byte) 0x1e,(byte) 0x0,(byte) 0xc,(byte) 0x0,(byte) 0x1e,(byte) 0x0,(byte) 0x33,(byte) 0x0,(byte) 0x61,(byte) 0x80, -(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch215 = new BitmapCharRec(10,9,0,0,10,ch215data); - -/* char: 0xd6 */ - -static final byte[] ch214data = { -(byte) 0xf,(byte) 0x80,(byte) 0x3f,(byte) 0xe0,(byte) 0x70,(byte) 0x70,(byte) 0x60,(byte) 0x30,(byte) 0xe0,(byte) 0x38,(byte) 0xc0,(byte) 0x18,(byte) 0xc0,(byte) 0x18,(byte) 0xc0,(byte) 0x18, -(byte) 0xc0,(byte) 0x18,(byte) 0xe0,(byte) 0x38,(byte) 0x60,(byte) 0x30,(byte) 0x70,(byte) 0x70,(byte) 0x3f,(byte) 0xe0,(byte) 0xf,(byte) 0x80,(byte) 0x0,(byte) 0x0,(byte) 0xd,(byte) 0x80, -(byte) 0xd,(byte) 0x80, -}; - -static final BitmapCharRec ch214 = new BitmapCharRec(13,17,-1,0,15,ch214data); - -/* char: 0xd5 */ - -static final byte[] ch213data = { -(byte) 0xf,(byte) 0x80,(byte) 0x3f,(byte) 0xe0,(byte) 0x70,(byte) 0x70,(byte) 0x60,(byte) 0x30,(byte) 0xe0,(byte) 0x38,(byte) 0xc0,(byte) 0x18,(byte) 0xc0,(byte) 0x18,(byte) 0xc0,(byte) 0x18, -(byte) 0xc0,(byte) 0x18,(byte) 0xe0,(byte) 0x38,(byte) 0x60,(byte) 0x30,(byte) 0x70,(byte) 0x70,(byte) 0x3f,(byte) 0xe0,(byte) 0xf,(byte) 0x80,(byte) 0x0,(byte) 0x0,(byte) 0x9,(byte) 0x80, -(byte) 0xb,(byte) 0x40,(byte) 0x6,(byte) 0x40, -}; - -static final BitmapCharRec ch213 = new BitmapCharRec(13,18,-1,0,15,ch213data); - -/* char: 0xd4 */ - -static final byte[] ch212data = { -(byte) 0xf,(byte) 0x80,(byte) 0x3f,(byte) 0xe0,(byte) 0x70,(byte) 0x70,(byte) 0x60,(byte) 0x30,(byte) 0xe0,(byte) 0x38,(byte) 0xc0,(byte) 0x18,(byte) 0xc0,(byte) 0x18,(byte) 0xc0,(byte) 0x18, -(byte) 0xc0,(byte) 0x18,(byte) 0xe0,(byte) 0x38,(byte) 0x60,(byte) 0x30,(byte) 0x70,(byte) 0x70,(byte) 0x3f,(byte) 0xe0,(byte) 0xf,(byte) 0x80,(byte) 0x0,(byte) 0x0,(byte) 0xc,(byte) 0xc0, -(byte) 0x7,(byte) 0x80,(byte) 0x3,(byte) 0x0, -}; - -static final BitmapCharRec ch212 = new BitmapCharRec(13,18,-1,0,15,ch212data); - -/* char: 0xd3 */ - -static final byte[] ch211data = { -(byte) 0xf,(byte) 0x80,(byte) 0x3f,(byte) 0xe0,(byte) 0x70,(byte) 0x70,(byte) 0x60,(byte) 0x30,(byte) 0xe0,(byte) 0x38,(byte) 0xc0,(byte) 0x18,(byte) 0xc0,(byte) 0x18,(byte) 0xc0,(byte) 0x18, -(byte) 0xc0,(byte) 0x18,(byte) 0xe0,(byte) 0x38,(byte) 0x60,(byte) 0x30,(byte) 0x70,(byte) 0x70,(byte) 0x3f,(byte) 0xe0,(byte) 0xf,(byte) 0x80,(byte) 0x0,(byte) 0x0,(byte) 0x3,(byte) 0x0, -(byte) 0x1,(byte) 0x80,(byte) 0x0,(byte) 0xc0, -}; - -static final BitmapCharRec ch211 = new BitmapCharRec(13,18,-1,0,15,ch211data); - -/* char: 0xd2 */ - -static final byte[] ch210data = { -(byte) 0xf,(byte) 0x80,(byte) 0x3f,(byte) 0xe0,(byte) 0x70,(byte) 0x70,(byte) 0x60,(byte) 0x30,(byte) 0xe0,(byte) 0x38,(byte) 0xc0,(byte) 0x18,(byte) 0xc0,(byte) 0x18,(byte) 0xc0,(byte) 0x18, -(byte) 0xc0,(byte) 0x18,(byte) 0xe0,(byte) 0x38,(byte) 0x60,(byte) 0x30,(byte) 0x70,(byte) 0x70,(byte) 0x3f,(byte) 0xe0,(byte) 0xf,(byte) 0x80,(byte) 0x0,(byte) 0x0,(byte) 0x3,(byte) 0x0, -(byte) 0x6,(byte) 0x0,(byte) 0xc,(byte) 0x0, -}; - -static final BitmapCharRec ch210 = new BitmapCharRec(13,18,-1,0,15,ch210data); - -/* char: 0xd1 */ - -static final byte[] ch209data = { -(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0xe0,(byte) 0xc1,(byte) 0xe0,(byte) 0xc1,(byte) 0xe0,(byte) 0xc3,(byte) 0x60,(byte) 0xc6,(byte) 0x60,(byte) 0xc6,(byte) 0x60,(byte) 0xcc,(byte) 0x60, -(byte) 0xcc,(byte) 0x60,(byte) 0xd8,(byte) 0x60,(byte) 0xd8,(byte) 0x60,(byte) 0xf0,(byte) 0x60,(byte) 0xe0,(byte) 0x60,(byte) 0xe0,(byte) 0x60,(byte) 0x0,(byte) 0x0,(byte) 0x13,(byte) 0x0, -(byte) 0x16,(byte) 0x80,(byte) 0xc,(byte) 0x80, -}; - -static final BitmapCharRec ch209 = new BitmapCharRec(11,18,-1,0,13,ch209data); - -/* char: 0xd0 */ - -static final byte[] ch208data = { -(byte) 0x7f,(byte) 0x80,(byte) 0x7f,(byte) 0xc0,(byte) 0x60,(byte) 0xe0,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x30,(byte) 0x60,(byte) 0x30,(byte) 0xfc,(byte) 0x30,(byte) 0xfc,(byte) 0x30, -(byte) 0x60,(byte) 0x30,(byte) 0x60,(byte) 0x30,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0xe0,(byte) 0x7f,(byte) 0xc0,(byte) 0x7f,(byte) 0x80, -}; - -static final BitmapCharRec ch208 = new BitmapCharRec(12,14,0,0,13,ch208data); - -/* char: 0xcf */ - -static final byte[] ch207data = { -(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x0,(byte) 0xcc, -(byte) 0xcc, -}; - -static final BitmapCharRec ch207 = new BitmapCharRec(6,17,0,0,6,ch207data); - -/* char: 0xce */ - -static final byte[] ch206data = { -(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x0,(byte) 0xcc, -(byte) 0x78,(byte) 0x30, -}; - -static final BitmapCharRec ch206 = new BitmapCharRec(6,18,0,0,6,ch206data); - -/* char: 0xcd */ - -static final byte[] ch205data = { -(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0, -(byte) 0x60,(byte) 0x30, -}; - -static final BitmapCharRec ch205 = new BitmapCharRec(4,18,-2,0,6,ch205data); - -/* char: 0xcc */ - -static final byte[] ch204data = { -(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x0,(byte) 0x30, -(byte) 0x60,(byte) 0xc0, -}; - -static final BitmapCharRec ch204 = new BitmapCharRec(4,18,0,0,6,ch204data); - -/* char: 0xcb */ - -static final byte[] ch203data = { -(byte) 0xff,(byte) 0x80,(byte) 0xff,(byte) 0x80,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xff,(byte) 0x0,(byte) 0xff,(byte) 0x0, -(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xff,(byte) 0x80,(byte) 0xff,(byte) 0x80,(byte) 0x0,(byte) 0x0,(byte) 0x33,(byte) 0x0, -(byte) 0x33,(byte) 0x0, -}; - -static final BitmapCharRec ch203 = new BitmapCharRec(9,17,-1,0,11,ch203data); - -/* char: 0xca */ - -static final byte[] ch202data = { -(byte) 0xff,(byte) 0x80,(byte) 0xff,(byte) 0x80,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xff,(byte) 0x0,(byte) 0xff,(byte) 0x0, -(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xff,(byte) 0x80,(byte) 0xff,(byte) 0x80,(byte) 0x0,(byte) 0x0,(byte) 0x33,(byte) 0x0, -(byte) 0x1e,(byte) 0x0,(byte) 0xc,(byte) 0x0, -}; - -static final BitmapCharRec ch202 = new BitmapCharRec(9,18,-1,0,11,ch202data); - -/* char: 0xc9 */ - -static final byte[] ch201data = { -(byte) 0xff,(byte) 0x80,(byte) 0xff,(byte) 0x80,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xff,(byte) 0x0,(byte) 0xff,(byte) 0x0, -(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xff,(byte) 0x80,(byte) 0xff,(byte) 0x80,(byte) 0x0,(byte) 0x0,(byte) 0xc,(byte) 0x0, -(byte) 0x6,(byte) 0x0,(byte) 0x3,(byte) 0x0, -}; - -static final BitmapCharRec ch201 = new BitmapCharRec(9,18,-1,0,11,ch201data); - -/* char: 0xc8 */ - -static final byte[] ch200data = { -(byte) 0xff,(byte) 0x80,(byte) 0xff,(byte) 0x80,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xff,(byte) 0x0,(byte) 0xff,(byte) 0x0, -(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xff,(byte) 0x80,(byte) 0xff,(byte) 0x80,(byte) 0x0,(byte) 0x0,(byte) 0xc,(byte) 0x0, -(byte) 0x18,(byte) 0x0,(byte) 0x30,(byte) 0x0, -}; - -static final BitmapCharRec ch200 = new BitmapCharRec(9,18,-1,0,11,ch200data); - -/* char: 0xc7 */ - -static final byte[] ch199data = { -(byte) 0x1e,(byte) 0x0,(byte) 0x1b,(byte) 0x0,(byte) 0x3,(byte) 0x0,(byte) 0xe,(byte) 0x0,(byte) 0xf,(byte) 0x80,(byte) 0x3f,(byte) 0xe0,(byte) 0x70,(byte) 0x70,(byte) 0x60,(byte) 0x30, -(byte) 0xe0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xe0,(byte) 0x0,(byte) 0x60,(byte) 0x30,(byte) 0x70,(byte) 0x70, -(byte) 0x3f,(byte) 0xe0,(byte) 0xf,(byte) 0x80, -}; - -static final BitmapCharRec ch199 = new BitmapCharRec(12,18,-1,4,14,ch199data); - -/* char: 0xc6 */ - -static final byte[] ch198data = { -(byte) 0xc1,(byte) 0xff,(byte) 0xc1,(byte) 0xff,(byte) 0x61,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0x7f,(byte) 0x80,(byte) 0x3f,(byte) 0x80,(byte) 0x31,(byte) 0xfe,(byte) 0x31,(byte) 0xfe, -(byte) 0x19,(byte) 0x80,(byte) 0x19,(byte) 0x80,(byte) 0xd,(byte) 0x80,(byte) 0xd,(byte) 0x80,(byte) 0x7,(byte) 0xff,(byte) 0x7,(byte) 0xff, -}; - -static final BitmapCharRec ch198 = new BitmapCharRec(16,14,-1,0,18,ch198data); - -/* char: 0xc5 */ - -static final byte[] ch197data = { -(byte) 0xc0,(byte) 0x30,(byte) 0xc0,(byte) 0x30,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x7f,(byte) 0xe0,(byte) 0x3f,(byte) 0xc0,(byte) 0x30,(byte) 0xc0,(byte) 0x30,(byte) 0xc0, -(byte) 0x19,(byte) 0x80,(byte) 0x19,(byte) 0x80,(byte) 0xf,(byte) 0x0,(byte) 0xf,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0xf,(byte) 0x0,(byte) 0x19,(byte) 0x80, -(byte) 0x19,(byte) 0x80,(byte) 0xf,(byte) 0x0, -}; - -static final BitmapCharRec ch197 = new BitmapCharRec(12,18,0,0,12,ch197data); - -/* char: 0xc4 */ - -static final byte[] ch196data = { -(byte) 0xc0,(byte) 0x30,(byte) 0xc0,(byte) 0x30,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x7f,(byte) 0xe0,(byte) 0x3f,(byte) 0xc0,(byte) 0x30,(byte) 0xc0,(byte) 0x30,(byte) 0xc0, -(byte) 0x19,(byte) 0x80,(byte) 0x19,(byte) 0x80,(byte) 0xf,(byte) 0x0,(byte) 0xf,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x19,(byte) 0x80, -(byte) 0x19,(byte) 0x80, -}; - -static final BitmapCharRec ch196 = new BitmapCharRec(12,17,0,0,12,ch196data); - -/* char: 0xc3 */ - -static final byte[] ch195data = { -(byte) 0xc0,(byte) 0x30,(byte) 0xc0,(byte) 0x30,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x7f,(byte) 0xe0,(byte) 0x3f,(byte) 0xc0,(byte) 0x30,(byte) 0xc0,(byte) 0x30,(byte) 0xc0, -(byte) 0x19,(byte) 0x80,(byte) 0x19,(byte) 0x80,(byte) 0xf,(byte) 0x0,(byte) 0xf,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x13,(byte) 0x0, -(byte) 0x16,(byte) 0x80,(byte) 0xc,(byte) 0x80, -}; - -static final BitmapCharRec ch195 = new BitmapCharRec(12,18,0,0,12,ch195data); - -/* char: 0xc2 */ - -static final byte[] ch194data = { -(byte) 0xc0,(byte) 0x30,(byte) 0xc0,(byte) 0x30,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x7f,(byte) 0xe0,(byte) 0x3f,(byte) 0xc0,(byte) 0x30,(byte) 0xc0,(byte) 0x30,(byte) 0xc0, -(byte) 0x19,(byte) 0x80,(byte) 0x19,(byte) 0x80,(byte) 0xf,(byte) 0x0,(byte) 0xf,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x19,(byte) 0x80, -(byte) 0xf,(byte) 0x0,(byte) 0x6,(byte) 0x0, -}; - -static final BitmapCharRec ch194 = new BitmapCharRec(12,18,0,0,12,ch194data); - -/* char: 0xc1 */ - -static final byte[] ch193data = { -(byte) 0xc0,(byte) 0x30,(byte) 0xc0,(byte) 0x30,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x7f,(byte) 0xe0,(byte) 0x3f,(byte) 0xc0,(byte) 0x30,(byte) 0xc0,(byte) 0x30,(byte) 0xc0, -(byte) 0x19,(byte) 0x80,(byte) 0x19,(byte) 0x80,(byte) 0xf,(byte) 0x0,(byte) 0xf,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x6,(byte) 0x0, -(byte) 0x3,(byte) 0x0,(byte) 0x1,(byte) 0x80, -}; - -static final BitmapCharRec ch193 = new BitmapCharRec(12,18,0,0,12,ch193data); - -/* char: 0xc0 */ - -static final byte[] ch192data = { -(byte) 0xc0,(byte) 0x30,(byte) 0xc0,(byte) 0x30,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x7f,(byte) 0xe0,(byte) 0x3f,(byte) 0xc0,(byte) 0x30,(byte) 0xc0,(byte) 0x30,(byte) 0xc0, -(byte) 0x19,(byte) 0x80,(byte) 0x19,(byte) 0x80,(byte) 0xf,(byte) 0x0,(byte) 0xf,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x6,(byte) 0x0, -(byte) 0xc,(byte) 0x0,(byte) 0x18,(byte) 0x0, -}; - -static final BitmapCharRec ch192 = new BitmapCharRec(12,18,0,0,12,ch192data); - -/* char: 0xbf */ - -static final byte[] ch191data = { -(byte) 0x7c,(byte) 0xfe,(byte) 0xc6,(byte) 0xc6,(byte) 0xe0,(byte) 0x70,(byte) 0x38,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x0,(byte) 0x0,(byte) 0x18,(byte) 0x18, -}; - -static final BitmapCharRec ch191 = new BitmapCharRec(7,14,-1,4,10,ch191data); - -/* char: 0xbe */ - -static final byte[] ch190data = { -(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0xc,(byte) 0xfc,(byte) 0x6,(byte) 0xd8,(byte) 0x6,(byte) 0x78,(byte) 0x73,(byte) 0x38,(byte) 0xf9,(byte) 0x18,(byte) 0x99,(byte) 0x88, -(byte) 0x30,(byte) 0xc0,(byte) 0x30,(byte) 0xc0,(byte) 0x98,(byte) 0x60,(byte) 0xf8,(byte) 0x30,(byte) 0x70,(byte) 0x30, -}; - -static final BitmapCharRec ch190 = new BitmapCharRec(14,13,0,0,15,ch190data); - -/* char: 0xbd */ - -static final byte[] ch189data = { -(byte) 0x30,(byte) 0xf8,(byte) 0x30,(byte) 0xf8,(byte) 0x18,(byte) 0x60,(byte) 0xc,(byte) 0x30,(byte) 0xc,(byte) 0x18,(byte) 0x66,(byte) 0x98,(byte) 0x62,(byte) 0xf8,(byte) 0x63,(byte) 0x70, -(byte) 0x61,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0xe0,(byte) 0xc0,(byte) 0xe0,(byte) 0x60,(byte) 0x60,(byte) 0x60, -}; - -static final BitmapCharRec ch189 = new BitmapCharRec(13,13,-1,0,15,ch189data); - -/* char: 0xbc */ - -static final byte[] ch188data = { -(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x19,(byte) 0xf8,(byte) 0xd,(byte) 0xb0,(byte) 0xc,(byte) 0xf0,(byte) 0x66,(byte) 0x70,(byte) 0x62,(byte) 0x30,(byte) 0x63,(byte) 0x10, -(byte) 0x61,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0xe0,(byte) 0xc0,(byte) 0xe0,(byte) 0x60,(byte) 0x60,(byte) 0x60, -}; - -static final BitmapCharRec ch188 = new BitmapCharRec(13,13,-1,0,15,ch188data); - -/* char: 0xbb */ - -static final byte[] ch187data = { -(byte) 0x90,(byte) 0xd8,(byte) 0x6c,(byte) 0x36,(byte) 0x36,(byte) 0x6c,(byte) 0xd8,(byte) 0x90, -}; - -static final BitmapCharRec ch187 = new BitmapCharRec(7,8,-1,-1,9,ch187data); - -/* char: 0xba */ - -static final byte[] ch186data = { -(byte) 0xf8,(byte) 0x0,(byte) 0x70,(byte) 0xd8,(byte) 0x88,(byte) 0x88,(byte) 0xd8,(byte) 0x70, -}; - -static final BitmapCharRec ch186 = new BitmapCharRec(5,8,-1,-6,7,ch186data); - -/* char: 0xb9 */ - -static final byte[] ch185data = { -(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0xe0,(byte) 0xe0,(byte) 0x60, -}; - -static final BitmapCharRec ch185 = new BitmapCharRec(3,8,-1,-5,6,ch185data); - -/* char: 0xb8 */ - -static final byte[] ch184data = { -(byte) 0xf0,(byte) 0xd8,(byte) 0x18,(byte) 0x70,(byte) 0x60, -}; - -static final BitmapCharRec ch184 = new BitmapCharRec(5,5,0,4,5,ch184data); - -/* char: 0xb7 */ - -static final byte[] ch183data = { -(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch183 = new BitmapCharRec(2,2,-1,-4,4,ch183data); - -/* char: 0xb6 */ - -static final byte[] ch182data = { -(byte) 0x12,(byte) 0x12,(byte) 0x12,(byte) 0x12,(byte) 0x12,(byte) 0x12,(byte) 0x12,(byte) 0x12,(byte) 0x12,(byte) 0x12,(byte) 0x32,(byte) 0x72,(byte) 0xf2,(byte) 0xf2,(byte) 0xf2,(byte) 0xf2, -(byte) 0x72,(byte) 0x3f, -}; - -static final BitmapCharRec ch182 = new BitmapCharRec(8,18,-1,4,10,ch182data); - -/* char: 0xb5 */ - -static final byte[] ch181data = { -(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xdb,(byte) 0xff,(byte) 0xe7,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3, -}; - -static final BitmapCharRec ch181 = new BitmapCharRec(8,14,-1,4,10,ch181data); - -/* char: 0xb4 */ - -static final byte[] ch180data = { -(byte) 0xc0,(byte) 0x60,(byte) 0x30, -}; - -static final BitmapCharRec ch180 = new BitmapCharRec(4,3,0,-11,4,ch180data); - -/* char: 0xb3 */ - -static final byte[] ch179data = { -(byte) 0x70,(byte) 0xf8,(byte) 0x98,(byte) 0x30,(byte) 0x30,(byte) 0x98,(byte) 0xf8,(byte) 0x70, -}; - -static final BitmapCharRec ch179 = new BitmapCharRec(5,8,0,-5,6,ch179data); - -/* char: 0xb2 */ - -static final byte[] ch178data = { -(byte) 0xf8,(byte) 0xf8,(byte) 0x60,(byte) 0x30,(byte) 0x18,(byte) 0x98,(byte) 0xf8,(byte) 0x70, -}; - -static final BitmapCharRec ch178 = new BitmapCharRec(5,8,0,-5,6,ch178data); - -/* char: 0xb1 */ - -static final byte[] ch177data = { -(byte) 0xff,(byte) 0xff,(byte) 0x0,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0xff,(byte) 0xff,(byte) 0x18,(byte) 0x18,(byte) 0x18, -}; - -static final BitmapCharRec ch177 = new BitmapCharRec(8,11,-1,0,10,ch177data); - -/* char: 0xb0 */ - -static final byte[] ch176data = { -(byte) 0x70,(byte) 0xd8,(byte) 0x88,(byte) 0xd8,(byte) 0x70, -}; - -static final BitmapCharRec ch176 = new BitmapCharRec(5,5,-1,-8,7,ch176data); - -/* char: 0xaf */ - -static final byte[] ch175data = { -(byte) 0xf8, -}; - -static final BitmapCharRec ch175 = new BitmapCharRec(5,1,0,-12,5,ch175data); - -/* char: 0xae */ - -static final byte[] ch174data = { -(byte) 0xf,(byte) 0x80,(byte) 0x30,(byte) 0x60,(byte) 0x40,(byte) 0x10,(byte) 0x48,(byte) 0x50,(byte) 0x88,(byte) 0x88,(byte) 0x89,(byte) 0x8,(byte) 0x8f,(byte) 0x88,(byte) 0x88,(byte) 0x48, -(byte) 0x88,(byte) 0x48,(byte) 0x4f,(byte) 0x90,(byte) 0x40,(byte) 0x10,(byte) 0x30,(byte) 0x60,(byte) 0xf,(byte) 0x80, -}; - -static final BitmapCharRec ch174 = new BitmapCharRec(13,13,-1,0,14,ch174data); - -/* char: 0xad */ - -static final byte[] ch173data = { -(byte) 0xf8,(byte) 0xf8, -}; - -static final BitmapCharRec ch173 = new BitmapCharRec(5,2,-1,-4,7,ch173data); - -/* char: 0xac */ - -static final byte[] ch172data = { -(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0xff,(byte) 0x80,(byte) 0xff,(byte) 0x80, -}; - -static final BitmapCharRec ch172 = new BitmapCharRec(9,5,-1,-3,11,ch172data); - -/* char: 0xab */ - -static final byte[] ch171data = { -(byte) 0x12,(byte) 0x36,(byte) 0x6c,(byte) 0xd8,(byte) 0xd8,(byte) 0x6c,(byte) 0x36,(byte) 0x12, -}; - -static final BitmapCharRec ch171 = new BitmapCharRec(7,8,-1,-1,9,ch171data); - -/* char: 0xaa */ - -static final byte[] ch170data = { -(byte) 0xf8,(byte) 0x0,(byte) 0x68,(byte) 0xd8,(byte) 0x48,(byte) 0x38,(byte) 0xc8,(byte) 0x70, -}; - -static final BitmapCharRec ch170 = new BitmapCharRec(5,8,-1,-6,7,ch170data); - -/* char: 0xa9 */ - -static final byte[] ch169data = { -(byte) 0xf,(byte) 0x80,(byte) 0x30,(byte) 0x60,(byte) 0x40,(byte) 0x10,(byte) 0x47,(byte) 0x10,(byte) 0x88,(byte) 0x88,(byte) 0x90,(byte) 0x8,(byte) 0x90,(byte) 0x8,(byte) 0x90,(byte) 0x8, -(byte) 0x88,(byte) 0x88,(byte) 0x47,(byte) 0x10,(byte) 0x40,(byte) 0x10,(byte) 0x30,(byte) 0x60,(byte) 0xf,(byte) 0x80, -}; - -static final BitmapCharRec ch169 = new BitmapCharRec(13,13,-1,0,15,ch169data); - -/* char: 0xa8 */ - -static final byte[] ch168data = { -(byte) 0xd8,(byte) 0xd8, -}; - -static final BitmapCharRec ch168 = new BitmapCharRec(5,2,0,-11,6,ch168data); - -/* char: 0xa7 */ - -static final byte[] ch167data = { -(byte) 0x3c,(byte) 0x7e,(byte) 0xc3,(byte) 0xc3,(byte) 0x7,(byte) 0xe,(byte) 0x3e,(byte) 0x73,(byte) 0xe3,(byte) 0xc3,(byte) 0xc7,(byte) 0x6e,(byte) 0x7c,(byte) 0xf0,(byte) 0xc3,(byte) 0xc3, -(byte) 0x7e,(byte) 0x3c, -}; - -static final BitmapCharRec ch167 = new BitmapCharRec(8,18,-1,4,10,ch167data); - -/* char: 0xa6 */ - -static final byte[] ch166data = { -(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0, -(byte) 0xc0, -}; - -static final BitmapCharRec ch166 = new BitmapCharRec(2,17,-1,3,4,ch166data); - -/* char: 0xa5 */ - -static final byte[] ch165data = { -(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0xff,(byte) 0x18,(byte) 0xff,(byte) 0x3c,(byte) 0x66,(byte) 0x66,(byte) 0x66,(byte) 0xc3,(byte) 0xc3, -}; - -static final BitmapCharRec ch165 = new BitmapCharRec(8,13,-1,0,10,ch165data); - -/* char: 0xa4 */ - -static final byte[] ch164data = { -(byte) 0xc3,(byte) 0xff,(byte) 0x66,(byte) 0x66,(byte) 0x66,(byte) 0xff,(byte) 0xc3, -}; - -static final BitmapCharRec ch164 = new BitmapCharRec(8,7,-1,-3,10,ch164data); - -/* char: 0xa3 */ - -static final byte[] ch163data = { -(byte) 0xdf,(byte) 0x0,(byte) 0xff,(byte) 0x80,(byte) 0x60,(byte) 0x80,(byte) 0x30,(byte) 0x0,(byte) 0x18,(byte) 0x0,(byte) 0x18,(byte) 0x0,(byte) 0x7e,(byte) 0x0,(byte) 0x30,(byte) 0x0, -(byte) 0x60,(byte) 0x0,(byte) 0x61,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0x3f,(byte) 0x0,(byte) 0x1e,(byte) 0x0, -}; - -static final BitmapCharRec ch163 = new BitmapCharRec(9,13,0,0,10,ch163data); - -/* char: 0xa2 */ - -static final byte[] ch162data = { -(byte) 0x10,(byte) 0x10,(byte) 0x3e,(byte) 0x7f,(byte) 0x6b,(byte) 0xc8,(byte) 0xc8,(byte) 0xc8,(byte) 0xc8,(byte) 0x6b,(byte) 0x7f,(byte) 0x3e,(byte) 0x4,(byte) 0x4, -}; - -static final BitmapCharRec ch162 = new BitmapCharRec(8,14,-1,2,10,ch162data); - -/* char: 0xa1 */ - -static final byte[] ch161data = { -(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0x40,(byte) 0x40,(byte) 0x0,(byte) 0x0,(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch161 = new BitmapCharRec(2,14,-2,4,6,ch161data); - -/* char: 0xa0 */ - -static final BitmapCharRec ch160 = new BitmapCharRec(0,0,0,0,5,null); - -/* char: 0x7e '~' */ - -static final byte[] ch126data = { -(byte) 0xcc,(byte) 0x7e,(byte) 0x33, -}; - -static final BitmapCharRec ch126 = new BitmapCharRec(8,3,-1,-4,10,ch126data); - -/* char: 0x7d '}' */ - -static final byte[] ch125data = { -(byte) 0xc0,(byte) 0x60,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x18,(byte) 0xc,(byte) 0x18,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30, -(byte) 0x60,(byte) 0xc0, -}; - -static final BitmapCharRec ch125 = new BitmapCharRec(6,18,0,4,6,ch125data); - -/* char: 0x7c '|' */ - -static final byte[] ch124data = { -(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0, -(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch124 = new BitmapCharRec(2,18,-1,4,4,ch124data); - -/* char: 0x7b '{' */ - -static final byte[] ch123data = { -(byte) 0xc,(byte) 0x18,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30, -(byte) 0x18,(byte) 0xc, -}; - -static final BitmapCharRec ch123 = new BitmapCharRec(6,18,0,4,6,ch123data); - -/* char: 0x7a 'z' */ - -static final byte[] ch122data = { -(byte) 0xfe,(byte) 0xfe,(byte) 0xc0,(byte) 0x60,(byte) 0x30,(byte) 0x18,(byte) 0xc,(byte) 0x6,(byte) 0xfe,(byte) 0xfe, -}; - -static final BitmapCharRec ch122 = new BitmapCharRec(7,10,-1,0,9,ch122data); - -/* char: 0x79 'y' */ - -static final byte[] ch121data = { -(byte) 0x70,(byte) 0x70,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x3c,(byte) 0x24,(byte) 0x66,(byte) 0x66,(byte) 0x66,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3, -}; - -static final BitmapCharRec ch121 = new BitmapCharRec(8,14,-1,4,10,ch121data); - -/* char: 0x78 'x' */ - -static final byte[] ch120data = { -(byte) 0xc3,(byte) 0xe7,(byte) 0x66,(byte) 0x3c,(byte) 0x18,(byte) 0x18,(byte) 0x3c,(byte) 0x66,(byte) 0xe7,(byte) 0xc3, -}; - -static final BitmapCharRec ch120 = new BitmapCharRec(8,10,-1,0,10,ch120data); - -/* char: 0x77 'w' */ - -static final byte[] ch119data = { -(byte) 0x19,(byte) 0x80,(byte) 0x19,(byte) 0x80,(byte) 0x39,(byte) 0xc0,(byte) 0x29,(byte) 0x40,(byte) 0x69,(byte) 0x60,(byte) 0x66,(byte) 0x60,(byte) 0x66,(byte) 0x60,(byte) 0xc6,(byte) 0x30, -(byte) 0xc6,(byte) 0x30,(byte) 0xc6,(byte) 0x30, -}; - -static final BitmapCharRec ch119 = new BitmapCharRec(12,10,-1,0,14,ch119data); - -/* char: 0x76 'v' */ - -static final byte[] ch118data = { -(byte) 0x18,(byte) 0x18,(byte) 0x3c,(byte) 0x24,(byte) 0x66,(byte) 0x66,(byte) 0x66,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3, -}; - -static final BitmapCharRec ch118 = new BitmapCharRec(8,10,-1,0,10,ch118data); - -/* char: 0x75 'u' */ - -static final byte[] ch117data = { -(byte) 0x73,(byte) 0xfb,(byte) 0xc7,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3, -}; - -static final BitmapCharRec ch117 = new BitmapCharRec(8,10,-1,0,10,ch117data); - -/* char: 0x74 't' */ - -static final byte[] ch116data = { -(byte) 0x18,(byte) 0x38,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0xfc,(byte) 0xfc,(byte) 0x30,(byte) 0x30,(byte) 0x30, -}; - -static final BitmapCharRec ch116 = new BitmapCharRec(6,13,0,0,6,ch116data); - -/* char: 0x73 's' */ - -static final byte[] ch115data = { -(byte) 0x78,(byte) 0xfc,(byte) 0xc6,(byte) 0x6,(byte) 0x3e,(byte) 0xfc,(byte) 0xc0,(byte) 0xc6,(byte) 0x7e,(byte) 0x3c, -}; - -static final BitmapCharRec ch115 = new BitmapCharRec(7,10,-1,0,9,ch115data); - -/* char: 0x72 'r' */ - -static final byte[] ch114data = { -(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xe0,(byte) 0xd8,(byte) 0xd8, -}; - -static final BitmapCharRec ch114 = new BitmapCharRec(5,10,-1,0,6,ch114data); - -/* char: 0x71 'q' */ - -static final byte[] ch113data = { -(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x3d,(byte) 0x80,(byte) 0x7f,(byte) 0x80,(byte) 0x63,(byte) 0x80,(byte) 0xc1,(byte) 0x80, -(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0x63,(byte) 0x80,(byte) 0x7f,(byte) 0x80,(byte) 0x3d,(byte) 0x80, -}; - -static final BitmapCharRec ch113 = new BitmapCharRec(9,14,-1,4,11,ch113data); - -/* char: 0x70 'p' */ - -static final byte[] ch112data = { -(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xde,(byte) 0x0,(byte) 0xff,(byte) 0x0,(byte) 0xe3,(byte) 0x0,(byte) 0xc1,(byte) 0x80, -(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xe3,(byte) 0x0,(byte) 0xff,(byte) 0x0,(byte) 0xde,(byte) 0x0, -}; - -static final BitmapCharRec ch112 = new BitmapCharRec(9,14,-1,4,11,ch112data); - -/* char: 0x6f 'o' */ - -static final byte[] ch111data = { -(byte) 0x3e,(byte) 0x0,(byte) 0x7f,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0x63,(byte) 0x0, -(byte) 0x7f,(byte) 0x0,(byte) 0x3e,(byte) 0x0, -}; - -static final BitmapCharRec ch111 = new BitmapCharRec(9,10,-1,0,11,ch111data); - -/* char: 0x6e 'n' */ - -static final byte[] ch110data = { -(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xe3,(byte) 0xdf,(byte) 0xce, -}; - -static final BitmapCharRec ch110 = new BitmapCharRec(8,10,-1,0,10,ch110data); - -/* char: 0x6d 'm' */ - -static final byte[] ch109data = { -(byte) 0xc6,(byte) 0x30,(byte) 0xc6,(byte) 0x30,(byte) 0xc6,(byte) 0x30,(byte) 0xc6,(byte) 0x30,(byte) 0xc6,(byte) 0x30,(byte) 0xc6,(byte) 0x30,(byte) 0xc6,(byte) 0x30,(byte) 0xe7,(byte) 0x30, -(byte) 0xde,(byte) 0xf0,(byte) 0xcc,(byte) 0x60, -}; - -static final BitmapCharRec ch109 = new BitmapCharRec(12,10,-1,0,14,ch109data); - -/* char: 0x6c 'l' */ - -static final byte[] ch108data = { -(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch108 = new BitmapCharRec(2,14,-1,0,4,ch108data); - -/* char: 0x6b 'k' */ - -static final byte[] ch107data = { -(byte) 0xc7,(byte) 0xc6,(byte) 0xce,(byte) 0xcc,(byte) 0xd8,(byte) 0xf8,(byte) 0xf0,(byte) 0xd8,(byte) 0xcc,(byte) 0xc6,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch107 = new BitmapCharRec(8,14,-1,0,9,ch107data); - -/* char: 0x6a 'j' */ - -static final byte[] ch106data = { -(byte) 0xe0,(byte) 0xf0,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x0,(byte) 0x0, -(byte) 0x30,(byte) 0x30, -}; - -static final BitmapCharRec ch106 = new BitmapCharRec(4,18,1,4,4,ch106data); - -/* char: 0x69 'i' */ - -static final byte[] ch105data = { -(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0x0,(byte) 0x0,(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch105 = new BitmapCharRec(2,14,-1,0,4,ch105data); - -/* char: 0x68 'h' */ - -static final byte[] ch104data = { -(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xe3,(byte) 0xdf,(byte) 0xce,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch104 = new BitmapCharRec(8,14,-1,0,10,ch104data); - -/* char: 0x67 'g' */ - -static final byte[] ch103data = { -(byte) 0x1c,(byte) 0x0,(byte) 0x7f,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0x1,(byte) 0x80,(byte) 0x3d,(byte) 0x80,(byte) 0x7f,(byte) 0x80,(byte) 0x63,(byte) 0x80,(byte) 0xc1,(byte) 0x80, -(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0x7f,(byte) 0x80,(byte) 0x3d,(byte) 0x80, -}; - -static final BitmapCharRec ch103 = new BitmapCharRec(9,14,-1,4,11,ch103data); - -/* char: 0x66 'f' */ - -static final byte[] ch102data = { -(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0xfc,(byte) 0xfc,(byte) 0x30,(byte) 0x30,(byte) 0x3c,(byte) 0x1c, -}; - -static final BitmapCharRec ch102 = new BitmapCharRec(6,14,0,0,6,ch102data); - -/* char: 0x65 'e' */ - -static final byte[] ch101data = { -(byte) 0x3c,(byte) 0x7f,(byte) 0xe3,(byte) 0xc0,(byte) 0xc0,(byte) 0xff,(byte) 0xc3,(byte) 0xc3,(byte) 0x7e,(byte) 0x3c, -}; - -static final BitmapCharRec ch101 = new BitmapCharRec(8,10,-1,0,10,ch101data); - -/* char: 0x64 'd' */ - -static final byte[] ch100data = { -(byte) 0x3d,(byte) 0x80,(byte) 0x7f,(byte) 0x80,(byte) 0x63,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0x63,(byte) 0x80, -(byte) 0x7f,(byte) 0x80,(byte) 0x3d,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80, -}; - -static final BitmapCharRec ch100 = new BitmapCharRec(9,14,-1,0,11,ch100data); - -/* char: 0x63 'c' */ - -static final byte[] ch99data = { -(byte) 0x3e,(byte) 0x7f,(byte) 0x63,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0x63,(byte) 0x7f,(byte) 0x3e, -}; - -static final BitmapCharRec ch99 = new BitmapCharRec(8,10,-1,0,10,ch99data); - -/* char: 0x62 'b' */ - -static final byte[] ch98data = { -(byte) 0xde,(byte) 0x0,(byte) 0xff,(byte) 0x0,(byte) 0xe3,(byte) 0x0,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xe3,(byte) 0x0, -(byte) 0xff,(byte) 0x0,(byte) 0xde,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0, -}; - -static final BitmapCharRec ch98 = new BitmapCharRec(9,14,-1,0,11,ch98data); - -/* char: 0x61 'a' */ - -static final byte[] ch97data = { -(byte) 0x76,(byte) 0xee,(byte) 0xc6,(byte) 0xc6,(byte) 0xe6,(byte) 0x7e,(byte) 0xe,(byte) 0xc6,(byte) 0xee,(byte) 0x7c, -}; - -static final BitmapCharRec ch97 = new BitmapCharRec(7,10,-1,0,9,ch97data); - -/* char: 0x60 '`' */ - -static final byte[] ch96data = { -(byte) 0xc0,(byte) 0xc0,(byte) 0x80,(byte) 0x80,(byte) 0x40, -}; - -static final BitmapCharRec ch96 = new BitmapCharRec(2,5,-1,-9,4,ch96data); - -/* char: 0x5f '_' */ - -static final byte[] ch95data = { -(byte) 0xff,(byte) 0xc0,(byte) 0xff,(byte) 0xc0, -}; - -static final BitmapCharRec ch95 = new BitmapCharRec(10,2,0,4,10,ch95data); - -/* char: 0x5e '^' */ - -static final byte[] ch94data = { -(byte) 0x82,(byte) 0xc6,(byte) 0x6c,(byte) 0x38,(byte) 0x10, -}; - -static final BitmapCharRec ch94 = new BitmapCharRec(7,5,-1,-8,9,ch94data); - -/* char: 0x5d ']' */ - -static final byte[] ch93data = { -(byte) 0xf0,(byte) 0xf0,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30, -(byte) 0xf0,(byte) 0xf0, -}; - -static final BitmapCharRec ch93 = new BitmapCharRec(4,18,0,4,5,ch93data); - -/* char: 0x5c '\' */ - -static final byte[] ch92data = { -(byte) 0x18,(byte) 0x18,(byte) 0x10,(byte) 0x10,(byte) 0x30,(byte) 0x30,(byte) 0x20,(byte) 0x20,(byte) 0x60,(byte) 0x60,(byte) 0x40,(byte) 0x40,(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch92 = new BitmapCharRec(5,14,0,0,5,ch92data); - -/* char: 0x5b '[' */ - -static final byte[] ch91data = { -(byte) 0xf0,(byte) 0xf0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0, -(byte) 0xf0,(byte) 0xf0, -}; - -static final BitmapCharRec ch91 = new BitmapCharRec(4,18,-1,4,5,ch91data); - -/* char: 0x5a 'Z' */ - -static final byte[] ch90data = { -(byte) 0xff,(byte) 0xc0,(byte) 0xff,(byte) 0xc0,(byte) 0xc0,(byte) 0x0,(byte) 0x60,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x18,(byte) 0x0,(byte) 0x1c,(byte) 0x0,(byte) 0xc,(byte) 0x0, -(byte) 0x6,(byte) 0x0,(byte) 0x3,(byte) 0x0,(byte) 0x1,(byte) 0x80,(byte) 0x0,(byte) 0xc0,(byte) 0xff,(byte) 0xc0,(byte) 0xff,(byte) 0xc0, -}; - -static final BitmapCharRec ch90 = new BitmapCharRec(10,14,-1,0,12,ch90data); - -/* char: 0x59 'Y' */ - -static final byte[] ch89data = { -(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0xf,(byte) 0x0,(byte) 0x19,(byte) 0x80, -(byte) 0x30,(byte) 0xc0,(byte) 0x30,(byte) 0xc0,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0xc0,(byte) 0x30,(byte) 0xc0,(byte) 0x30, -}; - -static final BitmapCharRec ch89 = new BitmapCharRec(12,14,-1,0,14,ch89data); - -/* char: 0x58 'X' */ - -static final byte[] ch88data = { -(byte) 0xc0,(byte) 0x60,(byte) 0xe0,(byte) 0xe0,(byte) 0x60,(byte) 0xc0,(byte) 0x71,(byte) 0xc0,(byte) 0x31,(byte) 0x80,(byte) 0x1b,(byte) 0x0,(byte) 0xe,(byte) 0x0,(byte) 0xe,(byte) 0x0, -(byte) 0x1b,(byte) 0x0,(byte) 0x31,(byte) 0x80,(byte) 0x71,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0xe0,(byte) 0xe0,(byte) 0xc0,(byte) 0x60, -}; - -static final BitmapCharRec ch88 = new BitmapCharRec(11,14,-1,0,13,ch88data); - -/* char: 0x57 'W' */ - -static final byte[] ch87data = { -(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x1c,(byte) 0x38,(byte) 0x34,(byte) 0x2c,(byte) 0x36,(byte) 0x6c,(byte) 0x36,(byte) 0x6c,(byte) 0x66,(byte) 0x66,(byte) 0x66,(byte) 0x66, -(byte) 0x62,(byte) 0x46,(byte) 0x63,(byte) 0xc6,(byte) 0xc3,(byte) 0xc3,(byte) 0xc1,(byte) 0x83,(byte) 0xc1,(byte) 0x83,(byte) 0xc1,(byte) 0x83, -}; - -static final BitmapCharRec ch87 = new BitmapCharRec(16,14,-1,0,18,ch87data); - -/* char: 0x56 'V' */ - -static final byte[] ch86data = { -(byte) 0x6,(byte) 0x0,(byte) 0xf,(byte) 0x0,(byte) 0xf,(byte) 0x0,(byte) 0x19,(byte) 0x80,(byte) 0x19,(byte) 0x80,(byte) 0x19,(byte) 0x80,(byte) 0x30,(byte) 0xc0,(byte) 0x30,(byte) 0xc0, -(byte) 0x30,(byte) 0xc0,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0xc0,(byte) 0x30,(byte) 0xc0,(byte) 0x30, -}; - -static final BitmapCharRec ch86 = new BitmapCharRec(12,14,-1,0,14,ch86data); - -/* char: 0x55 'U' */ - -static final byte[] ch85data = { -(byte) 0x1f,(byte) 0x0,(byte) 0x7f,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60, -(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60, -}; - -static final BitmapCharRec ch85 = new BitmapCharRec(11,14,-1,0,13,ch85data); - -/* char: 0x54 'T' */ - -static final byte[] ch84data = { -(byte) 0xc,(byte) 0x0,(byte) 0xc,(byte) 0x0,(byte) 0xc,(byte) 0x0,(byte) 0xc,(byte) 0x0,(byte) 0xc,(byte) 0x0,(byte) 0xc,(byte) 0x0,(byte) 0xc,(byte) 0x0,(byte) 0xc,(byte) 0x0, -(byte) 0xc,(byte) 0x0,(byte) 0xc,(byte) 0x0,(byte) 0xc,(byte) 0x0,(byte) 0xc,(byte) 0x0,(byte) 0xff,(byte) 0xc0,(byte) 0xff,(byte) 0xc0, -}; - -static final BitmapCharRec ch84 = new BitmapCharRec(10,14,-1,0,12,ch84data); - -/* char: 0x53 'S' */ - -static final byte[] ch83data = { -(byte) 0x3f,(byte) 0x0,(byte) 0x7f,(byte) 0xc0,(byte) 0xe0,(byte) 0xe0,(byte) 0xc0,(byte) 0x60,(byte) 0x0,(byte) 0x60,(byte) 0x0,(byte) 0xe0,(byte) 0x3,(byte) 0xc0,(byte) 0x1f,(byte) 0x0, -(byte) 0x7c,(byte) 0x0,(byte) 0xe0,(byte) 0x0,(byte) 0xc0,(byte) 0x60,(byte) 0xe0,(byte) 0xe0,(byte) 0x7f,(byte) 0xc0,(byte) 0x1f,(byte) 0x0, -}; - -static final BitmapCharRec ch83 = new BitmapCharRec(11,14,-1,0,13,ch83data); - -/* char: 0x52 'R' */ - -static final byte[] ch82data = { -(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xff,(byte) 0x0,(byte) 0xff,(byte) 0x80, -(byte) 0xc1,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc1,(byte) 0xc0,(byte) 0xff,(byte) 0x80,(byte) 0xff,(byte) 0x0, -}; - -static final BitmapCharRec ch82 = new BitmapCharRec(10,14,-1,0,12,ch82data); - -/* char: 0x51 'Q' */ - -static final byte[] ch81data = { -(byte) 0x0,(byte) 0x30,(byte) 0xf,(byte) 0xb0,(byte) 0x3f,(byte) 0xe0,(byte) 0x70,(byte) 0xf0,(byte) 0x61,(byte) 0xb0,(byte) 0xe1,(byte) 0xb8,(byte) 0xc0,(byte) 0x18,(byte) 0xc0,(byte) 0x18, -(byte) 0xc0,(byte) 0x18,(byte) 0xc0,(byte) 0x18,(byte) 0xe0,(byte) 0x38,(byte) 0x60,(byte) 0x30,(byte) 0x70,(byte) 0x70,(byte) 0x3f,(byte) 0xe0,(byte) 0xf,(byte) 0x80, -}; - -static final BitmapCharRec ch81 = new BitmapCharRec(13,15,-1,1,15,ch81data); - -/* char: 0x50 'P' */ - -static final byte[] ch80data = { -(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xff,(byte) 0x0,(byte) 0xff,(byte) 0x80, -(byte) 0xc1,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc1,(byte) 0xc0,(byte) 0xff,(byte) 0x80,(byte) 0xff,(byte) 0x0, -}; - -static final BitmapCharRec ch80 = new BitmapCharRec(10,14,-1,0,12,ch80data); - -/* char: 0x4f 'O' */ - -static final byte[] ch79data = { -(byte) 0xf,(byte) 0x80,(byte) 0x3f,(byte) 0xe0,(byte) 0x70,(byte) 0x70,(byte) 0x60,(byte) 0x30,(byte) 0xe0,(byte) 0x38,(byte) 0xc0,(byte) 0x18,(byte) 0xc0,(byte) 0x18,(byte) 0xc0,(byte) 0x18, -(byte) 0xc0,(byte) 0x18,(byte) 0xe0,(byte) 0x38,(byte) 0x60,(byte) 0x30,(byte) 0x70,(byte) 0x70,(byte) 0x3f,(byte) 0xe0,(byte) 0xf,(byte) 0x80, -}; - -static final BitmapCharRec ch79 = new BitmapCharRec(13,14,-1,0,15,ch79data); - -/* char: 0x4e 'N' */ - -static final byte[] ch78data = { -(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0xe0,(byte) 0xc1,(byte) 0xe0,(byte) 0xc1,(byte) 0xe0,(byte) 0xc3,(byte) 0x60,(byte) 0xc6,(byte) 0x60,(byte) 0xc6,(byte) 0x60,(byte) 0xcc,(byte) 0x60, -(byte) 0xcc,(byte) 0x60,(byte) 0xd8,(byte) 0x60,(byte) 0xf0,(byte) 0x60,(byte) 0xf0,(byte) 0x60,(byte) 0xe0,(byte) 0x60,(byte) 0xc0,(byte) 0x60, -}; - -static final BitmapCharRec ch78 = new BitmapCharRec(11,14,-1,0,13,ch78data); - -/* char: 0x4d 'M' */ - -static final byte[] ch77data = { -(byte) 0xc3,(byte) 0xc,(byte) 0xc3,(byte) 0xc,(byte) 0xc7,(byte) 0x8c,(byte) 0xc4,(byte) 0x8c,(byte) 0xcc,(byte) 0xcc,(byte) 0xcc,(byte) 0xcc,(byte) 0xd8,(byte) 0x6c,(byte) 0xd8,(byte) 0x6c, -(byte) 0xf0,(byte) 0x3c,(byte) 0xf0,(byte) 0x3c,(byte) 0xe0,(byte) 0x1c,(byte) 0xe0,(byte) 0x1c,(byte) 0xc0,(byte) 0xc,(byte) 0xc0,(byte) 0xc, -}; - -static final BitmapCharRec ch77 = new BitmapCharRec(14,14,-1,0,16,ch77data); - -/* char: 0x4c 'L' */ - -static final byte[] ch76data = { -(byte) 0xff,(byte) 0xff,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch76 = new BitmapCharRec(8,14,-1,0,10,ch76data); - -/* char: 0x4b 'K' */ - -static final byte[] ch75data = { -(byte) 0xc0,(byte) 0x70,(byte) 0xc0,(byte) 0xe0,(byte) 0xc1,(byte) 0xc0,(byte) 0xc3,(byte) 0x80,(byte) 0xc7,(byte) 0x0,(byte) 0xce,(byte) 0x0,(byte) 0xfc,(byte) 0x0,(byte) 0xf8,(byte) 0x0, -(byte) 0xdc,(byte) 0x0,(byte) 0xce,(byte) 0x0,(byte) 0xc7,(byte) 0x0,(byte) 0xc3,(byte) 0x80,(byte) 0xc1,(byte) 0xc0,(byte) 0xc0,(byte) 0xe0, -}; - -static final BitmapCharRec ch75 = new BitmapCharRec(12,14,-1,0,13,ch75data); - -/* char: 0x4a 'J' */ - -static final byte[] ch74data = { -(byte) 0x3c,(byte) 0x7e,(byte) 0xe7,(byte) 0xc3,(byte) 0xc3,(byte) 0x3,(byte) 0x3,(byte) 0x3,(byte) 0x3,(byte) 0x3,(byte) 0x3,(byte) 0x3,(byte) 0x3,(byte) 0x3, -}; - -static final BitmapCharRec ch74 = new BitmapCharRec(8,14,-1,0,10,ch74data); - -/* char: 0x49 'I' */ - -static final byte[] ch73data = { -(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch73 = new BitmapCharRec(2,14,-2,0,6,ch73data); - -/* char: 0x48 'H' */ - -static final byte[] ch72data = { -(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xff,(byte) 0xe0,(byte) 0xff,(byte) 0xe0, -(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60, -}; - -static final BitmapCharRec ch72 = new BitmapCharRec(11,14,-1,0,13,ch72data); - -/* char: 0x47 'G' */ - -static final byte[] ch71data = { -(byte) 0xf,(byte) 0xb0,(byte) 0x3f,(byte) 0xf0,(byte) 0x70,(byte) 0x70,(byte) 0x60,(byte) 0x30,(byte) 0xe0,(byte) 0x30,(byte) 0xc1,(byte) 0xf0,(byte) 0xc1,(byte) 0xf0,(byte) 0xc0,(byte) 0x0, -(byte) 0xc0,(byte) 0x0,(byte) 0xe0,(byte) 0x30,(byte) 0x60,(byte) 0x30,(byte) 0x70,(byte) 0x70,(byte) 0x3f,(byte) 0xe0,(byte) 0xf,(byte) 0x80, -}; - -static final BitmapCharRec ch71 = new BitmapCharRec(12,14,-1,0,14,ch71data); - -/* char: 0x46 'F' */ - -static final byte[] ch70data = { -(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xff,(byte) 0x0,(byte) 0xff,(byte) 0x0, -(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xff,(byte) 0x80,(byte) 0xff,(byte) 0x80, -}; - -static final BitmapCharRec ch70 = new BitmapCharRec(9,14,-1,0,11,ch70data); - -/* char: 0x45 'E' */ - -static final byte[] ch69data = { -(byte) 0xff,(byte) 0x80,(byte) 0xff,(byte) 0x80,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xff,(byte) 0x0,(byte) 0xff,(byte) 0x0, -(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xff,(byte) 0x80,(byte) 0xff,(byte) 0x80, -}; - -static final BitmapCharRec ch69 = new BitmapCharRec(9,14,-1,0,11,ch69data); - -/* char: 0x44 'D' */ - -static final byte[] ch68data = { -(byte) 0xff,(byte) 0x0,(byte) 0xff,(byte) 0x80,(byte) 0xc1,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60, -(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0xc0,(byte) 0xc1,(byte) 0xc0,(byte) 0xff,(byte) 0x80,(byte) 0xff,(byte) 0x0, -}; - -static final BitmapCharRec ch68 = new BitmapCharRec(11,14,-1,0,13,ch68data); - -/* char: 0x43 'C' */ - -static final byte[] ch67data = { -(byte) 0xf,(byte) 0x80,(byte) 0x3f,(byte) 0xe0,(byte) 0x70,(byte) 0x70,(byte) 0x60,(byte) 0x30,(byte) 0xe0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0, -(byte) 0xc0,(byte) 0x0,(byte) 0xe0,(byte) 0x0,(byte) 0x60,(byte) 0x30,(byte) 0x70,(byte) 0x70,(byte) 0x3f,(byte) 0xe0,(byte) 0xf,(byte) 0x80, -}; - -static final BitmapCharRec ch67 = new BitmapCharRec(12,14,-1,0,14,ch67data); - -/* char: 0x42 'B' */ - -static final byte[] ch66data = { -(byte) 0xff,(byte) 0x80,(byte) 0xff,(byte) 0xc0,(byte) 0xc0,(byte) 0xe0,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0xe0,(byte) 0xff,(byte) 0xc0,(byte) 0xff,(byte) 0x80, -(byte) 0xc1,(byte) 0x80,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc1,(byte) 0xc0,(byte) 0xff,(byte) 0x80,(byte) 0xff,(byte) 0x0, -}; - -static final BitmapCharRec ch66 = new BitmapCharRec(11,14,-1,0,13,ch66data); - -/* char: 0x41 'A' */ - -static final byte[] ch65data = { -(byte) 0xc0,(byte) 0x30,(byte) 0xc0,(byte) 0x30,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x7f,(byte) 0xe0,(byte) 0x3f,(byte) 0xc0,(byte) 0x30,(byte) 0xc0,(byte) 0x30,(byte) 0xc0, -(byte) 0x19,(byte) 0x80,(byte) 0x19,(byte) 0x80,(byte) 0xf,(byte) 0x0,(byte) 0xf,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0, -}; - -static final BitmapCharRec ch65 = new BitmapCharRec(12,14,0,0,12,ch65data); - -/* char: 0x40 '@' */ - -static final byte[] ch64data = { -(byte) 0x7,(byte) 0xe0,(byte) 0x1f,(byte) 0xf0,(byte) 0x38,(byte) 0x0,(byte) 0x70,(byte) 0x0,(byte) 0x67,(byte) 0x70,(byte) 0xcf,(byte) 0xf8,(byte) 0xcc,(byte) 0xcc,(byte) 0xcc,(byte) 0x66, -(byte) 0xcc,(byte) 0x66,(byte) 0xcc,(byte) 0x63,(byte) 0xc6,(byte) 0x33,(byte) 0x67,(byte) 0x73,(byte) 0x63,(byte) 0xb3,(byte) 0x30,(byte) 0x6,(byte) 0x1c,(byte) 0xe,(byte) 0xf,(byte) 0xfc, -(byte) 0x3,(byte) 0xf0, -}; - -static final BitmapCharRec ch64 = new BitmapCharRec(16,17,-1,3,18,ch64data); - -/* char: 0x3f '?' */ - -static final byte[] ch63data = { -(byte) 0x30,(byte) 0x30,(byte) 0x0,(byte) 0x0,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x38,(byte) 0x1c,(byte) 0xe,(byte) 0xc6,(byte) 0xc6,(byte) 0xfe,(byte) 0x7c, -}; - -static final BitmapCharRec ch63 = new BitmapCharRec(7,14,-1,0,10,ch63data); - -/* char: 0x3e '>' */ - -static final byte[] ch62data = { -(byte) 0xc0,(byte) 0xf0,(byte) 0x3c,(byte) 0xe,(byte) 0x3,(byte) 0xe,(byte) 0x3c,(byte) 0xf0,(byte) 0xc0, -}; - -static final BitmapCharRec ch62 = new BitmapCharRec(8,9,-1,0,10,ch62data); - -/* char: 0x3d '=' */ - -static final byte[] ch61data = { -(byte) 0xfe,(byte) 0xfe,(byte) 0x0,(byte) 0x0,(byte) 0xfe,(byte) 0xfe, -}; - -static final BitmapCharRec ch61 = new BitmapCharRec(7,6,-2,-2,11,ch61data); - -/* char: 0x3c '<' */ - -static final byte[] ch60data = { -(byte) 0x3,(byte) 0xf,(byte) 0x3c,(byte) 0x70,(byte) 0xc0,(byte) 0x70,(byte) 0x3c,(byte) 0xf,(byte) 0x3, -}; - -static final BitmapCharRec ch60 = new BitmapCharRec(8,9,-1,0,10,ch60data); - -/* char: 0x3b ';' */ - -static final byte[] ch59data = { -(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0xc0,(byte) 0xc0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch59 = new BitmapCharRec(2,13,-1,3,5,ch59data); - -/* char: 0x3a ':' */ - -static final byte[] ch58data = { -(byte) 0xc0,(byte) 0xc0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch58 = new BitmapCharRec(2,10,-1,0,5,ch58data); - -/* char: 0x39 '9' */ - -static final byte[] ch57data = { -(byte) 0x7c,(byte) 0xfe,(byte) 0xc6,(byte) 0x3,(byte) 0x3,(byte) 0x3b,(byte) 0x7f,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc7,(byte) 0x7e,(byte) 0x3c, -}; - -static final BitmapCharRec ch57 = new BitmapCharRec(8,13,-1,0,10,ch57data); - -/* char: 0x38 '8' */ - -static final byte[] ch56data = { -(byte) 0x3c,(byte) 0x7e,(byte) 0xe7,(byte) 0xc3,(byte) 0xc3,(byte) 0x66,(byte) 0x7e,(byte) 0x66,(byte) 0xc3,(byte) 0xc3,(byte) 0xe7,(byte) 0x7e,(byte) 0x3c, -}; - -static final BitmapCharRec ch56 = new BitmapCharRec(8,13,-1,0,10,ch56data); - -/* char: 0x37 '7' */ - -static final byte[] ch55data = { -(byte) 0x60,(byte) 0x60,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x18,(byte) 0x18,(byte) 0xc,(byte) 0xc,(byte) 0x6,(byte) 0x3,(byte) 0xff,(byte) 0xff, -}; - -static final BitmapCharRec ch55 = new BitmapCharRec(8,13,-1,0,10,ch55data); - -/* char: 0x36 '6' */ - -static final byte[] ch54data = { -(byte) 0x3c,(byte) 0x7e,(byte) 0xe3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xfe,(byte) 0xdc,(byte) 0xc0,(byte) 0xc0,(byte) 0x63,(byte) 0x7f,(byte) 0x3c, -}; - -static final BitmapCharRec ch54 = new BitmapCharRec(8,13,-1,0,10,ch54data); - -/* char: 0x35 '5' */ - -static final byte[] ch53data = { -(byte) 0x7c,(byte) 0xfe,(byte) 0xc7,(byte) 0xc3,(byte) 0x3,(byte) 0x3,(byte) 0xc7,(byte) 0xfe,(byte) 0xfc,(byte) 0xc0,(byte) 0xc0,(byte) 0xfe,(byte) 0xfe, -}; - -static final BitmapCharRec ch53 = new BitmapCharRec(8,13,-1,0,10,ch53data); - -/* char: 0x34 '4' */ - -static final byte[] ch52data = { -(byte) 0x3,(byte) 0x0,(byte) 0x3,(byte) 0x0,(byte) 0x3,(byte) 0x0,(byte) 0xff,(byte) 0x80,(byte) 0xff,(byte) 0x80,(byte) 0xc3,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0x33,(byte) 0x0, -(byte) 0x33,(byte) 0x0,(byte) 0x1b,(byte) 0x0,(byte) 0xf,(byte) 0x0,(byte) 0x7,(byte) 0x0,(byte) 0x3,(byte) 0x0, -}; - -static final BitmapCharRec ch52 = new BitmapCharRec(9,13,-1,0,10,ch52data); - -/* char: 0x33 '3' */ - -static final byte[] ch51data = { -(byte) 0x3c,(byte) 0x7e,(byte) 0xc7,(byte) 0xc3,(byte) 0x3,(byte) 0x7,(byte) 0x1e,(byte) 0x1c,(byte) 0x6,(byte) 0xc3,(byte) 0xc3,(byte) 0x7e,(byte) 0x3c, -}; - -static final BitmapCharRec ch51 = new BitmapCharRec(8,13,-1,0,10,ch51data); - -/* char: 0x32 '2' */ - -static final byte[] ch50data = { -(byte) 0xff,(byte) 0xff,(byte) 0xc0,(byte) 0xe0,(byte) 0x70,(byte) 0x38,(byte) 0x1c,(byte) 0xe,(byte) 0x7,(byte) 0x3,(byte) 0xc3,(byte) 0xfe,(byte) 0x3c, -}; - -static final BitmapCharRec ch50 = new BitmapCharRec(8,13,-1,0,10,ch50data); - -/* char: 0x31 '1' */ - -static final byte[] ch49data = { -(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0xf8,(byte) 0xf8,(byte) 0x18, -}; - -static final BitmapCharRec ch49 = new BitmapCharRec(5,13,-2,0,10,ch49data); - -/* char: 0x30 '0' */ - -static final byte[] ch48data = { -(byte) 0x3c,(byte) 0x7e,(byte) 0x66,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0xc3,(byte) 0x66,(byte) 0x7e,(byte) 0x3c, -}; - -static final BitmapCharRec ch48 = new BitmapCharRec(8,13,-1,0,10,ch48data); - -/* char: 0x2f '/' */ - -static final byte[] ch47data = { -(byte) 0xc0,(byte) 0xc0,(byte) 0x40,(byte) 0x40,(byte) 0x60,(byte) 0x60,(byte) 0x20,(byte) 0x20,(byte) 0x30,(byte) 0x30,(byte) 0x10,(byte) 0x10,(byte) 0x18,(byte) 0x18, -}; - -static final BitmapCharRec ch47 = new BitmapCharRec(5,14,0,0,5,ch47data); - -/* char: 0x2e '.' */ - -static final byte[] ch46data = { -(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch46 = new BitmapCharRec(2,2,-1,0,5,ch46data); - -/* char: 0x2d '-' */ - -static final byte[] ch45data = { -(byte) 0xff,(byte) 0xff, -}; - -static final BitmapCharRec ch45 = new BitmapCharRec(8,2,-1,-4,11,ch45data); - -/* char: 0x2c ',' */ - -static final byte[] ch44data = { -(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch44 = new BitmapCharRec(2,5,-1,3,5,ch44data); - -/* char: 0x2b '+' */ - -static final byte[] ch43data = { -(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0xff,(byte) 0xff,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18, -}; - -static final BitmapCharRec ch43 = new BitmapCharRec(8,10,-1,0,10,ch43data); - -/* char: 0x2a '*' */ - -static final byte[] ch42data = { -(byte) 0x88,(byte) 0x70,(byte) 0x70,(byte) 0xf8,(byte) 0x20,(byte) 0x20, -}; - -static final BitmapCharRec ch42 = new BitmapCharRec(5,6,-1,-8,7,ch42data); - -/* char: 0x29 ')' */ - -static final byte[] ch41data = { -(byte) 0x80,(byte) 0xc0,(byte) 0x60,(byte) 0x60,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x60,(byte) 0x60, -(byte) 0xc0,(byte) 0x80, -}; - -static final BitmapCharRec ch41 = new BitmapCharRec(4,18,-1,4,6,ch41data); - -/* char: 0x28 '(' */ - -static final byte[] ch40data = { -(byte) 0x10,(byte) 0x30,(byte) 0x60,(byte) 0x60,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0x60,(byte) 0x60, -(byte) 0x30,(byte) 0x10, -}; - -static final BitmapCharRec ch40 = new BitmapCharRec(4,18,-1,4,6,ch40data); - -/* char: 0x27 ''' */ - -static final byte[] ch39data = { -(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch39 = new BitmapCharRec(2,5,-1,-9,4,ch39data); - -/* char: 0x26 '&' */ - -static final byte[] ch38data = { -(byte) 0x3c,(byte) 0x70,(byte) 0x7e,(byte) 0xe0,(byte) 0xe7,(byte) 0xc0,(byte) 0xc3,(byte) 0x80,(byte) 0xc3,(byte) 0xc0,(byte) 0xc6,(byte) 0xc0,(byte) 0xee,(byte) 0xc0,(byte) 0x7c,(byte) 0x0, -(byte) 0x3c,(byte) 0x0,(byte) 0x66,(byte) 0x0,(byte) 0x66,(byte) 0x0,(byte) 0x7e,(byte) 0x0,(byte) 0x3c,(byte) 0x0, -}; - -static final BitmapCharRec ch38 = new BitmapCharRec(12,13,-1,0,13,ch38data); - -/* char: 0x25 '%' */ - -static final byte[] ch37data = { -(byte) 0x18,(byte) 0x78,(byte) 0x18,(byte) 0xfc,(byte) 0xc,(byte) 0xcc,(byte) 0xc,(byte) 0xcc,(byte) 0x6,(byte) 0xfc,(byte) 0x6,(byte) 0x78,(byte) 0x3,(byte) 0x0,(byte) 0x7b,(byte) 0x0, -(byte) 0xfd,(byte) 0x80,(byte) 0xcd,(byte) 0x80,(byte) 0xcc,(byte) 0xc0,(byte) 0xfc,(byte) 0xc0,(byte) 0x78,(byte) 0x60, -}; - -static final BitmapCharRec ch37 = new BitmapCharRec(14,13,-1,0,16,ch37data); - -/* char: 0x24 '$' */ - -static final byte[] ch36data = { -(byte) 0x8,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0x3e,(byte) 0x0,(byte) 0x7f,(byte) 0x0,(byte) 0xeb,(byte) 0x80,(byte) 0xc9,(byte) 0x80,(byte) 0x9,(byte) 0x80,(byte) 0xf,(byte) 0x0, -(byte) 0x3e,(byte) 0x0,(byte) 0x78,(byte) 0x0,(byte) 0xe8,(byte) 0x0,(byte) 0xc8,(byte) 0x0,(byte) 0xcb,(byte) 0x0,(byte) 0x7f,(byte) 0x0,(byte) 0x3e,(byte) 0x0,(byte) 0x8,(byte) 0x0, -}; - -static final BitmapCharRec ch36 = new BitmapCharRec(9,16,-1,2,10,ch36data); - -/* char: 0x23 '#' */ - -static final byte[] ch35data = { -(byte) 0x24,(byte) 0x0,(byte) 0x24,(byte) 0x0,(byte) 0x24,(byte) 0x0,(byte) 0xff,(byte) 0x80,(byte) 0xff,(byte) 0x80,(byte) 0x12,(byte) 0x0,(byte) 0x12,(byte) 0x0,(byte) 0x12,(byte) 0x0, -(byte) 0x7f,(byte) 0xc0,(byte) 0x7f,(byte) 0xc0,(byte) 0x9,(byte) 0x0,(byte) 0x9,(byte) 0x0,(byte) 0x9,(byte) 0x0, -}; - -static final BitmapCharRec ch35 = new BitmapCharRec(10,13,0,0,10,ch35data); - -/* char: 0x22 '"' */ - -static final byte[] ch34data = { -(byte) 0x90,(byte) 0x90,(byte) 0xd8,(byte) 0xd8,(byte) 0xd8, -}; - -static final BitmapCharRec ch34 = new BitmapCharRec(5,5,0,-9,5,ch34data); - -/* char: 0x21 '!' */ - -static final byte[] ch33data = { -(byte) 0xc0,(byte) 0xc0,(byte) 0x0,(byte) 0x0,(byte) 0x80,(byte) 0x80,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch33 = new BitmapCharRec(2,14,-2,0,6,ch33data); - -/* char: 0x20 ' ' */ - -static final BitmapCharRec ch32 = new BitmapCharRec(0,0,0,0,5,null); - -static final BitmapCharRec[] chars = { -ch32, -ch33, -ch34, -ch35, -ch36, -ch37, -ch38, -ch39, -ch40, -ch41, -ch42, -ch43, -ch44, -ch45, -ch46, -ch47, -ch48, -ch49, -ch50, -ch51, -ch52, -ch53, -ch54, -ch55, -ch56, -ch57, -ch58, -ch59, -ch60, -ch61, -ch62, -ch63, -ch64, -ch65, -ch66, -ch67, -ch68, -ch69, -ch70, -ch71, -ch72, -ch73, -ch74, -ch75, -ch76, -ch77, -ch78, -ch79, -ch80, -ch81, -ch82, -ch83, -ch84, -ch85, -ch86, -ch87, -ch88, -ch89, -ch90, -ch91, -ch92, -ch93, -ch94, -ch95, -ch96, -ch97, -ch98, -ch99, -ch100, -ch101, -ch102, -ch103, -ch104, -ch105, -ch106, -ch107, -ch108, -ch109, -ch110, -ch111, -ch112, -ch113, -ch114, -ch115, -ch116, -ch117, -ch118, -ch119, -ch120, -ch121, -ch122, -ch123, -ch124, -ch125, -ch126, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -ch160, -ch161, -ch162, -ch163, -ch164, -ch165, -ch166, -ch167, -ch168, -ch169, -ch170, -ch171, -ch172, -ch173, -ch174, -ch175, -ch176, -ch177, -ch178, -ch179, -ch180, -ch181, -ch182, -ch183, -ch184, -ch185, -ch186, -ch187, -ch188, -ch189, -ch190, -ch191, -ch192, -ch193, -ch194, -ch195, -ch196, -ch197, -ch198, -ch199, -ch200, -ch201, -ch202, -ch203, -ch204, -ch205, -ch206, -ch207, -ch208, -ch209, -ch210, -ch211, -ch212, -ch213, -ch214, -ch215, -ch216, -ch217, -ch218, -ch219, -ch220, -ch221, -ch222, -ch223, -ch224, -ch225, -ch226, -ch227, -ch228, -ch229, -ch230, -ch231, -ch232, -ch233, -ch234, -ch235, -ch236, -ch237, -ch238, -ch239, -ch240, -ch241, -ch242, -ch243, -ch244, -ch245, -ch246, -ch247, -ch248, -ch249, -ch250, -ch251, -ch252, -ch253, -ch254, -ch255, -}; - - public static final BitmapFontRec glutBitmapHelvetica18 = new BitmapFontRec("-adobe-helvetica-medium-r-normal--18-180-75-75-p-98-iso8859-1", - 224, - 32, - chars); -} diff --git a/src/jogl/classes/com/sun/opengl/util/gl2/GLUTBitmapTimesRoman10.java b/src/jogl/classes/com/sun/opengl/util/gl2/GLUTBitmapTimesRoman10.java deleted file mode 100644 index 32699863f..000000000 --- a/src/jogl/classes/com/sun/opengl/util/gl2/GLUTBitmapTimesRoman10.java +++ /dev/null @@ -1,1797 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.gl2; - -class GLUTBitmapTimesRoman10 { - -/* GENERATED FILE -- DO NOT MODIFY */ - -/* char: 0xff */ - -static final byte[] ch255data = { -(byte) 0x80,(byte) 0xc0,(byte) 0x40,(byte) 0x60,(byte) 0xa0,(byte) 0x90,(byte) 0xb8,(byte) 0x0,(byte) 0xa0, -}; - -static final BitmapCharRec ch255 = new BitmapCharRec(5,9,0,2,5,ch255data); - -/* char: 0xfe */ - -static final byte[] ch254data = { -(byte) 0xc0,(byte) 0x80,(byte) 0xe0,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0xe0,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch254 = new BitmapCharRec(4,9,0,2,5,ch254data); - -/* char: 0xfd */ - -static final byte[] ch253data = { -(byte) 0x80,(byte) 0xc0,(byte) 0x40,(byte) 0x60,(byte) 0xa0,(byte) 0x90,(byte) 0xb8,(byte) 0x0,(byte) 0x20,(byte) 0x10, -}; - -static final BitmapCharRec ch253 = new BitmapCharRec(5,10,0,2,5,ch253data); - -/* char: 0xfc */ - -static final byte[] ch252data = { -(byte) 0x68,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x0,(byte) 0x50, -}; - -static final BitmapCharRec ch252 = new BitmapCharRec(5,7,0,0,5,ch252data); - -/* char: 0xfb */ - -static final byte[] ch251data = { -(byte) 0x68,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x0,(byte) 0x50,(byte) 0x20, -}; - -static final BitmapCharRec ch251 = new BitmapCharRec(5,8,0,0,5,ch251data); - -/* char: 0xfa */ - -static final byte[] ch250data = { -(byte) 0x68,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x0,(byte) 0x40,(byte) 0x20, -}; - -static final BitmapCharRec ch250 = new BitmapCharRec(5,8,0,0,5,ch250data); - -/* char: 0xf9 */ - -static final byte[] ch249data = { -(byte) 0x68,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x0,(byte) 0x20,(byte) 0x40, -}; - -static final BitmapCharRec ch249 = new BitmapCharRec(5,8,0,0,5,ch249data); - -/* char: 0xf8 */ - -static final byte[] ch248data = { -(byte) 0x80,(byte) 0x70,(byte) 0x48,(byte) 0x48,(byte) 0x48,(byte) 0x38,(byte) 0x4, -}; - -static final BitmapCharRec ch248 = new BitmapCharRec(6,7,1,1,5,ch248data); - -/* char: 0xf7 */ - -static final byte[] ch247data = { -(byte) 0x20,(byte) 0x0,(byte) 0xf8,(byte) 0x0,(byte) 0x20, -}; - -static final BitmapCharRec ch247 = new BitmapCharRec(5,5,0,0,6,ch247data); - -/* char: 0xf6 */ - -static final byte[] ch246data = { -(byte) 0x60,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x60,(byte) 0x0,(byte) 0xa0, -}; - -static final BitmapCharRec ch246 = new BitmapCharRec(4,7,0,0,5,ch246data); - -/* char: 0xf5 */ - -static final byte[] ch245data = { -(byte) 0x60,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x60,(byte) 0x0,(byte) 0xa0,(byte) 0x50, -}; - -static final BitmapCharRec ch245 = new BitmapCharRec(4,8,0,0,5,ch245data); - -/* char: 0xf4 */ - -static final byte[] ch244data = { -(byte) 0x60,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x60,(byte) 0x0,(byte) 0xa0,(byte) 0x40, -}; - -static final BitmapCharRec ch244 = new BitmapCharRec(4,8,0,0,5,ch244data); - -/* char: 0xf3 */ - -static final byte[] ch243data = { -(byte) 0x60,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x60,(byte) 0x0,(byte) 0x40,(byte) 0x20, -}; - -static final BitmapCharRec ch243 = new BitmapCharRec(4,8,0,0,5,ch243data); - -/* char: 0xf2 */ - -static final byte[] ch242data = { -(byte) 0x60,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x60,(byte) 0x0,(byte) 0x20,(byte) 0x40, -}; - -static final BitmapCharRec ch242 = new BitmapCharRec(4,8,0,0,5,ch242data); - -/* char: 0xf1 */ - -static final byte[] ch241data = { -(byte) 0xd8,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0xe0,(byte) 0x0,(byte) 0xa0,(byte) 0x50, -}; - -static final BitmapCharRec ch241 = new BitmapCharRec(5,8,0,0,5,ch241data); - -/* char: 0xf0 */ - -static final byte[] ch240data = { -(byte) 0x60,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x70,(byte) 0xa0,(byte) 0x70,(byte) 0x40, -}; - -static final BitmapCharRec ch240 = new BitmapCharRec(4,8,0,0,5,ch240data); - -/* char: 0xef */ - -static final byte[] ch239data = { -(byte) 0xe0,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xc0,(byte) 0x0,(byte) 0xa0, -}; - -static final BitmapCharRec ch239 = new BitmapCharRec(3,7,0,0,4,ch239data); - -/* char: 0xee */ - -static final byte[] ch238data = { -(byte) 0xe0,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xc0,(byte) 0x0,(byte) 0xa0,(byte) 0x40, -}; - -static final BitmapCharRec ch238 = new BitmapCharRec(3,8,0,0,4,ch238data); - -/* char: 0xed */ - -static final byte[] ch237data = { -(byte) 0xe0,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xc0,(byte) 0x0,(byte) 0x40,(byte) 0x20, -}; - -static final BitmapCharRec ch237 = new BitmapCharRec(3,8,0,0,4,ch237data); - -/* char: 0xec */ - -static final byte[] ch236data = { -(byte) 0xe0,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xc0,(byte) 0x0,(byte) 0x40,(byte) 0x80, -}; - -static final BitmapCharRec ch236 = new BitmapCharRec(3,8,0,0,4,ch236data); - -/* char: 0xeb */ - -static final byte[] ch235data = { -(byte) 0x60,(byte) 0x80,(byte) 0xc0,(byte) 0xa0,(byte) 0x60,(byte) 0x0,(byte) 0xa0, -}; - -static final BitmapCharRec ch235 = new BitmapCharRec(3,7,0,0,4,ch235data); - -/* char: 0xea */ - -static final byte[] ch234data = { -(byte) 0x60,(byte) 0x80,(byte) 0xc0,(byte) 0xa0,(byte) 0x60,(byte) 0x0,(byte) 0xa0,(byte) 0x40, -}; - -static final BitmapCharRec ch234 = new BitmapCharRec(3,8,0,0,4,ch234data); - -/* char: 0xe9 */ - -static final byte[] ch233data = { -(byte) 0x60,(byte) 0x80,(byte) 0xc0,(byte) 0xa0,(byte) 0x60,(byte) 0x0,(byte) 0x40,(byte) 0x20, -}; - -static final BitmapCharRec ch233 = new BitmapCharRec(3,8,0,0,4,ch233data); - -/* char: 0xe8 */ - -static final byte[] ch232data = { -(byte) 0x60,(byte) 0x80,(byte) 0xc0,(byte) 0xa0,(byte) 0x60,(byte) 0x0,(byte) 0x40,(byte) 0x80, -}; - -static final BitmapCharRec ch232 = new BitmapCharRec(3,8,0,0,4,ch232data); - -/* char: 0xe7 */ - -static final byte[] ch231data = { -(byte) 0xc0,(byte) 0x20,(byte) 0x40,(byte) 0x60,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x60, -}; - -static final BitmapCharRec ch231 = new BitmapCharRec(3,8,0,3,4,ch231data); - -/* char: 0xe6 */ - -static final byte[] ch230data = { -(byte) 0xd8,(byte) 0xa0,(byte) 0x70,(byte) 0x28,(byte) 0xd8, -}; - -static final BitmapCharRec ch230 = new BitmapCharRec(5,5,0,0,6,ch230data); - -/* char: 0xe5 */ - -static final byte[] ch229data = { -(byte) 0xe0,(byte) 0xa0,(byte) 0x60,(byte) 0x20,(byte) 0xc0,(byte) 0x40,(byte) 0xa0,(byte) 0x40, -}; - -static final BitmapCharRec ch229 = new BitmapCharRec(3,8,0,0,4,ch229data); - -/* char: 0xe4 */ - -static final byte[] ch228data = { -(byte) 0xe0,(byte) 0xa0,(byte) 0x60,(byte) 0x20,(byte) 0xc0,(byte) 0x0,(byte) 0xa0, -}; - -static final BitmapCharRec ch228 = new BitmapCharRec(3,7,0,0,4,ch228data); - -/* char: 0xe3 */ - -static final byte[] ch227data = { -(byte) 0xe0,(byte) 0xa0,(byte) 0x60,(byte) 0x20,(byte) 0xc0,(byte) 0x0,(byte) 0xa0,(byte) 0x50, -}; - -static final BitmapCharRec ch227 = new BitmapCharRec(4,8,0,0,4,ch227data); - -/* char: 0xe2 */ - -static final byte[] ch226data = { -(byte) 0xe0,(byte) 0xa0,(byte) 0x60,(byte) 0x20,(byte) 0xc0,(byte) 0x0,(byte) 0xa0,(byte) 0x40, -}; - -static final BitmapCharRec ch226 = new BitmapCharRec(3,8,0,0,4,ch226data); - -/* char: 0xe1 */ - -static final byte[] ch225data = { -(byte) 0xe0,(byte) 0xa0,(byte) 0x60,(byte) 0x20,(byte) 0xc0,(byte) 0x0,(byte) 0x40,(byte) 0x20, -}; - -static final BitmapCharRec ch225 = new BitmapCharRec(3,8,0,0,4,ch225data); - -/* char: 0xe0 */ - -static final byte[] ch224data = { -(byte) 0xe0,(byte) 0xa0,(byte) 0x60,(byte) 0x20,(byte) 0xc0,(byte) 0x0,(byte) 0x40,(byte) 0x80, -}; - -static final BitmapCharRec ch224 = new BitmapCharRec(3,8,0,0,4,ch224data); - -/* char: 0xdf */ - -static final byte[] ch223data = { -(byte) 0xe0,(byte) 0x50,(byte) 0x50,(byte) 0x60,(byte) 0x50,(byte) 0x50,(byte) 0x20, -}; - -static final BitmapCharRec ch223 = new BitmapCharRec(4,7,0,0,5,ch223data); - -/* char: 0xde */ - -static final byte[] ch222data = { -(byte) 0xe0,(byte) 0x40,(byte) 0x70,(byte) 0x48,(byte) 0x70,(byte) 0x40,(byte) 0xe0, -}; - -static final BitmapCharRec ch222 = new BitmapCharRec(5,7,0,0,6,ch222data); - -/* char: 0xdd */ - -static final byte[] ch221data = { -(byte) 0x38,(byte) 0x10,(byte) 0x10,(byte) 0x28,(byte) 0x28,(byte) 0x44,(byte) 0xee,(byte) 0x0,(byte) 0x10,(byte) 0x8, -}; - -static final BitmapCharRec ch221 = new BitmapCharRec(7,10,0,0,8,ch221data); - -/* char: 0xdc */ - -static final byte[] ch220data = { -(byte) 0x38,(byte) 0x6c,(byte) 0x44,(byte) 0x44,(byte) 0x44,(byte) 0x44,(byte) 0xee,(byte) 0x0,(byte) 0x28, -}; - -static final BitmapCharRec ch220 = new BitmapCharRec(7,9,0,0,8,ch220data); - -/* char: 0xdb */ - -static final byte[] ch219data = { -(byte) 0x38,(byte) 0x6c,(byte) 0x44,(byte) 0x44,(byte) 0x44,(byte) 0x44,(byte) 0xee,(byte) 0x0,(byte) 0x28,(byte) 0x10, -}; - -static final BitmapCharRec ch219 = new BitmapCharRec(7,10,0,0,8,ch219data); - -/* char: 0xda */ - -static final byte[] ch218data = { -(byte) 0x38,(byte) 0x6c,(byte) 0x44,(byte) 0x44,(byte) 0x44,(byte) 0x44,(byte) 0xee,(byte) 0x0,(byte) 0x10,(byte) 0x8, -}; - -static final BitmapCharRec ch218 = new BitmapCharRec(7,10,0,0,8,ch218data); - -/* char: 0xd9 */ - -static final byte[] ch217data = { -(byte) 0x38,(byte) 0x6c,(byte) 0x44,(byte) 0x44,(byte) 0x44,(byte) 0x44,(byte) 0xee,(byte) 0x0,(byte) 0x10,(byte) 0x20, -}; - -static final BitmapCharRec ch217 = new BitmapCharRec(7,10,0,0,8,ch217data); - -/* char: 0xd8 */ - -static final byte[] ch216data = { -(byte) 0x80,(byte) 0x7c,(byte) 0x66,(byte) 0x52,(byte) 0x52,(byte) 0x4a,(byte) 0x66,(byte) 0x3e,(byte) 0x1, -}; - -static final BitmapCharRec ch216 = new BitmapCharRec(8,9,0,1,8,ch216data); - -/* char: 0xd7 */ - -static final byte[] ch215data = { -(byte) 0x88,(byte) 0x50,(byte) 0x20,(byte) 0x50,(byte) 0x88, -}; - -static final BitmapCharRec ch215 = new BitmapCharRec(5,5,0,0,6,ch215data); - -/* char: 0xd6 */ - -static final byte[] ch214data = { -(byte) 0x78,(byte) 0xcc,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0xcc,(byte) 0x78,(byte) 0x0,(byte) 0x50, -}; - -static final BitmapCharRec ch214 = new BitmapCharRec(6,9,0,0,7,ch214data); - -/* char: 0xd5 */ - -static final byte[] ch213data = { -(byte) 0x78,(byte) 0xcc,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0xcc,(byte) 0x78,(byte) 0x0,(byte) 0x50,(byte) 0x28, -}; - -static final BitmapCharRec ch213 = new BitmapCharRec(6,10,0,0,7,ch213data); - -/* char: 0xd4 */ - -static final byte[] ch212data = { -(byte) 0x78,(byte) 0xcc,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0xcc,(byte) 0x78,(byte) 0x0,(byte) 0x50,(byte) 0x20, -}; - -static final BitmapCharRec ch212 = new BitmapCharRec(6,10,0,0,7,ch212data); - -/* char: 0xd3 */ - -static final byte[] ch211data = { -(byte) 0x78,(byte) 0xcc,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0xcc,(byte) 0x78,(byte) 0x0,(byte) 0x10,(byte) 0x8, -}; - -static final BitmapCharRec ch211 = new BitmapCharRec(6,10,0,0,7,ch211data); - -/* char: 0xd2 */ - -static final byte[] ch210data = { -(byte) 0x78,(byte) 0xcc,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0xcc,(byte) 0x78,(byte) 0x0,(byte) 0x20,(byte) 0x40, -}; - -static final BitmapCharRec ch210 = new BitmapCharRec(6,10,0,0,7,ch210data); - -/* char: 0xd1 */ - -static final byte[] ch209data = { -(byte) 0xe4,(byte) 0x4c,(byte) 0x4c,(byte) 0x54,(byte) 0x54,(byte) 0x64,(byte) 0xee,(byte) 0x0,(byte) 0x50,(byte) 0x28, -}; - -static final BitmapCharRec ch209 = new BitmapCharRec(7,10,0,0,8,ch209data); - -/* char: 0xd0 */ - -static final byte[] ch208data = { -(byte) 0xf8,(byte) 0x4c,(byte) 0x44,(byte) 0xe4,(byte) 0x44,(byte) 0x4c,(byte) 0xf8, -}; - -static final BitmapCharRec ch208 = new BitmapCharRec(6,7,0,0,7,ch208data); - -/* char: 0xcf */ - -static final byte[] ch207data = { -(byte) 0xe0,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xe0,(byte) 0x0,(byte) 0xa0, -}; - -static final BitmapCharRec ch207 = new BitmapCharRec(3,9,0,0,4,ch207data); - -/* char: 0xce */ - -static final byte[] ch206data = { -(byte) 0xe0,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xe0,(byte) 0x0,(byte) 0xa0,(byte) 0x40, -}; - -static final BitmapCharRec ch206 = new BitmapCharRec(3,10,0,0,4,ch206data); - -/* char: 0xcd */ - -static final byte[] ch205data = { -(byte) 0xe0,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xe0,(byte) 0x0,(byte) 0x40,(byte) 0x20, -}; - -static final BitmapCharRec ch205 = new BitmapCharRec(3,10,0,0,4,ch205data); - -/* char: 0xcc */ - -static final byte[] ch204data = { -(byte) 0xe0,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xe0,(byte) 0x0,(byte) 0x40,(byte) 0x80, -}; - -static final BitmapCharRec ch204 = new BitmapCharRec(3,10,0,0,4,ch204data); - -/* char: 0xcb */ - -static final byte[] ch203data = { -(byte) 0xf8,(byte) 0x48,(byte) 0x40,(byte) 0x70,(byte) 0x40,(byte) 0x48,(byte) 0xf8,(byte) 0x0,(byte) 0x50, -}; - -static final BitmapCharRec ch203 = new BitmapCharRec(5,9,0,0,6,ch203data); - -/* char: 0xca */ - -static final byte[] ch202data = { -(byte) 0xf8,(byte) 0x48,(byte) 0x40,(byte) 0x70,(byte) 0x40,(byte) 0x48,(byte) 0xf8,(byte) 0x0,(byte) 0x50,(byte) 0x20, -}; - -static final BitmapCharRec ch202 = new BitmapCharRec(5,10,0,0,6,ch202data); - -/* char: 0xc9 */ - -static final byte[] ch201data = { -(byte) 0xf8,(byte) 0x48,(byte) 0x40,(byte) 0x70,(byte) 0x40,(byte) 0x48,(byte) 0xf8,(byte) 0x0,(byte) 0x20,(byte) 0x10, -}; - -static final BitmapCharRec ch201 = new BitmapCharRec(5,10,0,0,6,ch201data); - -/* char: 0xc8 */ - -static final byte[] ch200data = { -(byte) 0xf8,(byte) 0x48,(byte) 0x40,(byte) 0x70,(byte) 0x40,(byte) 0x48,(byte) 0xf8,(byte) 0x0,(byte) 0x20,(byte) 0x40, -}; - -static final BitmapCharRec ch200 = new BitmapCharRec(5,10,0,0,6,ch200data); - -/* char: 0xc7 */ - -static final byte[] ch199data = { -(byte) 0x60,(byte) 0x10,(byte) 0x20,(byte) 0x78,(byte) 0xc4,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xc4,(byte) 0x7c, -}; - -static final BitmapCharRec ch199 = new BitmapCharRec(6,10,0,3,7,ch199data); - -/* char: 0xc6 */ - -static final byte[] ch198data = { -(byte) 0xef,(byte) 0x49,(byte) 0x78,(byte) 0x2e,(byte) 0x28,(byte) 0x39,(byte) 0x1f, -}; - -static final BitmapCharRec ch198 = new BitmapCharRec(8,7,0,0,9,ch198data); - -/* char: 0xc5 */ - -static final byte[] ch197data = { -(byte) 0xee,(byte) 0x44,(byte) 0x7c,(byte) 0x28,(byte) 0x28,(byte) 0x38,(byte) 0x10,(byte) 0x10,(byte) 0x28,(byte) 0x10, -}; - -static final BitmapCharRec ch197 = new BitmapCharRec(7,10,0,0,8,ch197data); - -/* char: 0xc4 */ - -static final byte[] ch196data = { -(byte) 0xee,(byte) 0x44,(byte) 0x7c,(byte) 0x28,(byte) 0x28,(byte) 0x38,(byte) 0x10,(byte) 0x0,(byte) 0x28, -}; - -static final BitmapCharRec ch196 = new BitmapCharRec(7,9,0,0,8,ch196data); - -/* char: 0xc3 */ - -static final byte[] ch195data = { -(byte) 0xee,(byte) 0x44,(byte) 0x7c,(byte) 0x28,(byte) 0x28,(byte) 0x38,(byte) 0x10,(byte) 0x0,(byte) 0x28,(byte) 0x14, -}; - -static final BitmapCharRec ch195 = new BitmapCharRec(7,10,0,0,8,ch195data); - -/* char: 0xc2 */ - -static final byte[] ch194data = { -(byte) 0xee,(byte) 0x44,(byte) 0x7c,(byte) 0x28,(byte) 0x28,(byte) 0x38,(byte) 0x10,(byte) 0x0,(byte) 0x28,(byte) 0x10, -}; - -static final BitmapCharRec ch194 = new BitmapCharRec(7,10,0,0,8,ch194data); - -/* char: 0xc1 */ - -static final byte[] ch193data = { -(byte) 0xee,(byte) 0x44,(byte) 0x7c,(byte) 0x28,(byte) 0x28,(byte) 0x38,(byte) 0x10,(byte) 0x0,(byte) 0x10,(byte) 0x8, -}; - -static final BitmapCharRec ch193 = new BitmapCharRec(7,10,0,0,8,ch193data); - -/* char: 0xc0 */ - -static final byte[] ch192data = { -(byte) 0xee,(byte) 0x44,(byte) 0x7c,(byte) 0x28,(byte) 0x28,(byte) 0x38,(byte) 0x10,(byte) 0x0,(byte) 0x10,(byte) 0x20, -}; - -static final BitmapCharRec ch192 = new BitmapCharRec(7,10,0,0,8,ch192data); - -/* char: 0xbf */ - -static final byte[] ch191data = { -(byte) 0xe0,(byte) 0xa0,(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x0,(byte) 0x40, -}; - -static final BitmapCharRec ch191 = new BitmapCharRec(3,7,0,2,4,ch191data); - -/* char: 0xbe */ - -static final byte[] ch190data = { -(byte) 0x44,(byte) 0x3e,(byte) 0x2c,(byte) 0xd4,(byte) 0x28,(byte) 0x48,(byte) 0xe4, -}; - -static final BitmapCharRec ch190 = new BitmapCharRec(7,7,0,0,8,ch190data); - -/* char: 0xbd */ - -static final byte[] ch189data = { -(byte) 0x4e,(byte) 0x24,(byte) 0x2a,(byte) 0xf6,(byte) 0x48,(byte) 0xc8,(byte) 0x44, -}; - -static final BitmapCharRec ch189 = new BitmapCharRec(7,7,0,0,8,ch189data); - -/* char: 0xbc */ - -static final byte[] ch188data = { -(byte) 0x44,(byte) 0x3e,(byte) 0x2c,(byte) 0xf4,(byte) 0x48,(byte) 0xc8,(byte) 0x44, -}; - -static final BitmapCharRec ch188 = new BitmapCharRec(7,7,0,0,8,ch188data); - -/* char: 0xbb */ - -static final byte[] ch187data = { -(byte) 0xa0,(byte) 0x50,(byte) 0x50,(byte) 0xa0, -}; - -static final BitmapCharRec ch187 = new BitmapCharRec(4,4,0,-1,5,ch187data); - -/* char: 0xba */ - -static final byte[] ch186data = { -(byte) 0xe0,(byte) 0x0,(byte) 0x40,(byte) 0xa0,(byte) 0x40, -}; - -static final BitmapCharRec ch186 = new BitmapCharRec(3,5,0,-2,4,ch186data); - -/* char: 0xb9 */ - -static final byte[] ch185data = { -(byte) 0xe0,(byte) 0x40,(byte) 0xc0,(byte) 0x40, -}; - -static final BitmapCharRec ch185 = new BitmapCharRec(3,4,0,-3,3,ch185data); - -/* char: 0xb8 */ - -static final byte[] ch184data = { -(byte) 0xc0,(byte) 0x20,(byte) 0x40, -}; - -static final BitmapCharRec ch184 = new BitmapCharRec(3,3,0,3,4,ch184data); - -/* char: 0xb7 */ - -static final byte[] ch183data = { -(byte) 0x80, -}; - -static final BitmapCharRec ch183 = new BitmapCharRec(1,1,0,-2,2,ch183data); - -/* char: 0xb6 */ - -static final byte[] ch182data = { -(byte) 0x28,(byte) 0x28,(byte) 0x28,(byte) 0x28,(byte) 0x68,(byte) 0xe8,(byte) 0xe8,(byte) 0xe8,(byte) 0x7c, -}; - -static final BitmapCharRec ch182 = new BitmapCharRec(6,9,0,2,6,ch182data); - -/* char: 0xb5 */ - -static final byte[] ch181data = { -(byte) 0x80,(byte) 0x80,(byte) 0xe8,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x90, -}; - -static final BitmapCharRec ch181 = new BitmapCharRec(5,7,0,2,5,ch181data); - -/* char: 0xb4 */ - -static final byte[] ch180data = { -(byte) 0x80,(byte) 0x40, -}; - -static final BitmapCharRec ch180 = new BitmapCharRec(2,2,0,-5,3,ch180data); - -/* char: 0xb3 */ - -static final byte[] ch179data = { -(byte) 0xc0,(byte) 0x20,(byte) 0x40,(byte) 0xe0, -}; - -static final BitmapCharRec ch179 = new BitmapCharRec(3,4,0,-3,3,ch179data); - -/* char: 0xb2 */ - -static final byte[] ch178data = { -(byte) 0xe0,(byte) 0x40,(byte) 0xa0,(byte) 0x60, -}; - -static final BitmapCharRec ch178 = new BitmapCharRec(3,4,0,-3,3,ch178data); - -/* char: 0xb1 */ - -static final byte[] ch177data = { -(byte) 0xf8,(byte) 0x0,(byte) 0x20,(byte) 0x20,(byte) 0xf8,(byte) 0x20,(byte) 0x20, -}; - -static final BitmapCharRec ch177 = new BitmapCharRec(5,7,0,0,6,ch177data); - -/* char: 0xb0 */ - -static final byte[] ch176data = { -(byte) 0x60,(byte) 0x90,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch176 = new BitmapCharRec(4,4,0,-3,4,ch176data); - -/* char: 0xaf */ - -static final byte[] ch175data = { -(byte) 0xe0, -}; - -static final BitmapCharRec ch175 = new BitmapCharRec(3,1,0,-6,4,ch175data); - -/* char: 0xae */ - -static final byte[] ch174data = { -(byte) 0x38,(byte) 0x44,(byte) 0xaa,(byte) 0xb2,(byte) 0xba,(byte) 0x44,(byte) 0x38, -}; - -static final BitmapCharRec ch174 = new BitmapCharRec(7,7,-1,0,9,ch174data); - -/* char: 0xad */ - -static final byte[] ch173data = { -(byte) 0xe0, -}; - -static final BitmapCharRec ch173 = new BitmapCharRec(3,1,0,-2,4,ch173data); - -/* char: 0xac */ - -static final byte[] ch172data = { -(byte) 0x8,(byte) 0x8,(byte) 0xf8, -}; - -static final BitmapCharRec ch172 = new BitmapCharRec(5,3,-1,-1,7,ch172data); - -/* char: 0xab */ - -static final byte[] ch171data = { -(byte) 0x50,(byte) 0xa0,(byte) 0xa0,(byte) 0x50, -}; - -static final BitmapCharRec ch171 = new BitmapCharRec(4,4,0,-1,5,ch171data); - -/* char: 0xaa */ - -static final byte[] ch170data = { -(byte) 0xe0,(byte) 0x0,(byte) 0xa0,(byte) 0x20,(byte) 0xc0, -}; - -static final BitmapCharRec ch170 = new BitmapCharRec(3,5,0,-2,4,ch170data); - -/* char: 0xa9 */ - -static final byte[] ch169data = { -(byte) 0x38,(byte) 0x44,(byte) 0x9a,(byte) 0xa2,(byte) 0x9a,(byte) 0x44,(byte) 0x38, -}; - -static final BitmapCharRec ch169 = new BitmapCharRec(7,7,-1,0,9,ch169data); - -/* char: 0xa8 */ - -static final byte[] ch168data = { -(byte) 0xa0, -}; - -static final BitmapCharRec ch168 = new BitmapCharRec(3,1,-1,-6,5,ch168data); - -/* char: 0xa7 */ - -static final byte[] ch167data = { -(byte) 0xe0,(byte) 0x90,(byte) 0x20,(byte) 0x50,(byte) 0x90,(byte) 0xa0,(byte) 0x40,(byte) 0x90,(byte) 0x70, -}; - -static final BitmapCharRec ch167 = new BitmapCharRec(4,9,0,1,5,ch167data); - -/* char: 0xa6 */ - -static final byte[] ch166data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x0,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch166 = new BitmapCharRec(1,7,0,0,2,ch166data); - -/* char: 0xa5 */ - -static final byte[] ch165data = { -(byte) 0x70,(byte) 0x20,(byte) 0xf8,(byte) 0x20,(byte) 0xd8,(byte) 0x50,(byte) 0x88, -}; - -static final BitmapCharRec ch165 = new BitmapCharRec(5,7,0,0,5,ch165data); - -/* char: 0xa4 */ - -static final byte[] ch164data = { -(byte) 0x88,(byte) 0x70,(byte) 0x50,(byte) 0x50,(byte) 0x70,(byte) 0x88, -}; - -static final BitmapCharRec ch164 = new BitmapCharRec(5,6,0,-1,5,ch164data); - -/* char: 0xa3 */ - -static final byte[] ch163data = { -(byte) 0xf0,(byte) 0xc8,(byte) 0x40,(byte) 0xe0,(byte) 0x40,(byte) 0x50,(byte) 0x30, -}; - -static final BitmapCharRec ch163 = new BitmapCharRec(5,7,0,0,5,ch163data); - -/* char: 0xa2 */ - -static final byte[] ch162data = { -(byte) 0x80,(byte) 0xe0,(byte) 0x90,(byte) 0x80,(byte) 0x90,(byte) 0x70,(byte) 0x10, -}; - -static final BitmapCharRec ch162 = new BitmapCharRec(4,7,0,1,5,ch162data); - -/* char: 0xa1 */ - -static final byte[] ch161data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x0,(byte) 0x80, -}; - -static final BitmapCharRec ch161 = new BitmapCharRec(1,7,-1,2,3,ch161data); - -/* char: 0xa0 */ - -static final BitmapCharRec ch160 = new BitmapCharRec(0,0,0,0,2,null); - -/* char: 0x7e '~' */ - -static final byte[] ch126data = { -(byte) 0x98,(byte) 0x64, -}; - -static final BitmapCharRec ch126 = new BitmapCharRec(6,2,0,-2,7,ch126data); - -/* char: 0x7d '}' */ - -static final byte[] ch125data = { -(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x20,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x80, -}; - -static final BitmapCharRec ch125 = new BitmapCharRec(3,9,0,2,4,ch125data); - -/* char: 0x7c '|' */ - -static final byte[] ch124data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch124 = new BitmapCharRec(1,9,0,2,2,ch124data); - -/* char: 0x7b '{' */ - -static final byte[] ch123data = { -(byte) 0x20,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x20, -}; - -static final BitmapCharRec ch123 = new BitmapCharRec(3,9,0,2,4,ch123data); - -/* char: 0x7a 'z' */ - -static final byte[] ch122data = { -(byte) 0xf0,(byte) 0x90,(byte) 0x40,(byte) 0x20,(byte) 0xf0, -}; - -static final BitmapCharRec ch122 = new BitmapCharRec(4,5,0,0,5,ch122data); - -/* char: 0x79 'y' */ - -static final byte[] ch121data = { -(byte) 0x40,(byte) 0x40,(byte) 0x20,(byte) 0x30,(byte) 0x50,(byte) 0x48,(byte) 0xdc, -}; - -static final BitmapCharRec ch121 = new BitmapCharRec(6,7,1,2,5,ch121data); - -/* char: 0x78 'x' */ - -static final byte[] ch120data = { -(byte) 0xd8,(byte) 0x50,(byte) 0x20,(byte) 0x50,(byte) 0xd8, -}; - -static final BitmapCharRec ch120 = new BitmapCharRec(5,5,0,0,6,ch120data); - -/* char: 0x77 'w' */ - -static final byte[] ch119data = { -(byte) 0x28,(byte) 0x6c,(byte) 0x54,(byte) 0x92,(byte) 0xdb, -}; - -static final BitmapCharRec ch119 = new BitmapCharRec(8,5,0,0,8,ch119data); - -/* char: 0x76 'v' */ - -static final byte[] ch118data = { -(byte) 0x20,(byte) 0x60,(byte) 0x50,(byte) 0x90,(byte) 0xd8, -}; - -static final BitmapCharRec ch118 = new BitmapCharRec(5,5,0,0,5,ch118data); - -/* char: 0x75 'u' */ - -static final byte[] ch117data = { -(byte) 0x68,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x90, -}; - -static final BitmapCharRec ch117 = new BitmapCharRec(5,5,0,0,5,ch117data); - -/* char: 0x74 't' */ - -static final byte[] ch116data = { -(byte) 0x30,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xe0,(byte) 0x40, -}; - -static final BitmapCharRec ch116 = new BitmapCharRec(4,6,0,0,4,ch116data); - -/* char: 0x73 's' */ - -static final byte[] ch115data = { -(byte) 0xe0,(byte) 0x20,(byte) 0x60,(byte) 0x80,(byte) 0xe0, -}; - -static final BitmapCharRec ch115 = new BitmapCharRec(3,5,0,0,4,ch115data); - -/* char: 0x72 'r' */ - -static final byte[] ch114data = { -(byte) 0xe0,(byte) 0x40,(byte) 0x40,(byte) 0x60,(byte) 0xa0, -}; - -static final BitmapCharRec ch114 = new BitmapCharRec(3,5,0,0,4,ch114data); - -/* char: 0x71 'q' */ - -static final byte[] ch113data = { -(byte) 0x38,(byte) 0x10,(byte) 0x70,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x70, -}; - -static final BitmapCharRec ch113 = new BitmapCharRec(5,7,0,2,5,ch113data); - -/* char: 0x70 'p' */ - -static final byte[] ch112data = { -(byte) 0xc0,(byte) 0x80,(byte) 0xe0,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0xe0, -}; - -static final BitmapCharRec ch112 = new BitmapCharRec(4,7,0,2,5,ch112data); - -/* char: 0x6f 'o' */ - -static final byte[] ch111data = { -(byte) 0x60,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch111 = new BitmapCharRec(4,5,0,0,5,ch111data); - -/* char: 0x6e 'n' */ - -static final byte[] ch110data = { -(byte) 0xd8,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0xe0, -}; - -static final BitmapCharRec ch110 = new BitmapCharRec(5,5,0,0,5,ch110data); - -/* char: 0x6d 'm' */ - -static final byte[] ch109data = { -(byte) 0xdb,(byte) 0x92,(byte) 0x92,(byte) 0x92,(byte) 0xec, -}; - -static final BitmapCharRec ch109 = new BitmapCharRec(8,5,0,0,8,ch109data); - -/* char: 0x6c 'l' */ - -static final byte[] ch108data = { -(byte) 0xe0,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xc0, -}; - -static final BitmapCharRec ch108 = new BitmapCharRec(3,7,0,0,4,ch108data); - -/* char: 0x6b 'k' */ - -static final byte[] ch107data = { -(byte) 0x98,(byte) 0x90,(byte) 0xe0,(byte) 0xa0,(byte) 0x90,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch107 = new BitmapCharRec(5,7,0,0,5,ch107data); - -/* char: 0x6a 'j' */ - -static final byte[] ch106data = { -(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xc0,(byte) 0x0,(byte) 0x40, -}; - -static final BitmapCharRec ch106 = new BitmapCharRec(2,9,0,2,3,ch106data); - -/* char: 0x69 'i' */ - -static final byte[] ch105data = { -(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xc0,(byte) 0x0,(byte) 0x40, -}; - -static final BitmapCharRec ch105 = new BitmapCharRec(2,7,0,0,3,ch105data); - -/* char: 0x68 'h' */ - -static final byte[] ch104data = { -(byte) 0xd8,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0xe0,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch104 = new BitmapCharRec(5,7,0,0,5,ch104data); - -/* char: 0x67 'g' */ - -static final byte[] ch103data = { -(byte) 0xe0,(byte) 0x90,(byte) 0x60,(byte) 0x40,(byte) 0xa0,(byte) 0xa0,(byte) 0x70, -}; - -static final BitmapCharRec ch103 = new BitmapCharRec(4,7,0,2,5,ch103data); - -/* char: 0x66 'f' */ - -static final byte[] ch102data = { -(byte) 0xe0,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xe0,(byte) 0x40,(byte) 0x30, -}; - -static final BitmapCharRec ch102 = new BitmapCharRec(4,7,0,0,4,ch102data); - -/* char: 0x65 'e' */ - -static final byte[] ch101data = { -(byte) 0x60,(byte) 0x80,(byte) 0xc0,(byte) 0xa0,(byte) 0x60, -}; - -static final BitmapCharRec ch101 = new BitmapCharRec(3,5,0,0,4,ch101data); - -/* char: 0x64 'd' */ - -static final byte[] ch100data = { -(byte) 0x68,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x70,(byte) 0x10,(byte) 0x30, -}; - -static final BitmapCharRec ch100 = new BitmapCharRec(5,7,0,0,5,ch100data); - -/* char: 0x63 'c' */ - -static final byte[] ch99data = { -(byte) 0x60,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x60, -}; - -static final BitmapCharRec ch99 = new BitmapCharRec(3,5,0,0,4,ch99data); - -/* char: 0x62 'b' */ - -static final byte[] ch98data = { -(byte) 0xe0,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0xe0,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch98 = new BitmapCharRec(4,7,0,0,5,ch98data); - -/* char: 0x61 'a' */ - -static final byte[] ch97data = { -(byte) 0xe0,(byte) 0xa0,(byte) 0x60,(byte) 0x20,(byte) 0xc0, -}; - -static final BitmapCharRec ch97 = new BitmapCharRec(3,5,0,0,4,ch97data); - -/* char: 0x60 '`' */ - -static final byte[] ch96data = { -(byte) 0xc0,(byte) 0x80, -}; - -static final BitmapCharRec ch96 = new BitmapCharRec(2,2,0,-5,3,ch96data); - -/* char: 0x5f '_' */ - -static final byte[] ch95data = { -(byte) 0xf8, -}; - -static final BitmapCharRec ch95 = new BitmapCharRec(5,1,0,3,5,ch95data); - -/* char: 0x5e '^' */ - -static final byte[] ch94data = { -(byte) 0xa0,(byte) 0xa0,(byte) 0x40, -}; - -static final BitmapCharRec ch94 = new BitmapCharRec(3,3,-1,-4,5,ch94data); - -/* char: 0x5d ']' */ - -static final byte[] ch93data = { -(byte) 0xc0,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xc0, -}; - -static final BitmapCharRec ch93 = new BitmapCharRec(2,9,0,2,3,ch93data); - -/* char: 0x5c '\' */ - -static final byte[] ch92data = { -(byte) 0x20,(byte) 0x20,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch92 = new BitmapCharRec(3,7,0,0,3,ch92data); - -/* char: 0x5b '[' */ - -static final byte[] ch91data = { -(byte) 0xc0,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xc0, -}; - -static final BitmapCharRec ch91 = new BitmapCharRec(2,9,0,2,3,ch91data); - -/* char: 0x5a 'Z' */ - -static final byte[] ch90data = { -(byte) 0xf8,(byte) 0x88,(byte) 0x40,(byte) 0x20,(byte) 0x10,(byte) 0x88,(byte) 0xf8, -}; - -static final BitmapCharRec ch90 = new BitmapCharRec(5,7,0,0,6,ch90data); - -/* char: 0x59 'Y' */ - -static final byte[] ch89data = { -(byte) 0x38,(byte) 0x10,(byte) 0x10,(byte) 0x28,(byte) 0x28,(byte) 0x44,(byte) 0xee, -}; - -static final BitmapCharRec ch89 = new BitmapCharRec(7,7,0,0,8,ch89data); - -/* char: 0x58 'X' */ - -static final byte[] ch88data = { -(byte) 0xee,(byte) 0x44,(byte) 0x28,(byte) 0x10,(byte) 0x28,(byte) 0x44,(byte) 0xee, -}; - -static final BitmapCharRec ch88 = new BitmapCharRec(7,7,0,0,8,ch88data); - -/* char: 0x57 'W' */ - -static final byte[] ch87data = { -(byte) 0x22,(byte) 0x0,(byte) 0x22,(byte) 0x0,(byte) 0x55,(byte) 0x0,(byte) 0x55,(byte) 0x0,(byte) 0xc9,(byte) 0x80,(byte) 0x88,(byte) 0x80,(byte) 0xdd,(byte) 0xc0, -}; - -static final BitmapCharRec ch87 = new BitmapCharRec(10,7,0,0,10,ch87data); - -/* char: 0x56 'V' */ - -static final byte[] ch86data = { -(byte) 0x10,(byte) 0x10,(byte) 0x28,(byte) 0x28,(byte) 0x6c,(byte) 0x44,(byte) 0xee, -}; - -static final BitmapCharRec ch86 = new BitmapCharRec(7,7,0,0,8,ch86data); - -/* char: 0x55 'U' */ - -static final byte[] ch85data = { -(byte) 0x38,(byte) 0x6c,(byte) 0x44,(byte) 0x44,(byte) 0x44,(byte) 0x44,(byte) 0xee, -}; - -static final BitmapCharRec ch85 = new BitmapCharRec(7,7,0,0,8,ch85data); - -/* char: 0x54 'T' */ - -static final byte[] ch84data = { -(byte) 0x70,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0xa8,(byte) 0xf8, -}; - -static final BitmapCharRec ch84 = new BitmapCharRec(5,7,0,0,6,ch84data); - -/* char: 0x53 'S' */ - -static final byte[] ch83data = { -(byte) 0xe0,(byte) 0x90,(byte) 0x10,(byte) 0x60,(byte) 0xc0,(byte) 0x90,(byte) 0x70, -}; - -static final BitmapCharRec ch83 = new BitmapCharRec(4,7,0,0,5,ch83data); - -/* char: 0x52 'R' */ - -static final byte[] ch82data = { -(byte) 0xec,(byte) 0x48,(byte) 0x50,(byte) 0x70,(byte) 0x48,(byte) 0x48,(byte) 0xf0, -}; - -static final BitmapCharRec ch82 = new BitmapCharRec(6,7,0,0,7,ch82data); - -/* char: 0x51 'Q' */ - -static final byte[] ch81data = { -(byte) 0xc,(byte) 0x18,(byte) 0x70,(byte) 0xcc,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0xcc,(byte) 0x78, -}; - -static final BitmapCharRec ch81 = new BitmapCharRec(6,9,0,2,7,ch81data); - -/* char: 0x50 'P' */ - -static final byte[] ch80data = { -(byte) 0xe0,(byte) 0x40,(byte) 0x40,(byte) 0x70,(byte) 0x48,(byte) 0x48,(byte) 0xf0, -}; - -static final BitmapCharRec ch80 = new BitmapCharRec(5,7,0,0,6,ch80data); - -/* char: 0x4f 'O' */ - -static final byte[] ch79data = { -(byte) 0x78,(byte) 0xcc,(byte) 0x84,(byte) 0x84,(byte) 0x84,(byte) 0xcc,(byte) 0x78, -}; - -static final BitmapCharRec ch79 = new BitmapCharRec(6,7,0,0,7,ch79data); - -/* char: 0x4e 'N' */ - -static final byte[] ch78data = { -(byte) 0xe4,(byte) 0x4c,(byte) 0x4c,(byte) 0x54,(byte) 0x54,(byte) 0x64,(byte) 0xee, -}; - -static final BitmapCharRec ch78 = new BitmapCharRec(7,7,0,0,8,ch78data); - -/* char: 0x4d 'M' */ - -static final byte[] ch77data = { -(byte) 0xeb,(byte) 0x80,(byte) 0x49,(byte) 0x0,(byte) 0x55,(byte) 0x0,(byte) 0x55,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0xe3,(byte) 0x80, -}; - -static final BitmapCharRec ch77 = new BitmapCharRec(9,7,0,0,10,ch77data); - -/* char: 0x4c 'L' */ - -static final byte[] ch76data = { -(byte) 0xf8,(byte) 0x48,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xe0, -}; - -static final BitmapCharRec ch76 = new BitmapCharRec(5,7,0,0,6,ch76data); - -/* char: 0x4b 'K' */ - -static final byte[] ch75data = { -(byte) 0xec,(byte) 0x48,(byte) 0x50,(byte) 0x60,(byte) 0x50,(byte) 0x48,(byte) 0xec, -}; - -static final BitmapCharRec ch75 = new BitmapCharRec(6,7,0,0,7,ch75data); - -/* char: 0x4a 'J' */ - -static final byte[] ch74data = { -(byte) 0xc0,(byte) 0xa0,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x70, -}; - -static final BitmapCharRec ch74 = new BitmapCharRec(4,7,0,0,4,ch74data); - -/* char: 0x49 'I' */ - -static final byte[] ch73data = { -(byte) 0xe0,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xe0, -}; - -static final BitmapCharRec ch73 = new BitmapCharRec(3,7,0,0,4,ch73data); - -/* char: 0x48 'H' */ - -static final byte[] ch72data = { -(byte) 0xee,(byte) 0x44,(byte) 0x44,(byte) 0x7c,(byte) 0x44,(byte) 0x44,(byte) 0xee, -}; - -static final BitmapCharRec ch72 = new BitmapCharRec(7,7,0,0,8,ch72data); - -/* char: 0x47 'G' */ - -static final byte[] ch71data = { -(byte) 0x78,(byte) 0xc4,(byte) 0x84,(byte) 0x9c,(byte) 0x80,(byte) 0xc4,(byte) 0x7c, -}; - -static final BitmapCharRec ch71 = new BitmapCharRec(6,7,0,0,7,ch71data); - -/* char: 0x46 'F' */ - -static final byte[] ch70data = { -(byte) 0xe0,(byte) 0x40,(byte) 0x40,(byte) 0x70,(byte) 0x40,(byte) 0x48,(byte) 0xf8, -}; - -static final BitmapCharRec ch70 = new BitmapCharRec(5,7,0,0,6,ch70data); - -/* char: 0x45 'E' */ - -static final byte[] ch69data = { -(byte) 0xf8,(byte) 0x48,(byte) 0x40,(byte) 0x70,(byte) 0x40,(byte) 0x48,(byte) 0xf8, -}; - -static final BitmapCharRec ch69 = new BitmapCharRec(5,7,0,0,6,ch69data); - -/* char: 0x44 'D' */ - -static final byte[] ch68data = { -(byte) 0xf8,(byte) 0x4c,(byte) 0x44,(byte) 0x44,(byte) 0x44,(byte) 0x4c,(byte) 0xf8, -}; - -static final BitmapCharRec ch68 = new BitmapCharRec(6,7,0,0,7,ch68data); - -/* char: 0x43 'C' */ - -static final byte[] ch67data = { -(byte) 0x78,(byte) 0xc4,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0xc4,(byte) 0x7c, -}; - -static final BitmapCharRec ch67 = new BitmapCharRec(6,7,0,0,7,ch67data); - -/* char: 0x42 'B' */ - -static final byte[] ch66data = { -(byte) 0xf0,(byte) 0x48,(byte) 0x48,(byte) 0x70,(byte) 0x48,(byte) 0x48,(byte) 0xf0, -}; - -static final BitmapCharRec ch66 = new BitmapCharRec(5,7,0,0,6,ch66data); - -/* char: 0x41 'A' */ - -static final byte[] ch65data = { -(byte) 0xee,(byte) 0x44,(byte) 0x7c,(byte) 0x28,(byte) 0x28,(byte) 0x38,(byte) 0x10, -}; - -static final BitmapCharRec ch65 = new BitmapCharRec(7,7,0,0,8,ch65data); - -/* char: 0x40 '@' */ - -static final byte[] ch64data = { -(byte) 0x3e,(byte) 0x40,(byte) 0x92,(byte) 0xad,(byte) 0xa5,(byte) 0xa5,(byte) 0x9d,(byte) 0x42,(byte) 0x3c, -}; - -static final BitmapCharRec ch64 = new BitmapCharRec(8,9,0,2,9,ch64data); - -/* char: 0x3f '?' */ - -static final byte[] ch63data = { -(byte) 0x40,(byte) 0x0,(byte) 0x40,(byte) 0x40,(byte) 0x20,(byte) 0xa0,(byte) 0xe0, -}; - -static final BitmapCharRec ch63 = new BitmapCharRec(3,7,0,0,4,ch63data); - -/* char: 0x3e '>' */ - -static final byte[] ch62data = { -(byte) 0x80,(byte) 0x40,(byte) 0x20,(byte) 0x40,(byte) 0x80, -}; - -static final BitmapCharRec ch62 = new BitmapCharRec(3,5,0,0,5,ch62data); - -/* char: 0x3d '=' */ - -static final byte[] ch61data = { -(byte) 0xf8,(byte) 0x0,(byte) 0xf8, -}; - -static final BitmapCharRec ch61 = new BitmapCharRec(5,3,0,-1,6,ch61data); - -/* char: 0x3c '<' */ - -static final byte[] ch60data = { -(byte) 0x20,(byte) 0x40,(byte) 0x80,(byte) 0x40,(byte) 0x20, -}; - -static final BitmapCharRec ch60 = new BitmapCharRec(3,5,-1,0,5,ch60data); - -/* char: 0x3b ';' */ - -static final byte[] ch59data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x80, -}; - -static final BitmapCharRec ch59 = new BitmapCharRec(1,7,-1,2,3,ch59data); - -/* char: 0x3a ':' */ - -static final byte[] ch58data = { -(byte) 0x80,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x80, -}; - -static final BitmapCharRec ch58 = new BitmapCharRec(1,5,-1,0,3,ch58data); - -/* char: 0x39 '9' */ - -static final byte[] ch57data = { -(byte) 0xc0,(byte) 0x20,(byte) 0x70,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch57 = new BitmapCharRec(4,7,0,0,5,ch57data); - -/* char: 0x38 '8' */ - -static final byte[] ch56data = { -(byte) 0x60,(byte) 0x90,(byte) 0x90,(byte) 0x60,(byte) 0x90,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch56 = new BitmapCharRec(4,7,0,0,5,ch56data); - -/* char: 0x37 '7' */ - -static final byte[] ch55data = { -(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x20,(byte) 0x20,(byte) 0x90,(byte) 0xf0, -}; - -static final BitmapCharRec ch55 = new BitmapCharRec(4,7,0,0,5,ch55data); - -/* char: 0x36 '6' */ - -static final byte[] ch54data = { -(byte) 0x60,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0xe0,(byte) 0x40,(byte) 0x30, -}; - -static final BitmapCharRec ch54 = new BitmapCharRec(4,7,0,0,5,ch54data); - -/* char: 0x35 '5' */ - -static final byte[] ch53data = { -(byte) 0xe0,(byte) 0x90,(byte) 0x10,(byte) 0x10,(byte) 0xe0,(byte) 0x40,(byte) 0x70, -}; - -static final BitmapCharRec ch53 = new BitmapCharRec(4,7,0,0,5,ch53data); - -/* char: 0x34 '4' */ - -static final byte[] ch52data = { -(byte) 0x10,(byte) 0x10,(byte) 0xf8,(byte) 0x90,(byte) 0x50,(byte) 0x30,(byte) 0x10, -}; - -static final BitmapCharRec ch52 = new BitmapCharRec(5,7,0,0,5,ch52data); - -/* char: 0x33 '3' */ - -static final byte[] ch51data = { -(byte) 0xe0,(byte) 0x10,(byte) 0x10,(byte) 0x60,(byte) 0x10,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch51 = new BitmapCharRec(4,7,0,0,5,ch51data); - -/* char: 0x32 '2' */ - -static final byte[] ch50data = { -(byte) 0xf0,(byte) 0x40,(byte) 0x20,(byte) 0x20,(byte) 0x10,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch50 = new BitmapCharRec(4,7,0,0,5,ch50data); - -/* char: 0x31 '1' */ - -static final byte[] ch49data = { -(byte) 0xe0,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0xc0,(byte) 0x40, -}; - -static final BitmapCharRec ch49 = new BitmapCharRec(3,7,-1,0,5,ch49data); - -/* char: 0x30 '0' */ - -static final byte[] ch48data = { -(byte) 0x60,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x90,(byte) 0x60, -}; - -static final BitmapCharRec ch48 = new BitmapCharRec(4,7,0,0,5,ch48data); - -/* char: 0x2f '/' */ - -static final byte[] ch47data = { -(byte) 0x80,(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x40,(byte) 0x20,(byte) 0x20, -}; - -static final BitmapCharRec ch47 = new BitmapCharRec(3,7,0,0,3,ch47data); - -/* char: 0x2e '.' */ - -static final byte[] ch46data = { -(byte) 0x80, -}; - -static final BitmapCharRec ch46 = new BitmapCharRec(1,1,-1,0,3,ch46data); - -/* char: 0x2d '-' */ - -static final byte[] ch45data = { -(byte) 0xf0, -}; - -static final BitmapCharRec ch45 = new BitmapCharRec(4,1,-1,-2,7,ch45data); - -/* char: 0x2c ',' */ - -static final byte[] ch44data = { -(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch44 = new BitmapCharRec(1,3,-1,2,3,ch44data); - -/* char: 0x2b '+' */ - -static final byte[] ch43data = { -(byte) 0x20,(byte) 0x20,(byte) 0xf8,(byte) 0x20,(byte) 0x20, -}; - -static final BitmapCharRec ch43 = new BitmapCharRec(5,5,0,0,6,ch43data); - -/* char: 0x2a '*' */ - -static final byte[] ch42data = { -(byte) 0xa0,(byte) 0x40,(byte) 0xa0, -}; - -static final BitmapCharRec ch42 = new BitmapCharRec(3,3,0,-4,5,ch42data); - -/* char: 0x29 ')' */ - -static final byte[] ch41data = { -(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x40,(byte) 0x40,(byte) 0x80, -}; - -static final BitmapCharRec ch41 = new BitmapCharRec(3,9,0,2,4,ch41data); - -/* char: 0x28 '(' */ - -static final byte[] ch40data = { -(byte) 0x20,(byte) 0x40,(byte) 0x40,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x40,(byte) 0x40,(byte) 0x20, -}; - -static final BitmapCharRec ch40 = new BitmapCharRec(3,9,0,2,4,ch40data); - -/* char: 0x27 ''' */ - -static final byte[] ch39data = { -(byte) 0x40,(byte) 0xc0, -}; - -static final BitmapCharRec ch39 = new BitmapCharRec(2,2,0,-5,3,ch39data); - -/* char: 0x26 '&' */ - -static final byte[] ch38data = { -(byte) 0x76,(byte) 0x8d,(byte) 0x98,(byte) 0x74,(byte) 0x6e,(byte) 0x50,(byte) 0x30, -}; - -static final BitmapCharRec ch38 = new BitmapCharRec(8,7,0,0,8,ch38data); - -/* char: 0x25 '%' */ - -static final byte[] ch37data = { -(byte) 0x44,(byte) 0x2a,(byte) 0x2a,(byte) 0x56,(byte) 0xa8,(byte) 0xa4,(byte) 0x7e, -}; - -static final BitmapCharRec ch37 = new BitmapCharRec(7,7,0,0,8,ch37data); - -/* char: 0x24 '$' */ - -static final byte[] ch36data = { -(byte) 0x20,(byte) 0xe0,(byte) 0x90,(byte) 0x10,(byte) 0x60,(byte) 0x80,(byte) 0x90,(byte) 0x70,(byte) 0x20, -}; - -static final BitmapCharRec ch36 = new BitmapCharRec(4,9,0,1,5,ch36data); - -/* char: 0x23 '#' */ - -static final byte[] ch35data = { -(byte) 0x50,(byte) 0x50,(byte) 0xf8,(byte) 0x50,(byte) 0xf8,(byte) 0x50,(byte) 0x50, -}; - -static final BitmapCharRec ch35 = new BitmapCharRec(5,7,0,0,5,ch35data); - -/* char: 0x22 '"' */ - -static final byte[] ch34data = { -(byte) 0xa0,(byte) 0xa0, -}; - -static final BitmapCharRec ch34 = new BitmapCharRec(3,2,0,-5,4,ch34data); - -/* char: 0x21 '!' */ - -static final byte[] ch33data = { -(byte) 0x80,(byte) 0x0,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80,(byte) 0x80, -}; - -static final BitmapCharRec ch33 = new BitmapCharRec(1,7,-1,0,3,ch33data); - -/* char: 0x20 ' ' */ - -static final BitmapCharRec ch32 = new BitmapCharRec(0,0,0,0,2,null); - -static final BitmapCharRec[] chars = { -ch32, -ch33, -ch34, -ch35, -ch36, -ch37, -ch38, -ch39, -ch40, -ch41, -ch42, -ch43, -ch44, -ch45, -ch46, -ch47, -ch48, -ch49, -ch50, -ch51, -ch52, -ch53, -ch54, -ch55, -ch56, -ch57, -ch58, -ch59, -ch60, -ch61, -ch62, -ch63, -ch64, -ch65, -ch66, -ch67, -ch68, -ch69, -ch70, -ch71, -ch72, -ch73, -ch74, -ch75, -ch76, -ch77, -ch78, -ch79, -ch80, -ch81, -ch82, -ch83, -ch84, -ch85, -ch86, -ch87, -ch88, -ch89, -ch90, -ch91, -ch92, -ch93, -ch94, -ch95, -ch96, -ch97, -ch98, -ch99, -ch100, -ch101, -ch102, -ch103, -ch104, -ch105, -ch106, -ch107, -ch108, -ch109, -ch110, -ch111, -ch112, -ch113, -ch114, -ch115, -ch116, -ch117, -ch118, -ch119, -ch120, -ch121, -ch122, -ch123, -ch124, -ch125, -ch126, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -ch160, -ch161, -ch162, -ch163, -ch164, -ch165, -ch166, -ch167, -ch168, -ch169, -ch170, -ch171, -ch172, -ch173, -ch174, -ch175, -ch176, -ch177, -ch178, -ch179, -ch180, -ch181, -ch182, -ch183, -ch184, -ch185, -ch186, -ch187, -ch188, -ch189, -ch190, -ch191, -ch192, -ch193, -ch194, -ch195, -ch196, -ch197, -ch198, -ch199, -ch200, -ch201, -ch202, -ch203, -ch204, -ch205, -ch206, -ch207, -ch208, -ch209, -ch210, -ch211, -ch212, -ch213, -ch214, -ch215, -ch216, -ch217, -ch218, -ch219, -ch220, -ch221, -ch222, -ch223, -ch224, -ch225, -ch226, -ch227, -ch228, -ch229, -ch230, -ch231, -ch232, -ch233, -ch234, -ch235, -ch236, -ch237, -ch238, -ch239, -ch240, -ch241, -ch242, -ch243, -ch244, -ch245, -ch246, -ch247, -ch248, -ch249, -ch250, -ch251, -ch252, -ch253, -ch254, -ch255, -}; - - public static final BitmapFontRec glutBitmapTimesRoman10 = new BitmapFontRec("-adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1", - 224, - 32, - chars); -} diff --git a/src/jogl/classes/com/sun/opengl/util/gl2/GLUTBitmapTimesRoman24.java b/src/jogl/classes/com/sun/opengl/util/gl2/GLUTBitmapTimesRoman24.java deleted file mode 100644 index 36fb76c66..000000000 --- a/src/jogl/classes/com/sun/opengl/util/gl2/GLUTBitmapTimesRoman24.java +++ /dev/null @@ -1,2080 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.gl2; - -class GLUTBitmapTimesRoman24 { - -/* GENERATED FILE -- DO NOT MODIFY */ - -/* char: 0xff */ - -static final byte[] ch255data = { -(byte) 0xe0,(byte) 0x0,(byte) 0xf0,(byte) 0x0,(byte) 0x18,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0xc,(byte) 0x0,(byte) 0x4,(byte) 0x0,(byte) 0xe,(byte) 0x0,(byte) 0xe,(byte) 0x0, -(byte) 0x1a,(byte) 0x0,(byte) 0x19,(byte) 0x0,(byte) 0x19,(byte) 0x0,(byte) 0x31,(byte) 0x0,(byte) 0x30,(byte) 0x80,(byte) 0x30,(byte) 0x80,(byte) 0x60,(byte) 0x80,(byte) 0x60,(byte) 0xc0, -(byte) 0xf1,(byte) 0xe0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x33,(byte) 0x0,(byte) 0x33,(byte) 0x0, -}; - -static final BitmapCharRec ch255 = new BitmapCharRec(11,21,0,5,11,ch255data); - -/* char: 0xfe */ - -static final byte[] ch254data = { -(byte) 0xf0,(byte) 0x0,(byte) 0x60,(byte) 0x0,(byte) 0x60,(byte) 0x0,(byte) 0x60,(byte) 0x0,(byte) 0x60,(byte) 0x0,(byte) 0x6e,(byte) 0x0,(byte) 0x73,(byte) 0x80,(byte) 0x61,(byte) 0x80, -(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x61,(byte) 0x80,(byte) 0x73,(byte) 0x80, -(byte) 0x6e,(byte) 0x0,(byte) 0x60,(byte) 0x0,(byte) 0x60,(byte) 0x0,(byte) 0x60,(byte) 0x0,(byte) 0x60,(byte) 0x0,(byte) 0xe0,(byte) 0x0, -}; - -static final BitmapCharRec ch254 = new BitmapCharRec(10,22,-1,5,12,ch254data); - -/* char: 0xfd */ - -static final byte[] ch253data = { -(byte) 0xe0,(byte) 0x0,(byte) 0xf0,(byte) 0x0,(byte) 0x18,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0xc,(byte) 0x0,(byte) 0x4,(byte) 0x0,(byte) 0xe,(byte) 0x0,(byte) 0xe,(byte) 0x0, -(byte) 0x1a,(byte) 0x0,(byte) 0x19,(byte) 0x0,(byte) 0x19,(byte) 0x0,(byte) 0x31,(byte) 0x0,(byte) 0x30,(byte) 0x80,(byte) 0x30,(byte) 0x80,(byte) 0x60,(byte) 0x80,(byte) 0x60,(byte) 0xc0, -(byte) 0xf1,(byte) 0xe0,(byte) 0x0,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x3,(byte) 0x80,(byte) 0x1,(byte) 0x80, -}; - -static final BitmapCharRec ch253 = new BitmapCharRec(11,22,0,5,11,ch253data); - -/* char: 0xfc */ - -static final byte[] ch252data = { -(byte) 0x1c,(byte) 0xe0,(byte) 0x3e,(byte) 0xc0,(byte) 0x71,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0, -(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0xe1,(byte) 0xc0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x33,(byte) 0x0,(byte) 0x33,(byte) 0x0, -}; - -static final BitmapCharRec ch252 = new BitmapCharRec(11,16,-1,0,13,ch252data); - -/* char: 0xfb */ - -static final byte[] ch251data = { -(byte) 0x1c,(byte) 0xe0,(byte) 0x3e,(byte) 0xc0,(byte) 0x71,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0, -(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0xe1,(byte) 0xc0,(byte) 0x0,(byte) 0x0,(byte) 0x21,(byte) 0x0,(byte) 0x12,(byte) 0x0,(byte) 0x1e,(byte) 0x0, -(byte) 0xc,(byte) 0x0, -}; - -static final BitmapCharRec ch251 = new BitmapCharRec(11,17,-1,0,13,ch251data); - -/* char: 0xfa */ - -static final byte[] ch250data = { -(byte) 0x1c,(byte) 0xe0,(byte) 0x3e,(byte) 0xc0,(byte) 0x71,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0, -(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0xe1,(byte) 0xc0,(byte) 0x0,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x3,(byte) 0x80, -(byte) 0x1,(byte) 0x80, -}; - -static final BitmapCharRec ch250 = new BitmapCharRec(11,17,-1,0,13,ch250data); - -/* char: 0xf9 */ - -static final byte[] ch249data = { -(byte) 0x1c,(byte) 0xe0,(byte) 0x3e,(byte) 0xc0,(byte) 0x71,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0, -(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0xe1,(byte) 0xc0,(byte) 0x0,(byte) 0x0,(byte) 0x2,(byte) 0x0,(byte) 0xc,(byte) 0x0,(byte) 0x38,(byte) 0x0, -(byte) 0x30,(byte) 0x0, -}; - -static final BitmapCharRec ch249 = new BitmapCharRec(11,17,-1,0,13,ch249data); - -/* char: 0xf8 */ - -static final byte[] ch248data = { -(byte) 0xc0,(byte) 0x0,(byte) 0xde,(byte) 0x0,(byte) 0x73,(byte) 0x80,(byte) 0x71,(byte) 0x80,(byte) 0xd0,(byte) 0xc0,(byte) 0xd8,(byte) 0xc0,(byte) 0xc8,(byte) 0xc0,(byte) 0xcc,(byte) 0xc0, -(byte) 0xc4,(byte) 0xc0,(byte) 0xc6,(byte) 0xc0,(byte) 0x63,(byte) 0x80,(byte) 0x73,(byte) 0x80,(byte) 0x1e,(byte) 0xc0,(byte) 0x0,(byte) 0xc0, -}; - -static final BitmapCharRec ch248 = new BitmapCharRec(10,14,-1,1,12,ch248data); - -/* char: 0xf7 */ - -static final byte[] ch247data = { -(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0xff,(byte) 0xf0,(byte) 0xff,(byte) 0xf0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0, -(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0, -}; - -static final BitmapCharRec ch247 = new BitmapCharRec(12,10,-1,-2,14,ch247data); - -/* char: 0xf6 */ - -static final byte[] ch246data = { -(byte) 0x1e,(byte) 0x0,(byte) 0x73,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0, -(byte) 0xc0,(byte) 0xc0,(byte) 0x61,(byte) 0x80,(byte) 0x73,(byte) 0x80,(byte) 0x1e,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x33,(byte) 0x0,(byte) 0x33,(byte) 0x0, -}; - -static final BitmapCharRec ch246 = new BitmapCharRec(10,16,-1,0,12,ch246data); - -/* char: 0xf5 */ - -static final byte[] ch245data = { -(byte) 0x1e,(byte) 0x0,(byte) 0x73,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0, -(byte) 0xc0,(byte) 0xc0,(byte) 0x61,(byte) 0x80,(byte) 0x73,(byte) 0x80,(byte) 0x1e,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x27,(byte) 0x0,(byte) 0x1c,(byte) 0x80, -}; - -static final BitmapCharRec ch245 = new BitmapCharRec(10,16,-1,0,12,ch245data); - -/* char: 0xf4 */ - -static final byte[] ch244data = { -(byte) 0x1e,(byte) 0x0,(byte) 0x73,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0, -(byte) 0xc0,(byte) 0xc0,(byte) 0x61,(byte) 0x80,(byte) 0x73,(byte) 0x80,(byte) 0x1e,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x21,(byte) 0x0,(byte) 0x12,(byte) 0x0,(byte) 0x1e,(byte) 0x0, -(byte) 0xc,(byte) 0x0, -}; - -static final BitmapCharRec ch244 = new BitmapCharRec(10,17,-1,0,12,ch244data); - -/* char: 0xf3 */ - -static final byte[] ch243data = { -(byte) 0x1e,(byte) 0x0,(byte) 0x73,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0, -(byte) 0xc0,(byte) 0xc0,(byte) 0x61,(byte) 0x80,(byte) 0x73,(byte) 0x80,(byte) 0x1e,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x3,(byte) 0x80, -(byte) 0x1,(byte) 0x80, -}; - -static final BitmapCharRec ch243 = new BitmapCharRec(10,17,-1,0,12,ch243data); - -/* char: 0xf2 */ - -static final byte[] ch242data = { -(byte) 0x1e,(byte) 0x0,(byte) 0x73,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0, -(byte) 0xc0,(byte) 0xc0,(byte) 0x61,(byte) 0x80,(byte) 0x73,(byte) 0x80,(byte) 0x1e,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x2,(byte) 0x0,(byte) 0xc,(byte) 0x0,(byte) 0x38,(byte) 0x0, -(byte) 0x30,(byte) 0x0, -}; - -static final BitmapCharRec ch242 = new BitmapCharRec(10,17,-1,0,12,ch242data); - -/* char: 0xf1 */ - -static final byte[] ch241data = { -(byte) 0xf1,(byte) 0xe0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0, -(byte) 0x60,(byte) 0xc0,(byte) 0x71,(byte) 0xc0,(byte) 0x6f,(byte) 0x80,(byte) 0xe7,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x27,(byte) 0x0,(byte) 0x1c,(byte) 0x80, -}; - -static final BitmapCharRec ch241 = new BitmapCharRec(11,16,-1,0,13,ch241data); - -/* char: 0xf0 */ - -static final byte[] ch240data = { -(byte) 0x1e,(byte) 0x0,(byte) 0x73,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0, -(byte) 0xc0,(byte) 0xc0,(byte) 0x61,(byte) 0x80,(byte) 0x73,(byte) 0x80,(byte) 0x1f,(byte) 0x0,(byte) 0xc6,(byte) 0x0,(byte) 0x3c,(byte) 0x0,(byte) 0x1e,(byte) 0x0,(byte) 0x71,(byte) 0x80, -(byte) 0xc0,(byte) 0x0, -}; - -static final BitmapCharRec ch240 = new BitmapCharRec(10,17,-1,0,12,ch240data); - -/* char: 0xef */ - -static final byte[] ch239data = { -(byte) 0x78,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x70,(byte) 0x0,(byte) 0x0,(byte) 0xcc,(byte) 0xcc, -}; - -static final BitmapCharRec ch239 = new BitmapCharRec(6,16,0,0,6,ch239data); - -/* char: 0xee */ - -static final byte[] ch238data = { -(byte) 0x78,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x70,(byte) 0x0,(byte) 0x84,(byte) 0x48,(byte) 0x78, -(byte) 0x30, -}; - -static final BitmapCharRec ch238 = new BitmapCharRec(6,17,0,0,6,ch238data); - -/* char: 0xed */ - -static final byte[] ch237data = { -(byte) 0xf0,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0xe0,(byte) 0x0,(byte) 0x80,(byte) 0x60,(byte) 0x38, -(byte) 0x18, -}; - -static final BitmapCharRec ch237 = new BitmapCharRec(5,17,-1,0,6,ch237data); - -/* char: 0xec */ - -static final byte[] ch236data = { -(byte) 0x78,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x70,(byte) 0x0,(byte) 0x8,(byte) 0x30,(byte) 0xe0, -(byte) 0xc0, -}; - -static final BitmapCharRec ch236 = new BitmapCharRec(5,17,0,0,6,ch236data); - -/* char: 0xeb */ - -static final byte[] ch235data = { -(byte) 0x1e,(byte) 0x0,(byte) 0x7f,(byte) 0x0,(byte) 0x70,(byte) 0x80,(byte) 0xe0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xff,(byte) 0x80, -(byte) 0xc1,(byte) 0x80,(byte) 0x41,(byte) 0x80,(byte) 0x63,(byte) 0x0,(byte) 0x1e,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x33,(byte) 0x0,(byte) 0x33,(byte) 0x0, -}; - -static final BitmapCharRec ch235 = new BitmapCharRec(9,16,-1,0,11,ch235data); - -/* char: 0xea */ - -static final byte[] ch234data = { -(byte) 0x1e,(byte) 0x0,(byte) 0x7f,(byte) 0x0,(byte) 0x70,(byte) 0x80,(byte) 0xe0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xff,(byte) 0x80, -(byte) 0xc1,(byte) 0x80,(byte) 0x41,(byte) 0x80,(byte) 0x63,(byte) 0x0,(byte) 0x1e,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x21,(byte) 0x0,(byte) 0x12,(byte) 0x0,(byte) 0x1e,(byte) 0x0, -(byte) 0xc,(byte) 0x0, -}; - -static final BitmapCharRec ch234 = new BitmapCharRec(9,17,-1,0,11,ch234data); - -/* char: 0xe9 */ - -static final byte[] ch233data = { -(byte) 0x1e,(byte) 0x0,(byte) 0x7f,(byte) 0x0,(byte) 0x70,(byte) 0x80,(byte) 0xe0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xff,(byte) 0x80, -(byte) 0xc1,(byte) 0x80,(byte) 0x41,(byte) 0x80,(byte) 0x63,(byte) 0x0,(byte) 0x1e,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x10,(byte) 0x0,(byte) 0xc,(byte) 0x0,(byte) 0x7,(byte) 0x0, -(byte) 0x3,(byte) 0x0, -}; - -static final BitmapCharRec ch233 = new BitmapCharRec(9,17,-1,0,11,ch233data); - -/* char: 0xe8 */ - -static final byte[] ch232data = { -(byte) 0x1e,(byte) 0x0,(byte) 0x7f,(byte) 0x0,(byte) 0x70,(byte) 0x80,(byte) 0xe0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xff,(byte) 0x80, -(byte) 0xc1,(byte) 0x80,(byte) 0x41,(byte) 0x80,(byte) 0x63,(byte) 0x0,(byte) 0x1e,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x4,(byte) 0x0,(byte) 0x18,(byte) 0x0,(byte) 0x70,(byte) 0x0, -(byte) 0x60,(byte) 0x0, -}; - -static final BitmapCharRec ch232 = new BitmapCharRec(9,17,-1,0,11,ch232data); - -/* char: 0xe7 */ - -static final byte[] ch231data = { -(byte) 0x3c,(byte) 0x0,(byte) 0x66,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x1e,(byte) 0x0,(byte) 0x18,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0x1e,(byte) 0x0,(byte) 0x7f,(byte) 0x0, -(byte) 0x70,(byte) 0x80,(byte) 0xe0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0x41,(byte) 0x80, -(byte) 0x63,(byte) 0x80,(byte) 0x1f,(byte) 0x0, -}; - -static final BitmapCharRec ch231 = new BitmapCharRec(9,18,-1,6,11,ch231data); - -/* char: 0xe6 */ - -static final byte[] ch230data = { -(byte) 0x70,(byte) 0xf0,(byte) 0xfb,(byte) 0xf8,(byte) 0xc7,(byte) 0x84,(byte) 0xc3,(byte) 0x0,(byte) 0xc3,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0x3b,(byte) 0x0,(byte) 0xf,(byte) 0xfc, -(byte) 0x3,(byte) 0xc,(byte) 0x63,(byte) 0xc,(byte) 0x67,(byte) 0x98,(byte) 0x3c,(byte) 0xf0, -}; - -static final BitmapCharRec ch230 = new BitmapCharRec(14,12,-1,0,16,ch230data); - -/* char: 0xe5 */ - -static final byte[] ch229data = { -(byte) 0x71,(byte) 0x80,(byte) 0xfb,(byte) 0x0,(byte) 0xc7,(byte) 0x0,(byte) 0xc3,(byte) 0x0,(byte) 0xc3,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0x3b,(byte) 0x0,(byte) 0xf,(byte) 0x0, -(byte) 0x3,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0x67,(byte) 0x0,(byte) 0x3e,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x1c,(byte) 0x0,(byte) 0x22,(byte) 0x0,(byte) 0x22,(byte) 0x0, -(byte) 0x1c,(byte) 0x0, -}; - -static final BitmapCharRec ch229 = new BitmapCharRec(9,17,-1,0,11,ch229data); - -/* char: 0xe4 */ - -static final byte[] ch228data = { -(byte) 0x71,(byte) 0x80,(byte) 0xfb,(byte) 0x0,(byte) 0xc7,(byte) 0x0,(byte) 0xc3,(byte) 0x0,(byte) 0xc3,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0x3b,(byte) 0x0,(byte) 0xf,(byte) 0x0, -(byte) 0x3,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0x67,(byte) 0x0,(byte) 0x3e,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x66,(byte) 0x0,(byte) 0x66,(byte) 0x0, -}; - -static final BitmapCharRec ch228 = new BitmapCharRec(9,16,-1,0,11,ch228data); - -/* char: 0xe3 */ - -static final byte[] ch227data = { -(byte) 0x71,(byte) 0x80,(byte) 0xfb,(byte) 0x0,(byte) 0xc7,(byte) 0x0,(byte) 0xc3,(byte) 0x0,(byte) 0xc3,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0x3b,(byte) 0x0,(byte) 0xf,(byte) 0x0, -(byte) 0x3,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0x67,(byte) 0x0,(byte) 0x3e,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x5c,(byte) 0x0,(byte) 0x3a,(byte) 0x0, -}; - -static final BitmapCharRec ch227 = new BitmapCharRec(9,16,-1,0,11,ch227data); - -/* char: 0xe2 */ - -static final byte[] ch226data = { -(byte) 0x71,(byte) 0x80,(byte) 0xfb,(byte) 0x0,(byte) 0xc7,(byte) 0x0,(byte) 0xc3,(byte) 0x0,(byte) 0xc3,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0x3b,(byte) 0x0,(byte) 0xf,(byte) 0x0, -(byte) 0x3,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0x67,(byte) 0x0,(byte) 0x3e,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x42,(byte) 0x0,(byte) 0x24,(byte) 0x0,(byte) 0x3c,(byte) 0x0, -(byte) 0x18,(byte) 0x0, -}; - -static final BitmapCharRec ch226 = new BitmapCharRec(9,17,-1,0,11,ch226data); - -/* char: 0xe1 */ - -static final byte[] ch225data = { -(byte) 0x71,(byte) 0x80,(byte) 0xfb,(byte) 0x0,(byte) 0xc7,(byte) 0x0,(byte) 0xc3,(byte) 0x0,(byte) 0xc3,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0x3b,(byte) 0x0,(byte) 0xf,(byte) 0x0, -(byte) 0x3,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0x67,(byte) 0x0,(byte) 0x3e,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x10,(byte) 0x0,(byte) 0xc,(byte) 0x0,(byte) 0x7,(byte) 0x0, -(byte) 0x3,(byte) 0x0, -}; - -static final BitmapCharRec ch225 = new BitmapCharRec(9,17,-1,0,11,ch225data); - -/* char: 0xe0 */ - -static final byte[] ch224data = { -(byte) 0x71,(byte) 0x80,(byte) 0xfb,(byte) 0x0,(byte) 0xc7,(byte) 0x0,(byte) 0xc3,(byte) 0x0,(byte) 0xc3,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0x3b,(byte) 0x0,(byte) 0xf,(byte) 0x0, -(byte) 0x3,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0x67,(byte) 0x0,(byte) 0x3e,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x4,(byte) 0x0,(byte) 0x18,(byte) 0x0,(byte) 0x70,(byte) 0x0, -(byte) 0x60,(byte) 0x0, -}; - -static final BitmapCharRec ch224 = new BitmapCharRec(9,17,-1,0,11,ch224data); - -/* char: 0xdf */ - -static final byte[] ch223data = { -(byte) 0xe7,(byte) 0x0,(byte) 0x6c,(byte) 0x80,(byte) 0x6c,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x61,(byte) 0xc0,(byte) 0x61,(byte) 0x80,(byte) 0x63,(byte) 0x80, -(byte) 0x67,(byte) 0x0,(byte) 0x6c,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0x61,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0x33,(byte) 0x0, -(byte) 0x1e,(byte) 0x0, -}; - -static final BitmapCharRec ch223 = new BitmapCharRec(10,17,-1,0,12,ch223data); - -/* char: 0xde */ - -static final byte[] ch222data = { -(byte) 0xfc,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x3f,(byte) 0xc0,(byte) 0x30,(byte) 0x70,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x18, -(byte) 0x30,(byte) 0x18,(byte) 0x30,(byte) 0x18,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x70,(byte) 0x3f,(byte) 0xc0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0, -(byte) 0xfc,(byte) 0x0, -}; - -static final BitmapCharRec ch222 = new BitmapCharRec(13,17,-1,0,15,ch222data); - -/* char: 0xdd */ - -static final byte[] ch221data = { -(byte) 0x7,(byte) 0xe0,(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x3,(byte) 0xc0, -(byte) 0x3,(byte) 0x40,(byte) 0x6,(byte) 0x60,(byte) 0x6,(byte) 0x20,(byte) 0xc,(byte) 0x30,(byte) 0x1c,(byte) 0x10,(byte) 0x18,(byte) 0x18,(byte) 0x38,(byte) 0x8,(byte) 0x30,(byte) 0xc, -(byte) 0xfc,(byte) 0x3f,(byte) 0x0,(byte) 0x0,(byte) 0x1,(byte) 0x0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0x70,(byte) 0x0,(byte) 0x30, -}; - -static final BitmapCharRec ch221 = new BitmapCharRec(16,22,0,0,16,ch221data); - -/* char: 0xdc */ - -static final byte[] ch220data = { -(byte) 0x7,(byte) 0xe0,(byte) 0x1c,(byte) 0x30,(byte) 0x18,(byte) 0x8,(byte) 0x30,(byte) 0x8,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4, -(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4, -(byte) 0xfc,(byte) 0x1f,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x6,(byte) 0x30,(byte) 0x6,(byte) 0x30, -}; - -static final BitmapCharRec ch220 = new BitmapCharRec(16,21,-1,0,18,ch220data); - -/* char: 0xdb */ - -static final byte[] ch219data = { -(byte) 0x7,(byte) 0xe0,(byte) 0x1c,(byte) 0x30,(byte) 0x18,(byte) 0x8,(byte) 0x30,(byte) 0x8,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4, -(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4, -(byte) 0xfc,(byte) 0x1f,(byte) 0x0,(byte) 0x0,(byte) 0x8,(byte) 0x10,(byte) 0x6,(byte) 0x60,(byte) 0x3,(byte) 0xc0,(byte) 0x1,(byte) 0x80, -}; - -static final BitmapCharRec ch219 = new BitmapCharRec(16,22,-1,0,18,ch219data); - -/* char: 0xda */ - -static final byte[] ch218data = { -(byte) 0x7,(byte) 0xe0,(byte) 0x1c,(byte) 0x30,(byte) 0x18,(byte) 0x8,(byte) 0x30,(byte) 0x8,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4, -(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4, -(byte) 0xfc,(byte) 0x1f,(byte) 0x0,(byte) 0x0,(byte) 0x1,(byte) 0x0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0x70,(byte) 0x0,(byte) 0x30, -}; - -static final BitmapCharRec ch218 = new BitmapCharRec(16,22,-1,0,18,ch218data); - -/* char: 0xd9 */ - -static final byte[] ch217data = { -(byte) 0x7,(byte) 0xe0,(byte) 0x1c,(byte) 0x30,(byte) 0x18,(byte) 0x8,(byte) 0x30,(byte) 0x8,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4, -(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4, -(byte) 0xfc,(byte) 0x1f,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x40,(byte) 0x1,(byte) 0x80,(byte) 0x7,(byte) 0x0,(byte) 0x6,(byte) 0x0, -}; - -static final BitmapCharRec ch217 = new BitmapCharRec(16,22,-1,0,18,ch217data); - -/* char: 0xd8 */ - -static final byte[] ch216data = { -(byte) 0x20,(byte) 0x0,(byte) 0x27,(byte) 0xe0,(byte) 0x1c,(byte) 0x38,(byte) 0x38,(byte) 0x1c,(byte) 0x68,(byte) 0x6,(byte) 0x64,(byte) 0x6,(byte) 0xc2,(byte) 0x3,(byte) 0xc2,(byte) 0x3, -(byte) 0xc1,(byte) 0x3,(byte) 0xc1,(byte) 0x3,(byte) 0xc0,(byte) 0x83,(byte) 0xc0,(byte) 0x83,(byte) 0xc0,(byte) 0x43,(byte) 0x60,(byte) 0x46,(byte) 0x60,(byte) 0x26,(byte) 0x38,(byte) 0x1c, -(byte) 0x1c,(byte) 0x38,(byte) 0x7,(byte) 0xe4,(byte) 0x0,(byte) 0x4, -}; - -static final BitmapCharRec ch216 = new BitmapCharRec(16,19,-1,1,18,ch216data); - -/* char: 0xd7 */ - -static final byte[] ch215data = { -(byte) 0x80,(byte) 0x40,(byte) 0xc0,(byte) 0xc0,(byte) 0x61,(byte) 0x80,(byte) 0x33,(byte) 0x0,(byte) 0x1e,(byte) 0x0,(byte) 0xc,(byte) 0x0,(byte) 0x1e,(byte) 0x0,(byte) 0x33,(byte) 0x0, -(byte) 0x61,(byte) 0x80,(byte) 0xc0,(byte) 0xc0,(byte) 0x80,(byte) 0x40, -}; - -static final BitmapCharRec ch215 = new BitmapCharRec(10,11,-2,-1,14,ch215data); - -/* char: 0xd6 */ - -static final byte[] ch214data = { -(byte) 0x7,(byte) 0xe0,(byte) 0x1c,(byte) 0x38,(byte) 0x38,(byte) 0x1c,(byte) 0x60,(byte) 0x6,(byte) 0x60,(byte) 0x6,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3, -(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0x60,(byte) 0x6,(byte) 0x60,(byte) 0x6,(byte) 0x38,(byte) 0x1c,(byte) 0x1c,(byte) 0x38, -(byte) 0x7,(byte) 0xe0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x6,(byte) 0x60,(byte) 0x6,(byte) 0x60, -}; - -static final BitmapCharRec ch214 = new BitmapCharRec(16,21,-1,0,18,ch214data); - -/* char: 0xd5 */ - -static final byte[] ch213data = { -(byte) 0x7,(byte) 0xe0,(byte) 0x1c,(byte) 0x38,(byte) 0x38,(byte) 0x1c,(byte) 0x60,(byte) 0x6,(byte) 0x60,(byte) 0x6,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3, -(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0x60,(byte) 0x6,(byte) 0x60,(byte) 0x6,(byte) 0x38,(byte) 0x1c,(byte) 0x1c,(byte) 0x38, -(byte) 0x7,(byte) 0xe0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x4,(byte) 0xe0,(byte) 0x3,(byte) 0x90, -}; - -static final BitmapCharRec ch213 = new BitmapCharRec(16,21,-1,0,18,ch213data); - -/* char: 0xd4 */ - -static final byte[] ch212data = { -(byte) 0x7,(byte) 0xe0,(byte) 0x1c,(byte) 0x38,(byte) 0x38,(byte) 0x1c,(byte) 0x60,(byte) 0x6,(byte) 0x60,(byte) 0x6,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3, -(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0x60,(byte) 0x6,(byte) 0x60,(byte) 0x6,(byte) 0x38,(byte) 0x1c,(byte) 0x1c,(byte) 0x38, -(byte) 0x7,(byte) 0xe0,(byte) 0x0,(byte) 0x0,(byte) 0x8,(byte) 0x10,(byte) 0x6,(byte) 0x60,(byte) 0x3,(byte) 0xc0,(byte) 0x1,(byte) 0x80, -}; - -static final BitmapCharRec ch212 = new BitmapCharRec(16,22,-1,0,18,ch212data); - -/* char: 0xd3 */ - -static final byte[] ch211data = { -(byte) 0x7,(byte) 0xe0,(byte) 0x1c,(byte) 0x38,(byte) 0x38,(byte) 0x1c,(byte) 0x60,(byte) 0x6,(byte) 0x60,(byte) 0x6,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3, -(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0x60,(byte) 0x6,(byte) 0x60,(byte) 0x6,(byte) 0x38,(byte) 0x1c,(byte) 0x1c,(byte) 0x38, -(byte) 0x7,(byte) 0xe0,(byte) 0x0,(byte) 0x0,(byte) 0x1,(byte) 0x0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0x70,(byte) 0x0,(byte) 0x30, -}; - -static final BitmapCharRec ch211 = new BitmapCharRec(16,22,-1,0,18,ch211data); - -/* char: 0xd2 */ - -static final byte[] ch210data = { -(byte) 0x7,(byte) 0xe0,(byte) 0x1c,(byte) 0x38,(byte) 0x38,(byte) 0x1c,(byte) 0x60,(byte) 0x6,(byte) 0x60,(byte) 0x6,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3, -(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0x60,(byte) 0x6,(byte) 0x60,(byte) 0x6,(byte) 0x38,(byte) 0x1c,(byte) 0x1c,(byte) 0x38, -(byte) 0x7,(byte) 0xe0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x40,(byte) 0x1,(byte) 0x80,(byte) 0x7,(byte) 0x0,(byte) 0x6,(byte) 0x0, -}; - -static final BitmapCharRec ch210 = new BitmapCharRec(16,22,-1,0,18,ch210data); - -/* char: 0xd1 */ - -static final byte[] ch209data = { -(byte) 0xf8,(byte) 0xc,(byte) 0x20,(byte) 0x1c,(byte) 0x20,(byte) 0x1c,(byte) 0x20,(byte) 0x34,(byte) 0x20,(byte) 0x64,(byte) 0x20,(byte) 0x64,(byte) 0x20,(byte) 0xc4,(byte) 0x21,(byte) 0x84, -(byte) 0x21,(byte) 0x84,(byte) 0x23,(byte) 0x4,(byte) 0x26,(byte) 0x4,(byte) 0x26,(byte) 0x4,(byte) 0x2c,(byte) 0x4,(byte) 0x38,(byte) 0x4,(byte) 0x38,(byte) 0x4,(byte) 0x30,(byte) 0x4, -(byte) 0xf0,(byte) 0x1f,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x4,(byte) 0xe0,(byte) 0x3,(byte) 0x90, -}; - -static final BitmapCharRec ch209 = new BitmapCharRec(16,21,-1,0,18,ch209data); - -/* char: 0xd0 */ - -static final byte[] ch208data = { -(byte) 0x7f,(byte) 0xe0,(byte) 0x18,(byte) 0x38,(byte) 0x18,(byte) 0x1c,(byte) 0x18,(byte) 0x6,(byte) 0x18,(byte) 0x6,(byte) 0x18,(byte) 0x3,(byte) 0x18,(byte) 0x3,(byte) 0x18,(byte) 0x3, -(byte) 0xff,(byte) 0x3,(byte) 0x18,(byte) 0x3,(byte) 0x18,(byte) 0x3,(byte) 0x18,(byte) 0x3,(byte) 0x18,(byte) 0x6,(byte) 0x18,(byte) 0x6,(byte) 0x18,(byte) 0x1c,(byte) 0x18,(byte) 0x38, -(byte) 0x7f,(byte) 0xe0, -}; - -static final BitmapCharRec ch208 = new BitmapCharRec(16,17,0,0,17,ch208data); - -/* char: 0xcf */ - -static final byte[] ch207data = { -(byte) 0xfc,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30, -(byte) 0xfc,(byte) 0x0,(byte) 0x0,(byte) 0xcc,(byte) 0xcc, -}; - -static final BitmapCharRec ch207 = new BitmapCharRec(6,21,-1,0,8,ch207data); - -/* char: 0xce */ - -static final byte[] ch206data = { -(byte) 0x7e,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18, -(byte) 0x7e,(byte) 0x0,(byte) 0x81,(byte) 0x66,(byte) 0x3c,(byte) 0x18, -}; - -static final BitmapCharRec ch206 = new BitmapCharRec(8,22,-1,0,8,ch206data); - -/* char: 0xcd */ - -static final byte[] ch205data = { -(byte) 0xfc,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30, -(byte) 0xfc,(byte) 0x0,(byte) 0x40,(byte) 0x30,(byte) 0x1c,(byte) 0xc, -}; - -static final BitmapCharRec ch205 = new BitmapCharRec(6,22,-1,0,8,ch205data); - -/* char: 0xcc */ - -static final byte[] ch204data = { -(byte) 0xfc,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30, -(byte) 0xfc,(byte) 0x0,(byte) 0x8,(byte) 0x30,(byte) 0xe0,(byte) 0xc0, -}; - -static final BitmapCharRec ch204 = new BitmapCharRec(6,22,-1,0,8,ch204data); - -/* char: 0xcb */ - -static final byte[] ch203data = { -(byte) 0xff,(byte) 0xf8,(byte) 0x30,(byte) 0x18,(byte) 0x30,(byte) 0x8,(byte) 0x30,(byte) 0x8,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x40,(byte) 0x30,(byte) 0x40, -(byte) 0x3f,(byte) 0xc0,(byte) 0x30,(byte) 0x40,(byte) 0x30,(byte) 0x40,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x10,(byte) 0x30,(byte) 0x10,(byte) 0x30,(byte) 0x30, -(byte) 0xff,(byte) 0xf0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x19,(byte) 0x80,(byte) 0x19,(byte) 0x80, -}; - -static final BitmapCharRec ch203 = new BitmapCharRec(13,21,-1,0,15,ch203data); - -/* char: 0xca */ - -static final byte[] ch202data = { -(byte) 0xff,(byte) 0xf8,(byte) 0x30,(byte) 0x18,(byte) 0x30,(byte) 0x8,(byte) 0x30,(byte) 0x8,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x40,(byte) 0x30,(byte) 0x40, -(byte) 0x3f,(byte) 0xc0,(byte) 0x30,(byte) 0x40,(byte) 0x30,(byte) 0x40,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x10,(byte) 0x30,(byte) 0x10,(byte) 0x30,(byte) 0x30, -(byte) 0xff,(byte) 0xf0,(byte) 0x0,(byte) 0x0,(byte) 0x10,(byte) 0x20,(byte) 0xc,(byte) 0xc0,(byte) 0x7,(byte) 0x80,(byte) 0x3,(byte) 0x0, -}; - -static final BitmapCharRec ch202 = new BitmapCharRec(13,22,-1,0,15,ch202data); - -/* char: 0xc9 */ - -static final byte[] ch201data = { -(byte) 0xff,(byte) 0xf8,(byte) 0x30,(byte) 0x18,(byte) 0x30,(byte) 0x8,(byte) 0x30,(byte) 0x8,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x40,(byte) 0x30,(byte) 0x40, -(byte) 0x3f,(byte) 0xc0,(byte) 0x30,(byte) 0x40,(byte) 0x30,(byte) 0x40,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x10,(byte) 0x30,(byte) 0x10,(byte) 0x30,(byte) 0x30, -(byte) 0xff,(byte) 0xf0,(byte) 0x0,(byte) 0x0,(byte) 0x4,(byte) 0x0,(byte) 0x3,(byte) 0x0,(byte) 0x1,(byte) 0xc0,(byte) 0x0,(byte) 0xc0, -}; - -static final BitmapCharRec ch201 = new BitmapCharRec(13,22,-1,0,15,ch201data); - -/* char: 0xc8 */ - -static final byte[] ch200data = { -(byte) 0xff,(byte) 0xf8,(byte) 0x30,(byte) 0x18,(byte) 0x30,(byte) 0x8,(byte) 0x30,(byte) 0x8,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x40,(byte) 0x30,(byte) 0x40, -(byte) 0x3f,(byte) 0xc0,(byte) 0x30,(byte) 0x40,(byte) 0x30,(byte) 0x40,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x10,(byte) 0x30,(byte) 0x10,(byte) 0x30,(byte) 0x30, -(byte) 0xff,(byte) 0xf0,(byte) 0x0,(byte) 0x0,(byte) 0x1,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x1c,(byte) 0x0,(byte) 0x18,(byte) 0x0, -}; - -static final BitmapCharRec ch200 = new BitmapCharRec(13,22,-1,0,15,ch200data); - -/* char: 0xc7 */ - -static final byte[] ch199data = { -(byte) 0x7,(byte) 0x80,(byte) 0xc,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0x0,(byte) 0x1,(byte) 0x0,(byte) 0x7,(byte) 0xe0,(byte) 0x1e,(byte) 0x38, -(byte) 0x38,(byte) 0x8,(byte) 0x60,(byte) 0x4,(byte) 0x60,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0, -(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0x60,(byte) 0x4,(byte) 0x60,(byte) 0x4,(byte) 0x38,(byte) 0xc,(byte) 0x1c,(byte) 0x3c,(byte) 0x7,(byte) 0xe4, -}; - -static final BitmapCharRec ch199 = new BitmapCharRec(14,23,-1,6,16,ch199data); - -/* char: 0xc6 */ - -static final byte[] ch198data = { -(byte) 0xf9,(byte) 0xff,(byte) 0xf0,(byte) 0x30,(byte) 0x60,(byte) 0x30,(byte) 0x10,(byte) 0x60,(byte) 0x10,(byte) 0x10,(byte) 0x60,(byte) 0x10,(byte) 0x18,(byte) 0x60,(byte) 0x0,(byte) 0x8, -(byte) 0x60,(byte) 0x0,(byte) 0xf,(byte) 0xe0,(byte) 0x80,(byte) 0xc,(byte) 0x60,(byte) 0x80,(byte) 0x4,(byte) 0x7f,(byte) 0x80,(byte) 0x4,(byte) 0x60,(byte) 0x80,(byte) 0x6,(byte) 0x60, -(byte) 0x80,(byte) 0x2,(byte) 0x60,(byte) 0x0,(byte) 0x2,(byte) 0x60,(byte) 0x0,(byte) 0x1,(byte) 0x60,(byte) 0x20,(byte) 0x1,(byte) 0x60,(byte) 0x20,(byte) 0x1,(byte) 0xe0,(byte) 0x60, -(byte) 0x3,(byte) 0xff,(byte) 0xe0, -}; - -static final BitmapCharRec ch198 = new BitmapCharRec(20,17,0,0,21,ch198data); - -/* char: 0xc5 */ - -static final byte[] ch197data = { -(byte) 0xfc,(byte) 0x1f,(byte) 0x80,(byte) 0x30,(byte) 0x6,(byte) 0x0,(byte) 0x10,(byte) 0x6,(byte) 0x0,(byte) 0x10,(byte) 0xc,(byte) 0x0,(byte) 0x18,(byte) 0xc,(byte) 0x0,(byte) 0x8, -(byte) 0xc,(byte) 0x0,(byte) 0xf,(byte) 0xf8,(byte) 0x0,(byte) 0xc,(byte) 0x18,(byte) 0x0,(byte) 0x4,(byte) 0x18,(byte) 0x0,(byte) 0x4,(byte) 0x30,(byte) 0x0,(byte) 0x6,(byte) 0x30, -(byte) 0x0,(byte) 0x2,(byte) 0x30,(byte) 0x0,(byte) 0x2,(byte) 0x60,(byte) 0x0,(byte) 0x1,(byte) 0x60,(byte) 0x0,(byte) 0x1,(byte) 0xc0,(byte) 0x0,(byte) 0x1,(byte) 0xc0,(byte) 0x0, -(byte) 0x0,(byte) 0x80,(byte) 0x0,(byte) 0x1,(byte) 0xc0,(byte) 0x0,(byte) 0x2,(byte) 0x20,(byte) 0x0,(byte) 0x2,(byte) 0x20,(byte) 0x0,(byte) 0x1,(byte) 0xc0,(byte) 0x0, -}; - -static final BitmapCharRec ch197 = new BitmapCharRec(17,21,0,0,17,ch197data); - -/* char: 0xc4 */ - -static final byte[] ch196data = { -(byte) 0xfc,(byte) 0x1f,(byte) 0x80,(byte) 0x30,(byte) 0x6,(byte) 0x0,(byte) 0x10,(byte) 0x6,(byte) 0x0,(byte) 0x10,(byte) 0xc,(byte) 0x0,(byte) 0x18,(byte) 0xc,(byte) 0x0,(byte) 0x8, -(byte) 0xc,(byte) 0x0,(byte) 0xf,(byte) 0xf8,(byte) 0x0,(byte) 0xc,(byte) 0x18,(byte) 0x0,(byte) 0x4,(byte) 0x18,(byte) 0x0,(byte) 0x4,(byte) 0x30,(byte) 0x0,(byte) 0x6,(byte) 0x30, -(byte) 0x0,(byte) 0x2,(byte) 0x30,(byte) 0x0,(byte) 0x2,(byte) 0x60,(byte) 0x0,(byte) 0x1,(byte) 0x60,(byte) 0x0,(byte) 0x1,(byte) 0xc0,(byte) 0x0,(byte) 0x1,(byte) 0xc0,(byte) 0x0, -(byte) 0x0,(byte) 0x80,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x6,(byte) 0x30,(byte) 0x0,(byte) 0x6,(byte) 0x30,(byte) 0x0, -}; - -static final BitmapCharRec ch196 = new BitmapCharRec(17,21,0,0,17,ch196data); - -/* char: 0xc3 */ - -static final byte[] ch195data = { -(byte) 0xfc,(byte) 0x1f,(byte) 0x80,(byte) 0x30,(byte) 0x7,(byte) 0x0,(byte) 0x10,(byte) 0x6,(byte) 0x0,(byte) 0x10,(byte) 0xc,(byte) 0x0,(byte) 0x18,(byte) 0xc,(byte) 0x0,(byte) 0x8, -(byte) 0xc,(byte) 0x0,(byte) 0xf,(byte) 0xf8,(byte) 0x0,(byte) 0xc,(byte) 0x18,(byte) 0x0,(byte) 0x4,(byte) 0x18,(byte) 0x0,(byte) 0x4,(byte) 0x30,(byte) 0x0,(byte) 0x6,(byte) 0x30, -(byte) 0x0,(byte) 0x2,(byte) 0x30,(byte) 0x0,(byte) 0x2,(byte) 0x60,(byte) 0x0,(byte) 0x1,(byte) 0x60,(byte) 0x0,(byte) 0x1,(byte) 0xc0,(byte) 0x0,(byte) 0x1,(byte) 0xc0,(byte) 0x0, -(byte) 0x0,(byte) 0x80,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x4,(byte) 0xe0,(byte) 0x0,(byte) 0x3,(byte) 0x90,(byte) 0x0, -}; - -static final BitmapCharRec ch195 = new BitmapCharRec(17,21,0,0,17,ch195data); - -/* char: 0xc2 */ - -static final byte[] ch194data = { -(byte) 0xfc,(byte) 0x1f,(byte) 0x80,(byte) 0x30,(byte) 0x6,(byte) 0x0,(byte) 0x10,(byte) 0x6,(byte) 0x0,(byte) 0x10,(byte) 0xc,(byte) 0x0,(byte) 0x18,(byte) 0xc,(byte) 0x0,(byte) 0x8, -(byte) 0xc,(byte) 0x0,(byte) 0xf,(byte) 0xf8,(byte) 0x0,(byte) 0xc,(byte) 0x18,(byte) 0x0,(byte) 0x4,(byte) 0x18,(byte) 0x0,(byte) 0x4,(byte) 0x30,(byte) 0x0,(byte) 0x6,(byte) 0x30, -(byte) 0x0,(byte) 0x2,(byte) 0x30,(byte) 0x0,(byte) 0x2,(byte) 0x60,(byte) 0x0,(byte) 0x1,(byte) 0x60,(byte) 0x0,(byte) 0x1,(byte) 0xc0,(byte) 0x0,(byte) 0x1,(byte) 0xc0,(byte) 0x0, -(byte) 0x0,(byte) 0x80,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x8,(byte) 0x10,(byte) 0x0,(byte) 0x6,(byte) 0x60,(byte) 0x0,(byte) 0x3,(byte) 0xc0,(byte) 0x0,(byte) 0x1, -(byte) 0x80,(byte) 0x0, -}; - -static final BitmapCharRec ch194 = new BitmapCharRec(17,22,0,0,17,ch194data); - -/* char: 0xc1 */ - -static final byte[] ch193data = { -(byte) 0xfc,(byte) 0x1f,(byte) 0x80,(byte) 0x30,(byte) 0x6,(byte) 0x0,(byte) 0x10,(byte) 0x6,(byte) 0x0,(byte) 0x10,(byte) 0xc,(byte) 0x0,(byte) 0x18,(byte) 0xc,(byte) 0x0,(byte) 0x8, -(byte) 0xc,(byte) 0x0,(byte) 0xf,(byte) 0xf8,(byte) 0x0,(byte) 0xc,(byte) 0x18,(byte) 0x0,(byte) 0x4,(byte) 0x18,(byte) 0x0,(byte) 0x4,(byte) 0x30,(byte) 0x0,(byte) 0x6,(byte) 0x30, -(byte) 0x0,(byte) 0x2,(byte) 0x30,(byte) 0x0,(byte) 0x2,(byte) 0x60,(byte) 0x0,(byte) 0x1,(byte) 0x60,(byte) 0x0,(byte) 0x1,(byte) 0xc0,(byte) 0x0,(byte) 0x1,(byte) 0xc0,(byte) 0x0, -(byte) 0x0,(byte) 0x80,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x1,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0x0,(byte) 0x70,(byte) 0x0,(byte) 0x0, -(byte) 0x30,(byte) 0x0, -}; - -static final BitmapCharRec ch193 = new BitmapCharRec(17,22,0,0,17,ch193data); - -/* char: 0xc0 */ - -static final byte[] ch192data = { -(byte) 0xfc,(byte) 0x1f,(byte) 0x80,(byte) 0x30,(byte) 0x6,(byte) 0x0,(byte) 0x10,(byte) 0x6,(byte) 0x0,(byte) 0x10,(byte) 0xc,(byte) 0x0,(byte) 0x18,(byte) 0xc,(byte) 0x0,(byte) 0x8, -(byte) 0xc,(byte) 0x0,(byte) 0xf,(byte) 0xf8,(byte) 0x0,(byte) 0xc,(byte) 0x18,(byte) 0x0,(byte) 0x4,(byte) 0x18,(byte) 0x0,(byte) 0x4,(byte) 0x30,(byte) 0x0,(byte) 0x6,(byte) 0x30, -(byte) 0x0,(byte) 0x2,(byte) 0x30,(byte) 0x0,(byte) 0x2,(byte) 0x60,(byte) 0x0,(byte) 0x1,(byte) 0x60,(byte) 0x0,(byte) 0x1,(byte) 0xc0,(byte) 0x0,(byte) 0x1,(byte) 0xc0,(byte) 0x0, -(byte) 0x0,(byte) 0x80,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x20,(byte) 0x0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0x3,(byte) 0x80,(byte) 0x0,(byte) 0x3, -(byte) 0x0,(byte) 0x0, -}; - -static final BitmapCharRec ch192 = new BitmapCharRec(17,22,0,0,17,ch192data); - -/* char: 0xbf */ - -static final byte[] ch191data = { -(byte) 0x3e,(byte) 0x63,(byte) 0xc1,(byte) 0xc3,(byte) 0xc3,(byte) 0xe0,(byte) 0x70,(byte) 0x30,(byte) 0x38,(byte) 0x18,(byte) 0x18,(byte) 0x8,(byte) 0x8,(byte) 0x0,(byte) 0x0,(byte) 0xc, -(byte) 0xc, -}; - -static final BitmapCharRec ch191 = new BitmapCharRec(8,17,-1,5,11,ch191data); - -/* char: 0xbe */ - -static final byte[] ch190data = { -(byte) 0x18,(byte) 0x2,(byte) 0x0,(byte) 0x8,(byte) 0x2,(byte) 0x0,(byte) 0xc,(byte) 0x7f,(byte) 0x80,(byte) 0x4,(byte) 0x22,(byte) 0x0,(byte) 0x6,(byte) 0x32,(byte) 0x0,(byte) 0x3, -(byte) 0x12,(byte) 0x0,(byte) 0x1,(byte) 0xa,(byte) 0x0,(byte) 0x71,(byte) 0x8e,(byte) 0x0,(byte) 0x88,(byte) 0x86,(byte) 0x0,(byte) 0x8c,(byte) 0xc2,(byte) 0x0,(byte) 0xc,(byte) 0x60, -(byte) 0x0,(byte) 0x8,(byte) 0x20,(byte) 0x0,(byte) 0x30,(byte) 0x30,(byte) 0x0,(byte) 0x8,(byte) 0x10,(byte) 0x0,(byte) 0x8c,(byte) 0x18,(byte) 0x0,(byte) 0x4c,(byte) 0xc,(byte) 0x0, -(byte) 0x38,(byte) 0x4,(byte) 0x0, -}; - -static final BitmapCharRec ch190 = new BitmapCharRec(17,17,0,0,18,ch190data); - -/* char: 0xbd */ - -static final byte[] ch189data = { -(byte) 0x30,(byte) 0x7e,(byte) 0x10,(byte) 0x22,(byte) 0x18,(byte) 0x10,(byte) 0x8,(byte) 0x18,(byte) 0xc,(byte) 0x8,(byte) 0x6,(byte) 0x4,(byte) 0x2,(byte) 0x6,(byte) 0xfb,(byte) 0x46, -(byte) 0x21,(byte) 0x26,(byte) 0x21,(byte) 0x9c,(byte) 0x20,(byte) 0xc0,(byte) 0x20,(byte) 0x40,(byte) 0x20,(byte) 0x60,(byte) 0x20,(byte) 0x20,(byte) 0xa0,(byte) 0x30,(byte) 0x60,(byte) 0x18, -(byte) 0x20,(byte) 0x8, -}; - -static final BitmapCharRec ch189 = new BitmapCharRec(15,17,-1,0,18,ch189data); - -/* char: 0xbc */ - -static final byte[] ch188data = { -(byte) 0x30,(byte) 0x4,(byte) 0x10,(byte) 0x4,(byte) 0x18,(byte) 0xff,(byte) 0x8,(byte) 0x44,(byte) 0xc,(byte) 0x64,(byte) 0x6,(byte) 0x24,(byte) 0x2,(byte) 0x14,(byte) 0xfb,(byte) 0x1c, -(byte) 0x21,(byte) 0xc,(byte) 0x21,(byte) 0x84,(byte) 0x20,(byte) 0xc0,(byte) 0x20,(byte) 0x40,(byte) 0x20,(byte) 0x60,(byte) 0x20,(byte) 0x20,(byte) 0xa0,(byte) 0x30,(byte) 0x60,(byte) 0x18, -(byte) 0x20,(byte) 0x8, -}; - -static final BitmapCharRec ch188 = new BitmapCharRec(16,17,-1,0,18,ch188data); - -/* char: 0xbb */ - -static final byte[] ch187data = { -(byte) 0x88,(byte) 0x0,(byte) 0xcc,(byte) 0x0,(byte) 0x66,(byte) 0x0,(byte) 0x33,(byte) 0x0,(byte) 0x19,(byte) 0x80,(byte) 0x19,(byte) 0x80,(byte) 0x33,(byte) 0x0,(byte) 0x66,(byte) 0x0, -(byte) 0xcc,(byte) 0x0,(byte) 0x88,(byte) 0x0, -}; - -static final BitmapCharRec ch187 = new BitmapCharRec(9,10,-2,-1,12,ch187data); - -/* char: 0xba */ - -static final byte[] ch186data = { -(byte) 0xfc,(byte) 0x0,(byte) 0x78,(byte) 0xcc,(byte) 0xcc,(byte) 0xcc,(byte) 0xcc,(byte) 0xcc,(byte) 0x78, -}; - -static final BitmapCharRec ch186 = new BitmapCharRec(6,9,-1,-8,8,ch186data); - -/* char: 0xb9 */ - -static final byte[] ch185data = { -(byte) 0xf8,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0x20,(byte) 0xa0,(byte) 0x60,(byte) 0x20, -}; - -static final BitmapCharRec ch185 = new BitmapCharRec(5,10,-1,-7,7,ch185data); - -/* char: 0xb8 */ - -static final byte[] ch184data = { -(byte) 0x78,(byte) 0xcc,(byte) 0xc,(byte) 0x3c,(byte) 0x30,(byte) 0x10, -}; - -static final BitmapCharRec ch184 = new BitmapCharRec(6,6,-1,6,8,ch184data); - -/* char: 0xb7 */ - -static final byte[] ch183data = { -(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch183 = new BitmapCharRec(2,2,-2,-6,6,ch183data); - -/* char: 0xb6 */ - -static final byte[] ch182data = { -(byte) 0x9,(byte) 0x0,(byte) 0x9,(byte) 0x0,(byte) 0x9,(byte) 0x0,(byte) 0x9,(byte) 0x0,(byte) 0x9,(byte) 0x0,(byte) 0x9,(byte) 0x0,(byte) 0x9,(byte) 0x0,(byte) 0x9,(byte) 0x0, -(byte) 0x9,(byte) 0x0,(byte) 0x9,(byte) 0x0,(byte) 0x9,(byte) 0x0,(byte) 0x19,(byte) 0x0,(byte) 0x39,(byte) 0x0,(byte) 0x79,(byte) 0x0,(byte) 0x79,(byte) 0x0,(byte) 0xf9,(byte) 0x0, -(byte) 0xf9,(byte) 0x0,(byte) 0xf9,(byte) 0x0,(byte) 0x79,(byte) 0x0,(byte) 0x79,(byte) 0x0,(byte) 0x39,(byte) 0x0,(byte) 0x1f,(byte) 0x80, -}; - -static final BitmapCharRec ch182 = new BitmapCharRec(9,22,-1,5,11,ch182data); - -/* char: 0xb5 */ - -static final byte[] ch181data = { -(byte) 0x40,(byte) 0x0,(byte) 0xe0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0x40,(byte) 0x0,(byte) 0x40,(byte) 0x0,(byte) 0x5c,(byte) 0xe0,(byte) 0x7e,(byte) 0xc0,(byte) 0x71,(byte) 0xc0, -(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0, -(byte) 0xe1,(byte) 0xc0, -}; - -static final BitmapCharRec ch181 = new BitmapCharRec(11,17,-1,5,13,ch181data); - -/* char: 0xb4 */ - -static final byte[] ch180data = { -(byte) 0x80,(byte) 0x60,(byte) 0x38,(byte) 0x18, -}; - -static final BitmapCharRec ch180 = new BitmapCharRec(5,4,-2,-13,8,ch180data); - -/* char: 0xb3 */ - -static final byte[] ch179data = { -(byte) 0x70,(byte) 0x88,(byte) 0x8c,(byte) 0xc,(byte) 0x8,(byte) 0x30,(byte) 0x8,(byte) 0x8c,(byte) 0x4c,(byte) 0x38, -}; - -static final BitmapCharRec ch179 = new BitmapCharRec(6,10,0,-7,7,ch179data); - -/* char: 0xb2 */ - -static final byte[] ch178data = { -(byte) 0xfc,(byte) 0x44,(byte) 0x20,(byte) 0x30,(byte) 0x10,(byte) 0x8,(byte) 0xc,(byte) 0x8c,(byte) 0x4c,(byte) 0x38, -}; - -static final BitmapCharRec ch178 = new BitmapCharRec(6,10,0,-7,7,ch178data); - -/* char: 0xb1 */ - -static final byte[] ch177data = { -(byte) 0xff,(byte) 0xf0,(byte) 0xff,(byte) 0xf0,(byte) 0x0,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0, -(byte) 0xff,(byte) 0xf0,(byte) 0xff,(byte) 0xf0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0, -}; - -static final BitmapCharRec ch177 = new BitmapCharRec(12,15,-1,0,14,ch177data); - -/* char: 0xb0 */ - -static final byte[] ch176data = { -(byte) 0x38,(byte) 0x44,(byte) 0x82,(byte) 0x82,(byte) 0x82,(byte) 0x44,(byte) 0x38, -}; - -static final BitmapCharRec ch176 = new BitmapCharRec(7,7,-1,-10,9,ch176data); - -/* char: 0xaf */ - -static final byte[] ch175data = { -(byte) 0xfc,(byte) 0xfc, -}; - -static final BitmapCharRec ch175 = new BitmapCharRec(6,2,-1,-14,8,ch175data); - -/* char: 0xae */ - -static final byte[] ch174data = { -(byte) 0x7,(byte) 0xf0,(byte) 0x0,(byte) 0x1c,(byte) 0x1c,(byte) 0x0,(byte) 0x30,(byte) 0x6,(byte) 0x0,(byte) 0x60,(byte) 0x3,(byte) 0x0,(byte) 0x47,(byte) 0x19,(byte) 0x0,(byte) 0xc2, -(byte) 0x31,(byte) 0x80,(byte) 0x82,(byte) 0x20,(byte) 0x80,(byte) 0x82,(byte) 0x40,(byte) 0x80,(byte) 0x83,(byte) 0xe0,(byte) 0x80,(byte) 0x82,(byte) 0x30,(byte) 0x80,(byte) 0x82,(byte) 0x10, -(byte) 0x80,(byte) 0xc2,(byte) 0x11,(byte) 0x80,(byte) 0x42,(byte) 0x31,(byte) 0x0,(byte) 0x67,(byte) 0xe3,(byte) 0x0,(byte) 0x30,(byte) 0x6,(byte) 0x0,(byte) 0x1c,(byte) 0x1c,(byte) 0x0, -(byte) 0x7,(byte) 0xf0,(byte) 0x0, -}; - -static final BitmapCharRec ch174 = new BitmapCharRec(17,17,-1,0,19,ch174data); - -/* char: 0xad */ - -static final byte[] ch173data = { -(byte) 0xfe,(byte) 0xfe, -}; - -static final BitmapCharRec ch173 = new BitmapCharRec(7,2,-1,-5,9,ch173data); - -/* char: 0xac */ - -static final byte[] ch172data = { -(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0xff,(byte) 0xf0,(byte) 0xff,(byte) 0xf0, -}; - -static final BitmapCharRec ch172 = new BitmapCharRec(12,7,-1,-3,14,ch172data); - -/* char: 0xab */ - -static final byte[] ch171data = { -(byte) 0x8,(byte) 0x80,(byte) 0x19,(byte) 0x80,(byte) 0x33,(byte) 0x0,(byte) 0x66,(byte) 0x0,(byte) 0xcc,(byte) 0x0,(byte) 0xcc,(byte) 0x0,(byte) 0x66,(byte) 0x0,(byte) 0x33,(byte) 0x0, -(byte) 0x19,(byte) 0x80,(byte) 0x8,(byte) 0x80, -}; - -static final BitmapCharRec ch171 = new BitmapCharRec(9,10,-2,-1,13,ch171data); - -/* char: 0xaa */ - -static final byte[] ch170data = { -(byte) 0x7e,(byte) 0x0,(byte) 0x76,(byte) 0xcc,(byte) 0xcc,(byte) 0x7c,(byte) 0xc,(byte) 0xcc,(byte) 0x78, -}; - -static final BitmapCharRec ch170 = new BitmapCharRec(7,9,0,-8,8,ch170data); - -/* char: 0xa9 */ - -static final byte[] ch169data = { -(byte) 0x7,(byte) 0xf0,(byte) 0x0,(byte) 0x1c,(byte) 0x1c,(byte) 0x0,(byte) 0x30,(byte) 0x6,(byte) 0x0,(byte) 0x61,(byte) 0xc3,(byte) 0x0,(byte) 0x47,(byte) 0x71,(byte) 0x0,(byte) 0xc4, -(byte) 0x19,(byte) 0x80,(byte) 0x8c,(byte) 0x0,(byte) 0x80,(byte) 0x88,(byte) 0x0,(byte) 0x80,(byte) 0x88,(byte) 0x0,(byte) 0x80,(byte) 0x88,(byte) 0x0,(byte) 0x80,(byte) 0x8c,(byte) 0x0, -(byte) 0x80,(byte) 0xc4,(byte) 0x19,(byte) 0x80,(byte) 0x47,(byte) 0x31,(byte) 0x0,(byte) 0x61,(byte) 0xe3,(byte) 0x0,(byte) 0x30,(byte) 0x6,(byte) 0x0,(byte) 0x1c,(byte) 0x1c,(byte) 0x0, -(byte) 0x7,(byte) 0xf0,(byte) 0x0, -}; - -static final BitmapCharRec ch169 = new BitmapCharRec(17,17,-1,0,19,ch169data); - -/* char: 0xa8 */ - -static final byte[] ch168data = { -(byte) 0xcc,(byte) 0xcc, -}; - -static final BitmapCharRec ch168 = new BitmapCharRec(6,2,-1,-14,8,ch168data); - -/* char: 0xa7 */ - -static final byte[] ch167data = { -(byte) 0x38,(byte) 0x64,(byte) 0x62,(byte) 0x6,(byte) 0xe,(byte) 0x1c,(byte) 0x38,(byte) 0x74,(byte) 0xe2,(byte) 0xc3,(byte) 0x83,(byte) 0x87,(byte) 0x4e,(byte) 0x3c,(byte) 0x38,(byte) 0x70, -(byte) 0x60,(byte) 0x46,(byte) 0x26,(byte) 0x1c, -}; - -static final BitmapCharRec ch167 = new BitmapCharRec(8,20,-2,2,12,ch167data); - -/* char: 0xa6 */ - -static final byte[] ch166data = { -(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0, -(byte) 0xc0, -}; - -static final BitmapCharRec ch166 = new BitmapCharRec(2,17,-2,0,6,ch166data); - -/* char: 0xa5 */ - -static final byte[] ch165data = { -(byte) 0xf,(byte) 0xc0,(byte) 0x3,(byte) 0x0,(byte) 0x3,(byte) 0x0,(byte) 0x3,(byte) 0x0,(byte) 0x3,(byte) 0x0,(byte) 0x1f,(byte) 0xe0,(byte) 0x3,(byte) 0x0,(byte) 0x1f,(byte) 0xe0, -(byte) 0x3,(byte) 0x0,(byte) 0x7,(byte) 0x80,(byte) 0xc,(byte) 0x80,(byte) 0xc,(byte) 0xc0,(byte) 0x18,(byte) 0x40,(byte) 0x18,(byte) 0x60,(byte) 0x30,(byte) 0x20,(byte) 0x70,(byte) 0x30, -(byte) 0xf8,(byte) 0x7c, -}; - -static final BitmapCharRec ch165 = new BitmapCharRec(14,17,0,0,14,ch165data); - -/* char: 0xa4 */ - -static final byte[] ch164data = { -(byte) 0xc0,(byte) 0x60,(byte) 0xee,(byte) 0xe0,(byte) 0x7f,(byte) 0xc0,(byte) 0x31,(byte) 0x80,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0, -(byte) 0x31,(byte) 0x80,(byte) 0x7f,(byte) 0xc0,(byte) 0xee,(byte) 0xe0,(byte) 0xc0,(byte) 0x60, -}; - -static final BitmapCharRec ch164 = new BitmapCharRec(11,12,-1,-3,13,ch164data); - -/* char: 0xa3 */ - -static final byte[] ch163data = { -(byte) 0xe7,(byte) 0x80,(byte) 0xbe,(byte) 0xc0,(byte) 0x78,(byte) 0x40,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0, -(byte) 0x30,(byte) 0x0,(byte) 0xfc,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x31,(byte) 0x80,(byte) 0x19,(byte) 0x80, -(byte) 0xf,(byte) 0x0, -}; - -static final BitmapCharRec ch163 = new BitmapCharRec(10,17,-1,0,12,ch163data); - -/* char: 0xa2 */ - -static final byte[] ch162data = { -(byte) 0x40,(byte) 0x0,(byte) 0x40,(byte) 0x0,(byte) 0x3e,(byte) 0x0,(byte) 0x7f,(byte) 0x0,(byte) 0x70,(byte) 0x80,(byte) 0xd0,(byte) 0x0,(byte) 0xc8,(byte) 0x0,(byte) 0xc8,(byte) 0x0, -(byte) 0xc8,(byte) 0x0,(byte) 0xc4,(byte) 0x0,(byte) 0xc4,(byte) 0x0,(byte) 0x43,(byte) 0x80,(byte) 0x63,(byte) 0x80,(byte) 0x1f,(byte) 0x0,(byte) 0x1,(byte) 0x0,(byte) 0x1,(byte) 0x0, -}; - -static final BitmapCharRec ch162 = new BitmapCharRec(9,16,-1,2,12,ch162data); - -/* char: 0xa1 */ - -static final byte[] ch161data = { -(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0xc0, -(byte) 0xc0, -}; - -static final BitmapCharRec ch161 = new BitmapCharRec(2,17,-4,5,8,ch161data); - -/* char: 0xa0 */ - -static final BitmapCharRec ch160 = new BitmapCharRec(0,0,0,0,6,null); - -/* char: 0x7e '~' */ - -static final byte[] ch126data = { -(byte) 0x83,(byte) 0x80,(byte) 0xc7,(byte) 0xc0,(byte) 0x7c,(byte) 0x60,(byte) 0x38,(byte) 0x20, -}; - -static final BitmapCharRec ch126 = new BitmapCharRec(11,4,-1,-5,13,ch126data); - -/* char: 0x7d '}' */ - -static final byte[] ch125data = { -(byte) 0xe0,(byte) 0x30,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x8,(byte) 0xc,(byte) 0x4,(byte) 0x3,(byte) 0x4,(byte) 0xc,(byte) 0x8,(byte) 0x18, -(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x30,(byte) 0xe0, -}; - -static final BitmapCharRec ch125 = new BitmapCharRec(8,22,-1,5,10,ch125data); - -/* char: 0x7c '|' */ - -static final byte[] ch124data = { -(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0, -(byte) 0xc0, -}; - -static final BitmapCharRec ch124 = new BitmapCharRec(2,17,-2,0,6,ch124data); - -/* char: 0x7b '{' */ - -static final byte[] ch123data = { -(byte) 0x7,(byte) 0xc,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x10,(byte) 0x30,(byte) 0x20,(byte) 0xc0,(byte) 0x20,(byte) 0x30,(byte) 0x10,(byte) 0x18, -(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0xc,(byte) 0x7, -}; - -static final BitmapCharRec ch123 = new BitmapCharRec(8,22,-1,5,10,ch123data); - -/* char: 0x7a 'z' */ - -static final byte[] ch122data = { -(byte) 0xff,(byte) 0xc3,(byte) 0x61,(byte) 0x70,(byte) 0x30,(byte) 0x38,(byte) 0x18,(byte) 0x1c,(byte) 0xe,(byte) 0x86,(byte) 0xc3,(byte) 0xff, -}; - -static final BitmapCharRec ch122 = new BitmapCharRec(8,12,-1,0,10,ch122data); - -/* char: 0x79 'y' */ - -static final byte[] ch121data = { -(byte) 0xe0,(byte) 0x0,(byte) 0xf0,(byte) 0x0,(byte) 0x18,(byte) 0x0,(byte) 0x8,(byte) 0x0,(byte) 0xc,(byte) 0x0,(byte) 0x4,(byte) 0x0,(byte) 0xe,(byte) 0x0,(byte) 0xe,(byte) 0x0, -(byte) 0x1a,(byte) 0x0,(byte) 0x19,(byte) 0x0,(byte) 0x19,(byte) 0x0,(byte) 0x31,(byte) 0x0,(byte) 0x30,(byte) 0x80,(byte) 0x30,(byte) 0x80,(byte) 0x60,(byte) 0x80,(byte) 0x60,(byte) 0xc0, -(byte) 0xf1,(byte) 0xe0, -}; - -static final BitmapCharRec ch121 = new BitmapCharRec(11,17,0,5,11,ch121data); - -/* char: 0x78 'x' */ - -static final byte[] ch120data = { -(byte) 0xf1,(byte) 0xe0,(byte) 0x60,(byte) 0xc0,(byte) 0x21,(byte) 0x80,(byte) 0x33,(byte) 0x80,(byte) 0x1b,(byte) 0x0,(byte) 0xe,(byte) 0x0,(byte) 0xc,(byte) 0x0,(byte) 0x1a,(byte) 0x0, -(byte) 0x39,(byte) 0x0,(byte) 0x31,(byte) 0x80,(byte) 0x60,(byte) 0xc0,(byte) 0xf1,(byte) 0xe0, -}; - -static final BitmapCharRec ch120 = new BitmapCharRec(11,12,-1,0,13,ch120data); - -/* char: 0x77 'w' */ - -static final byte[] ch119data = { -(byte) 0x4,(byte) 0x10,(byte) 0x0,(byte) 0xe,(byte) 0x38,(byte) 0x0,(byte) 0xe,(byte) 0x38,(byte) 0x0,(byte) 0x1a,(byte) 0x28,(byte) 0x0,(byte) 0x1a,(byte) 0x64,(byte) 0x0,(byte) 0x19, -(byte) 0x64,(byte) 0x0,(byte) 0x31,(byte) 0x64,(byte) 0x0,(byte) 0x30,(byte) 0xc2,(byte) 0x0,(byte) 0x30,(byte) 0xc2,(byte) 0x0,(byte) 0x60,(byte) 0xc2,(byte) 0x0,(byte) 0x60,(byte) 0xc3, -(byte) 0x0,(byte) 0xf1,(byte) 0xe7,(byte) 0x80, -}; - -static final BitmapCharRec ch119 = new BitmapCharRec(17,12,0,0,17,ch119data); - -/* char: 0x76 'v' */ - -static final byte[] ch118data = { -(byte) 0x4,(byte) 0x0,(byte) 0xe,(byte) 0x0,(byte) 0xe,(byte) 0x0,(byte) 0x1a,(byte) 0x0,(byte) 0x19,(byte) 0x0,(byte) 0x19,(byte) 0x0,(byte) 0x31,(byte) 0x0,(byte) 0x30,(byte) 0x80, -(byte) 0x30,(byte) 0x80,(byte) 0x60,(byte) 0x80,(byte) 0x60,(byte) 0xc0,(byte) 0xf1,(byte) 0xe0, -}; - -static final BitmapCharRec ch118 = new BitmapCharRec(11,12,0,0,11,ch118data); - -/* char: 0x75 'u' */ - -static final byte[] ch117data = { -(byte) 0x1c,(byte) 0xe0,(byte) 0x3e,(byte) 0xc0,(byte) 0x71,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0, -(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0xe1,(byte) 0xc0, -}; - -static final BitmapCharRec ch117 = new BitmapCharRec(11,12,-1,0,13,ch117data); - -/* char: 0x74 't' */ - -static final byte[] ch116data = { -(byte) 0x1c,(byte) 0x32,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0xfe,(byte) 0x70,(byte) 0x30,(byte) 0x10, -}; - -static final BitmapCharRec ch116 = new BitmapCharRec(7,15,0,0,7,ch116data); - -/* char: 0x73 's' */ - -static final byte[] ch115data = { -(byte) 0xf8,(byte) 0xc6,(byte) 0x83,(byte) 0x3,(byte) 0x7,(byte) 0x1e,(byte) 0x7c,(byte) 0x70,(byte) 0xe0,(byte) 0xc2,(byte) 0x66,(byte) 0x3e, -}; - -static final BitmapCharRec ch115 = new BitmapCharRec(8,12,-1,0,10,ch115data); - -/* char: 0x72 'r' */ - -static final byte[] ch114data = { -(byte) 0xf0,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x76,(byte) 0x6e,(byte) 0xe6, -}; - -static final BitmapCharRec ch114 = new BitmapCharRec(7,12,-1,0,8,ch114data); - -/* char: 0x71 'q' */ - -static final byte[] ch113data = { -(byte) 0x3,(byte) 0xc0,(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x1d,(byte) 0x80,(byte) 0x73,(byte) 0x80,(byte) 0x61,(byte) 0x80, -(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0x73,(byte) 0x80, -(byte) 0x1d,(byte) 0x80, -}; - -static final BitmapCharRec ch113 = new BitmapCharRec(10,17,-1,5,12,ch113data); - -/* char: 0x70 'p' */ - -static final byte[] ch112data = { -(byte) 0xf0,(byte) 0x0,(byte) 0x60,(byte) 0x0,(byte) 0x60,(byte) 0x0,(byte) 0x60,(byte) 0x0,(byte) 0x60,(byte) 0x0,(byte) 0x6e,(byte) 0x0,(byte) 0x73,(byte) 0x80,(byte) 0x61,(byte) 0x80, -(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x61,(byte) 0x80,(byte) 0x73,(byte) 0x80, -(byte) 0xee,(byte) 0x0, -}; - -static final BitmapCharRec ch112 = new BitmapCharRec(10,17,-1,5,12,ch112data); - -/* char: 0x6f 'o' */ - -static final byte[] ch111data = { -(byte) 0x1e,(byte) 0x0,(byte) 0x73,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0, -(byte) 0xc0,(byte) 0xc0,(byte) 0x61,(byte) 0x80,(byte) 0x73,(byte) 0x80,(byte) 0x1e,(byte) 0x0, -}; - -static final BitmapCharRec ch111 = new BitmapCharRec(10,12,-1,0,12,ch111data); - -/* char: 0x6e 'n' */ - -static final byte[] ch110data = { -(byte) 0xf1,(byte) 0xe0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0, -(byte) 0x60,(byte) 0xc0,(byte) 0x71,(byte) 0xc0,(byte) 0x6f,(byte) 0x80,(byte) 0xe7,(byte) 0x0, -}; - -static final BitmapCharRec ch110 = new BitmapCharRec(11,12,-1,0,13,ch110data); - -/* char: 0x6d 'm' */ - -static final byte[] ch109data = { -(byte) 0xf1,(byte) 0xe3,(byte) 0xc0,(byte) 0x60,(byte) 0xc1,(byte) 0x80,(byte) 0x60,(byte) 0xc1,(byte) 0x80,(byte) 0x60,(byte) 0xc1,(byte) 0x80,(byte) 0x60,(byte) 0xc1,(byte) 0x80,(byte) 0x60, -(byte) 0xc1,(byte) 0x80,(byte) 0x60,(byte) 0xc1,(byte) 0x80,(byte) 0x60,(byte) 0xc1,(byte) 0x80,(byte) 0x60,(byte) 0xc1,(byte) 0x80,(byte) 0x71,(byte) 0xe3,(byte) 0x80,(byte) 0x6f,(byte) 0x9f, -(byte) 0x0,(byte) 0xe7,(byte) 0xe,(byte) 0x0, -}; - -static final BitmapCharRec ch109 = new BitmapCharRec(18,12,-1,0,20,ch109data); - -/* char: 0x6c 'l' */ - -static final byte[] ch108data = { -(byte) 0xf0,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60, -(byte) 0xe0, -}; - -static final BitmapCharRec ch108 = new BitmapCharRec(4,17,-1,0,6,ch108data); - -/* char: 0x6b 'k' */ - -static final byte[] ch107data = { -(byte) 0xf3,(byte) 0xe0,(byte) 0x61,(byte) 0xc0,(byte) 0x63,(byte) 0x80,(byte) 0x67,(byte) 0x0,(byte) 0x6e,(byte) 0x0,(byte) 0x6c,(byte) 0x0,(byte) 0x78,(byte) 0x0,(byte) 0x68,(byte) 0x0, -(byte) 0x64,(byte) 0x0,(byte) 0x66,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0x67,(byte) 0xc0,(byte) 0x60,(byte) 0x0,(byte) 0x60,(byte) 0x0,(byte) 0x60,(byte) 0x0,(byte) 0x60,(byte) 0x0, -(byte) 0xe0,(byte) 0x0, -}; - -static final BitmapCharRec ch107 = new BitmapCharRec(11,17,-1,0,12,ch107data); - -/* char: 0x6a 'j' */ - -static final byte[] ch106data = { -(byte) 0xc0,(byte) 0xe0,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30, -(byte) 0x70,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x30,(byte) 0x30, -}; - -static final BitmapCharRec ch106 = new BitmapCharRec(4,22,0,5,6,ch106data); - -/* char: 0x69 'i' */ - -static final byte[] ch105data = { -(byte) 0xf0,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0x60,(byte) 0xe0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x60, -(byte) 0x60, -}; - -static final BitmapCharRec ch105 = new BitmapCharRec(4,17,-1,0,6,ch105data); - -/* char: 0x68 'h' */ - -static final byte[] ch104data = { -(byte) 0xf1,(byte) 0xe0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0, -(byte) 0x60,(byte) 0xc0,(byte) 0x71,(byte) 0xc0,(byte) 0x6f,(byte) 0x80,(byte) 0x67,(byte) 0x0,(byte) 0x60,(byte) 0x0,(byte) 0x60,(byte) 0x0,(byte) 0x60,(byte) 0x0,(byte) 0x60,(byte) 0x0, -(byte) 0xe0,(byte) 0x0, -}; - -static final BitmapCharRec ch104 = new BitmapCharRec(11,17,-1,0,13,ch104data); - -/* char: 0x67 'g' */ - -static final byte[] ch103data = { -(byte) 0x3f,(byte) 0x0,(byte) 0xf1,(byte) 0xc0,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x20,(byte) 0x60,(byte) 0x60,(byte) 0x3f,(byte) 0xc0,(byte) 0x7f,(byte) 0x0,(byte) 0x60,(byte) 0x0, -(byte) 0x30,(byte) 0x0,(byte) 0x3e,(byte) 0x0,(byte) 0x33,(byte) 0x0,(byte) 0x61,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0x33,(byte) 0x0, -(byte) 0x1f,(byte) 0xc0, -}; - -static final BitmapCharRec ch103 = new BitmapCharRec(11,17,-1,5,12,ch103data); - -/* char: 0x66 'f' */ - -static final byte[] ch102data = { -(byte) 0x78,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0xfe,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x16, -(byte) 0xe, -}; - -static final BitmapCharRec ch102 = new BitmapCharRec(7,17,0,0,7,ch102data); - -/* char: 0x65 'e' */ - -static final byte[] ch101data = { -(byte) 0x1e,(byte) 0x0,(byte) 0x7f,(byte) 0x0,(byte) 0x70,(byte) 0x80,(byte) 0xe0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xff,(byte) 0x80, -(byte) 0xc1,(byte) 0x80,(byte) 0x41,(byte) 0x80,(byte) 0x63,(byte) 0x0,(byte) 0x1e,(byte) 0x0, -}; - -static final BitmapCharRec ch101 = new BitmapCharRec(9,12,-1,0,11,ch101data); - -/* char: 0x64 'd' */ - -static final byte[] ch100data = { -(byte) 0x1e,(byte) 0xc0,(byte) 0x73,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0xc1,(byte) 0x80, -(byte) 0xc1,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0x73,(byte) 0x80,(byte) 0x1d,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80, -(byte) 0x3,(byte) 0x80, -}; - -static final BitmapCharRec ch100 = new BitmapCharRec(10,17,-1,0,12,ch100data); - -/* char: 0x63 'c' */ - -static final byte[] ch99data = { -(byte) 0x1e,(byte) 0x0,(byte) 0x7f,(byte) 0x0,(byte) 0x70,(byte) 0x80,(byte) 0xe0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0, -(byte) 0xc0,(byte) 0x0,(byte) 0x41,(byte) 0x80,(byte) 0x63,(byte) 0x80,(byte) 0x1f,(byte) 0x0, -}; - -static final BitmapCharRec ch99 = new BitmapCharRec(9,12,-1,0,11,ch99data); - -/* char: 0x62 'b' */ - -static final byte[] ch98data = { -(byte) 0x5e,(byte) 0x0,(byte) 0x73,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0,(byte) 0x60,(byte) 0xc0, -(byte) 0x60,(byte) 0xc0,(byte) 0x61,(byte) 0x80,(byte) 0x73,(byte) 0x80,(byte) 0x6e,(byte) 0x0,(byte) 0x60,(byte) 0x0,(byte) 0x60,(byte) 0x0,(byte) 0x60,(byte) 0x0,(byte) 0x60,(byte) 0x0, -(byte) 0xe0,(byte) 0x0, -}; - -static final BitmapCharRec ch98 = new BitmapCharRec(10,17,-1,0,12,ch98data); - -/* char: 0x61 'a' */ - -static final byte[] ch97data = { -(byte) 0x71,(byte) 0x80,(byte) 0xfb,(byte) 0x0,(byte) 0xc7,(byte) 0x0,(byte) 0xc3,(byte) 0x0,(byte) 0xc3,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0x3b,(byte) 0x0,(byte) 0xf,(byte) 0x0, -(byte) 0x3,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0x67,(byte) 0x0,(byte) 0x3e,(byte) 0x0, -}; - -static final BitmapCharRec ch97 = new BitmapCharRec(9,12,-1,0,11,ch97data); - -/* char: 0x60 '`' */ - -static final byte[] ch96data = { -(byte) 0x60,(byte) 0xe0,(byte) 0x80,(byte) 0xc0,(byte) 0x60, -}; - -static final BitmapCharRec ch96 = new BitmapCharRec(3,5,-2,-12,7,ch96data); - -/* char: 0x5f '_' */ - -static final byte[] ch95data = { -(byte) 0xff,(byte) 0xf8,(byte) 0xff,(byte) 0xf8, -}; - -static final BitmapCharRec ch95 = new BitmapCharRec(13,2,0,5,13,ch95data); - -/* char: 0x5e '^' */ - -static final byte[] ch94data = { -(byte) 0x80,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0x41,(byte) 0x0,(byte) 0x63,(byte) 0x0,(byte) 0x22,(byte) 0x0,(byte) 0x36,(byte) 0x0,(byte) 0x14,(byte) 0x0,(byte) 0x1c,(byte) 0x0, -(byte) 0x8,(byte) 0x0, -}; - -static final BitmapCharRec ch94 = new BitmapCharRec(9,9,-1,-8,11,ch94data); - -/* char: 0x5d ']' */ - -static final byte[] ch93data = { -(byte) 0xf8,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18, -(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0xf8, -}; - -static final BitmapCharRec ch93 = new BitmapCharRec(5,21,-1,4,8,ch93data); - -/* char: 0x5c '\' */ - -static final byte[] ch92data = { -(byte) 0x6,(byte) 0x6,(byte) 0x4,(byte) 0xc,(byte) 0xc,(byte) 0x8,(byte) 0x18,(byte) 0x18,(byte) 0x10,(byte) 0x30,(byte) 0x30,(byte) 0x20,(byte) 0x60,(byte) 0x60,(byte) 0x40,(byte) 0xc0, -(byte) 0xc0, -}; - -static final BitmapCharRec ch92 = new BitmapCharRec(7,17,0,0,7,ch92data); - -/* char: 0x5b '[' */ - -static final byte[] ch91data = { -(byte) 0xf8,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0, -(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xf8, -}; - -static final BitmapCharRec ch91 = new BitmapCharRec(5,21,-2,4,8,ch91data); - -/* char: 0x5a 'Z' */ - -static final byte[] ch90data = { -(byte) 0xff,(byte) 0xf8,(byte) 0xe0,(byte) 0x18,(byte) 0x70,(byte) 0x8,(byte) 0x30,(byte) 0x8,(byte) 0x38,(byte) 0x0,(byte) 0x18,(byte) 0x0,(byte) 0x1c,(byte) 0x0,(byte) 0xe,(byte) 0x0, -(byte) 0x6,(byte) 0x0,(byte) 0x7,(byte) 0x0,(byte) 0x3,(byte) 0x0,(byte) 0x3,(byte) 0x80,(byte) 0x1,(byte) 0xc0,(byte) 0x80,(byte) 0xc0,(byte) 0x80,(byte) 0xe0,(byte) 0xc0,(byte) 0x70, -(byte) 0xff,(byte) 0xf0, -}; - -static final BitmapCharRec ch90 = new BitmapCharRec(13,17,-1,0,15,ch90data); - -/* char: 0x59 'Y' */ - -static final byte[] ch89data = { -(byte) 0x7,(byte) 0xe0,(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x3,(byte) 0xc0, -(byte) 0x3,(byte) 0x40,(byte) 0x6,(byte) 0x60,(byte) 0x6,(byte) 0x20,(byte) 0xc,(byte) 0x30,(byte) 0x1c,(byte) 0x10,(byte) 0x18,(byte) 0x18,(byte) 0x38,(byte) 0x8,(byte) 0x30,(byte) 0xc, -(byte) 0xfc,(byte) 0x3f, -}; - -static final BitmapCharRec ch89 = new BitmapCharRec(16,17,0,0,16,ch89data); - -/* char: 0x58 'X' */ - -static final byte[] ch88data = { -(byte) 0xfc,(byte) 0xf,(byte) 0xc0,(byte) 0x30,(byte) 0x3,(byte) 0x80,(byte) 0x18,(byte) 0x7,(byte) 0x0,(byte) 0x8,(byte) 0xe,(byte) 0x0,(byte) 0x4,(byte) 0xc,(byte) 0x0,(byte) 0x6, -(byte) 0x18,(byte) 0x0,(byte) 0x2,(byte) 0x38,(byte) 0x0,(byte) 0x1,(byte) 0x70,(byte) 0x0,(byte) 0x0,(byte) 0xe0,(byte) 0x0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0x1,(byte) 0xc0, -(byte) 0x0,(byte) 0x3,(byte) 0xa0,(byte) 0x0,(byte) 0x3,(byte) 0x10,(byte) 0x0,(byte) 0x6,(byte) 0x8,(byte) 0x0,(byte) 0xe,(byte) 0xc,(byte) 0x0,(byte) 0x1c,(byte) 0x6,(byte) 0x0, -(byte) 0x7e,(byte) 0xf,(byte) 0x80, -}; - -static final BitmapCharRec ch88 = new BitmapCharRec(18,17,0,0,18,ch88data); - -/* char: 0x57 'W' */ - -static final byte[] ch87data = { -(byte) 0x1,(byte) 0x83,(byte) 0x0,(byte) 0x1,(byte) 0x83,(byte) 0x0,(byte) 0x1,(byte) 0x83,(byte) 0x80,(byte) 0x3,(byte) 0x87,(byte) 0x80,(byte) 0x3,(byte) 0x46,(byte) 0x80,(byte) 0x3, -(byte) 0x46,(byte) 0xc0,(byte) 0x6,(byte) 0x46,(byte) 0x40,(byte) 0x6,(byte) 0x4c,(byte) 0x40,(byte) 0x6,(byte) 0x4c,(byte) 0x60,(byte) 0xc,(byte) 0x2c,(byte) 0x60,(byte) 0xc,(byte) 0x2c, -(byte) 0x20,(byte) 0x18,(byte) 0x2c,(byte) 0x20,(byte) 0x18,(byte) 0x18,(byte) 0x30,(byte) 0x18,(byte) 0x18,(byte) 0x10,(byte) 0x30,(byte) 0x18,(byte) 0x10,(byte) 0x30,(byte) 0x18,(byte) 0x18, -(byte) 0xfc,(byte) 0x7e,(byte) 0x7e, -}; - -static final BitmapCharRec ch87 = new BitmapCharRec(23,17,0,0,23,ch87data); - -/* char: 0x56 'V' */ - -static final byte[] ch86data = { -(byte) 0x1,(byte) 0x80,(byte) 0x0,(byte) 0x1,(byte) 0x80,(byte) 0x0,(byte) 0x1,(byte) 0x80,(byte) 0x0,(byte) 0x3,(byte) 0xc0,(byte) 0x0,(byte) 0x3,(byte) 0x40,(byte) 0x0,(byte) 0x3, -(byte) 0x60,(byte) 0x0,(byte) 0x6,(byte) 0x20,(byte) 0x0,(byte) 0x6,(byte) 0x20,(byte) 0x0,(byte) 0x6,(byte) 0x30,(byte) 0x0,(byte) 0xc,(byte) 0x10,(byte) 0x0,(byte) 0xc,(byte) 0x18, -(byte) 0x0,(byte) 0x18,(byte) 0x8,(byte) 0x0,(byte) 0x18,(byte) 0x8,(byte) 0x0,(byte) 0x18,(byte) 0xc,(byte) 0x0,(byte) 0x30,(byte) 0x4,(byte) 0x0,(byte) 0x30,(byte) 0x6,(byte) 0x0, -(byte) 0xfc,(byte) 0x1f,(byte) 0x80, -}; - -static final BitmapCharRec ch86 = new BitmapCharRec(17,17,0,0,17,ch86data); - -/* char: 0x55 'U' */ - -static final byte[] ch85data = { -(byte) 0x7,(byte) 0xe0,(byte) 0x1c,(byte) 0x30,(byte) 0x18,(byte) 0x8,(byte) 0x30,(byte) 0x8,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4, -(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4,(byte) 0x30,(byte) 0x4, -(byte) 0xfc,(byte) 0x1f, -}; - -static final BitmapCharRec ch85 = new BitmapCharRec(16,17,-1,0,18,ch85data); - -/* char: 0x54 'T' */ - -static final byte[] ch84data = { -(byte) 0xf,(byte) 0xc0,(byte) 0x3,(byte) 0x0,(byte) 0x3,(byte) 0x0,(byte) 0x3,(byte) 0x0,(byte) 0x3,(byte) 0x0,(byte) 0x3,(byte) 0x0,(byte) 0x3,(byte) 0x0,(byte) 0x3,(byte) 0x0, -(byte) 0x3,(byte) 0x0,(byte) 0x3,(byte) 0x0,(byte) 0x3,(byte) 0x0,(byte) 0x3,(byte) 0x0,(byte) 0x3,(byte) 0x0,(byte) 0x83,(byte) 0x4,(byte) 0x83,(byte) 0x4,(byte) 0xc3,(byte) 0xc, -(byte) 0xff,(byte) 0xfc, -}; - -static final BitmapCharRec ch84 = new BitmapCharRec(14,17,-1,0,16,ch84data); - -/* char: 0x53 'S' */ - -static final byte[] ch83data = { -(byte) 0x9e,(byte) 0x0,(byte) 0xf1,(byte) 0x80,(byte) 0xc0,(byte) 0xc0,(byte) 0x80,(byte) 0x60,(byte) 0x80,(byte) 0x60,(byte) 0x0,(byte) 0x60,(byte) 0x0,(byte) 0xe0,(byte) 0x3,(byte) 0xc0, -(byte) 0xf,(byte) 0x80,(byte) 0x1e,(byte) 0x0,(byte) 0x78,(byte) 0x0,(byte) 0xe0,(byte) 0x0,(byte) 0xc0,(byte) 0x40,(byte) 0xc0,(byte) 0x40,(byte) 0xc0,(byte) 0xc0,(byte) 0x63,(byte) 0xc0, -(byte) 0x1e,(byte) 0x40, -}; - -static final BitmapCharRec ch83 = new BitmapCharRec(11,17,-1,0,13,ch83data); - -/* char: 0x52 'R' */ - -static final byte[] ch82data = { -(byte) 0xfc,(byte) 0x1e,(byte) 0x30,(byte) 0x1c,(byte) 0x30,(byte) 0x38,(byte) 0x30,(byte) 0x70,(byte) 0x30,(byte) 0x60,(byte) 0x30,(byte) 0xc0,(byte) 0x31,(byte) 0xc0,(byte) 0x33,(byte) 0x80, -(byte) 0x3f,(byte) 0xc0,(byte) 0x30,(byte) 0x70,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x38,(byte) 0x30,(byte) 0x18,(byte) 0x30,(byte) 0x38,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x70, -(byte) 0xff,(byte) 0xc0, -}; - -static final BitmapCharRec ch82 = new BitmapCharRec(15,17,-1,0,16,ch82data); - -/* char: 0x51 'Q' */ - -static final byte[] ch81data = { -(byte) 0x0,(byte) 0xf,(byte) 0x0,(byte) 0x38,(byte) 0x0,(byte) 0x70,(byte) 0x0,(byte) 0xe0,(byte) 0x1,(byte) 0xc0,(byte) 0x7,(byte) 0xe0,(byte) 0x1c,(byte) 0x38,(byte) 0x38,(byte) 0x1c, -(byte) 0x60,(byte) 0x6,(byte) 0x60,(byte) 0x6,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3, -(byte) 0xc0,(byte) 0x3,(byte) 0x60,(byte) 0x6,(byte) 0x60,(byte) 0x6,(byte) 0x38,(byte) 0x1c,(byte) 0x1c,(byte) 0x38,(byte) 0x7,(byte) 0xe0, -}; - -static final BitmapCharRec ch81 = new BitmapCharRec(16,22,-1,5,18,ch81data); - -/* char: 0x50 'P' */ - -static final byte[] ch80data = { -(byte) 0xfc,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0, -(byte) 0x3f,(byte) 0xc0,(byte) 0x30,(byte) 0x70,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x18,(byte) 0x30,(byte) 0x18,(byte) 0x30,(byte) 0x18,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x70, -(byte) 0xff,(byte) 0xc0, -}; - -static final BitmapCharRec ch80 = new BitmapCharRec(13,17,-1,0,15,ch80data); - -/* char: 0x4f 'O' */ - -static final byte[] ch79data = { -(byte) 0x7,(byte) 0xe0,(byte) 0x1c,(byte) 0x38,(byte) 0x38,(byte) 0x1c,(byte) 0x60,(byte) 0x6,(byte) 0x60,(byte) 0x6,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3, -(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0xc0,(byte) 0x3,(byte) 0x60,(byte) 0x6,(byte) 0x60,(byte) 0x6,(byte) 0x38,(byte) 0x1c,(byte) 0x1c,(byte) 0x38, -(byte) 0x7,(byte) 0xe0, -}; - -static final BitmapCharRec ch79 = new BitmapCharRec(16,17,-1,0,18,ch79data); - -/* char: 0x4e 'N' */ - -static final byte[] ch78data = { -(byte) 0xf8,(byte) 0xc,(byte) 0x20,(byte) 0x1c,(byte) 0x20,(byte) 0x1c,(byte) 0x20,(byte) 0x34,(byte) 0x20,(byte) 0x64,(byte) 0x20,(byte) 0x64,(byte) 0x20,(byte) 0xc4,(byte) 0x21,(byte) 0x84, -(byte) 0x21,(byte) 0x84,(byte) 0x23,(byte) 0x4,(byte) 0x26,(byte) 0x4,(byte) 0x26,(byte) 0x4,(byte) 0x2c,(byte) 0x4,(byte) 0x38,(byte) 0x4,(byte) 0x38,(byte) 0x4,(byte) 0x30,(byte) 0x4, -(byte) 0xf0,(byte) 0x1f, -}; - -static final BitmapCharRec ch78 = new BitmapCharRec(16,17,-1,0,18,ch78data); - -/* char: 0x4d 'M' */ - -static final byte[] ch77data = { -(byte) 0xf8,(byte) 0x21,(byte) 0xf8,(byte) 0x20,(byte) 0x60,(byte) 0x60,(byte) 0x20,(byte) 0x60,(byte) 0x60,(byte) 0x20,(byte) 0xd0,(byte) 0x60,(byte) 0x20,(byte) 0xd0,(byte) 0x60,(byte) 0x21, -(byte) 0x88,(byte) 0x60,(byte) 0x21,(byte) 0x88,(byte) 0x60,(byte) 0x23,(byte) 0x8,(byte) 0x60,(byte) 0x23,(byte) 0x4,(byte) 0x60,(byte) 0x26,(byte) 0x4,(byte) 0x60,(byte) 0x26,(byte) 0x2, -(byte) 0x60,(byte) 0x2c,(byte) 0x2,(byte) 0x60,(byte) 0x2c,(byte) 0x2,(byte) 0x60,(byte) 0x38,(byte) 0x1,(byte) 0x60,(byte) 0x38,(byte) 0x1,(byte) 0x60,(byte) 0x30,(byte) 0x0,(byte) 0xe0, -(byte) 0xf0,(byte) 0x0,(byte) 0xf8, -}; - -static final BitmapCharRec ch77 = new BitmapCharRec(21,17,-1,0,22,ch77data); - -/* char: 0x4c 'L' */ - -static final byte[] ch76data = { -(byte) 0xff,(byte) 0xf8,(byte) 0x30,(byte) 0x18,(byte) 0x30,(byte) 0x8,(byte) 0x30,(byte) 0x8,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0, -(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0, -(byte) 0xfc,(byte) 0x0, -}; - -static final BitmapCharRec ch76 = new BitmapCharRec(13,17,-1,0,14,ch76data); - -/* char: 0x4b 'K' */ - -static final byte[] ch75data = { -(byte) 0xfc,(byte) 0x1f,(byte) 0x30,(byte) 0xe,(byte) 0x30,(byte) 0x1c,(byte) 0x30,(byte) 0x38,(byte) 0x30,(byte) 0x70,(byte) 0x30,(byte) 0xe0,(byte) 0x31,(byte) 0xc0,(byte) 0x33,(byte) 0x80, -(byte) 0x3f,(byte) 0x0,(byte) 0x3e,(byte) 0x0,(byte) 0x33,(byte) 0x0,(byte) 0x31,(byte) 0x80,(byte) 0x30,(byte) 0xc0,(byte) 0x30,(byte) 0x60,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x18, -(byte) 0xfc,(byte) 0x7e, -}; - -static final BitmapCharRec ch75 = new BitmapCharRec(16,17,-1,0,17,ch75data); - -/* char: 0x4a 'J' */ - -static final byte[] ch74data = { -(byte) 0x78,(byte) 0x0,(byte) 0xcc,(byte) 0x0,(byte) 0xc6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0, -(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0, -(byte) 0x1f,(byte) 0x80, -}; - -static final BitmapCharRec ch74 = new BitmapCharRec(9,17,-1,0,11,ch74data); - -/* char: 0x49 'I' */ - -static final byte[] ch73data = { -(byte) 0xfc,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30, -(byte) 0xfc, -}; - -static final BitmapCharRec ch73 = new BitmapCharRec(6,17,-1,0,8,ch73data); - -/* char: 0x48 'H' */ - -static final byte[] ch72data = { -(byte) 0xfc,(byte) 0x1f,(byte) 0x80,(byte) 0x30,(byte) 0x6,(byte) 0x0,(byte) 0x30,(byte) 0x6,(byte) 0x0,(byte) 0x30,(byte) 0x6,(byte) 0x0,(byte) 0x30,(byte) 0x6,(byte) 0x0,(byte) 0x30, -(byte) 0x6,(byte) 0x0,(byte) 0x30,(byte) 0x6,(byte) 0x0,(byte) 0x30,(byte) 0x6,(byte) 0x0,(byte) 0x3f,(byte) 0xfe,(byte) 0x0,(byte) 0x30,(byte) 0x6,(byte) 0x0,(byte) 0x30,(byte) 0x6, -(byte) 0x0,(byte) 0x30,(byte) 0x6,(byte) 0x0,(byte) 0x30,(byte) 0x6,(byte) 0x0,(byte) 0x30,(byte) 0x6,(byte) 0x0,(byte) 0x30,(byte) 0x6,(byte) 0x0,(byte) 0x30,(byte) 0x6,(byte) 0x0, -(byte) 0xfc,(byte) 0x1f,(byte) 0x80, -}; - -static final BitmapCharRec ch72 = new BitmapCharRec(17,17,-1,0,19,ch72data); - -/* char: 0x47 'G' */ - -static final byte[] ch71data = { -(byte) 0x7,(byte) 0xe0,(byte) 0x1e,(byte) 0x38,(byte) 0x38,(byte) 0x1c,(byte) 0x60,(byte) 0xc,(byte) 0x60,(byte) 0xc,(byte) 0xc0,(byte) 0xc,(byte) 0xc0,(byte) 0xc,(byte) 0xc0,(byte) 0x3f, -(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0x60,(byte) 0x4,(byte) 0x60,(byte) 0x4,(byte) 0x38,(byte) 0xc,(byte) 0x1c,(byte) 0x3c, -(byte) 0x7,(byte) 0xe4, -}; - -static final BitmapCharRec ch71 = new BitmapCharRec(16,17,-1,0,18,ch71data); - -/* char: 0x46 'F' */ - -static final byte[] ch70data = { -(byte) 0xfc,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x20,(byte) 0x30,(byte) 0x20, -(byte) 0x3f,(byte) 0xe0,(byte) 0x30,(byte) 0x20,(byte) 0x30,(byte) 0x20,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x10,(byte) 0x30,(byte) 0x10,(byte) 0x30,(byte) 0x30, -(byte) 0xff,(byte) 0xf0, -}; - -static final BitmapCharRec ch70 = new BitmapCharRec(12,17,-1,0,14,ch70data); - -/* char: 0x45 'E' */ - -static final byte[] ch69data = { -(byte) 0xff,(byte) 0xf8,(byte) 0x30,(byte) 0x18,(byte) 0x30,(byte) 0x8,(byte) 0x30,(byte) 0x8,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x40,(byte) 0x30,(byte) 0x40, -(byte) 0x3f,(byte) 0xc0,(byte) 0x30,(byte) 0x40,(byte) 0x30,(byte) 0x40,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x30,(byte) 0x10,(byte) 0x30,(byte) 0x10,(byte) 0x30,(byte) 0x30, -(byte) 0xff,(byte) 0xf0, -}; - -static final BitmapCharRec ch69 = new BitmapCharRec(13,17,-1,0,15,ch69data); - -/* char: 0x44 'D' */ - -static final byte[] ch68data = { -(byte) 0xff,(byte) 0xc0,(byte) 0x30,(byte) 0x70,(byte) 0x30,(byte) 0x38,(byte) 0x30,(byte) 0xc,(byte) 0x30,(byte) 0xc,(byte) 0x30,(byte) 0x6,(byte) 0x30,(byte) 0x6,(byte) 0x30,(byte) 0x6, -(byte) 0x30,(byte) 0x6,(byte) 0x30,(byte) 0x6,(byte) 0x30,(byte) 0x6,(byte) 0x30,(byte) 0x6,(byte) 0x30,(byte) 0xc,(byte) 0x30,(byte) 0xc,(byte) 0x30,(byte) 0x38,(byte) 0x30,(byte) 0x70, -(byte) 0xff,(byte) 0xc0, -}; - -static final BitmapCharRec ch68 = new BitmapCharRec(15,17,-1,0,17,ch68data); - -/* char: 0x43 'C' */ - -static final byte[] ch67data = { -(byte) 0x7,(byte) 0xe0,(byte) 0x1e,(byte) 0x38,(byte) 0x38,(byte) 0x8,(byte) 0x60,(byte) 0x4,(byte) 0x60,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0, -(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0x60,(byte) 0x4,(byte) 0x60,(byte) 0x4,(byte) 0x38,(byte) 0xc,(byte) 0x1c,(byte) 0x3c, -(byte) 0x7,(byte) 0xe4, -}; - -static final BitmapCharRec ch67 = new BitmapCharRec(14,17,-1,0,16,ch67data); - -/* char: 0x42 'B' */ - -static final byte[] ch66data = { -(byte) 0xff,(byte) 0xe0,(byte) 0x30,(byte) 0x78,(byte) 0x30,(byte) 0x18,(byte) 0x30,(byte) 0xc,(byte) 0x30,(byte) 0xc,(byte) 0x30,(byte) 0xc,(byte) 0x30,(byte) 0x18,(byte) 0x30,(byte) 0x38, -(byte) 0x3f,(byte) 0xe0,(byte) 0x30,(byte) 0x40,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x18,(byte) 0x30,(byte) 0x18,(byte) 0x30,(byte) 0x18,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x70, -(byte) 0xff,(byte) 0xc0, -}; - -static final BitmapCharRec ch66 = new BitmapCharRec(14,17,-1,0,16,ch66data); - -/* char: 0x41 'A' */ - -static final byte[] ch65data = { -(byte) 0xfc,(byte) 0x1f,(byte) 0x80,(byte) 0x30,(byte) 0x6,(byte) 0x0,(byte) 0x10,(byte) 0x6,(byte) 0x0,(byte) 0x10,(byte) 0xc,(byte) 0x0,(byte) 0x18,(byte) 0xc,(byte) 0x0,(byte) 0x8, -(byte) 0xc,(byte) 0x0,(byte) 0xf,(byte) 0xf8,(byte) 0x0,(byte) 0xc,(byte) 0x18,(byte) 0x0,(byte) 0x4,(byte) 0x18,(byte) 0x0,(byte) 0x4,(byte) 0x30,(byte) 0x0,(byte) 0x6,(byte) 0x30, -(byte) 0x0,(byte) 0x2,(byte) 0x30,(byte) 0x0,(byte) 0x2,(byte) 0x60,(byte) 0x0,(byte) 0x1,(byte) 0x60,(byte) 0x0,(byte) 0x1,(byte) 0xc0,(byte) 0x0,(byte) 0x1,(byte) 0xc0,(byte) 0x0, -(byte) 0x0,(byte) 0x80,(byte) 0x0, -}; - -static final BitmapCharRec ch65 = new BitmapCharRec(17,17,0,0,17,ch65data); - -/* char: 0x40 '@' */ - -static final byte[] ch64data = { -(byte) 0x3,(byte) 0xf0,(byte) 0x0,(byte) 0xe,(byte) 0xc,(byte) 0x0,(byte) 0x18,(byte) 0x0,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x0,(byte) 0x61,(byte) 0xde,(byte) 0x0,(byte) 0x63, -(byte) 0x7b,(byte) 0x0,(byte) 0xc6,(byte) 0x39,(byte) 0x80,(byte) 0xc6,(byte) 0x18,(byte) 0x80,(byte) 0xc6,(byte) 0x18,(byte) 0xc0,(byte) 0xc6,(byte) 0x18,(byte) 0x40,(byte) 0xc6,(byte) 0xc, -(byte) 0x40,(byte) 0xc3,(byte) 0xc,(byte) 0x40,(byte) 0xc3,(byte) 0x8c,(byte) 0x40,(byte) 0xe1,(byte) 0xfc,(byte) 0x40,(byte) 0x60,(byte) 0xec,(byte) 0xc0,(byte) 0x70,(byte) 0x0,(byte) 0x80, -(byte) 0x38,(byte) 0x1,(byte) 0x80,(byte) 0x1c,(byte) 0x3,(byte) 0x0,(byte) 0xf,(byte) 0xe,(byte) 0x0,(byte) 0x3,(byte) 0xf8,(byte) 0x0, -}; - -static final BitmapCharRec ch64 = new BitmapCharRec(18,20,-2,3,22,ch64data); - -/* char: 0x3f '?' */ - -static final byte[] ch63data = { -(byte) 0x30,(byte) 0x30,(byte) 0x0,(byte) 0x0,(byte) 0x10,(byte) 0x10,(byte) 0x10,(byte) 0x18,(byte) 0x18,(byte) 0xc,(byte) 0xe,(byte) 0x7,(byte) 0xc3,(byte) 0xc3,(byte) 0x83,(byte) 0xc6, -(byte) 0x7c, -}; - -static final BitmapCharRec ch63 = new BitmapCharRec(8,17,-2,0,11,ch63data); - -/* char: 0x3e '>' */ - -static final byte[] ch62data = { -(byte) 0xc0,(byte) 0x0,(byte) 0x70,(byte) 0x0,(byte) 0x1c,(byte) 0x0,(byte) 0x7,(byte) 0x0,(byte) 0x1,(byte) 0xc0,(byte) 0x0,(byte) 0x60,(byte) 0x1,(byte) 0xc0,(byte) 0x7,(byte) 0x0, -(byte) 0x1c,(byte) 0x0,(byte) 0x70,(byte) 0x0,(byte) 0xc0,(byte) 0x0, -}; - -static final BitmapCharRec ch62 = new BitmapCharRec(11,11,-1,-1,13,ch62data); - -/* char: 0x3d '=' */ - -static final byte[] ch61data = { -(byte) 0xff,(byte) 0xf0,(byte) 0xff,(byte) 0xf0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0xff,(byte) 0xf0,(byte) 0xff,(byte) 0xf0, -}; - -static final BitmapCharRec ch61 = new BitmapCharRec(12,6,-1,-4,14,ch61data); - -/* char: 0x3c '<' */ - -static final byte[] ch60data = { -(byte) 0x0,(byte) 0x60,(byte) 0x1,(byte) 0xc0,(byte) 0x7,(byte) 0x0,(byte) 0x1c,(byte) 0x0,(byte) 0x70,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0x70,(byte) 0x0,(byte) 0x1c,(byte) 0x0, -(byte) 0x7,(byte) 0x0,(byte) 0x1,(byte) 0xc0,(byte) 0x0,(byte) 0x60, -}; - -static final BitmapCharRec ch60 = new BitmapCharRec(11,11,-1,-1,13,ch60data); - -/* char: 0x3b ';' */ - -static final byte[] ch59data = { -(byte) 0xc0,(byte) 0x60,(byte) 0x20,(byte) 0xe0,(byte) 0xc0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch59 = new BitmapCharRec(3,14,-2,3,7,ch59data); - -/* char: 0x3a ':' */ - -static final byte[] ch58data = { -(byte) 0xc0,(byte) 0xc0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch58 = new BitmapCharRec(2,11,-2,0,6,ch58data); - -/* char: 0x39 '9' */ - -static final byte[] ch57data = { -(byte) 0xf0,(byte) 0x0,(byte) 0x1c,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x3,(byte) 0x0,(byte) 0x3,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x1d,(byte) 0x80,(byte) 0x73,(byte) 0xc0, -(byte) 0x61,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc1,(byte) 0xc0,(byte) 0x61,(byte) 0x80,(byte) 0x77,(byte) 0x80, -(byte) 0x1e,(byte) 0x0, -}; - -static final BitmapCharRec ch57 = new BitmapCharRec(10,17,-1,0,12,ch57data); - -/* char: 0x38 '8' */ - -static final byte[] ch56data = { -(byte) 0x1e,(byte) 0x0,(byte) 0x73,(byte) 0x80,(byte) 0xe1,(byte) 0x80,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0x41,(byte) 0xc0,(byte) 0x61,(byte) 0x80, -(byte) 0x37,(byte) 0x0,(byte) 0x1e,(byte) 0x0,(byte) 0x1e,(byte) 0x0,(byte) 0x33,(byte) 0x0,(byte) 0x61,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0x33,(byte) 0x0, -(byte) 0x1e,(byte) 0x0, -}; - -static final BitmapCharRec ch56 = new BitmapCharRec(10,17,-1,0,12,ch56data); - -/* char: 0x37 '7' */ - -static final byte[] ch55data = { -(byte) 0x18,(byte) 0x0,(byte) 0x18,(byte) 0x0,(byte) 0xc,(byte) 0x0,(byte) 0xc,(byte) 0x0,(byte) 0xc,(byte) 0x0,(byte) 0x4,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0, -(byte) 0x2,(byte) 0x0,(byte) 0x3,(byte) 0x0,(byte) 0x3,(byte) 0x0,(byte) 0x1,(byte) 0x0,(byte) 0x1,(byte) 0x80,(byte) 0x81,(byte) 0x80,(byte) 0xc0,(byte) 0xc0,(byte) 0xff,(byte) 0xc0, -(byte) 0x7f,(byte) 0xc0, -}; - -static final BitmapCharRec ch55 = new BitmapCharRec(10,17,-1,0,12,ch55data); - -/* char: 0x36 '6' */ - -static final byte[] ch54data = { -(byte) 0x1e,(byte) 0x0,(byte) 0x7b,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0xe0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0, -(byte) 0xc1,(byte) 0x80,(byte) 0xf3,(byte) 0x80,(byte) 0xee,(byte) 0x0,(byte) 0x60,(byte) 0x0,(byte) 0x70,(byte) 0x0,(byte) 0x30,(byte) 0x0,(byte) 0x18,(byte) 0x0,(byte) 0xe,(byte) 0x0, -(byte) 0x3,(byte) 0xc0, -}; - -static final BitmapCharRec ch54 = new BitmapCharRec(10,17,-1,0,12,ch54data); - -/* char: 0x35 '5' */ - -static final byte[] ch53data = { -(byte) 0x7e,(byte) 0x0,(byte) 0xe3,(byte) 0x80,(byte) 0xc1,(byte) 0x80,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x0,(byte) 0xc0,(byte) 0x1,(byte) 0xc0, -(byte) 0x3,(byte) 0x80,(byte) 0xf,(byte) 0x80,(byte) 0x7e,(byte) 0x0,(byte) 0x78,(byte) 0x0,(byte) 0x60,(byte) 0x0,(byte) 0x20,(byte) 0x0,(byte) 0x20,(byte) 0x0,(byte) 0x1f,(byte) 0x80, -(byte) 0x1f,(byte) 0xc0, -}; - -static final BitmapCharRec ch53 = new BitmapCharRec(10,17,-1,0,12,ch53data); - -/* char: 0x34 '4' */ - -static final byte[] ch52data = { -(byte) 0x3,(byte) 0x0,(byte) 0x3,(byte) 0x0,(byte) 0x3,(byte) 0x0,(byte) 0x3,(byte) 0x0,(byte) 0xff,(byte) 0xc0,(byte) 0xff,(byte) 0xc0,(byte) 0xc3,(byte) 0x0,(byte) 0x43,(byte) 0x0, -(byte) 0x63,(byte) 0x0,(byte) 0x23,(byte) 0x0,(byte) 0x33,(byte) 0x0,(byte) 0x13,(byte) 0x0,(byte) 0x1b,(byte) 0x0,(byte) 0xb,(byte) 0x0,(byte) 0x7,(byte) 0x0,(byte) 0x7,(byte) 0x0, -(byte) 0x3,(byte) 0x0, -}; - -static final BitmapCharRec ch52 = new BitmapCharRec(10,17,-1,0,12,ch52data); - -/* char: 0x33 '3' */ - -static final byte[] ch51data = { -(byte) 0x78,(byte) 0x0,(byte) 0xe6,(byte) 0x0,(byte) 0xc3,(byte) 0x0,(byte) 0x1,(byte) 0x0,(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x3,(byte) 0x80, -(byte) 0x7,(byte) 0x0,(byte) 0x1e,(byte) 0x0,(byte) 0xc,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x83,(byte) 0x0,(byte) 0x83,(byte) 0x0,(byte) 0x47,(byte) 0x0,(byte) 0x7e,(byte) 0x0, -(byte) 0x1c,(byte) 0x0, -}; - -static final BitmapCharRec ch51 = new BitmapCharRec(9,17,-1,0,12,ch51data); - -/* char: 0x32 '2' */ - -static final byte[] ch50data = { -(byte) 0xff,(byte) 0x80,(byte) 0xff,(byte) 0xc0,(byte) 0x60,(byte) 0x40,(byte) 0x30,(byte) 0x0,(byte) 0x18,(byte) 0x0,(byte) 0xc,(byte) 0x0,(byte) 0x4,(byte) 0x0,(byte) 0x6,(byte) 0x0, -(byte) 0x3,(byte) 0x0,(byte) 0x3,(byte) 0x0,(byte) 0x1,(byte) 0x80,(byte) 0x1,(byte) 0x80,(byte) 0x81,(byte) 0x80,(byte) 0x81,(byte) 0x80,(byte) 0x43,(byte) 0x80,(byte) 0x7f,(byte) 0x0, -(byte) 0x1c,(byte) 0x0, -}; - -static final BitmapCharRec ch50 = new BitmapCharRec(10,17,-1,0,12,ch50data); - -/* char: 0x31 '1' */ - -static final byte[] ch49data = { -(byte) 0xff,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x18,(byte) 0x78,(byte) 0x18, -(byte) 0x8, -}; - -static final BitmapCharRec ch49 = new BitmapCharRec(8,17,-2,0,12,ch49data); - -/* char: 0x30 '0' */ - -static final byte[] ch48data = { -(byte) 0x1e,(byte) 0x0,(byte) 0x33,(byte) 0x0,(byte) 0x61,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0xe1,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0, -(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0x61,(byte) 0x80,(byte) 0x61,(byte) 0x80,(byte) 0x33,(byte) 0x0, -(byte) 0x1e,(byte) 0x0, -}; - -static final BitmapCharRec ch48 = new BitmapCharRec(10,17,-1,0,12,ch48data); - -/* char: 0x2f '/' */ - -static final byte[] ch47data = { -(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0x60,(byte) 0x60,(byte) 0x20,(byte) 0x30,(byte) 0x30,(byte) 0x10,(byte) 0x18,(byte) 0x18,(byte) 0x8,(byte) 0xc,(byte) 0xc,(byte) 0x4,(byte) 0x6, -(byte) 0x6,(byte) 0x3,(byte) 0x3,(byte) 0x3, -}; - -static final BitmapCharRec ch47 = new BitmapCharRec(8,20,1,3,7,ch47data); - -/* char: 0x2e '.' */ - -static final byte[] ch46data = { -(byte) 0xc0,(byte) 0xc0, -}; - -static final BitmapCharRec ch46 = new BitmapCharRec(2,2,-2,0,6,ch46data); - -/* char: 0x2d '-' */ - -static final byte[] ch45data = { -(byte) 0xff,(byte) 0xf0,(byte) 0xff,(byte) 0xf0, -}; - -static final BitmapCharRec ch45 = new BitmapCharRec(12,2,-1,-6,14,ch45data); - -/* char: 0x2c ',' */ - -static final byte[] ch44data = { -(byte) 0xc0,(byte) 0x60,(byte) 0x20,(byte) 0xe0,(byte) 0xc0, -}; - -static final BitmapCharRec ch44 = new BitmapCharRec(3,5,-2,3,7,ch44data); - -/* char: 0x2b '+' */ - -static final byte[] ch43data = { -(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0xff,(byte) 0xf0,(byte) 0xff,(byte) 0xf0,(byte) 0x6,(byte) 0x0, -(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0,(byte) 0x6,(byte) 0x0, -}; - -static final BitmapCharRec ch43 = new BitmapCharRec(12,12,-1,-1,14,ch43data); - -/* char: 0x2a '*' */ - -static final byte[] ch42data = { -(byte) 0x8,(byte) 0x0,(byte) 0x1c,(byte) 0x0,(byte) 0xc9,(byte) 0x80,(byte) 0xeb,(byte) 0x80,(byte) 0x1c,(byte) 0x0,(byte) 0xeb,(byte) 0x80,(byte) 0xc9,(byte) 0x80,(byte) 0x1c,(byte) 0x0, -(byte) 0x8,(byte) 0x0, -}; - -static final BitmapCharRec ch42 = new BitmapCharRec(9,9,-2,-8,12,ch42data); - -/* char: 0x29 ')' */ - -static final byte[] ch41data = { -(byte) 0x80,(byte) 0x40,(byte) 0x20,(byte) 0x30,(byte) 0x10,(byte) 0x18,(byte) 0x18,(byte) 0xc,(byte) 0xc,(byte) 0xc,(byte) 0xc,(byte) 0xc,(byte) 0xc,(byte) 0xc,(byte) 0xc,(byte) 0x18, -(byte) 0x18,(byte) 0x10,(byte) 0x30,(byte) 0x20,(byte) 0x40,(byte) 0x80, -}; - -static final BitmapCharRec ch41 = new BitmapCharRec(6,22,-1,5,8,ch41data); - -/* char: 0x28 '(' */ - -static final byte[] ch40data = { -(byte) 0x4,(byte) 0x8,(byte) 0x10,(byte) 0x30,(byte) 0x20,(byte) 0x60,(byte) 0x60,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0x60, -(byte) 0x60,(byte) 0x20,(byte) 0x30,(byte) 0x10,(byte) 0x8,(byte) 0x4, -}; - -static final BitmapCharRec ch40 = new BitmapCharRec(6,22,-1,5,8,ch40data); - -/* char: 0x27 ''' */ - -static final byte[] ch39data = { -(byte) 0xc0,(byte) 0x60,(byte) 0x20,(byte) 0xe0,(byte) 0xc0, -}; - -static final BitmapCharRec ch39 = new BitmapCharRec(3,5,-3,-12,8,ch39data); - -/* char: 0x26 '&' */ - -static final byte[] ch38data = { -(byte) 0x3c,(byte) 0x3c,(byte) 0x7f,(byte) 0x7e,(byte) 0xe1,(byte) 0xe1,(byte) 0xc0,(byte) 0xc0,(byte) 0xc1,(byte) 0xc0,(byte) 0xc1,(byte) 0xa0,(byte) 0x63,(byte) 0x20,(byte) 0x37,(byte) 0x10, -(byte) 0x1e,(byte) 0x18,(byte) 0xe,(byte) 0x3e,(byte) 0xf,(byte) 0x0,(byte) 0x1d,(byte) 0x80,(byte) 0x18,(byte) 0xc0,(byte) 0x18,(byte) 0x40,(byte) 0x18,(byte) 0x40,(byte) 0xc,(byte) 0xc0, -(byte) 0x7,(byte) 0x80, -}; - -static final BitmapCharRec ch38 = new BitmapCharRec(16,17,-1,0,18,ch38data); - -/* char: 0x25 '%' */ - -static final byte[] ch37data = { -(byte) 0x30,(byte) 0x3c,(byte) 0x0,(byte) 0x18,(byte) 0x72,(byte) 0x0,(byte) 0xc,(byte) 0x61,(byte) 0x0,(byte) 0x4,(byte) 0x60,(byte) 0x80,(byte) 0x6,(byte) 0x60,(byte) 0x80,(byte) 0x3, -(byte) 0x30,(byte) 0x80,(byte) 0x1,(byte) 0x19,(byte) 0x80,(byte) 0x1,(byte) 0x8f,(byte) 0x0,(byte) 0x78,(byte) 0xc0,(byte) 0x0,(byte) 0xe4,(byte) 0x40,(byte) 0x0,(byte) 0xc2,(byte) 0x60, -(byte) 0x0,(byte) 0xc1,(byte) 0x30,(byte) 0x0,(byte) 0xc1,(byte) 0x10,(byte) 0x0,(byte) 0x61,(byte) 0x18,(byte) 0x0,(byte) 0x33,(byte) 0xfc,(byte) 0x0,(byte) 0x1e,(byte) 0xc,(byte) 0x0, -}; - -static final BitmapCharRec ch37 = new BitmapCharRec(17,16,-1,0,19,ch37data); - -/* char: 0x24 '$' */ - -static final byte[] ch36data = { -(byte) 0x4,(byte) 0x0,(byte) 0x4,(byte) 0x0,(byte) 0x3f,(byte) 0x0,(byte) 0xe5,(byte) 0xc0,(byte) 0xc4,(byte) 0xc0,(byte) 0x84,(byte) 0x60,(byte) 0x84,(byte) 0x60,(byte) 0x4,(byte) 0x60, -(byte) 0x4,(byte) 0xe0,(byte) 0x7,(byte) 0xc0,(byte) 0x7,(byte) 0x80,(byte) 0x1e,(byte) 0x0,(byte) 0x3c,(byte) 0x0,(byte) 0x74,(byte) 0x0,(byte) 0x64,(byte) 0x0,(byte) 0x64,(byte) 0x20, -(byte) 0x64,(byte) 0x60,(byte) 0x34,(byte) 0xe0,(byte) 0x1f,(byte) 0x80,(byte) 0x4,(byte) 0x0,(byte) 0x4,(byte) 0x0, -}; - -static final BitmapCharRec ch36 = new BitmapCharRec(11,21,0,2,12,ch36data); - -/* char: 0x23 '#' */ - -static final byte[] ch35data = { -(byte) 0x22,(byte) 0x0,(byte) 0x22,(byte) 0x0,(byte) 0x22,(byte) 0x0,(byte) 0x22,(byte) 0x0,(byte) 0x22,(byte) 0x0,(byte) 0xff,(byte) 0xc0,(byte) 0xff,(byte) 0xc0,(byte) 0x11,(byte) 0x0, -(byte) 0x11,(byte) 0x0,(byte) 0x11,(byte) 0x0,(byte) 0x7f,(byte) 0xe0,(byte) 0x7f,(byte) 0xe0,(byte) 0x8,(byte) 0x80,(byte) 0x8,(byte) 0x80,(byte) 0x8,(byte) 0x80,(byte) 0x8,(byte) 0x80, -(byte) 0x8,(byte) 0x80, -}; - -static final BitmapCharRec ch35 = new BitmapCharRec(11,17,-1,0,13,ch35data); - -/* char: 0x22 '"' */ - -static final byte[] ch34data = { -(byte) 0x88,(byte) 0xcc,(byte) 0xcc,(byte) 0xcc,(byte) 0xcc, -}; - -static final BitmapCharRec ch34 = new BitmapCharRec(6,5,-1,-12,10,ch34data); - -/* char: 0x21 '!' */ - -static final byte[] ch33data = { -(byte) 0xc0,(byte) 0xc0,(byte) 0x0,(byte) 0x0,(byte) 0x0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0,(byte) 0xc0, -(byte) 0xc0, -}; - -static final BitmapCharRec ch33 = new BitmapCharRec(2,17,-3,0,8,ch33data); - -/* char: 0x20 ' ' */ - -static final BitmapCharRec ch32 = new BitmapCharRec(0,0,0,0,6,null); - -static final BitmapCharRec[] chars = { -ch32, -ch33, -ch34, -ch35, -ch36, -ch37, -ch38, -ch39, -ch40, -ch41, -ch42, -ch43, -ch44, -ch45, -ch46, -ch47, -ch48, -ch49, -ch50, -ch51, -ch52, -ch53, -ch54, -ch55, -ch56, -ch57, -ch58, -ch59, -ch60, -ch61, -ch62, -ch63, -ch64, -ch65, -ch66, -ch67, -ch68, -ch69, -ch70, -ch71, -ch72, -ch73, -ch74, -ch75, -ch76, -ch77, -ch78, -ch79, -ch80, -ch81, -ch82, -ch83, -ch84, -ch85, -ch86, -ch87, -ch88, -ch89, -ch90, -ch91, -ch92, -ch93, -ch94, -ch95, -ch96, -ch97, -ch98, -ch99, -ch100, -ch101, -ch102, -ch103, -ch104, -ch105, -ch106, -ch107, -ch108, -ch109, -ch110, -ch111, -ch112, -ch113, -ch114, -ch115, -ch116, -ch117, -ch118, -ch119, -ch120, -ch121, -ch122, -ch123, -ch124, -ch125, -ch126, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -null, -ch160, -ch161, -ch162, -ch163, -ch164, -ch165, -ch166, -ch167, -ch168, -ch169, -ch170, -ch171, -ch172, -ch173, -ch174, -ch175, -ch176, -ch177, -ch178, -ch179, -ch180, -ch181, -ch182, -ch183, -ch184, -ch185, -ch186, -ch187, -ch188, -ch189, -ch190, -ch191, -ch192, -ch193, -ch194, -ch195, -ch196, -ch197, -ch198, -ch199, -ch200, -ch201, -ch202, -ch203, -ch204, -ch205, -ch206, -ch207, -ch208, -ch209, -ch210, -ch211, -ch212, -ch213, -ch214, -ch215, -ch216, -ch217, -ch218, -ch219, -ch220, -ch221, -ch222, -ch223, -ch224, -ch225, -ch226, -ch227, -ch228, -ch229, -ch230, -ch231, -ch232, -ch233, -ch234, -ch235, -ch236, -ch237, -ch238, -ch239, -ch240, -ch241, -ch242, -ch243, -ch244, -ch245, -ch246, -ch247, -ch248, -ch249, -ch250, -ch251, -ch252, -ch253, -ch254, -ch255, -}; - - public static final BitmapFontRec glutBitmapTimesRoman24 = new BitmapFontRec("-adobe-times-medium-r-normal--24-240-75-75-p-124-iso8859-1", - 224, - 32, - chars); -} diff --git a/src/jogl/classes/com/sun/opengl/util/gl2/GLUTStrokeMonoRoman.java b/src/jogl/classes/com/sun/opengl/util/gl2/GLUTStrokeMonoRoman.java deleted file mode 100644 index 79e4b70f8..000000000 --- a/src/jogl/classes/com/sun/opengl/util/gl2/GLUTStrokeMonoRoman.java +++ /dev/null @@ -1,2491 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.gl2; - -class GLUTStrokeMonoRoman { - -/* GENERATED FILE -- DO NOT MODIFY */ - -/* char: 33 '!' */ - -static final CoordRec char33_stroke0[] = { - new CoordRec((float) 52.381, (float) 100 ), - new CoordRec((float) 52.381, (float) 33.3333 ), -}; - -static final CoordRec char33_stroke1[] = { - new CoordRec((float) 52.381, (float) 9.5238 ), - new CoordRec((float) 47.6191, (float) 4.7619 ), - new CoordRec((float) 52.381, (float) 0 ), - new CoordRec((float) 57.1429, (float) 4.7619 ), - new CoordRec((float) 52.381, (float) 9.5238 ), -}; - -static final StrokeRec char33[] = { - new StrokeRec( 2, char33_stroke0 ), - new StrokeRec( 5, char33_stroke1 ), -}; - -/* char: 34 '"' */ - -static final CoordRec char34_stroke0[] = { - new CoordRec((float) 33.3334, (float) 100 ), - new CoordRec((float) 33.3334, (float) 66.6667 ), -}; - -static final CoordRec char34_stroke1[] = { - new CoordRec((float) 71.4286, (float) 100 ), - new CoordRec((float) 71.4286, (float) 66.6667 ), -}; - -static final StrokeRec char34[] = { - new StrokeRec( 2, char34_stroke0 ), - new StrokeRec( 2, char34_stroke1 ), -}; - -/* char: 35 '#' */ - -static final CoordRec char35_stroke0[] = { - new CoordRec((float) 54.7619, (float) 119.048 ), - new CoordRec((float) 21.4286, (float) -33.3333 ), -}; - -static final CoordRec char35_stroke1[] = { - new CoordRec((float) 83.3334, (float) 119.048 ), - new CoordRec((float) 50, (float) -33.3333 ), -}; - -static final CoordRec char35_stroke2[] = { - new CoordRec((float) 21.4286, (float) 57.1429 ), - new CoordRec((float) 88.0952, (float) 57.1429 ), -}; - -static final CoordRec char35_stroke3[] = { - new CoordRec((float) 16.6667, (float) 28.5714 ), - new CoordRec((float) 83.3334, (float) 28.5714 ), -}; - -static final StrokeRec char35[] = { - new StrokeRec( 2, char35_stroke0 ), - new StrokeRec( 2, char35_stroke1 ), - new StrokeRec( 2, char35_stroke2 ), - new StrokeRec( 2, char35_stroke3 ), -}; - -/* char: 36 '$' */ - -static final CoordRec char36_stroke0[] = { - new CoordRec((float) 42.8571, (float) 119.048 ), - new CoordRec((float) 42.8571, (float) -19.0476 ), -}; - -static final CoordRec char36_stroke1[] = { - new CoordRec((float) 61.9047, (float) 119.048 ), - new CoordRec((float) 61.9047, (float) -19.0476 ), -}; - -static final CoordRec char36_stroke2[] = { - new CoordRec((float) 85.7143, (float) 85.7143 ), - new CoordRec((float) 76.1905, (float) 95.2381 ), - new CoordRec((float) 61.9047, (float) 100 ), - new CoordRec((float) 42.8571, (float) 100 ), - new CoordRec((float) 28.5714, (float) 95.2381 ), - new CoordRec((float) 19.0476, (float) 85.7143 ), - new CoordRec((float) 19.0476, (float) 76.1905 ), - new CoordRec((float) 23.8095, (float) 66.6667 ), - new CoordRec((float) 28.5714, (float) 61.9048 ), - new CoordRec((float) 38.0952, (float) 57.1429 ), - new CoordRec((float) 66.6666, (float) 47.619 ), - new CoordRec((float) 76.1905, (float) 42.8571 ), - new CoordRec((float) 80.9524, (float) 38.0952 ), - new CoordRec((float) 85.7143, (float) 28.5714 ), - new CoordRec((float) 85.7143, (float) 14.2857 ), - new CoordRec((float) 76.1905, (float) 4.7619 ), - new CoordRec((float) 61.9047, (float) 0 ), - new CoordRec((float) 42.8571, (float) 0 ), - new CoordRec((float) 28.5714, (float) 4.7619 ), - new CoordRec((float) 19.0476, (float) 14.2857 ), -}; - -static final StrokeRec char36[] = { - new StrokeRec( 2, char36_stroke0 ), - new StrokeRec( 2, char36_stroke1 ), - new StrokeRec( 20, char36_stroke2 ), -}; - -/* char: 37 '%' */ - -static final CoordRec char37_stroke0[] = { - new CoordRec((float) 95.2381, (float) 100 ), - new CoordRec((float) 9.5238, (float) 0 ), -}; - -static final CoordRec char37_stroke1[] = { - new CoordRec((float) 33.3333, (float) 100 ), - new CoordRec((float) 42.8571, (float) 90.4762 ), - new CoordRec((float) 42.8571, (float) 80.9524 ), - new CoordRec((float) 38.0952, (float) 71.4286 ), - new CoordRec((float) 28.5714, (float) 66.6667 ), - new CoordRec((float) 19.0476, (float) 66.6667 ), - new CoordRec((float) 9.5238, (float) 76.1905 ), - new CoordRec((float) 9.5238, (float) 85.7143 ), - new CoordRec((float) 14.2857, (float) 95.2381 ), - new CoordRec((float) 23.8095, (float) 100 ), - new CoordRec((float) 33.3333, (float) 100 ), - new CoordRec((float) 42.8571, (float) 95.2381 ), - new CoordRec((float) 57.1428, (float) 90.4762 ), - new CoordRec((float) 71.4286, (float) 90.4762 ), - new CoordRec((float) 85.7143, (float) 95.2381 ), - new CoordRec((float) 95.2381, (float) 100 ), -}; - -static final CoordRec char37_stroke2[] = { - new CoordRec((float) 76.1905, (float) 33.3333 ), - new CoordRec((float) 66.6667, (float) 28.5714 ), - new CoordRec((float) 61.9048, (float) 19.0476 ), - new CoordRec((float) 61.9048, (float) 9.5238 ), - new CoordRec((float) 71.4286, (float) 0 ), - new CoordRec((float) 80.9524, (float) 0 ), - new CoordRec((float) 90.4762, (float) 4.7619 ), - new CoordRec((float) 95.2381, (float) 14.2857 ), - new CoordRec((float) 95.2381, (float) 23.8095 ), - new CoordRec((float) 85.7143, (float) 33.3333 ), - new CoordRec((float) 76.1905, (float) 33.3333 ), -}; - -static final StrokeRec char37[] = { - new StrokeRec( 2, char37_stroke0 ), - new StrokeRec( 16, char37_stroke1 ), - new StrokeRec( 11, char37_stroke2 ), -}; - -/* char: 38 '&' */ - -static final CoordRec char38_stroke0[] = { - new CoordRec((float) 100, (float) 57.1429 ), - new CoordRec((float) 100, (float) 61.9048 ), - new CoordRec((float) 95.2381, (float) 66.6667 ), - new CoordRec((float) 90.4762, (float) 66.6667 ), - new CoordRec((float) 85.7143, (float) 61.9048 ), - new CoordRec((float) 80.9524, (float) 52.381 ), - new CoordRec((float) 71.4286, (float) 28.5714 ), - new CoordRec((float) 61.9048, (float) 14.2857 ), - new CoordRec((float) 52.3809, (float) 4.7619 ), - new CoordRec((float) 42.8571, (float) 0 ), - new CoordRec((float) 23.8095, (float) 0 ), - new CoordRec((float) 14.2857, (float) 4.7619 ), - new CoordRec((float) 9.5238, (float) 9.5238 ), - new CoordRec((float) 4.7619, (float) 19.0476 ), - new CoordRec((float) 4.7619, (float) 28.5714 ), - new CoordRec((float) 9.5238, (float) 38.0952 ), - new CoordRec((float) 14.2857, (float) 42.8571 ), - new CoordRec((float) 47.619, (float) 61.9048 ), - new CoordRec((float) 52.3809, (float) 66.6667 ), - new CoordRec((float) 57.1429, (float) 76.1905 ), - new CoordRec((float) 57.1429, (float) 85.7143 ), - new CoordRec((float) 52.3809, (float) 95.2381 ), - new CoordRec((float) 42.8571, (float) 100 ), - new CoordRec((float) 33.3333, (float) 95.2381 ), - new CoordRec((float) 28.5714, (float) 85.7143 ), - new CoordRec((float) 28.5714, (float) 76.1905 ), - new CoordRec((float) 33.3333, (float) 61.9048 ), - new CoordRec((float) 42.8571, (float) 47.619 ), - new CoordRec((float) 66.6667, (float) 14.2857 ), - new CoordRec((float) 76.1905, (float) 4.7619 ), - new CoordRec((float) 85.7143, (float) 0 ), - new CoordRec((float) 95.2381, (float) 0 ), - new CoordRec((float) 100, (float) 4.7619 ), - new CoordRec((float) 100, (float) 9.5238 ), -}; - -static final StrokeRec char38[] = { - new StrokeRec( 34, char38_stroke0 ), -}; - -/* char: 39 ''' */ - -static final CoordRec char39_stroke0[] = { - new CoordRec((float) 52.381, (float) 100 ), - new CoordRec((float) 52.381, (float) 66.6667 ), -}; - -static final StrokeRec char39[] = { - new StrokeRec( 2, char39_stroke0 ), -}; - -/* char: 40 '(' */ - -static final CoordRec char40_stroke0[] = { - new CoordRec((float) 69.0476, (float) 119.048 ), - new CoordRec((float) 59.5238, (float) 109.524 ), - new CoordRec((float) 50, (float) 95.2381 ), - new CoordRec((float) 40.4762, (float) 76.1905 ), - new CoordRec((float) 35.7143, (float) 52.381 ), - new CoordRec((float) 35.7143, (float) 33.3333 ), - new CoordRec((float) 40.4762, (float) 9.5238 ), - new CoordRec((float) 50, (float) -9.5238 ), - new CoordRec((float) 59.5238, (float) -23.8095 ), - new CoordRec((float) 69.0476, (float) -33.3333 ), -}; - -static final StrokeRec char40[] = { - new StrokeRec( 10, char40_stroke0 ), -}; - -/* char: 41 ')' */ - -static final CoordRec char41_stroke0[] = { - new CoordRec((float) 35.7143, (float) 119.048 ), - new CoordRec((float) 45.2381, (float) 109.524 ), - new CoordRec((float) 54.7619, (float) 95.2381 ), - new CoordRec((float) 64.2857, (float) 76.1905 ), - new CoordRec((float) 69.0476, (float) 52.381 ), - new CoordRec((float) 69.0476, (float) 33.3333 ), - new CoordRec((float) 64.2857, (float) 9.5238 ), - new CoordRec((float) 54.7619, (float) -9.5238 ), - new CoordRec((float) 45.2381, (float) -23.8095 ), - new CoordRec((float) 35.7143, (float) -33.3333 ), -}; - -static final StrokeRec char41[] = { - new StrokeRec( 10, char41_stroke0 ), -}; - -/* char: 42 '*' */ - -static final CoordRec char42_stroke0[] = { - new CoordRec((float) 52.381, (float) 71.4286 ), - new CoordRec((float) 52.381, (float) 14.2857 ), -}; - -static final CoordRec char42_stroke1[] = { - new CoordRec((float) 28.5715, (float) 57.1429 ), - new CoordRec((float) 76.1905, (float) 28.5714 ), -}; - -static final CoordRec char42_stroke2[] = { - new CoordRec((float) 76.1905, (float) 57.1429 ), - new CoordRec((float) 28.5715, (float) 28.5714 ), -}; - -static final StrokeRec char42[] = { - new StrokeRec( 2, char42_stroke0 ), - new StrokeRec( 2, char42_stroke1 ), - new StrokeRec( 2, char42_stroke2 ), -}; - -/* char: 43 '+' */ - -static final CoordRec char43_stroke0[] = { - new CoordRec((float) 52.3809, (float) 85.7143 ), - new CoordRec((float) 52.3809, (float) 0 ), -}; - -static final CoordRec char43_stroke1[] = { - new CoordRec((float) 9.5238, (float) 42.8571 ), - new CoordRec((float) 95.2381, (float) 42.8571 ), -}; - -static final StrokeRec char43[] = { - new StrokeRec( 2, char43_stroke0 ), - new StrokeRec( 2, char43_stroke1 ), -}; - -/* char: 44 ',' */ - -static final CoordRec char44_stroke0[] = { - new CoordRec((float) 57.1429, (float) 4.7619 ), - new CoordRec((float) 52.381, (float) 0 ), - new CoordRec((float) 47.6191, (float) 4.7619 ), - new CoordRec((float) 52.381, (float) 9.5238 ), - new CoordRec((float) 57.1429, (float) 4.7619 ), - new CoordRec((float) 57.1429, (float) -4.7619 ), - new CoordRec((float) 52.381, (float) -14.2857 ), - new CoordRec((float) 47.6191, (float) -19.0476 ), -}; - -static final StrokeRec char44[] = { - new StrokeRec( 8, char44_stroke0 ), -}; - -/* char: 45 '-' */ - -static final CoordRec char45_stroke0[] = { - new CoordRec((float) 9.5238, (float) 42.8571 ), - new CoordRec((float) 95.2381, (float) 42.8571 ), -}; - -static final StrokeRec char45[] = { - new StrokeRec( 2, char45_stroke0 ), -}; - -/* char: 46 '.' */ - -static final CoordRec char46_stroke0[] = { - new CoordRec((float) 52.381, (float) 9.5238 ), - new CoordRec((float) 47.6191, (float) 4.7619 ), - new CoordRec((float) 52.381, (float) 0 ), - new CoordRec((float) 57.1429, (float) 4.7619 ), - new CoordRec((float) 52.381, (float) 9.5238 ), -}; - -static final StrokeRec char46[] = { - new StrokeRec( 5, char46_stroke0 ), -}; - -/* char: 47 '/' */ - -static final CoordRec char47_stroke0[] = { - new CoordRec((float) 19.0476, (float) -14.2857 ), - new CoordRec((float) 85.7143, (float) 100 ), -}; - -static final StrokeRec char47[] = { - new StrokeRec( 2, char47_stroke0 ), -}; - -/* char: 48 '0' */ - -static final CoordRec char48_stroke0[] = { - new CoordRec((float) 47.619, (float) 100 ), - new CoordRec((float) 33.3333, (float) 95.2381 ), - new CoordRec((float) 23.8095, (float) 80.9524 ), - new CoordRec((float) 19.0476, (float) 57.1429 ), - new CoordRec((float) 19.0476, (float) 42.8571 ), - new CoordRec((float) 23.8095, (float) 19.0476 ), - new CoordRec((float) 33.3333, (float) 4.7619 ), - new CoordRec((float) 47.619, (float) 0 ), - new CoordRec((float) 57.1428, (float) 0 ), - new CoordRec((float) 71.4286, (float) 4.7619 ), - new CoordRec((float) 80.9524, (float) 19.0476 ), - new CoordRec((float) 85.7143, (float) 42.8571 ), - new CoordRec((float) 85.7143, (float) 57.1429 ), - new CoordRec((float) 80.9524, (float) 80.9524 ), - new CoordRec((float) 71.4286, (float) 95.2381 ), - new CoordRec((float) 57.1428, (float) 100 ), - new CoordRec((float) 47.619, (float) 100 ), -}; - -static final StrokeRec char48[] = { - new StrokeRec( 17, char48_stroke0 ), -}; - -/* char: 49 '1' */ - -static final CoordRec char49_stroke0[] = { - new CoordRec((float) 40.4762, (float) 80.9524 ), - new CoordRec((float) 50, (float) 85.7143 ), - new CoordRec((float) 64.2857, (float) 100 ), - new CoordRec((float) 64.2857, (float) 0 ), -}; - -static final StrokeRec char49[] = { - new StrokeRec( 4, char49_stroke0 ), -}; - -/* char: 50 '2' */ - -static final CoordRec char50_stroke0[] = { - new CoordRec((float) 23.8095, (float) 76.1905 ), - new CoordRec((float) 23.8095, (float) 80.9524 ), - new CoordRec((float) 28.5714, (float) 90.4762 ), - new CoordRec((float) 33.3333, (float) 95.2381 ), - new CoordRec((float) 42.8571, (float) 100 ), - new CoordRec((float) 61.9047, (float) 100 ), - new CoordRec((float) 71.4286, (float) 95.2381 ), - new CoordRec((float) 76.1905, (float) 90.4762 ), - new CoordRec((float) 80.9524, (float) 80.9524 ), - new CoordRec((float) 80.9524, (float) 71.4286 ), - new CoordRec((float) 76.1905, (float) 61.9048 ), - new CoordRec((float) 66.6666, (float) 47.619 ), - new CoordRec((float) 19.0476, (float) 0 ), - new CoordRec((float) 85.7143, (float) 0 ), -}; - -static final StrokeRec char50[] = { - new StrokeRec( 14, char50_stroke0 ), -}; - -/* char: 51 '3' */ - -static final CoordRec char51_stroke0[] = { - new CoordRec((float) 28.5714, (float) 100 ), - new CoordRec((float) 80.9524, (float) 100 ), - new CoordRec((float) 52.3809, (float) 61.9048 ), - new CoordRec((float) 66.6666, (float) 61.9048 ), - new CoordRec((float) 76.1905, (float) 57.1429 ), - new CoordRec((float) 80.9524, (float) 52.381 ), - new CoordRec((float) 85.7143, (float) 38.0952 ), - new CoordRec((float) 85.7143, (float) 28.5714 ), - new CoordRec((float) 80.9524, (float) 14.2857 ), - new CoordRec((float) 71.4286, (float) 4.7619 ), - new CoordRec((float) 57.1428, (float) 0 ), - new CoordRec((float) 42.8571, (float) 0 ), - new CoordRec((float) 28.5714, (float) 4.7619 ), - new CoordRec((float) 23.8095, (float) 9.5238 ), - new CoordRec((float) 19.0476, (float) 19.0476 ), -}; - -static final StrokeRec char51[] = { - new StrokeRec( 15, char51_stroke0 ), -}; - -/* char: 52 '4' */ - -static final CoordRec char52_stroke0[] = { - new CoordRec((float) 64.2857, (float) 100 ), - new CoordRec((float) 16.6667, (float) 33.3333 ), - new CoordRec((float) 88.0952, (float) 33.3333 ), -}; - -static final CoordRec char52_stroke1[] = { - new CoordRec((float) 64.2857, (float) 100 ), - new CoordRec((float) 64.2857, (float) 0 ), -}; - -static final StrokeRec char52[] = { - new StrokeRec( 3, char52_stroke0 ), - new StrokeRec( 2, char52_stroke1 ), -}; - -/* char: 53 '5' */ - -static final CoordRec char53_stroke0[] = { - new CoordRec((float) 76.1905, (float) 100 ), - new CoordRec((float) 28.5714, (float) 100 ), - new CoordRec((float) 23.8095, (float) 57.1429 ), - new CoordRec((float) 28.5714, (float) 61.9048 ), - new CoordRec((float) 42.8571, (float) 66.6667 ), - new CoordRec((float) 57.1428, (float) 66.6667 ), - new CoordRec((float) 71.4286, (float) 61.9048 ), - new CoordRec((float) 80.9524, (float) 52.381 ), - new CoordRec((float) 85.7143, (float) 38.0952 ), - new CoordRec((float) 85.7143, (float) 28.5714 ), - new CoordRec((float) 80.9524, (float) 14.2857 ), - new CoordRec((float) 71.4286, (float) 4.7619 ), - new CoordRec((float) 57.1428, (float) 0 ), - new CoordRec((float) 42.8571, (float) 0 ), - new CoordRec((float) 28.5714, (float) 4.7619 ), - new CoordRec((float) 23.8095, (float) 9.5238 ), - new CoordRec((float) 19.0476, (float) 19.0476 ), -}; - -static final StrokeRec char53[] = { - new StrokeRec( 17, char53_stroke0 ), -}; - -/* char: 54 '6' */ - -static final CoordRec char54_stroke0[] = { - new CoordRec((float) 78.5714, (float) 85.7143 ), - new CoordRec((float) 73.8096, (float) 95.2381 ), - new CoordRec((float) 59.5238, (float) 100 ), - new CoordRec((float) 50, (float) 100 ), - new CoordRec((float) 35.7143, (float) 95.2381 ), - new CoordRec((float) 26.1905, (float) 80.9524 ), - new CoordRec((float) 21.4286, (float) 57.1429 ), - new CoordRec((float) 21.4286, (float) 33.3333 ), - new CoordRec((float) 26.1905, (float) 14.2857 ), - new CoordRec((float) 35.7143, (float) 4.7619 ), - new CoordRec((float) 50, (float) 0 ), - new CoordRec((float) 54.7619, (float) 0 ), - new CoordRec((float) 69.0476, (float) 4.7619 ), - new CoordRec((float) 78.5714, (float) 14.2857 ), - new CoordRec((float) 83.3334, (float) 28.5714 ), - new CoordRec((float) 83.3334, (float) 33.3333 ), - new CoordRec((float) 78.5714, (float) 47.619 ), - new CoordRec((float) 69.0476, (float) 57.1429 ), - new CoordRec((float) 54.7619, (float) 61.9048 ), - new CoordRec((float) 50, (float) 61.9048 ), - new CoordRec((float) 35.7143, (float) 57.1429 ), - new CoordRec((float) 26.1905, (float) 47.619 ), - new CoordRec((float) 21.4286, (float) 33.3333 ), -}; - -static final StrokeRec char54[] = { - new StrokeRec( 23, char54_stroke0 ), -}; - -/* char: 55 '7' */ - -static final CoordRec char55_stroke0[] = { - new CoordRec((float) 85.7143, (float) 100 ), - new CoordRec((float) 38.0952, (float) 0 ), -}; - -static final CoordRec char55_stroke1[] = { - new CoordRec((float) 19.0476, (float) 100 ), - new CoordRec((float) 85.7143, (float) 100 ), -}; - -static final StrokeRec char55[] = { - new StrokeRec( 2, char55_stroke0 ), - new StrokeRec( 2, char55_stroke1 ), -}; - -/* char: 56 '8' */ - -static final CoordRec char56_stroke0[] = { - new CoordRec((float) 42.8571, (float) 100 ), - new CoordRec((float) 28.5714, (float) 95.2381 ), - new CoordRec((float) 23.8095, (float) 85.7143 ), - new CoordRec((float) 23.8095, (float) 76.1905 ), - new CoordRec((float) 28.5714, (float) 66.6667 ), - new CoordRec((float) 38.0952, (float) 61.9048 ), - new CoordRec((float) 57.1428, (float) 57.1429 ), - new CoordRec((float) 71.4286, (float) 52.381 ), - new CoordRec((float) 80.9524, (float) 42.8571 ), - new CoordRec((float) 85.7143, (float) 33.3333 ), - new CoordRec((float) 85.7143, (float) 19.0476 ), - new CoordRec((float) 80.9524, (float) 9.5238 ), - new CoordRec((float) 76.1905, (float) 4.7619 ), - new CoordRec((float) 61.9047, (float) 0 ), - new CoordRec((float) 42.8571, (float) 0 ), - new CoordRec((float) 28.5714, (float) 4.7619 ), - new CoordRec((float) 23.8095, (float) 9.5238 ), - new CoordRec((float) 19.0476, (float) 19.0476 ), - new CoordRec((float) 19.0476, (float) 33.3333 ), - new CoordRec((float) 23.8095, (float) 42.8571 ), - new CoordRec((float) 33.3333, (float) 52.381 ), - new CoordRec((float) 47.619, (float) 57.1429 ), - new CoordRec((float) 66.6666, (float) 61.9048 ), - new CoordRec((float) 76.1905, (float) 66.6667 ), - new CoordRec((float) 80.9524, (float) 76.1905 ), - new CoordRec((float) 80.9524, (float) 85.7143 ), - new CoordRec((float) 76.1905, (float) 95.2381 ), - new CoordRec((float) 61.9047, (float) 100 ), - new CoordRec((float) 42.8571, (float) 100 ), -}; - -static final StrokeRec char56[] = { - new StrokeRec( 29, char56_stroke0 ), -}; - -/* char: 57 '9' */ - -static final CoordRec char57_stroke0[] = { - new CoordRec((float) 83.3334, (float) 66.6667 ), - new CoordRec((float) 78.5714, (float) 52.381 ), - new CoordRec((float) 69.0476, (float) 42.8571 ), - new CoordRec((float) 54.7619, (float) 38.0952 ), - new CoordRec((float) 50, (float) 38.0952 ), - new CoordRec((float) 35.7143, (float) 42.8571 ), - new CoordRec((float) 26.1905, (float) 52.381 ), - new CoordRec((float) 21.4286, (float) 66.6667 ), - new CoordRec((float) 21.4286, (float) 71.4286 ), - new CoordRec((float) 26.1905, (float) 85.7143 ), - new CoordRec((float) 35.7143, (float) 95.2381 ), - new CoordRec((float) 50, (float) 100 ), - new CoordRec((float) 54.7619, (float) 100 ), - new CoordRec((float) 69.0476, (float) 95.2381 ), - new CoordRec((float) 78.5714, (float) 85.7143 ), - new CoordRec((float) 83.3334, (float) 66.6667 ), - new CoordRec((float) 83.3334, (float) 42.8571 ), - new CoordRec((float) 78.5714, (float) 19.0476 ), - new CoordRec((float) 69.0476, (float) 4.7619 ), - new CoordRec((float) 54.7619, (float) 0 ), - new CoordRec((float) 45.2381, (float) 0 ), - new CoordRec((float) 30.9524, (float) 4.7619 ), - new CoordRec((float) 26.1905, (float) 14.2857 ), -}; - -static final StrokeRec char57[] = { - new StrokeRec( 23, char57_stroke0 ), -}; - -/* char: 58 ':' */ - -static final CoordRec char58_stroke0[] = { - new CoordRec((float) 52.381, (float) 66.6667 ), - new CoordRec((float) 47.6191, (float) 61.9048 ), - new CoordRec((float) 52.381, (float) 57.1429 ), - new CoordRec((float) 57.1429, (float) 61.9048 ), - new CoordRec((float) 52.381, (float) 66.6667 ), -}; - -static final CoordRec char58_stroke1[] = { - new CoordRec((float) 52.381, (float) 9.5238 ), - new CoordRec((float) 47.6191, (float) 4.7619 ), - new CoordRec((float) 52.381, (float) 0 ), - new CoordRec((float) 57.1429, (float) 4.7619 ), - new CoordRec((float) 52.381, (float) 9.5238 ), -}; - -static final StrokeRec char58[] = { - new StrokeRec( 5, char58_stroke0 ), - new StrokeRec( 5, char58_stroke1 ), -}; - -/* char: 59 ';' */ - -static final CoordRec char59_stroke0[] = { - new CoordRec((float) 52.381, (float) 66.6667 ), - new CoordRec((float) 47.6191, (float) 61.9048 ), - new CoordRec((float) 52.381, (float) 57.1429 ), - new CoordRec((float) 57.1429, (float) 61.9048 ), - new CoordRec((float) 52.381, (float) 66.6667 ), -}; - -static final CoordRec char59_stroke1[] = { - new CoordRec((float) 57.1429, (float) 4.7619 ), - new CoordRec((float) 52.381, (float) 0 ), - new CoordRec((float) 47.6191, (float) 4.7619 ), - new CoordRec((float) 52.381, (float) 9.5238 ), - new CoordRec((float) 57.1429, (float) 4.7619 ), - new CoordRec((float) 57.1429, (float) -4.7619 ), - new CoordRec((float) 52.381, (float) -14.2857 ), - new CoordRec((float) 47.6191, (float) -19.0476 ), -}; - -static final StrokeRec char59[] = { - new StrokeRec( 5, char59_stroke0 ), - new StrokeRec( 8, char59_stroke1 ), -}; - -/* char: 60 '<' */ - -static final CoordRec char60_stroke0[] = { - new CoordRec((float) 90.4762, (float) 85.7143 ), - new CoordRec((float) 14.2857, (float) 42.8571 ), - new CoordRec((float) 90.4762, (float) 0 ), -}; - -static final StrokeRec char60[] = { - new StrokeRec( 3, char60_stroke0 ), -}; - -/* char: 61 '=' */ - -static final CoordRec char61_stroke0[] = { - new CoordRec((float) 9.5238, (float) 57.1429 ), - new CoordRec((float) 95.2381, (float) 57.1429 ), -}; - -static final CoordRec char61_stroke1[] = { - new CoordRec((float) 9.5238, (float) 28.5714 ), - new CoordRec((float) 95.2381, (float) 28.5714 ), -}; - -static final StrokeRec char61[] = { - new StrokeRec( 2, char61_stroke0 ), - new StrokeRec( 2, char61_stroke1 ), -}; - -/* char: 62 '>' */ - -static final CoordRec char62_stroke0[] = { - new CoordRec((float) 14.2857, (float) 85.7143 ), - new CoordRec((float) 90.4762, (float) 42.8571 ), - new CoordRec((float) 14.2857, (float) 0 ), -}; - -static final StrokeRec char62[] = { - new StrokeRec( 3, char62_stroke0 ), -}; - -/* char: 63 '?' */ - -static final CoordRec char63_stroke0[] = { - new CoordRec((float) 23.8095, (float) 76.1905 ), - new CoordRec((float) 23.8095, (float) 80.9524 ), - new CoordRec((float) 28.5714, (float) 90.4762 ), - new CoordRec((float) 33.3333, (float) 95.2381 ), - new CoordRec((float) 42.8571, (float) 100 ), - new CoordRec((float) 61.9047, (float) 100 ), - new CoordRec((float) 71.4285, (float) 95.2381 ), - new CoordRec((float) 76.1905, (float) 90.4762 ), - new CoordRec((float) 80.9524, (float) 80.9524 ), - new CoordRec((float) 80.9524, (float) 71.4286 ), - new CoordRec((float) 76.1905, (float) 61.9048 ), - new CoordRec((float) 71.4285, (float) 57.1429 ), - new CoordRec((float) 52.3809, (float) 47.619 ), - new CoordRec((float) 52.3809, (float) 33.3333 ), -}; - -static final CoordRec char63_stroke1[] = { - new CoordRec((float) 52.3809, (float) 9.5238 ), - new CoordRec((float) 47.619, (float) 4.7619 ), - new CoordRec((float) 52.3809, (float) 0 ), - new CoordRec((float) 57.1428, (float) 4.7619 ), - new CoordRec((float) 52.3809, (float) 9.5238 ), -}; - -static final StrokeRec char63[] = { - new StrokeRec( 14, char63_stroke0 ), - new StrokeRec( 5, char63_stroke1 ), -}; - -/* char: 64 '@' */ - -static final CoordRec char64_stroke0[] = { - new CoordRec((float) 64.2857, (float) 52.381 ), - new CoordRec((float) 54.7619, (float) 57.1429 ), - new CoordRec((float) 45.2381, (float) 57.1429 ), - new CoordRec((float) 40.4762, (float) 47.619 ), - new CoordRec((float) 40.4762, (float) 42.8571 ), - new CoordRec((float) 45.2381, (float) 33.3333 ), - new CoordRec((float) 54.7619, (float) 33.3333 ), - new CoordRec((float) 64.2857, (float) 38.0952 ), -}; - -static final CoordRec char64_stroke1[] = { - new CoordRec((float) 64.2857, (float) 57.1429 ), - new CoordRec((float) 64.2857, (float) 38.0952 ), - new CoordRec((float) 69.0476, (float) 33.3333 ), - new CoordRec((float) 78.5714, (float) 33.3333 ), - new CoordRec((float) 83.3334, (float) 42.8571 ), - new CoordRec((float) 83.3334, (float) 47.619 ), - new CoordRec((float) 78.5714, (float) 61.9048 ), - new CoordRec((float) 69.0476, (float) 71.4286 ), - new CoordRec((float) 54.7619, (float) 76.1905 ), - new CoordRec((float) 50, (float) 76.1905 ), - new CoordRec((float) 35.7143, (float) 71.4286 ), - new CoordRec((float) 26.1905, (float) 61.9048 ), - new CoordRec((float) 21.4286, (float) 47.619 ), - new CoordRec((float) 21.4286, (float) 42.8571 ), - new CoordRec((float) 26.1905, (float) 28.5714 ), - new CoordRec((float) 35.7143, (float) 19.0476 ), - new CoordRec((float) 50, (float) 14.2857 ), - new CoordRec((float) 54.7619, (float) 14.2857 ), - new CoordRec((float) 69.0476, (float) 19.0476 ), -}; - -static final StrokeRec char64[] = { - new StrokeRec( 8, char64_stroke0 ), - new StrokeRec( 19, char64_stroke1 ), -}; - -/* char: 65 'A' */ - -static final CoordRec char65_stroke0[] = { - new CoordRec((float) 52.3809, (float) 100 ), - new CoordRec((float) 14.2857, (float) 0 ), -}; - -static final CoordRec char65_stroke1[] = { - new CoordRec((float) 52.3809, (float) 100 ), - new CoordRec((float) 90.4762, (float) 0 ), -}; - -static final CoordRec char65_stroke2[] = { - new CoordRec((float) 28.5714, (float) 33.3333 ), - new CoordRec((float) 76.1905, (float) 33.3333 ), -}; - -static final StrokeRec char65[] = { - new StrokeRec( 2, char65_stroke0 ), - new StrokeRec( 2, char65_stroke1 ), - new StrokeRec( 2, char65_stroke2 ), -}; - -/* char: 66 'B' */ - -static final CoordRec char66_stroke0[] = { - new CoordRec((float) 19.0476, (float) 100 ), - new CoordRec((float) 19.0476, (float) 0 ), -}; - -static final CoordRec char66_stroke1[] = { - new CoordRec((float) 19.0476, (float) 100 ), - new CoordRec((float) 61.9047, (float) 100 ), - new CoordRec((float) 76.1905, (float) 95.2381 ), - new CoordRec((float) 80.9524, (float) 90.4762 ), - new CoordRec((float) 85.7143, (float) 80.9524 ), - new CoordRec((float) 85.7143, (float) 71.4286 ), - new CoordRec((float) 80.9524, (float) 61.9048 ), - new CoordRec((float) 76.1905, (float) 57.1429 ), - new CoordRec((float) 61.9047, (float) 52.381 ), -}; - -static final CoordRec char66_stroke2[] = { - new CoordRec((float) 19.0476, (float) 52.381 ), - new CoordRec((float) 61.9047, (float) 52.381 ), - new CoordRec((float) 76.1905, (float) 47.619 ), - new CoordRec((float) 80.9524, (float) 42.8571 ), - new CoordRec((float) 85.7143, (float) 33.3333 ), - new CoordRec((float) 85.7143, (float) 19.0476 ), - new CoordRec((float) 80.9524, (float) 9.5238 ), - new CoordRec((float) 76.1905, (float) 4.7619 ), - new CoordRec((float) 61.9047, (float) 0 ), - new CoordRec((float) 19.0476, (float) 0 ), -}; - -static final StrokeRec char66[] = { - new StrokeRec( 2, char66_stroke0 ), - new StrokeRec( 9, char66_stroke1 ), - new StrokeRec( 10, char66_stroke2 ), -}; - -/* char: 67 'C' */ - -static final CoordRec char67_stroke0[] = { - new CoordRec((float) 88.0952, (float) 76.1905 ), - new CoordRec((float) 83.3334, (float) 85.7143 ), - new CoordRec((float) 73.8096, (float) 95.2381 ), - new CoordRec((float) 64.2857, (float) 100 ), - new CoordRec((float) 45.2381, (float) 100 ), - new CoordRec((float) 35.7143, (float) 95.2381 ), - new CoordRec((float) 26.1905, (float) 85.7143 ), - new CoordRec((float) 21.4286, (float) 76.1905 ), - new CoordRec((float) 16.6667, (float) 61.9048 ), - new CoordRec((float) 16.6667, (float) 38.0952 ), - new CoordRec((float) 21.4286, (float) 23.8095 ), - new CoordRec((float) 26.1905, (float) 14.2857 ), - new CoordRec((float) 35.7143, (float) 4.7619 ), - new CoordRec((float) 45.2381, (float) 0 ), - new CoordRec((float) 64.2857, (float) 0 ), - new CoordRec((float) 73.8096, (float) 4.7619 ), - new CoordRec((float) 83.3334, (float) 14.2857 ), - new CoordRec((float) 88.0952, (float) 23.8095 ), -}; - -static final StrokeRec char67[] = { - new StrokeRec( 18, char67_stroke0 ), -}; - -/* char: 68 'D' */ - -static final CoordRec char68_stroke0[] = { - new CoordRec((float) 19.0476, (float) 100 ), - new CoordRec((float) 19.0476, (float) 0 ), -}; - -static final CoordRec char68_stroke1[] = { - new CoordRec((float) 19.0476, (float) 100 ), - new CoordRec((float) 52.3809, (float) 100 ), - new CoordRec((float) 66.6666, (float) 95.2381 ), - new CoordRec((float) 76.1905, (float) 85.7143 ), - new CoordRec((float) 80.9524, (float) 76.1905 ), - new CoordRec((float) 85.7143, (float) 61.9048 ), - new CoordRec((float) 85.7143, (float) 38.0952 ), - new CoordRec((float) 80.9524, (float) 23.8095 ), - new CoordRec((float) 76.1905, (float) 14.2857 ), - new CoordRec((float) 66.6666, (float) 4.7619 ), - new CoordRec((float) 52.3809, (float) 0 ), - new CoordRec((float) 19.0476, (float) 0 ), -}; - -static final StrokeRec char68[] = { - new StrokeRec( 2, char68_stroke0 ), - new StrokeRec( 12, char68_stroke1 ), -}; - -/* char: 69 'E' */ - -static final CoordRec char69_stroke0[] = { - new CoordRec((float) 21.4286, (float) 100 ), - new CoordRec((float) 21.4286, (float) 0 ), -}; - -static final CoordRec char69_stroke1[] = { - new CoordRec((float) 21.4286, (float) 100 ), - new CoordRec((float) 83.3334, (float) 100 ), -}; - -static final CoordRec char69_stroke2[] = { - new CoordRec((float) 21.4286, (float) 52.381 ), - new CoordRec((float) 59.5238, (float) 52.381 ), -}; - -static final CoordRec char69_stroke3[] = { - new CoordRec((float) 21.4286, (float) 0 ), - new CoordRec((float) 83.3334, (float) 0 ), -}; - -static final StrokeRec char69[] = { - new StrokeRec( 2, char69_stroke0 ), - new StrokeRec( 2, char69_stroke1 ), - new StrokeRec( 2, char69_stroke2 ), - new StrokeRec( 2, char69_stroke3 ), -}; - -/* char: 70 'F' */ - -static final CoordRec char70_stroke0[] = { - new CoordRec((float) 21.4286, (float) 100 ), - new CoordRec((float) 21.4286, (float) 0 ), -}; - -static final CoordRec char70_stroke1[] = { - new CoordRec((float) 21.4286, (float) 100 ), - new CoordRec((float) 83.3334, (float) 100 ), -}; - -static final CoordRec char70_stroke2[] = { - new CoordRec((float) 21.4286, (float) 52.381 ), - new CoordRec((float) 59.5238, (float) 52.381 ), -}; - -static final StrokeRec char70[] = { - new StrokeRec( 2, char70_stroke0 ), - new StrokeRec( 2, char70_stroke1 ), - new StrokeRec( 2, char70_stroke2 ), -}; - -/* char: 71 'G' */ - -static final CoordRec char71_stroke0[] = { - new CoordRec((float) 88.0952, (float) 76.1905 ), - new CoordRec((float) 83.3334, (float) 85.7143 ), - new CoordRec((float) 73.8096, (float) 95.2381 ), - new CoordRec((float) 64.2857, (float) 100 ), - new CoordRec((float) 45.2381, (float) 100 ), - new CoordRec((float) 35.7143, (float) 95.2381 ), - new CoordRec((float) 26.1905, (float) 85.7143 ), - new CoordRec((float) 21.4286, (float) 76.1905 ), - new CoordRec((float) 16.6667, (float) 61.9048 ), - new CoordRec((float) 16.6667, (float) 38.0952 ), - new CoordRec((float) 21.4286, (float) 23.8095 ), - new CoordRec((float) 26.1905, (float) 14.2857 ), - new CoordRec((float) 35.7143, (float) 4.7619 ), - new CoordRec((float) 45.2381, (float) 0 ), - new CoordRec((float) 64.2857, (float) 0 ), - new CoordRec((float) 73.8096, (float) 4.7619 ), - new CoordRec((float) 83.3334, (float) 14.2857 ), - new CoordRec((float) 88.0952, (float) 23.8095 ), - new CoordRec((float) 88.0952, (float) 38.0952 ), -}; - -static final CoordRec char71_stroke1[] = { - new CoordRec((float) 64.2857, (float) 38.0952 ), - new CoordRec((float) 88.0952, (float) 38.0952 ), -}; - -static final StrokeRec char71[] = { - new StrokeRec( 19, char71_stroke0 ), - new StrokeRec( 2, char71_stroke1 ), -}; - -/* char: 72 'H' */ - -static final CoordRec char72_stroke0[] = { - new CoordRec((float) 19.0476, (float) 100 ), - new CoordRec((float) 19.0476, (float) 0 ), -}; - -static final CoordRec char72_stroke1[] = { - new CoordRec((float) 85.7143, (float) 100 ), - new CoordRec((float) 85.7143, (float) 0 ), -}; - -static final CoordRec char72_stroke2[] = { - new CoordRec((float) 19.0476, (float) 52.381 ), - new CoordRec((float) 85.7143, (float) 52.381 ), -}; - -static final StrokeRec char72[] = { - new StrokeRec( 2, char72_stroke0 ), - new StrokeRec( 2, char72_stroke1 ), - new StrokeRec( 2, char72_stroke2 ), -}; - -/* char: 73 'I' */ - -static final CoordRec char73_stroke0[] = { - new CoordRec((float) 52.381, (float) 100 ), - new CoordRec((float) 52.381, (float) 0 ), -}; - -static final StrokeRec char73[] = { - new StrokeRec( 2, char73_stroke0 ), -}; - -/* char: 74 'J' */ - -static final CoordRec char74_stroke0[] = { - new CoordRec((float) 76.1905, (float) 100 ), - new CoordRec((float) 76.1905, (float) 23.8095 ), - new CoordRec((float) 71.4286, (float) 9.5238 ), - new CoordRec((float) 66.6667, (float) 4.7619 ), - new CoordRec((float) 57.1429, (float) 0 ), - new CoordRec((float) 47.6191, (float) 0 ), - new CoordRec((float) 38.0953, (float) 4.7619 ), - new CoordRec((float) 33.3334, (float) 9.5238 ), - new CoordRec((float) 28.5715, (float) 23.8095 ), - new CoordRec((float) 28.5715, (float) 33.3333 ), -}; - -static final StrokeRec char74[] = { - new StrokeRec( 10, char74_stroke0 ), -}; - -/* char: 75 'K' */ - -static final CoordRec char75_stroke0[] = { - new CoordRec((float) 19.0476, (float) 100 ), - new CoordRec((float) 19.0476, (float) 0 ), -}; - -static final CoordRec char75_stroke1[] = { - new CoordRec((float) 85.7143, (float) 100 ), - new CoordRec((float) 19.0476, (float) 33.3333 ), -}; - -static final CoordRec char75_stroke2[] = { - new CoordRec((float) 42.8571, (float) 57.1429 ), - new CoordRec((float) 85.7143, (float) 0 ), -}; - -static final StrokeRec char75[] = { - new StrokeRec( 2, char75_stroke0 ), - new StrokeRec( 2, char75_stroke1 ), - new StrokeRec( 2, char75_stroke2 ), -}; - -/* char: 76 'L' */ - -static final CoordRec char76_stroke0[] = { - new CoordRec((float) 23.8095, (float) 100 ), - new CoordRec((float) 23.8095, (float) 0 ), -}; - -static final CoordRec char76_stroke1[] = { - new CoordRec((float) 23.8095, (float) 0 ), - new CoordRec((float) 80.9524, (float) 0 ), -}; - -static final StrokeRec char76[] = { - new StrokeRec( 2, char76_stroke0 ), - new StrokeRec( 2, char76_stroke1 ), -}; - -/* char: 77 'M' */ - -static final CoordRec char77_stroke0[] = { - new CoordRec((float) 14.2857, (float) 100 ), - new CoordRec((float) 14.2857, (float) 0 ), -}; - -static final CoordRec char77_stroke1[] = { - new CoordRec((float) 14.2857, (float) 100 ), - new CoordRec((float) 52.3809, (float) 0 ), -}; - -static final CoordRec char77_stroke2[] = { - new CoordRec((float) 90.4762, (float) 100 ), - new CoordRec((float) 52.3809, (float) 0 ), -}; - -static final CoordRec char77_stroke3[] = { - new CoordRec((float) 90.4762, (float) 100 ), - new CoordRec((float) 90.4762, (float) 0 ), -}; - -static final StrokeRec char77[] = { - new StrokeRec( 2, char77_stroke0 ), - new StrokeRec( 2, char77_stroke1 ), - new StrokeRec( 2, char77_stroke2 ), - new StrokeRec( 2, char77_stroke3 ), -}; - -/* char: 78 'N' */ - -static final CoordRec char78_stroke0[] = { - new CoordRec((float) 19.0476, (float) 100 ), - new CoordRec((float) 19.0476, (float) 0 ), -}; - -static final CoordRec char78_stroke1[] = { - new CoordRec((float) 19.0476, (float) 100 ), - new CoordRec((float) 85.7143, (float) 0 ), -}; - -static final CoordRec char78_stroke2[] = { - new CoordRec((float) 85.7143, (float) 100 ), - new CoordRec((float) 85.7143, (float) 0 ), -}; - -static final StrokeRec char78[] = { - new StrokeRec( 2, char78_stroke0 ), - new StrokeRec( 2, char78_stroke1 ), - new StrokeRec( 2, char78_stroke2 ), -}; - -/* char: 79 'O' */ - -static final CoordRec char79_stroke0[] = { - new CoordRec((float) 42.8571, (float) 100 ), - new CoordRec((float) 33.3333, (float) 95.2381 ), - new CoordRec((float) 23.8095, (float) 85.7143 ), - new CoordRec((float) 19.0476, (float) 76.1905 ), - new CoordRec((float) 14.2857, (float) 61.9048 ), - new CoordRec((float) 14.2857, (float) 38.0952 ), - new CoordRec((float) 19.0476, (float) 23.8095 ), - new CoordRec((float) 23.8095, (float) 14.2857 ), - new CoordRec((float) 33.3333, (float) 4.7619 ), - new CoordRec((float) 42.8571, (float) 0 ), - new CoordRec((float) 61.9047, (float) 0 ), - new CoordRec((float) 71.4286, (float) 4.7619 ), - new CoordRec((float) 80.9524, (float) 14.2857 ), - new CoordRec((float) 85.7143, (float) 23.8095 ), - new CoordRec((float) 90.4762, (float) 38.0952 ), - new CoordRec((float) 90.4762, (float) 61.9048 ), - new CoordRec((float) 85.7143, (float) 76.1905 ), - new CoordRec((float) 80.9524, (float) 85.7143 ), - new CoordRec((float) 71.4286, (float) 95.2381 ), - new CoordRec((float) 61.9047, (float) 100 ), - new CoordRec((float) 42.8571, (float) 100 ), -}; - -static final StrokeRec char79[] = { - new StrokeRec( 21, char79_stroke0 ), -}; - -/* char: 80 'P' */ - -static final CoordRec char80_stroke0[] = { - new CoordRec((float) 19.0476, (float) 100 ), - new CoordRec((float) 19.0476, (float) 0 ), -}; - -static final CoordRec char80_stroke1[] = { - new CoordRec((float) 19.0476, (float) 100 ), - new CoordRec((float) 61.9047, (float) 100 ), - new CoordRec((float) 76.1905, (float) 95.2381 ), - new CoordRec((float) 80.9524, (float) 90.4762 ), - new CoordRec((float) 85.7143, (float) 80.9524 ), - new CoordRec((float) 85.7143, (float) 66.6667 ), - new CoordRec((float) 80.9524, (float) 57.1429 ), - new CoordRec((float) 76.1905, (float) 52.381 ), - new CoordRec((float) 61.9047, (float) 47.619 ), - new CoordRec((float) 19.0476, (float) 47.619 ), -}; - -static final StrokeRec char80[] = { - new StrokeRec( 2, char80_stroke0 ), - new StrokeRec( 10, char80_stroke1 ), -}; - -/* char: 81 'Q' */ - -static final CoordRec char81_stroke0[] = { - new CoordRec((float) 42.8571, (float) 100 ), - new CoordRec((float) 33.3333, (float) 95.2381 ), - new CoordRec((float) 23.8095, (float) 85.7143 ), - new CoordRec((float) 19.0476, (float) 76.1905 ), - new CoordRec((float) 14.2857, (float) 61.9048 ), - new CoordRec((float) 14.2857, (float) 38.0952 ), - new CoordRec((float) 19.0476, (float) 23.8095 ), - new CoordRec((float) 23.8095, (float) 14.2857 ), - new CoordRec((float) 33.3333, (float) 4.7619 ), - new CoordRec((float) 42.8571, (float) 0 ), - new CoordRec((float) 61.9047, (float) 0 ), - new CoordRec((float) 71.4286, (float) 4.7619 ), - new CoordRec((float) 80.9524, (float) 14.2857 ), - new CoordRec((float) 85.7143, (float) 23.8095 ), - new CoordRec((float) 90.4762, (float) 38.0952 ), - new CoordRec((float) 90.4762, (float) 61.9048 ), - new CoordRec((float) 85.7143, (float) 76.1905 ), - new CoordRec((float) 80.9524, (float) 85.7143 ), - new CoordRec((float) 71.4286, (float) 95.2381 ), - new CoordRec((float) 61.9047, (float) 100 ), - new CoordRec((float) 42.8571, (float) 100 ), -}; - -static final CoordRec char81_stroke1[] = { - new CoordRec((float) 57.1428, (float) 19.0476 ), - new CoordRec((float) 85.7143, (float) -9.5238 ), -}; - -static final StrokeRec char81[] = { - new StrokeRec( 21, char81_stroke0 ), - new StrokeRec( 2, char81_stroke1 ), -}; - -/* char: 82 'R' */ - -static final CoordRec char82_stroke0[] = { - new CoordRec((float) 19.0476, (float) 100 ), - new CoordRec((float) 19.0476, (float) 0 ), -}; - -static final CoordRec char82_stroke1[] = { - new CoordRec((float) 19.0476, (float) 100 ), - new CoordRec((float) 61.9047, (float) 100 ), - new CoordRec((float) 76.1905, (float) 95.2381 ), - new CoordRec((float) 80.9524, (float) 90.4762 ), - new CoordRec((float) 85.7143, (float) 80.9524 ), - new CoordRec((float) 85.7143, (float) 71.4286 ), - new CoordRec((float) 80.9524, (float) 61.9048 ), - new CoordRec((float) 76.1905, (float) 57.1429 ), - new CoordRec((float) 61.9047, (float) 52.381 ), - new CoordRec((float) 19.0476, (float) 52.381 ), -}; - -static final CoordRec char82_stroke2[] = { - new CoordRec((float) 52.3809, (float) 52.381 ), - new CoordRec((float) 85.7143, (float) 0 ), -}; - -static final StrokeRec char82[] = { - new StrokeRec( 2, char82_stroke0 ), - new StrokeRec( 10, char82_stroke1 ), - new StrokeRec( 2, char82_stroke2 ), -}; - -/* char: 83 'S' */ - -static final CoordRec char83_stroke0[] = { - new CoordRec((float) 85.7143, (float) 85.7143 ), - new CoordRec((float) 76.1905, (float) 95.2381 ), - new CoordRec((float) 61.9047, (float) 100 ), - new CoordRec((float) 42.8571, (float) 100 ), - new CoordRec((float) 28.5714, (float) 95.2381 ), - new CoordRec((float) 19.0476, (float) 85.7143 ), - new CoordRec((float) 19.0476, (float) 76.1905 ), - new CoordRec((float) 23.8095, (float) 66.6667 ), - new CoordRec((float) 28.5714, (float) 61.9048 ), - new CoordRec((float) 38.0952, (float) 57.1429 ), - new CoordRec((float) 66.6666, (float) 47.619 ), - new CoordRec((float) 76.1905, (float) 42.8571 ), - new CoordRec((float) 80.9524, (float) 38.0952 ), - new CoordRec((float) 85.7143, (float) 28.5714 ), - new CoordRec((float) 85.7143, (float) 14.2857 ), - new CoordRec((float) 76.1905, (float) 4.7619 ), - new CoordRec((float) 61.9047, (float) 0 ), - new CoordRec((float) 42.8571, (float) 0 ), - new CoordRec((float) 28.5714, (float) 4.7619 ), - new CoordRec((float) 19.0476, (float) 14.2857 ), -}; - -static final StrokeRec char83[] = { - new StrokeRec( 20, char83_stroke0 ), -}; - -/* char: 84 'T' */ - -static final CoordRec char84_stroke0[] = { - new CoordRec((float) 52.3809, (float) 100 ), - new CoordRec((float) 52.3809, (float) 0 ), -}; - -static final CoordRec char84_stroke1[] = { - new CoordRec((float) 19.0476, (float) 100 ), - new CoordRec((float) 85.7143, (float) 100 ), -}; - -static final StrokeRec char84[] = { - new StrokeRec( 2, char84_stroke0 ), - new StrokeRec( 2, char84_stroke1 ), -}; - -/* char: 85 'U' */ - -static final CoordRec char85_stroke0[] = { - new CoordRec((float) 19.0476, (float) 100 ), - new CoordRec((float) 19.0476, (float) 28.5714 ), - new CoordRec((float) 23.8095, (float) 14.2857 ), - new CoordRec((float) 33.3333, (float) 4.7619 ), - new CoordRec((float) 47.619, (float) 0 ), - new CoordRec((float) 57.1428, (float) 0 ), - new CoordRec((float) 71.4286, (float) 4.7619 ), - new CoordRec((float) 80.9524, (float) 14.2857 ), - new CoordRec((float) 85.7143, (float) 28.5714 ), - new CoordRec((float) 85.7143, (float) 100 ), -}; - -static final StrokeRec char85[] = { - new StrokeRec( 10, char85_stroke0 ), -}; - -/* char: 86 'V' */ - -static final CoordRec char86_stroke0[] = { - new CoordRec((float) 14.2857, (float) 100 ), - new CoordRec((float) 52.3809, (float) 0 ), -}; - -static final CoordRec char86_stroke1[] = { - new CoordRec((float) 90.4762, (float) 100 ), - new CoordRec((float) 52.3809, (float) 0 ), -}; - -static final StrokeRec char86[] = { - new StrokeRec( 2, char86_stroke0 ), - new StrokeRec( 2, char86_stroke1 ), -}; - -/* char: 87 'W' */ - -static final CoordRec char87_stroke0[] = { - new CoordRec((float) 4.7619, (float) 100 ), - new CoordRec((float) 28.5714, (float) 0 ), -}; - -static final CoordRec char87_stroke1[] = { - new CoordRec((float) 52.3809, (float) 100 ), - new CoordRec((float) 28.5714, (float) 0 ), -}; - -static final CoordRec char87_stroke2[] = { - new CoordRec((float) 52.3809, (float) 100 ), - new CoordRec((float) 76.1905, (float) 0 ), -}; - -static final CoordRec char87_stroke3[] = { - new CoordRec((float) 100, (float) 100 ), - new CoordRec((float) 76.1905, (float) 0 ), -}; - -static final StrokeRec char87[] = { - new StrokeRec( 2, char87_stroke0 ), - new StrokeRec( 2, char87_stroke1 ), - new StrokeRec( 2, char87_stroke2 ), - new StrokeRec( 2, char87_stroke3 ), -}; - -/* char: 88 'X' */ - -static final CoordRec char88_stroke0[] = { - new CoordRec((float) 19.0476, (float) 100 ), - new CoordRec((float) 85.7143, (float) 0 ), -}; - -static final CoordRec char88_stroke1[] = { - new CoordRec((float) 85.7143, (float) 100 ), - new CoordRec((float) 19.0476, (float) 0 ), -}; - -static final StrokeRec char88[] = { - new StrokeRec( 2, char88_stroke0 ), - new StrokeRec( 2, char88_stroke1 ), -}; - -/* char: 89 'Y' */ - -static final CoordRec char89_stroke0[] = { - new CoordRec((float) 14.2857, (float) 100 ), - new CoordRec((float) 52.3809, (float) 52.381 ), - new CoordRec((float) 52.3809, (float) 0 ), -}; - -static final CoordRec char89_stroke1[] = { - new CoordRec((float) 90.4762, (float) 100 ), - new CoordRec((float) 52.3809, (float) 52.381 ), -}; - -static final StrokeRec char89[] = { - new StrokeRec( 3, char89_stroke0 ), - new StrokeRec( 2, char89_stroke1 ), -}; - -/* char: 90 'Z' */ - -static final CoordRec char90_stroke0[] = { - new CoordRec((float) 85.7143, (float) 100 ), - new CoordRec((float) 19.0476, (float) 0 ), -}; - -static final CoordRec char90_stroke1[] = { - new CoordRec((float) 19.0476, (float) 100 ), - new CoordRec((float) 85.7143, (float) 100 ), -}; - -static final CoordRec char90_stroke2[] = { - new CoordRec((float) 19.0476, (float) 0 ), - new CoordRec((float) 85.7143, (float) 0 ), -}; - -static final StrokeRec char90[] = { - new StrokeRec( 2, char90_stroke0 ), - new StrokeRec( 2, char90_stroke1 ), - new StrokeRec( 2, char90_stroke2 ), -}; - -/* char: 91 '[' */ - -static final CoordRec char91_stroke0[] = { - new CoordRec((float) 35.7143, (float) 119.048 ), - new CoordRec((float) 35.7143, (float) -33.3333 ), -}; - -static final CoordRec char91_stroke1[] = { - new CoordRec((float) 40.4762, (float) 119.048 ), - new CoordRec((float) 40.4762, (float) -33.3333 ), -}; - -static final CoordRec char91_stroke2[] = { - new CoordRec((float) 35.7143, (float) 119.048 ), - new CoordRec((float) 69.0476, (float) 119.048 ), -}; - -static final CoordRec char91_stroke3[] = { - new CoordRec((float) 35.7143, (float) -33.3333 ), - new CoordRec((float) 69.0476, (float) -33.3333 ), -}; - -static final StrokeRec char91[] = { - new StrokeRec( 2, char91_stroke0 ), - new StrokeRec( 2, char91_stroke1 ), - new StrokeRec( 2, char91_stroke2 ), - new StrokeRec( 2, char91_stroke3 ), -}; - -/* char: 92 '\' */ - -static final CoordRec char92_stroke0[] = { - new CoordRec((float) 19.0476, (float) 100 ), - new CoordRec((float) 85.7143, (float) -14.2857 ), -}; - -static final StrokeRec char92[] = { - new StrokeRec( 2, char92_stroke0 ), -}; - -/* char: 93 ']' */ - -static final CoordRec char93_stroke0[] = { - new CoordRec((float) 64.2857, (float) 119.048 ), - new CoordRec((float) 64.2857, (float) -33.3333 ), -}; - -static final CoordRec char93_stroke1[] = { - new CoordRec((float) 69.0476, (float) 119.048 ), - new CoordRec((float) 69.0476, (float) -33.3333 ), -}; - -static final CoordRec char93_stroke2[] = { - new CoordRec((float) 35.7143, (float) 119.048 ), - new CoordRec((float) 69.0476, (float) 119.048 ), -}; - -static final CoordRec char93_stroke3[] = { - new CoordRec((float) 35.7143, (float) -33.3333 ), - new CoordRec((float) 69.0476, (float) -33.3333 ), -}; - -static final StrokeRec char93[] = { - new StrokeRec( 2, char93_stroke0 ), - new StrokeRec( 2, char93_stroke1 ), - new StrokeRec( 2, char93_stroke2 ), - new StrokeRec( 2, char93_stroke3 ), -}; - -/* char: 94 '^' */ - -static final CoordRec char94_stroke0[] = { - new CoordRec((float) 52.3809, (float) 109.524 ), - new CoordRec((float) 14.2857, (float) 42.8571 ), -}; - -static final CoordRec char94_stroke1[] = { - new CoordRec((float) 52.3809, (float) 109.524 ), - new CoordRec((float) 90.4762, (float) 42.8571 ), -}; - -static final StrokeRec char94[] = { - new StrokeRec( 2, char94_stroke0 ), - new StrokeRec( 2, char94_stroke1 ), -}; - -/* char: 95 '_' */ - -static final CoordRec char95_stroke0[] = { - new CoordRec((float) 0, (float) -33.3333 ), - new CoordRec((float) 104.762, (float) -33.3333 ), - new CoordRec((float) 104.762, (float) -28.5714 ), - new CoordRec((float) 0, (float) -28.5714 ), - new CoordRec((float) 0, (float) -33.3333 ), -}; - -static final StrokeRec char95[] = { - new StrokeRec( 5, char95_stroke0 ), -}; - -/* char: 96 '`' */ - -static final CoordRec char96_stroke0[] = { - new CoordRec((float) 42.8572, (float) 100 ), - new CoordRec((float) 66.6667, (float) 71.4286 ), -}; - -static final CoordRec char96_stroke1[] = { - new CoordRec((float) 42.8572, (float) 100 ), - new CoordRec((float) 38.0953, (float) 95.2381 ), - new CoordRec((float) 66.6667, (float) 71.4286 ), -}; - -static final StrokeRec char96[] = { - new StrokeRec( 2, char96_stroke0 ), - new StrokeRec( 3, char96_stroke1 ), -}; - -/* char: 97 'a' */ - -static final CoordRec char97_stroke0[] = { - new CoordRec((float) 80.9524, (float) 66.6667 ), - new CoordRec((float) 80.9524, (float) 0 ), -}; - -static final CoordRec char97_stroke1[] = { - new CoordRec((float) 80.9524, (float) 52.381 ), - new CoordRec((float) 71.4285, (float) 61.9048 ), - new CoordRec((float) 61.9047, (float) 66.6667 ), - new CoordRec((float) 47.619, (float) 66.6667 ), - new CoordRec((float) 38.0952, (float) 61.9048 ), - new CoordRec((float) 28.5714, (float) 52.381 ), - new CoordRec((float) 23.8095, (float) 38.0952 ), - new CoordRec((float) 23.8095, (float) 28.5714 ), - new CoordRec((float) 28.5714, (float) 14.2857 ), - new CoordRec((float) 38.0952, (float) 4.7619 ), - new CoordRec((float) 47.619, (float) 0 ), - new CoordRec((float) 61.9047, (float) 0 ), - new CoordRec((float) 71.4285, (float) 4.7619 ), - new CoordRec((float) 80.9524, (float) 14.2857 ), -}; - -static final StrokeRec char97[] = { - new StrokeRec( 2, char97_stroke0 ), - new StrokeRec( 14, char97_stroke1 ), -}; - -/* char: 98 'b' */ - -static final CoordRec char98_stroke0[] = { - new CoordRec((float) 23.8095, (float) 100 ), - new CoordRec((float) 23.8095, (float) 0 ), -}; - -static final CoordRec char98_stroke1[] = { - new CoordRec((float) 23.8095, (float) 52.381 ), - new CoordRec((float) 33.3333, (float) 61.9048 ), - new CoordRec((float) 42.8571, (float) 66.6667 ), - new CoordRec((float) 57.1428, (float) 66.6667 ), - new CoordRec((float) 66.6666, (float) 61.9048 ), - new CoordRec((float) 76.1905, (float) 52.381 ), - new CoordRec((float) 80.9524, (float) 38.0952 ), - new CoordRec((float) 80.9524, (float) 28.5714 ), - new CoordRec((float) 76.1905, (float) 14.2857 ), - new CoordRec((float) 66.6666, (float) 4.7619 ), - new CoordRec((float) 57.1428, (float) 0 ), - new CoordRec((float) 42.8571, (float) 0 ), - new CoordRec((float) 33.3333, (float) 4.7619 ), - new CoordRec((float) 23.8095, (float) 14.2857 ), -}; - -static final StrokeRec char98[] = { - new StrokeRec( 2, char98_stroke0 ), - new StrokeRec( 14, char98_stroke1 ), -}; - -/* char: 99 'c' */ - -static final CoordRec char99_stroke0[] = { - new CoordRec((float) 80.9524, (float) 52.381 ), - new CoordRec((float) 71.4285, (float) 61.9048 ), - new CoordRec((float) 61.9047, (float) 66.6667 ), - new CoordRec((float) 47.619, (float) 66.6667 ), - new CoordRec((float) 38.0952, (float) 61.9048 ), - new CoordRec((float) 28.5714, (float) 52.381 ), - new CoordRec((float) 23.8095, (float) 38.0952 ), - new CoordRec((float) 23.8095, (float) 28.5714 ), - new CoordRec((float) 28.5714, (float) 14.2857 ), - new CoordRec((float) 38.0952, (float) 4.7619 ), - new CoordRec((float) 47.619, (float) 0 ), - new CoordRec((float) 61.9047, (float) 0 ), - new CoordRec((float) 71.4285, (float) 4.7619 ), - new CoordRec((float) 80.9524, (float) 14.2857 ), -}; - -static final StrokeRec char99[] = { - new StrokeRec( 14, char99_stroke0 ), -}; - -/* char: 100 'd' */ - -static final CoordRec char100_stroke0[] = { - new CoordRec((float) 80.9524, (float) 100 ), - new CoordRec((float) 80.9524, (float) 0 ), -}; - -static final CoordRec char100_stroke1[] = { - new CoordRec((float) 80.9524, (float) 52.381 ), - new CoordRec((float) 71.4285, (float) 61.9048 ), - new CoordRec((float) 61.9047, (float) 66.6667 ), - new CoordRec((float) 47.619, (float) 66.6667 ), - new CoordRec((float) 38.0952, (float) 61.9048 ), - new CoordRec((float) 28.5714, (float) 52.381 ), - new CoordRec((float) 23.8095, (float) 38.0952 ), - new CoordRec((float) 23.8095, (float) 28.5714 ), - new CoordRec((float) 28.5714, (float) 14.2857 ), - new CoordRec((float) 38.0952, (float) 4.7619 ), - new CoordRec((float) 47.619, (float) 0 ), - new CoordRec((float) 61.9047, (float) 0 ), - new CoordRec((float) 71.4285, (float) 4.7619 ), - new CoordRec((float) 80.9524, (float) 14.2857 ), -}; - -static final StrokeRec char100[] = { - new StrokeRec( 2, char100_stroke0 ), - new StrokeRec( 14, char100_stroke1 ), -}; - -/* char: 101 'e' */ - -static final CoordRec char101_stroke0[] = { - new CoordRec((float) 23.8095, (float) 38.0952 ), - new CoordRec((float) 80.9524, (float) 38.0952 ), - new CoordRec((float) 80.9524, (float) 47.619 ), - new CoordRec((float) 76.1905, (float) 57.1429 ), - new CoordRec((float) 71.4285, (float) 61.9048 ), - new CoordRec((float) 61.9047, (float) 66.6667 ), - new CoordRec((float) 47.619, (float) 66.6667 ), - new CoordRec((float) 38.0952, (float) 61.9048 ), - new CoordRec((float) 28.5714, (float) 52.381 ), - new CoordRec((float) 23.8095, (float) 38.0952 ), - new CoordRec((float) 23.8095, (float) 28.5714 ), - new CoordRec((float) 28.5714, (float) 14.2857 ), - new CoordRec((float) 38.0952, (float) 4.7619 ), - new CoordRec((float) 47.619, (float) 0 ), - new CoordRec((float) 61.9047, (float) 0 ), - new CoordRec((float) 71.4285, (float) 4.7619 ), - new CoordRec((float) 80.9524, (float) 14.2857 ), -}; - -static final StrokeRec char101[] = { - new StrokeRec( 17, char101_stroke0 ), -}; - -/* char: 102 'f' */ - -static final CoordRec char102_stroke0[] = { - new CoordRec((float) 71.4286, (float) 100 ), - new CoordRec((float) 61.9048, (float) 100 ), - new CoordRec((float) 52.381, (float) 95.2381 ), - new CoordRec((float) 47.6191, (float) 80.9524 ), - new CoordRec((float) 47.6191, (float) 0 ), -}; - -static final CoordRec char102_stroke1[] = { - new CoordRec((float) 33.3334, (float) 66.6667 ), - new CoordRec((float) 66.6667, (float) 66.6667 ), -}; - -static final StrokeRec char102[] = { - new StrokeRec( 5, char102_stroke0 ), - new StrokeRec( 2, char102_stroke1 ), -}; - -/* char: 103 'g' */ - -static final CoordRec char103_stroke0[] = { - new CoordRec((float) 80.9524, (float) 66.6667 ), - new CoordRec((float) 80.9524, (float) -9.5238 ), - new CoordRec((float) 76.1905, (float) -23.8095 ), - new CoordRec((float) 71.4285, (float) -28.5714 ), - new CoordRec((float) 61.9047, (float) -33.3333 ), - new CoordRec((float) 47.619, (float) -33.3333 ), - new CoordRec((float) 38.0952, (float) -28.5714 ), -}; - -static final CoordRec char103_stroke1[] = { - new CoordRec((float) 80.9524, (float) 52.381 ), - new CoordRec((float) 71.4285, (float) 61.9048 ), - new CoordRec((float) 61.9047, (float) 66.6667 ), - new CoordRec((float) 47.619, (float) 66.6667 ), - new CoordRec((float) 38.0952, (float) 61.9048 ), - new CoordRec((float) 28.5714, (float) 52.381 ), - new CoordRec((float) 23.8095, (float) 38.0952 ), - new CoordRec((float) 23.8095, (float) 28.5714 ), - new CoordRec((float) 28.5714, (float) 14.2857 ), - new CoordRec((float) 38.0952, (float) 4.7619 ), - new CoordRec((float) 47.619, (float) 0 ), - new CoordRec((float) 61.9047, (float) 0 ), - new CoordRec((float) 71.4285, (float) 4.7619 ), - new CoordRec((float) 80.9524, (float) 14.2857 ), -}; - -static final StrokeRec char103[] = { - new StrokeRec( 7, char103_stroke0 ), - new StrokeRec( 14, char103_stroke1 ), -}; - -/* char: 104 'h' */ - -static final CoordRec char104_stroke0[] = { - new CoordRec((float) 26.1905, (float) 100 ), - new CoordRec((float) 26.1905, (float) 0 ), -}; - -static final CoordRec char104_stroke1[] = { - new CoordRec((float) 26.1905, (float) 47.619 ), - new CoordRec((float) 40.4762, (float) 61.9048 ), - new CoordRec((float) 50, (float) 66.6667 ), - new CoordRec((float) 64.2857, (float) 66.6667 ), - new CoordRec((float) 73.8095, (float) 61.9048 ), - new CoordRec((float) 78.5715, (float) 47.619 ), - new CoordRec((float) 78.5715, (float) 0 ), -}; - -static final StrokeRec char104[] = { - new StrokeRec( 2, char104_stroke0 ), - new StrokeRec( 7, char104_stroke1 ), -}; - -/* char: 105 'i' */ - -static final CoordRec char105_stroke0[] = { - new CoordRec((float) 47.6191, (float) 100 ), - new CoordRec((float) 52.381, (float) 95.2381 ), - new CoordRec((float) 57.1429, (float) 100 ), - new CoordRec((float) 52.381, (float) 104.762 ), - new CoordRec((float) 47.6191, (float) 100 ), -}; - -static final CoordRec char105_stroke1[] = { - new CoordRec((float) 52.381, (float) 66.6667 ), - new CoordRec((float) 52.381, (float) 0 ), -}; - -static final StrokeRec char105[] = { - new StrokeRec( 5, char105_stroke0 ), - new StrokeRec( 2, char105_stroke1 ), -}; - -/* char: 106 'j' */ - -static final CoordRec char106_stroke0[] = { - new CoordRec((float) 57.1429, (float) 100 ), - new CoordRec((float) 61.9048, (float) 95.2381 ), - new CoordRec((float) 66.6667, (float) 100 ), - new CoordRec((float) 61.9048, (float) 104.762 ), - new CoordRec((float) 57.1429, (float) 100 ), -}; - -static final CoordRec char106_stroke1[] = { - new CoordRec((float) 61.9048, (float) 66.6667 ), - new CoordRec((float) 61.9048, (float) -14.2857 ), - new CoordRec((float) 57.1429, (float) -28.5714 ), - new CoordRec((float) 47.6191, (float) -33.3333 ), - new CoordRec((float) 38.0953, (float) -33.3333 ), -}; - -static final StrokeRec char106[] = { - new StrokeRec( 5, char106_stroke0 ), - new StrokeRec( 5, char106_stroke1 ), -}; - -/* char: 107 'k' */ - -static final CoordRec char107_stroke0[] = { - new CoordRec((float) 26.1905, (float) 100 ), - new CoordRec((float) 26.1905, (float) 0 ), -}; - -static final CoordRec char107_stroke1[] = { - new CoordRec((float) 73.8095, (float) 66.6667 ), - new CoordRec((float) 26.1905, (float) 19.0476 ), -}; - -static final CoordRec char107_stroke2[] = { - new CoordRec((float) 45.2381, (float) 38.0952 ), - new CoordRec((float) 78.5715, (float) 0 ), -}; - -static final StrokeRec char107[] = { - new StrokeRec( 2, char107_stroke0 ), - new StrokeRec( 2, char107_stroke1 ), - new StrokeRec( 2, char107_stroke2 ), -}; - -/* char: 108 'l' */ - -static final CoordRec char108_stroke0[] = { - new CoordRec((float) 52.381, (float) 100 ), - new CoordRec((float) 52.381, (float) 0 ), -}; - -static final StrokeRec char108[] = { - new StrokeRec( 2, char108_stroke0 ), -}; - -/* char: 109 'm' */ - -static final CoordRec char109_stroke0[] = { - new CoordRec((float) 0, (float) 66.6667 ), - new CoordRec((float) 0, (float) 0 ), -}; - -static final CoordRec char109_stroke1[] = { - new CoordRec((float) 0, (float) 47.619 ), - new CoordRec((float) 14.2857, (float) 61.9048 ), - new CoordRec((float) 23.8095, (float) 66.6667 ), - new CoordRec((float) 38.0952, (float) 66.6667 ), - new CoordRec((float) 47.619, (float) 61.9048 ), - new CoordRec((float) 52.381, (float) 47.619 ), - new CoordRec((float) 52.381, (float) 0 ), -}; - -static final CoordRec char109_stroke2[] = { - new CoordRec((float) 52.381, (float) 47.619 ), - new CoordRec((float) 66.6667, (float) 61.9048 ), - new CoordRec((float) 76.1905, (float) 66.6667 ), - new CoordRec((float) 90.4762, (float) 66.6667 ), - new CoordRec((float) 100, (float) 61.9048 ), - new CoordRec((float) 104.762, (float) 47.619 ), - new CoordRec((float) 104.762, (float) 0 ), -}; - -static final StrokeRec char109[] = { - new StrokeRec( 2, char109_stroke0 ), - new StrokeRec( 7, char109_stroke1 ), - new StrokeRec( 7, char109_stroke2 ), -}; - -/* char: 110 'n' */ - -static final CoordRec char110_stroke0[] = { - new CoordRec((float) 26.1905, (float) 66.6667 ), - new CoordRec((float) 26.1905, (float) 0 ), -}; - -static final CoordRec char110_stroke1[] = { - new CoordRec((float) 26.1905, (float) 47.619 ), - new CoordRec((float) 40.4762, (float) 61.9048 ), - new CoordRec((float) 50, (float) 66.6667 ), - new CoordRec((float) 64.2857, (float) 66.6667 ), - new CoordRec((float) 73.8095, (float) 61.9048 ), - new CoordRec((float) 78.5715, (float) 47.619 ), - new CoordRec((float) 78.5715, (float) 0 ), -}; - -static final StrokeRec char110[] = { - new StrokeRec( 2, char110_stroke0 ), - new StrokeRec( 7, char110_stroke1 ), -}; - -/* char: 111 'o' */ - -static final CoordRec char111_stroke0[] = { - new CoordRec((float) 45.2381, (float) 66.6667 ), - new CoordRec((float) 35.7143, (float) 61.9048 ), - new CoordRec((float) 26.1905, (float) 52.381 ), - new CoordRec((float) 21.4286, (float) 38.0952 ), - new CoordRec((float) 21.4286, (float) 28.5714 ), - new CoordRec((float) 26.1905, (float) 14.2857 ), - new CoordRec((float) 35.7143, (float) 4.7619 ), - new CoordRec((float) 45.2381, (float) 0 ), - new CoordRec((float) 59.5238, (float) 0 ), - new CoordRec((float) 69.0476, (float) 4.7619 ), - new CoordRec((float) 78.5714, (float) 14.2857 ), - new CoordRec((float) 83.3334, (float) 28.5714 ), - new CoordRec((float) 83.3334, (float) 38.0952 ), - new CoordRec((float) 78.5714, (float) 52.381 ), - new CoordRec((float) 69.0476, (float) 61.9048 ), - new CoordRec((float) 59.5238, (float) 66.6667 ), - new CoordRec((float) 45.2381, (float) 66.6667 ), -}; - -static final StrokeRec char111[] = { - new StrokeRec( 17, char111_stroke0 ), -}; - -/* char: 112 'p' */ - -static final CoordRec char112_stroke0[] = { - new CoordRec((float) 23.8095, (float) 66.6667 ), - new CoordRec((float) 23.8095, (float) -33.3333 ), -}; - -static final CoordRec char112_stroke1[] = { - new CoordRec((float) 23.8095, (float) 52.381 ), - new CoordRec((float) 33.3333, (float) 61.9048 ), - new CoordRec((float) 42.8571, (float) 66.6667 ), - new CoordRec((float) 57.1428, (float) 66.6667 ), - new CoordRec((float) 66.6666, (float) 61.9048 ), - new CoordRec((float) 76.1905, (float) 52.381 ), - new CoordRec((float) 80.9524, (float) 38.0952 ), - new CoordRec((float) 80.9524, (float) 28.5714 ), - new CoordRec((float) 76.1905, (float) 14.2857 ), - new CoordRec((float) 66.6666, (float) 4.7619 ), - new CoordRec((float) 57.1428, (float) 0 ), - new CoordRec((float) 42.8571, (float) 0 ), - new CoordRec((float) 33.3333, (float) 4.7619 ), - new CoordRec((float) 23.8095, (float) 14.2857 ), -}; - -static final StrokeRec char112[] = { - new StrokeRec( 2, char112_stroke0 ), - new StrokeRec( 14, char112_stroke1 ), -}; - -/* char: 113 'q' */ - -static final CoordRec char113_stroke0[] = { - new CoordRec((float) 80.9524, (float) 66.6667 ), - new CoordRec((float) 80.9524, (float) -33.3333 ), -}; - -static final CoordRec char113_stroke1[] = { - new CoordRec((float) 80.9524, (float) 52.381 ), - new CoordRec((float) 71.4285, (float) 61.9048 ), - new CoordRec((float) 61.9047, (float) 66.6667 ), - new CoordRec((float) 47.619, (float) 66.6667 ), - new CoordRec((float) 38.0952, (float) 61.9048 ), - new CoordRec((float) 28.5714, (float) 52.381 ), - new CoordRec((float) 23.8095, (float) 38.0952 ), - new CoordRec((float) 23.8095, (float) 28.5714 ), - new CoordRec((float) 28.5714, (float) 14.2857 ), - new CoordRec((float) 38.0952, (float) 4.7619 ), - new CoordRec((float) 47.619, (float) 0 ), - new CoordRec((float) 61.9047, (float) 0 ), - new CoordRec((float) 71.4285, (float) 4.7619 ), - new CoordRec((float) 80.9524, (float) 14.2857 ), -}; - -static final StrokeRec char113[] = { - new StrokeRec( 2, char113_stroke0 ), - new StrokeRec( 14, char113_stroke1 ), -}; - -/* char: 114 'r' */ - -static final CoordRec char114_stroke0[] = { - new CoordRec((float) 33.3334, (float) 66.6667 ), - new CoordRec((float) 33.3334, (float) 0 ), -}; - -static final CoordRec char114_stroke1[] = { - new CoordRec((float) 33.3334, (float) 38.0952 ), - new CoordRec((float) 38.0953, (float) 52.381 ), - new CoordRec((float) 47.6191, (float) 61.9048 ), - new CoordRec((float) 57.1429, (float) 66.6667 ), - new CoordRec((float) 71.4286, (float) 66.6667 ), -}; - -static final StrokeRec char114[] = { - new StrokeRec( 2, char114_stroke0 ), - new StrokeRec( 5, char114_stroke1 ), -}; - -/* char: 115 's' */ - -static final CoordRec char115_stroke0[] = { - new CoordRec((float) 78.5715, (float) 52.381 ), - new CoordRec((float) 73.8095, (float) 61.9048 ), - new CoordRec((float) 59.5238, (float) 66.6667 ), - new CoordRec((float) 45.2381, (float) 66.6667 ), - new CoordRec((float) 30.9524, (float) 61.9048 ), - new CoordRec((float) 26.1905, (float) 52.381 ), - new CoordRec((float) 30.9524, (float) 42.8571 ), - new CoordRec((float) 40.4762, (float) 38.0952 ), - new CoordRec((float) 64.2857, (float) 33.3333 ), - new CoordRec((float) 73.8095, (float) 28.5714 ), - new CoordRec((float) 78.5715, (float) 19.0476 ), - new CoordRec((float) 78.5715, (float) 14.2857 ), - new CoordRec((float) 73.8095, (float) 4.7619 ), - new CoordRec((float) 59.5238, (float) 0 ), - new CoordRec((float) 45.2381, (float) 0 ), - new CoordRec((float) 30.9524, (float) 4.7619 ), - new CoordRec((float) 26.1905, (float) 14.2857 ), -}; - -static final StrokeRec char115[] = { - new StrokeRec( 17, char115_stroke0 ), -}; - -/* char: 116 't' */ - -static final CoordRec char116_stroke0[] = { - new CoordRec((float) 47.6191, (float) 100 ), - new CoordRec((float) 47.6191, (float) 19.0476 ), - new CoordRec((float) 52.381, (float) 4.7619 ), - new CoordRec((float) 61.9048, (float) 0 ), - new CoordRec((float) 71.4286, (float) 0 ), -}; - -static final CoordRec char116_stroke1[] = { - new CoordRec((float) 33.3334, (float) 66.6667 ), - new CoordRec((float) 66.6667, (float) 66.6667 ), -}; - -static final StrokeRec char116[] = { - new StrokeRec( 5, char116_stroke0 ), - new StrokeRec( 2, char116_stroke1 ), -}; - -/* char: 117 'u' */ - -static final CoordRec char117_stroke0[] = { - new CoordRec((float) 26.1905, (float) 66.6667 ), - new CoordRec((float) 26.1905, (float) 19.0476 ), - new CoordRec((float) 30.9524, (float) 4.7619 ), - new CoordRec((float) 40.4762, (float) 0 ), - new CoordRec((float) 54.7619, (float) 0 ), - new CoordRec((float) 64.2857, (float) 4.7619 ), - new CoordRec((float) 78.5715, (float) 19.0476 ), -}; - -static final CoordRec char117_stroke1[] = { - new CoordRec((float) 78.5715, (float) 66.6667 ), - new CoordRec((float) 78.5715, (float) 0 ), -}; - -static final StrokeRec char117[] = { - new StrokeRec( 7, char117_stroke0 ), - new StrokeRec( 2, char117_stroke1 ), -}; - -/* char: 118 'v' */ - -static final CoordRec char118_stroke0[] = { - new CoordRec((float) 23.8095, (float) 66.6667 ), - new CoordRec((float) 52.3809, (float) 0 ), -}; - -static final CoordRec char118_stroke1[] = { - new CoordRec((float) 80.9524, (float) 66.6667 ), - new CoordRec((float) 52.3809, (float) 0 ), -}; - -static final StrokeRec char118[] = { - new StrokeRec( 2, char118_stroke0 ), - new StrokeRec( 2, char118_stroke1 ), -}; - -/* char: 119 'w' */ - -static final CoordRec char119_stroke0[] = { - new CoordRec((float) 14.2857, (float) 66.6667 ), - new CoordRec((float) 33.3333, (float) 0 ), -}; - -static final CoordRec char119_stroke1[] = { - new CoordRec((float) 52.3809, (float) 66.6667 ), - new CoordRec((float) 33.3333, (float) 0 ), -}; - -static final CoordRec char119_stroke2[] = { - new CoordRec((float) 52.3809, (float) 66.6667 ), - new CoordRec((float) 71.4286, (float) 0 ), -}; - -static final CoordRec char119_stroke3[] = { - new CoordRec((float) 90.4762, (float) 66.6667 ), - new CoordRec((float) 71.4286, (float) 0 ), -}; - -static final StrokeRec char119[] = { - new StrokeRec( 2, char119_stroke0 ), - new StrokeRec( 2, char119_stroke1 ), - new StrokeRec( 2, char119_stroke2 ), - new StrokeRec( 2, char119_stroke3 ), -}; - -/* char: 120 'x' */ - -static final CoordRec char120_stroke0[] = { - new CoordRec((float) 26.1905, (float) 66.6667 ), - new CoordRec((float) 78.5715, (float) 0 ), -}; - -static final CoordRec char120_stroke1[] = { - new CoordRec((float) 78.5715, (float) 66.6667 ), - new CoordRec((float) 26.1905, (float) 0 ), -}; - -static final StrokeRec char120[] = { - new StrokeRec( 2, char120_stroke0 ), - new StrokeRec( 2, char120_stroke1 ), -}; - -/* char: 121 'y' */ - -static final CoordRec char121_stroke0[] = { - new CoordRec((float) 26.1905, (float) 66.6667 ), - new CoordRec((float) 54.7619, (float) 0 ), -}; - -static final CoordRec char121_stroke1[] = { - new CoordRec((float) 83.3334, (float) 66.6667 ), - new CoordRec((float) 54.7619, (float) 0 ), - new CoordRec((float) 45.2381, (float) -19.0476 ), - new CoordRec((float) 35.7143, (float) -28.5714 ), - new CoordRec((float) 26.1905, (float) -33.3333 ), - new CoordRec((float) 21.4286, (float) -33.3333 ), -}; - -static final StrokeRec char121[] = { - new StrokeRec( 2, char121_stroke0 ), - new StrokeRec( 6, char121_stroke1 ), -}; - -/* char: 122 'z' */ - -static final CoordRec char122_stroke0[] = { - new CoordRec((float) 78.5715, (float) 66.6667 ), - new CoordRec((float) 26.1905, (float) 0 ), -}; - -static final CoordRec char122_stroke1[] = { - new CoordRec((float) 26.1905, (float) 66.6667 ), - new CoordRec((float) 78.5715, (float) 66.6667 ), -}; - -static final CoordRec char122_stroke2[] = { - new CoordRec((float) 26.1905, (float) 0 ), - new CoordRec((float) 78.5715, (float) 0 ), -}; - -static final StrokeRec char122[] = { - new StrokeRec( 2, char122_stroke0 ), - new StrokeRec( 2, char122_stroke1 ), - new StrokeRec( 2, char122_stroke2 ), -}; - -/* char: 123 '{' */ - -static final CoordRec char123_stroke0[] = { - new CoordRec((float) 64.2857, (float) 119.048 ), - new CoordRec((float) 54.7619, (float) 114.286 ), - new CoordRec((float) 50, (float) 109.524 ), - new CoordRec((float) 45.2381, (float) 100 ), - new CoordRec((float) 45.2381, (float) 90.4762 ), - new CoordRec((float) 50, (float) 80.9524 ), - new CoordRec((float) 54.7619, (float) 76.1905 ), - new CoordRec((float) 59.5238, (float) 66.6667 ), - new CoordRec((float) 59.5238, (float) 57.1429 ), - new CoordRec((float) 50, (float) 47.619 ), -}; - -static final CoordRec char123_stroke1[] = { - new CoordRec((float) 54.7619, (float) 114.286 ), - new CoordRec((float) 50, (float) 104.762 ), - new CoordRec((float) 50, (float) 95.2381 ), - new CoordRec((float) 54.7619, (float) 85.7143 ), - new CoordRec((float) 59.5238, (float) 80.9524 ), - new CoordRec((float) 64.2857, (float) 71.4286 ), - new CoordRec((float) 64.2857, (float) 61.9048 ), - new CoordRec((float) 59.5238, (float) 52.381 ), - new CoordRec((float) 40.4762, (float) 42.8571 ), - new CoordRec((float) 59.5238, (float) 33.3333 ), - new CoordRec((float) 64.2857, (float) 23.8095 ), - new CoordRec((float) 64.2857, (float) 14.2857 ), - new CoordRec((float) 59.5238, (float) 4.7619 ), - new CoordRec((float) 54.7619, (float) 0 ), - new CoordRec((float) 50, (float) -9.5238 ), - new CoordRec((float) 50, (float) -19.0476 ), - new CoordRec((float) 54.7619, (float) -28.5714 ), -}; - -static final CoordRec char123_stroke2[] = { - new CoordRec((float) 50, (float) 38.0952 ), - new CoordRec((float) 59.5238, (float) 28.5714 ), - new CoordRec((float) 59.5238, (float) 19.0476 ), - new CoordRec((float) 54.7619, (float) 9.5238 ), - new CoordRec((float) 50, (float) 4.7619 ), - new CoordRec((float) 45.2381, (float) -4.7619 ), - new CoordRec((float) 45.2381, (float) -14.2857 ), - new CoordRec((float) 50, (float) -23.8095 ), - new CoordRec((float) 54.7619, (float) -28.5714 ), - new CoordRec((float) 64.2857, (float) -33.3333 ), -}; - -static final StrokeRec char123[] = { - new StrokeRec( 10, char123_stroke0 ), - new StrokeRec( 17, char123_stroke1 ), - new StrokeRec( 10, char123_stroke2 ), -}; - -/* char: 124 '|' */ - -static final CoordRec char124_stroke0[] = { - new CoordRec((float) 52.381, (float) 119.048 ), - new CoordRec((float) 52.381, (float) -33.3333 ), -}; - -static final StrokeRec char124[] = { - new StrokeRec( 2, char124_stroke0 ), -}; - -/* char: 125 '}' */ - -static final CoordRec char125_stroke0[] = { - new CoordRec((float) 40.4762, (float) 119.048 ), - new CoordRec((float) 50, (float) 114.286 ), - new CoordRec((float) 54.7619, (float) 109.524 ), - new CoordRec((float) 59.5238, (float) 100 ), - new CoordRec((float) 59.5238, (float) 90.4762 ), - new CoordRec((float) 54.7619, (float) 80.9524 ), - new CoordRec((float) 50, (float) 76.1905 ), - new CoordRec((float) 45.2381, (float) 66.6667 ), - new CoordRec((float) 45.2381, (float) 57.1429 ), - new CoordRec((float) 54.7619, (float) 47.619 ), -}; - -static final CoordRec char125_stroke1[] = { - new CoordRec((float) 50, (float) 114.286 ), - new CoordRec((float) 54.7619, (float) 104.762 ), - new CoordRec((float) 54.7619, (float) 95.2381 ), - new CoordRec((float) 50, (float) 85.7143 ), - new CoordRec((float) 45.2381, (float) 80.9524 ), - new CoordRec((float) 40.4762, (float) 71.4286 ), - new CoordRec((float) 40.4762, (float) 61.9048 ), - new CoordRec((float) 45.2381, (float) 52.381 ), - new CoordRec((float) 64.2857, (float) 42.8571 ), - new CoordRec((float) 45.2381, (float) 33.3333 ), - new CoordRec((float) 40.4762, (float) 23.8095 ), - new CoordRec((float) 40.4762, (float) 14.2857 ), - new CoordRec((float) 45.2381, (float) 4.7619 ), - new CoordRec((float) 50, (float) 0 ), - new CoordRec((float) 54.7619, (float) -9.5238 ), - new CoordRec((float) 54.7619, (float) -19.0476 ), - new CoordRec((float) 50, (float) -28.5714 ), -}; - -static final CoordRec char125_stroke2[] = { - new CoordRec((float) 54.7619, (float) 38.0952 ), - new CoordRec((float) 45.2381, (float) 28.5714 ), - new CoordRec((float) 45.2381, (float) 19.0476 ), - new CoordRec((float) 50, (float) 9.5238 ), - new CoordRec((float) 54.7619, (float) 4.7619 ), - new CoordRec((float) 59.5238, (float) -4.7619 ), - new CoordRec((float) 59.5238, (float) -14.2857 ), - new CoordRec((float) 54.7619, (float) -23.8095 ), - new CoordRec((float) 50, (float) -28.5714 ), - new CoordRec((float) 40.4762, (float) -33.3333 ), -}; - -static final StrokeRec char125[] = { - new StrokeRec( 10, char125_stroke0 ), - new StrokeRec( 17, char125_stroke1 ), - new StrokeRec( 10, char125_stroke2 ), -}; - -/* char: 126 '~' */ - -static final CoordRec char126_stroke0[] = { - new CoordRec((float) 9.5238, (float) 28.5714 ), - new CoordRec((float) 9.5238, (float) 38.0952 ), - new CoordRec((float) 14.2857, (float) 52.381 ), - new CoordRec((float) 23.8095, (float) 57.1429 ), - new CoordRec((float) 33.3333, (float) 57.1429 ), - new CoordRec((float) 42.8571, (float) 52.381 ), - new CoordRec((float) 61.9048, (float) 38.0952 ), - new CoordRec((float) 71.4286, (float) 33.3333 ), - new CoordRec((float) 80.9524, (float) 33.3333 ), - new CoordRec((float) 90.4762, (float) 38.0952 ), - new CoordRec((float) 95.2381, (float) 47.619 ), -}; - -static final CoordRec char126_stroke1[] = { - new CoordRec((float) 9.5238, (float) 38.0952 ), - new CoordRec((float) 14.2857, (float) 47.619 ), - new CoordRec((float) 23.8095, (float) 52.381 ), - new CoordRec((float) 33.3333, (float) 52.381 ), - new CoordRec((float) 42.8571, (float) 47.619 ), - new CoordRec((float) 61.9048, (float) 33.3333 ), - new CoordRec((float) 71.4286, (float) 28.5714 ), - new CoordRec((float) 80.9524, (float) 28.5714 ), - new CoordRec((float) 90.4762, (float) 33.3333 ), - new CoordRec((float) 95.2381, (float) 47.619 ), - new CoordRec((float) 95.2381, (float) 57.1429 ), -}; - -static final StrokeRec char126[] = { - new StrokeRec( 11, char126_stroke0 ), - new StrokeRec( 11, char126_stroke1 ), -}; - -/* char: 127 */ - -static final CoordRec char127_stroke0[] = { - new CoordRec((float) 71.4286, (float) 100 ), - new CoordRec((float) 33.3333, (float) -33.3333 ), -}; - -static final CoordRec char127_stroke1[] = { - new CoordRec((float) 47.619, (float) 66.6667 ), - new CoordRec((float) 33.3333, (float) 61.9048 ), - new CoordRec((float) 23.8095, (float) 52.381 ), - new CoordRec((float) 19.0476, (float) 38.0952 ), - new CoordRec((float) 19.0476, (float) 23.8095 ), - new CoordRec((float) 23.8095, (float) 14.2857 ), - new CoordRec((float) 33.3333, (float) 4.7619 ), - new CoordRec((float) 47.619, (float) 0 ), - new CoordRec((float) 57.1428, (float) 0 ), - new CoordRec((float) 71.4286, (float) 4.7619 ), - new CoordRec((float) 80.9524, (float) 14.2857 ), - new CoordRec((float) 85.7143, (float) 28.5714 ), - new CoordRec((float) 85.7143, (float) 42.8571 ), - new CoordRec((float) 80.9524, (float) 52.381 ), - new CoordRec((float) 71.4286, (float) 61.9048 ), - new CoordRec((float) 57.1428, (float) 66.6667 ), - new CoordRec((float) 47.619, (float) 66.6667 ), -}; - -static final StrokeRec char127[] = { - new StrokeRec( 2, char127_stroke0 ), - new StrokeRec( 17, char127_stroke1 ), -}; - -static final StrokeCharRec chars[] = { - new StrokeCharRec(0, /* char0 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char1 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char2 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char3 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char4 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char5 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char6 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char7 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char8 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char9 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char10 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char11 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char12 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char13 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char14 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char15 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char16 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char17 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char18 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char19 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char20 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char21 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char22 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char23 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char24 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char25 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char26 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char27 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char28 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char29 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char30 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char31 */ null, (float) 0, (float) 0 ), - new StrokeCharRec(0, /* char32 */ null, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char33, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char34, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(4, char35, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(3, char36, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(3, char37, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char38, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char39, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char40, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char41, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(3, char42, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char43, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char44, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char45, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char46, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char47, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char48, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char49, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char50, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char51, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char52, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char53, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char54, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char55, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char56, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char57, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char58, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char59, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char60, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char61, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char62, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char63, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char64, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(3, char65, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(3, char66, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char67, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char68, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(4, char69, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(3, char70, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char71, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(3, char72, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char73, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char74, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(3, char75, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char76, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(4, char77, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(3, char78, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char79, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char80, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char81, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(3, char82, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char83, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char84, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char85, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char86, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(4, char87, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char88, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char89, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(3, char90, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(4, char91, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char92, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(4, char93, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char94, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char95, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char96, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char97, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char98, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char99, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char100, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char101, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char102, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char103, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char104, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char105, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char106, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(3, char107, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char108, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(3, char109, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char110, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char111, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char112, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char113, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char114, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char115, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char116, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char117, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char118, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(4, char119, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char120, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char121, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(3, char122, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(3, char123, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(1, char124, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(3, char125, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char126, (float) 52.381, (float) 104.762 ), - new StrokeCharRec(2, char127, (float) 52.381, (float) 104.762 ), -}; - -public static final StrokeFontRec glutStrokeMonoRoman = new StrokeFontRec( "Roman", 128, chars, (float) 119.048, (float) -33.3333 ); -} diff --git a/src/jogl/classes/com/sun/opengl/util/gl2/GLUTStrokeRoman.java b/src/jogl/classes/com/sun/opengl/util/gl2/GLUTStrokeRoman.java deleted file mode 100644 index e960f155a..000000000 --- a/src/jogl/classes/com/sun/opengl/util/gl2/GLUTStrokeRoman.java +++ /dev/null @@ -1,2491 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.gl2; - -class GLUTStrokeRoman { - -/* GENERATED FILE -- DO NOT MODIFY */ - -/* char: 33 '!' */ - -static final CoordRec char33_stroke0[] = { - new CoordRec((float) 13.3819, (float) 100), - new CoordRec((float) 13.3819, (float) 33.3333), -}; - -static final CoordRec char33_stroke1[] = { - new CoordRec((float) 13.3819, (float) 9.5238), - new CoordRec((float) 8.62, (float) 4.7619), - new CoordRec((float) 13.3819, (float) 0), - new CoordRec((float) 18.1438, (float) 4.7619), - new CoordRec((float) 13.3819, (float) 9.5238), -}; - -static final StrokeRec char33[] = { - new StrokeRec(2, char33_stroke0), - new StrokeRec(5, char33_stroke1), -}; - -/* char: 34 '"' */ - -static final CoordRec char34_stroke0[] = { - new CoordRec((float) 4.02, (float) 100), - new CoordRec((float) 4.02, (float) 66.6667), -}; - -static final CoordRec char34_stroke1[] = { - new CoordRec((float) 42.1152, (float) 100), - new CoordRec((float) 42.1152, (float) 66.6667), -}; - -static final StrokeRec char34[] = { - new StrokeRec(2, char34_stroke0), - new StrokeRec(2, char34_stroke1), -}; - -/* char: 35 '#' */ - -static final CoordRec char35_stroke0[] = { - new CoordRec((float) 41.2952, (float) 119.048), - new CoordRec((float) 7.9619, (float) -33.3333), -}; - -static final CoordRec char35_stroke1[] = { - new CoordRec((float) 69.8667, (float) 119.048), - new CoordRec((float) 36.5333, (float) -33.3333), -}; - -static final CoordRec char35_stroke2[] = { - new CoordRec((float) 7.9619, (float) 57.1429), - new CoordRec((float) 74.6286, (float) 57.1429), -}; - -static final CoordRec char35_stroke3[] = { - new CoordRec((float) 3.2, (float) 28.5714), - new CoordRec((float) 69.8667, (float) 28.5714), -}; - -static final StrokeRec char35[] = { - new StrokeRec(2, char35_stroke0), - new StrokeRec(2, char35_stroke1), - new StrokeRec(2, char35_stroke2), - new StrokeRec(2, char35_stroke3), -}; - -/* char: 36 '$' */ - -static final CoordRec char36_stroke0[] = { - new CoordRec((float) 28.6295, (float) 119.048), - new CoordRec((float) 28.6295, (float) -19.0476), -}; - -static final CoordRec char36_stroke1[] = { - new CoordRec((float) 47.6771, (float) 119.048), - new CoordRec((float) 47.6771, (float) -19.0476), -}; - -static final CoordRec char36_stroke2[] = { - new CoordRec((float) 71.4867, (float) 85.7143), - new CoordRec((float) 61.9629, (float) 95.2381), - new CoordRec((float) 47.6771, (float) 100), - new CoordRec((float) 28.6295, (float) 100), - new CoordRec((float) 14.3438, (float) 95.2381), - new CoordRec((float) 4.82, (float) 85.7143), - new CoordRec((float) 4.82, (float) 76.1905), - new CoordRec((float) 9.5819, (float) 66.6667), - new CoordRec((float) 14.3438, (float) 61.9048), - new CoordRec((float) 23.8676, (float) 57.1429), - new CoordRec((float) 52.439, (float) 47.619), - new CoordRec((float) 61.9629, (float) 42.8571), - new CoordRec((float) 66.7248, (float) 38.0952), - new CoordRec((float) 71.4867, (float) 28.5714), - new CoordRec((float) 71.4867, (float) 14.2857), - new CoordRec((float) 61.9629, (float) 4.7619), - new CoordRec((float) 47.6771, (float) 0), - new CoordRec((float) 28.6295, (float) 0), - new CoordRec((float) 14.3438, (float) 4.7619), - new CoordRec((float) 4.82, (float) 14.2857), -}; - -static final StrokeRec char36[] = { - new StrokeRec(2, char36_stroke0), - new StrokeRec(2, char36_stroke1), - new StrokeRec(20, char36_stroke2), -}; - -/* char: 37 '%' */ - -static final CoordRec char37_stroke0[] = { - new CoordRec((float) 92.0743, (float) 100), - new CoordRec((float) 6.36, (float) 0), -}; - -static final CoordRec char37_stroke1[] = { - new CoordRec((float) 30.1695, (float) 100), - new CoordRec((float) 39.6933, (float) 90.4762), - new CoordRec((float) 39.6933, (float) 80.9524), - new CoordRec((float) 34.9314, (float) 71.4286), - new CoordRec((float) 25.4076, (float) 66.6667), - new CoordRec((float) 15.8838, (float) 66.6667), - new CoordRec((float) 6.36, (float) 76.1905), - new CoordRec((float) 6.36, (float) 85.7143), - new CoordRec((float) 11.1219, (float) 95.2381), - new CoordRec((float) 20.6457, (float) 100), - new CoordRec((float) 30.1695, (float) 100), - new CoordRec((float) 39.6933, (float) 95.2381), - new CoordRec((float) 53.979, (float) 90.4762), - new CoordRec((float) 68.2648, (float) 90.4762), - new CoordRec((float) 82.5505, (float) 95.2381), - new CoordRec((float) 92.0743, (float) 100), -}; - -static final CoordRec char37_stroke2[] = { - new CoordRec((float) 73.0267, (float) 33.3333), - new CoordRec((float) 63.5029, (float) 28.5714), - new CoordRec((float) 58.741, (float) 19.0476), - new CoordRec((float) 58.741, (float) 9.5238), - new CoordRec((float) 68.2648, (float) 0), - new CoordRec((float) 77.7886, (float) 0), - new CoordRec((float) 87.3124, (float) 4.7619), - new CoordRec((float) 92.0743, (float) 14.2857), - new CoordRec((float) 92.0743, (float) 23.8095), - new CoordRec((float) 82.5505, (float) 33.3333), - new CoordRec((float) 73.0267, (float) 33.3333), -}; - -static final StrokeRec char37[] = { - new StrokeRec(2, char37_stroke0), - new StrokeRec(16, char37_stroke1), - new StrokeRec(11, char37_stroke2), -}; - -/* char: 38 '&' */ - -static final CoordRec char38_stroke0[] = { - new CoordRec((float) 101.218, (float) 57.1429), - new CoordRec((float) 101.218, (float) 61.9048), - new CoordRec((float) 96.4562, (float) 66.6667), - new CoordRec((float) 91.6943, (float) 66.6667), - new CoordRec((float) 86.9324, (float) 61.9048), - new CoordRec((float) 82.1705, (float) 52.381), - new CoordRec((float) 72.6467, (float) 28.5714), - new CoordRec((float) 63.1229, (float) 14.2857), - new CoordRec((float) 53.599, (float) 4.7619), - new CoordRec((float) 44.0752, (float) 0), - new CoordRec((float) 25.0276, (float) 0), - new CoordRec((float) 15.5038, (float) 4.7619), - new CoordRec((float) 10.7419, (float) 9.5238), - new CoordRec((float) 5.98, (float) 19.0476), - new CoordRec((float) 5.98, (float) 28.5714), - new CoordRec((float) 10.7419, (float) 38.0952), - new CoordRec((float) 15.5038, (float) 42.8571), - new CoordRec((float) 48.8371, (float) 61.9048), - new CoordRec((float) 53.599, (float) 66.6667), - new CoordRec((float) 58.361, (float) 76.1905), - new CoordRec((float) 58.361, (float) 85.7143), - new CoordRec((float) 53.599, (float) 95.2381), - new CoordRec((float) 44.0752, (float) 100), - new CoordRec((float) 34.5514, (float) 95.2381), - new CoordRec((float) 29.7895, (float) 85.7143), - new CoordRec((float) 29.7895, (float) 76.1905), - new CoordRec((float) 34.5514, (float) 61.9048), - new CoordRec((float) 44.0752, (float) 47.619), - new CoordRec((float) 67.8848, (float) 14.2857), - new CoordRec((float) 77.4086, (float) 4.7619), - new CoordRec((float) 86.9324, (float) 0), - new CoordRec((float) 96.4562, (float) 0), - new CoordRec((float) 101.218, (float) 4.7619), - new CoordRec((float) 101.218, (float) 9.5238), -}; - -static final StrokeRec char38[] = { - new StrokeRec(34, char38_stroke0), -}; - -/* char: 39 ''' */ - -static final CoordRec char39_stroke0[] = { - new CoordRec((float) 4.44, (float) 100), - new CoordRec((float) 4.44, (float) 66.6667), -}; - -static final StrokeRec char39[] = { - new StrokeRec(2, char39_stroke0), -}; - -/* char: 40 '(' */ - -static final CoordRec char40_stroke0[] = { - new CoordRec((float) 40.9133, (float) 119.048), - new CoordRec((float) 31.3895, (float) 109.524), - new CoordRec((float) 21.8657, (float) 95.2381), - new CoordRec((float) 12.3419, (float) 76.1905), - new CoordRec((float) 7.58, (float) 52.381), - new CoordRec((float) 7.58, (float) 33.3333), - new CoordRec((float) 12.3419, (float) 9.5238), - new CoordRec((float) 21.8657, (float) -9.5238), - new CoordRec((float) 31.3895, (float) -23.8095), - new CoordRec((float) 40.9133, (float) -33.3333), -}; - -static final StrokeRec char40[] = { - new StrokeRec(10, char40_stroke0), -}; - -/* char: 41 ')' */ - -static final CoordRec char41_stroke0[] = { - new CoordRec((float) 5.28, (float) 119.048), - new CoordRec((float) 14.8038, (float) 109.524), - new CoordRec((float) 24.3276, (float) 95.2381), - new CoordRec((float) 33.8514, (float) 76.1905), - new CoordRec((float) 38.6133, (float) 52.381), - new CoordRec((float) 38.6133, (float) 33.3333), - new CoordRec((float) 33.8514, (float) 9.5238), - new CoordRec((float) 24.3276, (float) -9.5238), - new CoordRec((float) 14.8038, (float) -23.8095), - new CoordRec((float) 5.28, (float) -33.3333), -}; - -static final StrokeRec char41[] = { - new StrokeRec(10, char41_stroke0), -}; - -/* char: 42 '*' */ - -static final CoordRec char42_stroke0[] = { - new CoordRec((float) 30.7695, (float) 71.4286), - new CoordRec((float) 30.7695, (float) 14.2857), -}; - -static final CoordRec char42_stroke1[] = { - new CoordRec((float) 6.96, (float) 57.1429), - new CoordRec((float) 54.579, (float) 28.5714), -}; - -static final CoordRec char42_stroke2[] = { - new CoordRec((float) 54.579, (float) 57.1429), - new CoordRec((float) 6.96, (float) 28.5714), -}; - -static final StrokeRec char42[] = { - new StrokeRec(2, char42_stroke0), - new StrokeRec(2, char42_stroke1), - new StrokeRec(2, char42_stroke2), -}; - -/* char: 43 '+' */ - -static final CoordRec char43_stroke0[] = { - new CoordRec((float) 48.8371, (float) 85.7143), - new CoordRec((float) 48.8371, (float) 0), -}; - -static final CoordRec char43_stroke1[] = { - new CoordRec((float) 5.98, (float) 42.8571), - new CoordRec((float) 91.6943, (float) 42.8571), -}; - -static final StrokeRec char43[] = { - new StrokeRec(2, char43_stroke0), - new StrokeRec(2, char43_stroke1), -}; - -/* char: 44 ',' */ - -static final CoordRec char44_stroke0[] = { - new CoordRec((float) 18.2838, (float) 4.7619), - new CoordRec((float) 13.5219, (float) 0), - new CoordRec((float) 8.76, (float) 4.7619), - new CoordRec((float) 13.5219, (float) 9.5238), - new CoordRec((float) 18.2838, (float) 4.7619), - new CoordRec((float) 18.2838, (float) -4.7619), - new CoordRec((float) 13.5219, (float) -14.2857), - new CoordRec((float) 8.76, (float) -19.0476), -}; - -static final StrokeRec char44[] = { - new StrokeRec(8, char44_stroke0), -}; - -/* char: 45 '-' */ - -static final CoordRec char45_stroke0[] = { - new CoordRec((float) 7.38, (float) 42.8571), - new CoordRec((float) 93.0943, (float) 42.8571), -}; - -static final StrokeRec char45[] = { - new StrokeRec(2, char45_stroke0), -}; - -/* char: 46 '.' */ - -static final CoordRec char46_stroke0[] = { - new CoordRec((float) 13.1019, (float) 9.5238), - new CoordRec((float) 8.34, (float) 4.7619), - new CoordRec((float) 13.1019, (float) 0), - new CoordRec((float) 17.8638, (float) 4.7619), - new CoordRec((float) 13.1019, (float) 9.5238), -}; - -static final StrokeRec char46[] = { - new StrokeRec(5, char46_stroke0), -}; - -/* char: 47 '/' */ - -static final CoordRec char47_stroke0[] = { - new CoordRec((float) 7.24, (float) -14.2857), - new CoordRec((float) 73.9067, (float) 100), -}; - -static final StrokeRec char47[] = { - new StrokeRec(2, char47_stroke0), -}; - -/* char: 48 '0' */ - -static final CoordRec char48_stroke0[] = { - new CoordRec((float) 33.5514, (float) 100), - new CoordRec((float) 19.2657, (float) 95.2381), - new CoordRec((float) 9.7419, (float) 80.9524), - new CoordRec((float) 4.98, (float) 57.1429), - new CoordRec((float) 4.98, (float) 42.8571), - new CoordRec((float) 9.7419, (float) 19.0476), - new CoordRec((float) 19.2657, (float) 4.7619), - new CoordRec((float) 33.5514, (float) 0), - new CoordRec((float) 43.0752, (float) 0), - new CoordRec((float) 57.361, (float) 4.7619), - new CoordRec((float) 66.8848, (float) 19.0476), - new CoordRec((float) 71.6467, (float) 42.8571), - new CoordRec((float) 71.6467, (float) 57.1429), - new CoordRec((float) 66.8848, (float) 80.9524), - new CoordRec((float) 57.361, (float) 95.2381), - new CoordRec((float) 43.0752, (float) 100), - new CoordRec((float) 33.5514, (float) 100), -}; - -static final StrokeRec char48[] = { - new StrokeRec(17, char48_stroke0), -}; - -/* char: 49 '1' */ - -static final CoordRec char49_stroke0[] = { - new CoordRec((float) 11.82, (float) 80.9524), - new CoordRec((float) 21.3438, (float) 85.7143), - new CoordRec((float) 35.6295, (float) 100), - new CoordRec((float) 35.6295, (float) 0), -}; - -static final StrokeRec char49[] = { - new StrokeRec(4, char49_stroke0), -}; - -/* char: 50 '2' */ - -static final CoordRec char50_stroke0[] = { - new CoordRec((float) 10.1819, (float) 76.1905), - new CoordRec((float) 10.1819, (float) 80.9524), - new CoordRec((float) 14.9438, (float) 90.4762), - new CoordRec((float) 19.7057, (float) 95.2381), - new CoordRec((float) 29.2295, (float) 100), - new CoordRec((float) 48.2771, (float) 100), - new CoordRec((float) 57.801, (float) 95.2381), - new CoordRec((float) 62.5629, (float) 90.4762), - new CoordRec((float) 67.3248, (float) 80.9524), - new CoordRec((float) 67.3248, (float) 71.4286), - new CoordRec((float) 62.5629, (float) 61.9048), - new CoordRec((float) 53.039, (float) 47.619), - new CoordRec((float) 5.42, (float) 0), - new CoordRec((float) 72.0867, (float) 0), -}; - -static final StrokeRec char50[] = { - new StrokeRec(14, char50_stroke0), -}; - -/* char: 51 '3' */ - -static final CoordRec char51_stroke0[] = { - new CoordRec((float) 14.5238, (float) 100), - new CoordRec((float) 66.9048, (float) 100), - new CoordRec((float) 38.3333, (float) 61.9048), - new CoordRec((float) 52.619, (float) 61.9048), - new CoordRec((float) 62.1429, (float) 57.1429), - new CoordRec((float) 66.9048, (float) 52.381), - new CoordRec((float) 71.6667, (float) 38.0952), - new CoordRec((float) 71.6667, (float) 28.5714), - new CoordRec((float) 66.9048, (float) 14.2857), - new CoordRec((float) 57.381, (float) 4.7619), - new CoordRec((float) 43.0952, (float) 0), - new CoordRec((float) 28.8095, (float) 0), - new CoordRec((float) 14.5238, (float) 4.7619), - new CoordRec((float) 9.7619, (float) 9.5238), - new CoordRec((float) 5, (float) 19.0476), -}; - -static final StrokeRec char51[] = { - new StrokeRec(15, char51_stroke0), -}; - -/* char: 52 '4' */ - -static final CoordRec char52_stroke0[] = { - new CoordRec((float) 51.499, (float) 100), - new CoordRec((float) 3.88, (float) 33.3333), - new CoordRec((float) 75.3086, (float) 33.3333), -}; - -static final CoordRec char52_stroke1[] = { - new CoordRec((float) 51.499, (float) 100), - new CoordRec((float) 51.499, (float) 0), -}; - -static final StrokeRec char52[] = { - new StrokeRec(3, char52_stroke0), - new StrokeRec(2, char52_stroke1), -}; - -/* char: 53 '5' */ - -static final CoordRec char53_stroke0[] = { - new CoordRec((float) 62.0029, (float) 100), - new CoordRec((float) 14.3838, (float) 100), - new CoordRec((float) 9.6219, (float) 57.1429), - new CoordRec((float) 14.3838, (float) 61.9048), - new CoordRec((float) 28.6695, (float) 66.6667), - new CoordRec((float) 42.9552, (float) 66.6667), - new CoordRec((float) 57.241, (float) 61.9048), - new CoordRec((float) 66.7648, (float) 52.381), - new CoordRec((float) 71.5267, (float) 38.0952), - new CoordRec((float) 71.5267, (float) 28.5714), - new CoordRec((float) 66.7648, (float) 14.2857), - new CoordRec((float) 57.241, (float) 4.7619), - new CoordRec((float) 42.9552, (float) 0), - new CoordRec((float) 28.6695, (float) 0), - new CoordRec((float) 14.3838, (float) 4.7619), - new CoordRec((float) 9.6219, (float) 9.5238), - new CoordRec((float) 4.86, (float) 19.0476), -}; - -static final StrokeRec char53[] = { - new StrokeRec(17, char53_stroke0), -}; - -/* char: 54 '6' */ - -static final CoordRec char54_stroke0[] = { - new CoordRec((float) 62.7229, (float) 85.7143), - new CoordRec((float) 57.961, (float) 95.2381), - new CoordRec((float) 43.6752, (float) 100), - new CoordRec((float) 34.1514, (float) 100), - new CoordRec((float) 19.8657, (float) 95.2381), - new CoordRec((float) 10.3419, (float) 80.9524), - new CoordRec((float) 5.58, (float) 57.1429), - new CoordRec((float) 5.58, (float) 33.3333), - new CoordRec((float) 10.3419, (float) 14.2857), - new CoordRec((float) 19.8657, (float) 4.7619), - new CoordRec((float) 34.1514, (float) 0), - new CoordRec((float) 38.9133, (float) 0), - new CoordRec((float) 53.199, (float) 4.7619), - new CoordRec((float) 62.7229, (float) 14.2857), - new CoordRec((float) 67.4848, (float) 28.5714), - new CoordRec((float) 67.4848, (float) 33.3333), - new CoordRec((float) 62.7229, (float) 47.619), - new CoordRec((float) 53.199, (float) 57.1429), - new CoordRec((float) 38.9133, (float) 61.9048), - new CoordRec((float) 34.1514, (float) 61.9048), - new CoordRec((float) 19.8657, (float) 57.1429), - new CoordRec((float) 10.3419, (float) 47.619), - new CoordRec((float) 5.58, (float) 33.3333), -}; - -static final StrokeRec char54[] = { - new StrokeRec(23, char54_stroke0), -}; - -/* char: 55 '7' */ - -static final CoordRec char55_stroke0[] = { - new CoordRec((float) 72.2267, (float) 100), - new CoordRec((float) 24.6076, (float) 0), -}; - -static final CoordRec char55_stroke1[] = { - new CoordRec((float) 5.56, (float) 100), - new CoordRec((float) 72.2267, (float) 100), -}; - -static final StrokeRec char55[] = { - new StrokeRec(2, char55_stroke0), - new StrokeRec(2, char55_stroke1), -}; - -/* char: 56 '8' */ - -static final CoordRec char56_stroke0[] = { - new CoordRec((float) 29.4095, (float) 100), - new CoordRec((float) 15.1238, (float) 95.2381), - new CoordRec((float) 10.3619, (float) 85.7143), - new CoordRec((float) 10.3619, (float) 76.1905), - new CoordRec((float) 15.1238, (float) 66.6667), - new CoordRec((float) 24.6476, (float) 61.9048), - new CoordRec((float) 43.6952, (float) 57.1429), - new CoordRec((float) 57.981, (float) 52.381), - new CoordRec((float) 67.5048, (float) 42.8571), - new CoordRec((float) 72.2667, (float) 33.3333), - new CoordRec((float) 72.2667, (float) 19.0476), - new CoordRec((float) 67.5048, (float) 9.5238), - new CoordRec((float) 62.7429, (float) 4.7619), - new CoordRec((float) 48.4571, (float) 0), - new CoordRec((float) 29.4095, (float) 0), - new CoordRec((float) 15.1238, (float) 4.7619), - new CoordRec((float) 10.3619, (float) 9.5238), - new CoordRec((float) 5.6, (float) 19.0476), - new CoordRec((float) 5.6, (float) 33.3333), - new CoordRec((float) 10.3619, (float) 42.8571), - new CoordRec((float) 19.8857, (float) 52.381), - new CoordRec((float) 34.1714, (float) 57.1429), - new CoordRec((float) 53.219, (float) 61.9048), - new CoordRec((float) 62.7429, (float) 66.6667), - new CoordRec((float) 67.5048, (float) 76.1905), - new CoordRec((float) 67.5048, (float) 85.7143), - new CoordRec((float) 62.7429, (float) 95.2381), - new CoordRec((float) 48.4571, (float) 100), - new CoordRec((float) 29.4095, (float) 100), -}; - -static final StrokeRec char56[] = { - new StrokeRec(29, char56_stroke0), -}; - -/* char: 57 '9' */ - -static final CoordRec char57_stroke0[] = { - new CoordRec((float) 68.5048, (float) 66.6667), - new CoordRec((float) 63.7429, (float) 52.381), - new CoordRec((float) 54.219, (float) 42.8571), - new CoordRec((float) 39.9333, (float) 38.0952), - new CoordRec((float) 35.1714, (float) 38.0952), - new CoordRec((float) 20.8857, (float) 42.8571), - new CoordRec((float) 11.3619, (float) 52.381), - new CoordRec((float) 6.6, (float) 66.6667), - new CoordRec((float) 6.6, (float) 71.4286), - new CoordRec((float) 11.3619, (float) 85.7143), - new CoordRec((float) 20.8857, (float) 95.2381), - new CoordRec((float) 35.1714, (float) 100), - new CoordRec((float) 39.9333, (float) 100), - new CoordRec((float) 54.219, (float) 95.2381), - new CoordRec((float) 63.7429, (float) 85.7143), - new CoordRec((float) 68.5048, (float) 66.6667), - new CoordRec((float) 68.5048, (float) 42.8571), - new CoordRec((float) 63.7429, (float) 19.0476), - new CoordRec((float) 54.219, (float) 4.7619), - new CoordRec((float) 39.9333, (float) 0), - new CoordRec((float) 30.4095, (float) 0), - new CoordRec((float) 16.1238, (float) 4.7619), - new CoordRec((float) 11.3619, (float) 14.2857), -}; - -static final StrokeRec char57[] = { - new StrokeRec(23, char57_stroke0), -}; - -/* char: 58 ':' */ - -static final CoordRec char58_stroke0[] = { - new CoordRec((float) 14.0819, (float) 66.6667), - new CoordRec((float) 9.32, (float) 61.9048), - new CoordRec((float) 14.0819, (float) 57.1429), - new CoordRec((float) 18.8438, (float) 61.9048), - new CoordRec((float) 14.0819, (float) 66.6667), -}; - -static final CoordRec char58_stroke1[] = { - new CoordRec((float) 14.0819, (float) 9.5238), - new CoordRec((float) 9.32, (float) 4.7619), - new CoordRec((float) 14.0819, (float) 0), - new CoordRec((float) 18.8438, (float) 4.7619), - new CoordRec((float) 14.0819, (float) 9.5238), -}; - -static final StrokeRec char58[] = { - new StrokeRec(5, char58_stroke0), - new StrokeRec(5, char58_stroke1), -}; - -/* char: 59 ';' */ - -static final CoordRec char59_stroke0[] = { - new CoordRec((float) 12.9619, (float) 66.6667), - new CoordRec((float) 8.2, (float) 61.9048), - new CoordRec((float) 12.9619, (float) 57.1429), - new CoordRec((float) 17.7238, (float) 61.9048), - new CoordRec((float) 12.9619, (float) 66.6667), -}; - -static final CoordRec char59_stroke1[] = { - new CoordRec((float) 17.7238, (float) 4.7619), - new CoordRec((float) 12.9619, (float) 0), - new CoordRec((float) 8.2, (float) 4.7619), - new CoordRec((float) 12.9619, (float) 9.5238), - new CoordRec((float) 17.7238, (float) 4.7619), - new CoordRec((float) 17.7238, (float) -4.7619), - new CoordRec((float) 12.9619, (float) -14.2857), - new CoordRec((float) 8.2, (float) -19.0476), -}; - -static final StrokeRec char59[] = { - new StrokeRec(5, char59_stroke0), - new StrokeRec(8, char59_stroke1), -}; - -/* char: 60 '<' */ - -static final CoordRec char60_stroke0[] = { - new CoordRec((float) 79.2505, (float) 85.7143), - new CoordRec((float) 3.06, (float) 42.8571), - new CoordRec((float) 79.2505, (float) 0), -}; - -static final StrokeRec char60[] = { - new StrokeRec(3, char60_stroke0), -}; - -/* char: 61 '=' */ - -static final CoordRec char61_stroke0[] = { - new CoordRec((float) 5.7, (float) 57.1429), - new CoordRec((float) 91.4143, (float) 57.1429), -}; - -static final CoordRec char61_stroke1[] = { - new CoordRec((float) 5.7, (float) 28.5714), - new CoordRec((float) 91.4143, (float) 28.5714), -}; - -static final StrokeRec char61[] = { - new StrokeRec(2, char61_stroke0), - new StrokeRec(2, char61_stroke1), -}; - -/* char: 62 '>' */ - -static final CoordRec char62_stroke0[] = { - new CoordRec((float) 2.78, (float) 85.7143), - new CoordRec((float) 78.9705, (float) 42.8571), - new CoordRec((float) 2.78, (float) 0), -}; - -static final StrokeRec char62[] = { - new StrokeRec(3, char62_stroke0), -}; - -/* char: 63 '?' */ - -static final CoordRec char63_stroke0[] = { - new CoordRec((float) 8.42, (float) 76.1905), - new CoordRec((float) 8.42, (float) 80.9524), - new CoordRec((float) 13.1819, (float) 90.4762), - new CoordRec((float) 17.9438, (float) 95.2381), - new CoordRec((float) 27.4676, (float) 100), - new CoordRec((float) 46.5152, (float) 100), - new CoordRec((float) 56.039, (float) 95.2381), - new CoordRec((float) 60.801, (float) 90.4762), - new CoordRec((float) 65.5629, (float) 80.9524), - new CoordRec((float) 65.5629, (float) 71.4286), - new CoordRec((float) 60.801, (float) 61.9048), - new CoordRec((float) 56.039, (float) 57.1429), - new CoordRec((float) 36.9914, (float) 47.619), - new CoordRec((float) 36.9914, (float) 33.3333), -}; - -static final CoordRec char63_stroke1[] = { - new CoordRec((float) 36.9914, (float) 9.5238), - new CoordRec((float) 32.2295, (float) 4.7619), - new CoordRec((float) 36.9914, (float) 0), - new CoordRec((float) 41.7533, (float) 4.7619), - new CoordRec((float) 36.9914, (float) 9.5238), -}; - -static final StrokeRec char63[] = { - new StrokeRec(14, char63_stroke0), - new StrokeRec(5, char63_stroke1), -}; - -/* char: 64 '@' */ - -static final CoordRec char64_stroke0[] = { - new CoordRec((float) 49.2171, (float) 52.381), - new CoordRec((float) 39.6933, (float) 57.1429), - new CoordRec((float) 30.1695, (float) 57.1429), - new CoordRec((float) 25.4076, (float) 47.619), - new CoordRec((float) 25.4076, (float) 42.8571), - new CoordRec((float) 30.1695, (float) 33.3333), - new CoordRec((float) 39.6933, (float) 33.3333), - new CoordRec((float) 49.2171, (float) 38.0952), -}; - -static final CoordRec char64_stroke1[] = { - new CoordRec((float) 49.2171, (float) 57.1429), - new CoordRec((float) 49.2171, (float) 38.0952), - new CoordRec((float) 53.979, (float) 33.3333), - new CoordRec((float) 63.5029, (float) 33.3333), - new CoordRec((float) 68.2648, (float) 42.8571), - new CoordRec((float) 68.2648, (float) 47.619), - new CoordRec((float) 63.5029, (float) 61.9048), - new CoordRec((float) 53.979, (float) 71.4286), - new CoordRec((float) 39.6933, (float) 76.1905), - new CoordRec((float) 34.9314, (float) 76.1905), - new CoordRec((float) 20.6457, (float) 71.4286), - new CoordRec((float) 11.1219, (float) 61.9048), - new CoordRec((float) 6.36, (float) 47.619), - new CoordRec((float) 6.36, (float) 42.8571), - new CoordRec((float) 11.1219, (float) 28.5714), - new CoordRec((float) 20.6457, (float) 19.0476), - new CoordRec((float) 34.9314, (float) 14.2857), - new CoordRec((float) 39.6933, (float) 14.2857), - new CoordRec((float) 53.979, (float) 19.0476), -}; - -static final StrokeRec char64[] = { - new StrokeRec(8, char64_stroke0), - new StrokeRec(19, char64_stroke1), -}; - -/* char: 65 'A' */ - -static final CoordRec char65_stroke0[] = { - new CoordRec((float) 40.5952, (float) 100), - new CoordRec((float) 2.5, (float) 0), -}; - -static final CoordRec char65_stroke1[] = { - new CoordRec((float) 40.5952, (float) 100), - new CoordRec((float) 78.6905, (float) 0), -}; - -static final CoordRec char65_stroke2[] = { - new CoordRec((float) 16.7857, (float) 33.3333), - new CoordRec((float) 64.4048, (float) 33.3333), -}; - -static final StrokeRec char65[] = { - new StrokeRec(2, char65_stroke0), - new StrokeRec(2, char65_stroke1), - new StrokeRec(2, char65_stroke2), -}; - -/* char: 66 'B' */ - -static final CoordRec char66_stroke0[] = { - new CoordRec((float) 11.42, (float) 100), - new CoordRec((float) 11.42, (float) 0), -}; - -static final CoordRec char66_stroke1[] = { - new CoordRec((float) 11.42, (float) 100), - new CoordRec((float) 54.2771, (float) 100), - new CoordRec((float) 68.5629, (float) 95.2381), - new CoordRec((float) 73.3248, (float) 90.4762), - new CoordRec((float) 78.0867, (float) 80.9524), - new CoordRec((float) 78.0867, (float) 71.4286), - new CoordRec((float) 73.3248, (float) 61.9048), - new CoordRec((float) 68.5629, (float) 57.1429), - new CoordRec((float) 54.2771, (float) 52.381), -}; - -static final CoordRec char66_stroke2[] = { - new CoordRec((float) 11.42, (float) 52.381), - new CoordRec((float) 54.2771, (float) 52.381), - new CoordRec((float) 68.5629, (float) 47.619), - new CoordRec((float) 73.3248, (float) 42.8571), - new CoordRec((float) 78.0867, (float) 33.3333), - new CoordRec((float) 78.0867, (float) 19.0476), - new CoordRec((float) 73.3248, (float) 9.5238), - new CoordRec((float) 68.5629, (float) 4.7619), - new CoordRec((float) 54.2771, (float) 0), - new CoordRec((float) 11.42, (float) 0), -}; - -static final StrokeRec char66[] = { - new StrokeRec(2, char66_stroke0), - new StrokeRec(9, char66_stroke1), - new StrokeRec(10, char66_stroke2), -}; - -/* char: 67 'C' */ - -static final CoordRec char67_stroke0[] = { - new CoordRec((float) 78.0886, (float) 76.1905), - new CoordRec((float) 73.3267, (float) 85.7143), - new CoordRec((float) 63.8029, (float) 95.2381), - new CoordRec((float) 54.279, (float) 100), - new CoordRec((float) 35.2314, (float) 100), - new CoordRec((float) 25.7076, (float) 95.2381), - new CoordRec((float) 16.1838, (float) 85.7143), - new CoordRec((float) 11.4219, (float) 76.1905), - new CoordRec((float) 6.66, (float) 61.9048), - new CoordRec((float) 6.66, (float) 38.0952), - new CoordRec((float) 11.4219, (float) 23.8095), - new CoordRec((float) 16.1838, (float) 14.2857), - new CoordRec((float) 25.7076, (float) 4.7619), - new CoordRec((float) 35.2314, (float) 0), - new CoordRec((float) 54.279, (float) 0), - new CoordRec((float) 63.8029, (float) 4.7619), - new CoordRec((float) 73.3267, (float) 14.2857), - new CoordRec((float) 78.0886, (float) 23.8095), -}; - -static final StrokeRec char67[] = { - new StrokeRec(18, char67_stroke0), -}; - -/* char: 68 'D' */ - -static final CoordRec char68_stroke0[] = { - new CoordRec((float) 11.96, (float) 100), - new CoordRec((float) 11.96, (float) 0), -}; - -static final CoordRec char68_stroke1[] = { - new CoordRec((float) 11.96, (float) 100), - new CoordRec((float) 45.2933, (float) 100), - new CoordRec((float) 59.579, (float) 95.2381), - new CoordRec((float) 69.1029, (float) 85.7143), - new CoordRec((float) 73.8648, (float) 76.1905), - new CoordRec((float) 78.6267, (float) 61.9048), - new CoordRec((float) 78.6267, (float) 38.0952), - new CoordRec((float) 73.8648, (float) 23.8095), - new CoordRec((float) 69.1029, (float) 14.2857), - new CoordRec((float) 59.579, (float) 4.7619), - new CoordRec((float) 45.2933, (float) 0), - new CoordRec((float) 11.96, (float) 0), -}; - -static final StrokeRec char68[] = { - new StrokeRec(2, char68_stroke0), - new StrokeRec(12, char68_stroke1), -}; - -/* char: 69 'E' */ - -static final CoordRec char69_stroke0[] = { - new CoordRec((float) 11.42, (float) 100), - new CoordRec((float) 11.42, (float) 0), -}; - -static final CoordRec char69_stroke1[] = { - new CoordRec((float) 11.42, (float) 100), - new CoordRec((float) 73.3248, (float) 100), -}; - -static final CoordRec char69_stroke2[] = { - new CoordRec((float) 11.42, (float) 52.381), - new CoordRec((float) 49.5152, (float) 52.381), -}; - -static final CoordRec char69_stroke3[] = { - new CoordRec((float) 11.42, (float) 0), - new CoordRec((float) 73.3248, (float) 0), -}; - -static final StrokeRec char69[] = { - new StrokeRec(2, char69_stroke0), - new StrokeRec(2, char69_stroke1), - new StrokeRec(2, char69_stroke2), - new StrokeRec(2, char69_stroke3), -}; - -/* char: 70 'F' */ - -static final CoordRec char70_stroke0[] = { - new CoordRec((float) 11.42, (float) 100), - new CoordRec((float) 11.42, (float) 0), -}; - -static final CoordRec char70_stroke1[] = { - new CoordRec((float) 11.42, (float) 100), - new CoordRec((float) 73.3248, (float) 100), -}; - -static final CoordRec char70_stroke2[] = { - new CoordRec((float) 11.42, (float) 52.381), - new CoordRec((float) 49.5152, (float) 52.381), -}; - -static final StrokeRec char70[] = { - new StrokeRec(2, char70_stroke0), - new StrokeRec(2, char70_stroke1), - new StrokeRec(2, char70_stroke2), -}; - -/* char: 71 'G' */ - -static final CoordRec char71_stroke0[] = { - new CoordRec((float) 78.4886, (float) 76.1905), - new CoordRec((float) 73.7267, (float) 85.7143), - new CoordRec((float) 64.2029, (float) 95.2381), - new CoordRec((float) 54.679, (float) 100), - new CoordRec((float) 35.6314, (float) 100), - new CoordRec((float) 26.1076, (float) 95.2381), - new CoordRec((float) 16.5838, (float) 85.7143), - new CoordRec((float) 11.8219, (float) 76.1905), - new CoordRec((float) 7.06, (float) 61.9048), - new CoordRec((float) 7.06, (float) 38.0952), - new CoordRec((float) 11.8219, (float) 23.8095), - new CoordRec((float) 16.5838, (float) 14.2857), - new CoordRec((float) 26.1076, (float) 4.7619), - new CoordRec((float) 35.6314, (float) 0), - new CoordRec((float) 54.679, (float) 0), - new CoordRec((float) 64.2029, (float) 4.7619), - new CoordRec((float) 73.7267, (float) 14.2857), - new CoordRec((float) 78.4886, (float) 23.8095), - new CoordRec((float) 78.4886, (float) 38.0952), -}; - -static final CoordRec char71_stroke1[] = { - new CoordRec((float) 54.679, (float) 38.0952), - new CoordRec((float) 78.4886, (float) 38.0952), -}; - -static final StrokeRec char71[] = { - new StrokeRec(19, char71_stroke0), - new StrokeRec(2, char71_stroke1), -}; - -/* char: 72 'H' */ - -static final CoordRec char72_stroke0[] = { - new CoordRec((float) 11.42, (float) 100), - new CoordRec((float) 11.42, (float) 0), -}; - -static final CoordRec char72_stroke1[] = { - new CoordRec((float) 78.0867, (float) 100), - new CoordRec((float) 78.0867, (float) 0), -}; - -static final CoordRec char72_stroke2[] = { - new CoordRec((float) 11.42, (float) 52.381), - new CoordRec((float) 78.0867, (float) 52.381), -}; - -static final StrokeRec char72[] = { - new StrokeRec(2, char72_stroke0), - new StrokeRec(2, char72_stroke1), - new StrokeRec(2, char72_stroke2), -}; - -/* char: 73 'I' */ - -static final CoordRec char73_stroke0[] = { - new CoordRec((float) 10.86, (float) 100), - new CoordRec((float) 10.86, (float) 0), -}; - -static final StrokeRec char73[] = { - new StrokeRec(2, char73_stroke0), -}; - -/* char: 74 'J' */ - -static final CoordRec char74_stroke0[] = { - new CoordRec((float) 50.119, (float) 100), - new CoordRec((float) 50.119, (float) 23.8095), - new CoordRec((float) 45.3571, (float) 9.5238), - new CoordRec((float) 40.5952, (float) 4.7619), - new CoordRec((float) 31.0714, (float) 0), - new CoordRec((float) 21.5476, (float) 0), - new CoordRec((float) 12.0238, (float) 4.7619), - new CoordRec((float) 7.2619, (float) 9.5238), - new CoordRec((float) 2.5, (float) 23.8095), - new CoordRec((float) 2.5, (float) 33.3333), -}; - -static final StrokeRec char74[] = { - new StrokeRec(10, char74_stroke0), -}; - -/* char: 75 'K' */ - -static final CoordRec char75_stroke0[] = { - new CoordRec((float) 11.28, (float) 100), - new CoordRec((float) 11.28, (float) 0), -}; - -static final CoordRec char75_stroke1[] = { - new CoordRec((float) 77.9467, (float) 100), - new CoordRec((float) 11.28, (float) 33.3333), -}; - -static final CoordRec char75_stroke2[] = { - new CoordRec((float) 35.0895, (float) 57.1429), - new CoordRec((float) 77.9467, (float) 0), -}; - -static final StrokeRec char75[] = { - new StrokeRec(2, char75_stroke0), - new StrokeRec(2, char75_stroke1), - new StrokeRec(2, char75_stroke2), -}; - -/* char: 76 'L' */ - -static final CoordRec char76_stroke0[] = { - new CoordRec((float) 11.68, (float) 100), - new CoordRec((float) 11.68, (float) 0), -}; - -static final CoordRec char76_stroke1[] = { - new CoordRec((float) 11.68, (float) 0), - new CoordRec((float) 68.8229, (float) 0), -}; - -static final StrokeRec char76[] = { - new StrokeRec(2, char76_stroke0), - new StrokeRec(2, char76_stroke1), -}; - -/* char: 77 'M' */ - -static final CoordRec char77_stroke0[] = { - new CoordRec((float) 10.86, (float) 100), - new CoordRec((float) 10.86, (float) 0), -}; - -static final CoordRec char77_stroke1[] = { - new CoordRec((float) 10.86, (float) 100), - new CoordRec((float) 48.9552, (float) 0), -}; - -static final CoordRec char77_stroke2[] = { - new CoordRec((float) 87.0505, (float) 100), - new CoordRec((float) 48.9552, (float) 0), -}; - -static final CoordRec char77_stroke3[] = { - new CoordRec((float) 87.0505, (float) 100), - new CoordRec((float) 87.0505, (float) 0), -}; - -static final StrokeRec char77[] = { - new StrokeRec(2, char77_stroke0), - new StrokeRec(2, char77_stroke1), - new StrokeRec(2, char77_stroke2), - new StrokeRec(2, char77_stroke3), -}; - -/* char: 78 'N' */ - -static final CoordRec char78_stroke0[] = { - new CoordRec((float) 11.14, (float) 100), - new CoordRec((float) 11.14, (float) 0), -}; - -static final CoordRec char78_stroke1[] = { - new CoordRec((float) 11.14, (float) 100), - new CoordRec((float) 77.8067, (float) 0), -}; - -static final CoordRec char78_stroke2[] = { - new CoordRec((float) 77.8067, (float) 100), - new CoordRec((float) 77.8067, (float) 0), -}; - -static final StrokeRec char78[] = { - new StrokeRec(2, char78_stroke0), - new StrokeRec(2, char78_stroke1), - new StrokeRec(2, char78_stroke2), -}; - -/* char: 79 'O' */ - -static final CoordRec char79_stroke0[] = { - new CoordRec((float) 34.8114, (float) 100), - new CoordRec((float) 25.2876, (float) 95.2381), - new CoordRec((float) 15.7638, (float) 85.7143), - new CoordRec((float) 11.0019, (float) 76.1905), - new CoordRec((float) 6.24, (float) 61.9048), - new CoordRec((float) 6.24, (float) 38.0952), - new CoordRec((float) 11.0019, (float) 23.8095), - new CoordRec((float) 15.7638, (float) 14.2857), - new CoordRec((float) 25.2876, (float) 4.7619), - new CoordRec((float) 34.8114, (float) 0), - new CoordRec((float) 53.859, (float) 0), - new CoordRec((float) 63.3829, (float) 4.7619), - new CoordRec((float) 72.9067, (float) 14.2857), - new CoordRec((float) 77.6686, (float) 23.8095), - new CoordRec((float) 82.4305, (float) 38.0952), - new CoordRec((float) 82.4305, (float) 61.9048), - new CoordRec((float) 77.6686, (float) 76.1905), - new CoordRec((float) 72.9067, (float) 85.7143), - new CoordRec((float) 63.3829, (float) 95.2381), - new CoordRec((float) 53.859, (float) 100), - new CoordRec((float) 34.8114, (float) 100), -}; - -static final StrokeRec char79[] = { - new StrokeRec(21, char79_stroke0), -}; - -/* char: 80 'P' */ - -static final CoordRec char80_stroke0[] = { - new CoordRec((float) 12.1, (float) 100), - new CoordRec((float) 12.1, (float) 0), -}; - -static final CoordRec char80_stroke1[] = { - new CoordRec((float) 12.1, (float) 100), - new CoordRec((float) 54.9571, (float) 100), - new CoordRec((float) 69.2429, (float) 95.2381), - new CoordRec((float) 74.0048, (float) 90.4762), - new CoordRec((float) 78.7667, (float) 80.9524), - new CoordRec((float) 78.7667, (float) 66.6667), - new CoordRec((float) 74.0048, (float) 57.1429), - new CoordRec((float) 69.2429, (float) 52.381), - new CoordRec((float) 54.9571, (float) 47.619), - new CoordRec((float) 12.1, (float) 47.619), -}; - -static final StrokeRec char80[] = { - new StrokeRec(2, char80_stroke0), - new StrokeRec(10, char80_stroke1), -}; - -/* char: 81 'Q' */ - -static final CoordRec char81_stroke0[] = { - new CoordRec((float) 33.8714, (float) 100), - new CoordRec((float) 24.3476, (float) 95.2381), - new CoordRec((float) 14.8238, (float) 85.7143), - new CoordRec((float) 10.0619, (float) 76.1905), - new CoordRec((float) 5.3, (float) 61.9048), - new CoordRec((float) 5.3, (float) 38.0952), - new CoordRec((float) 10.0619, (float) 23.8095), - new CoordRec((float) 14.8238, (float) 14.2857), - new CoordRec((float) 24.3476, (float) 4.7619), - new CoordRec((float) 33.8714, (float) 0), - new CoordRec((float) 52.919, (float) 0), - new CoordRec((float) 62.4429, (float) 4.7619), - new CoordRec((float) 71.9667, (float) 14.2857), - new CoordRec((float) 76.7286, (float) 23.8095), - new CoordRec((float) 81.4905, (float) 38.0952), - new CoordRec((float) 81.4905, (float) 61.9048), - new CoordRec((float) 76.7286, (float) 76.1905), - new CoordRec((float) 71.9667, (float) 85.7143), - new CoordRec((float) 62.4429, (float) 95.2381), - new CoordRec((float) 52.919, (float) 100), - new CoordRec((float) 33.8714, (float) 100), -}; - -static final CoordRec char81_stroke1[] = { - new CoordRec((float) 48.1571, (float) 19.0476), - new CoordRec((float) 76.7286, (float) -9.5238), -}; - -static final StrokeRec char81[] = { - new StrokeRec(21, char81_stroke0), - new StrokeRec(2, char81_stroke1), -}; - -/* char: 82 'R' */ - -static final CoordRec char82_stroke0[] = { - new CoordRec((float) 11.68, (float) 100), - new CoordRec((float) 11.68, (float) 0), -}; - -static final CoordRec char82_stroke1[] = { - new CoordRec((float) 11.68, (float) 100), - new CoordRec((float) 54.5371, (float) 100), - new CoordRec((float) 68.8229, (float) 95.2381), - new CoordRec((float) 73.5848, (float) 90.4762), - new CoordRec((float) 78.3467, (float) 80.9524), - new CoordRec((float) 78.3467, (float) 71.4286), - new CoordRec((float) 73.5848, (float) 61.9048), - new CoordRec((float) 68.8229, (float) 57.1429), - new CoordRec((float) 54.5371, (float) 52.381), - new CoordRec((float) 11.68, (float) 52.381), -}; - -static final CoordRec char82_stroke2[] = { - new CoordRec((float) 45.0133, (float) 52.381), - new CoordRec((float) 78.3467, (float) 0), -}; - -static final StrokeRec char82[] = { - new StrokeRec(2, char82_stroke0), - new StrokeRec(10, char82_stroke1), - new StrokeRec(2, char82_stroke2), -}; - -/* char: 83 'S' */ - -static final CoordRec char83_stroke0[] = { - new CoordRec((float) 74.6667, (float) 85.7143), - new CoordRec((float) 65.1429, (float) 95.2381), - new CoordRec((float) 50.8571, (float) 100), - new CoordRec((float) 31.8095, (float) 100), - new CoordRec((float) 17.5238, (float) 95.2381), - new CoordRec((float) 8, (float) 85.7143), - new CoordRec((float) 8, (float) 76.1905), - new CoordRec((float) 12.7619, (float) 66.6667), - new CoordRec((float) 17.5238, (float) 61.9048), - new CoordRec((float) 27.0476, (float) 57.1429), - new CoordRec((float) 55.619, (float) 47.619), - new CoordRec((float) 65.1429, (float) 42.8571), - new CoordRec((float) 69.9048, (float) 38.0952), - new CoordRec((float) 74.6667, (float) 28.5714), - new CoordRec((float) 74.6667, (float) 14.2857), - new CoordRec((float) 65.1429, (float) 4.7619), - new CoordRec((float) 50.8571, (float) 0), - new CoordRec((float) 31.8095, (float) 0), - new CoordRec((float) 17.5238, (float) 4.7619), - new CoordRec((float) 8, (float) 14.2857), -}; - -static final StrokeRec char83[] = { - new StrokeRec(20, char83_stroke0), -}; - -/* char: 84 'T' */ - -static final CoordRec char84_stroke0[] = { - new CoordRec((float) 35.6933, (float) 100), - new CoordRec((float) 35.6933, (float) 0), -}; - -static final CoordRec char84_stroke1[] = { - new CoordRec((float) 2.36, (float) 100), - new CoordRec((float) 69.0267, (float) 100), -}; - -static final StrokeRec char84[] = { - new StrokeRec(2, char84_stroke0), - new StrokeRec(2, char84_stroke1), -}; - -/* char: 85 'U' */ - -static final CoordRec char85_stroke0[] = { - new CoordRec((float) 11.54, (float) 100), - new CoordRec((float) 11.54, (float) 28.5714), - new CoordRec((float) 16.3019, (float) 14.2857), - new CoordRec((float) 25.8257, (float) 4.7619), - new CoordRec((float) 40.1114, (float) 0), - new CoordRec((float) 49.6352, (float) 0), - new CoordRec((float) 63.921, (float) 4.7619), - new CoordRec((float) 73.4448, (float) 14.2857), - new CoordRec((float) 78.2067, (float) 28.5714), - new CoordRec((float) 78.2067, (float) 100), -}; - -static final StrokeRec char85[] = { - new StrokeRec(10, char85_stroke0), -}; - -/* char: 86 'V' */ - -static final CoordRec char86_stroke0[] = { - new CoordRec((float) 2.36, (float) 100), - new CoordRec((float) 40.4552, (float) 0), -}; - -static final CoordRec char86_stroke1[] = { - new CoordRec((float) 78.5505, (float) 100), - new CoordRec((float) 40.4552, (float) 0), -}; - -static final StrokeRec char86[] = { - new StrokeRec(2, char86_stroke0), - new StrokeRec(2, char86_stroke1), -}; - -/* char: 87 'W' */ - -static final CoordRec char87_stroke0[] = { - new CoordRec((float) 2.22, (float) 100), - new CoordRec((float) 26.0295, (float) 0), -}; - -static final CoordRec char87_stroke1[] = { - new CoordRec((float) 49.839, (float) 100), - new CoordRec((float) 26.0295, (float) 0), -}; - -static final CoordRec char87_stroke2[] = { - new CoordRec((float) 49.839, (float) 100), - new CoordRec((float) 73.6486, (float) 0), -}; - -static final CoordRec char87_stroke3[] = { - new CoordRec((float) 97.4581, (float) 100), - new CoordRec((float) 73.6486, (float) 0), -}; - -static final StrokeRec char87[] = { - new StrokeRec(2, char87_stroke0), - new StrokeRec(2, char87_stroke1), - new StrokeRec(2, char87_stroke2), - new StrokeRec(2, char87_stroke3), -}; - -/* char: 88 'X' */ - -static final CoordRec char88_stroke0[] = { - new CoordRec((float) 2.5, (float) 100), - new CoordRec((float) 69.1667, (float) 0), -}; - -static final CoordRec char88_stroke1[] = { - new CoordRec((float) 69.1667, (float) 100), - new CoordRec((float) 2.5, (float) 0), -}; - -static final StrokeRec char88[] = { - new StrokeRec(2, char88_stroke0), - new StrokeRec(2, char88_stroke1), -}; - -/* char: 89 'Y' */ - -static final CoordRec char89_stroke0[] = { - new CoordRec((float) 1.52, (float) 100), - new CoordRec((float) 39.6152, (float) 52.381), - new CoordRec((float) 39.6152, (float) 0), -}; - -static final CoordRec char89_stroke1[] = { - new CoordRec((float) 77.7105, (float) 100), - new CoordRec((float) 39.6152, (float) 52.381), -}; - -static final StrokeRec char89[] = { - new StrokeRec(3, char89_stroke0), - new StrokeRec(2, char89_stroke1), -}; - -/* char: 90 'Z' */ - -static final CoordRec char90_stroke0[] = { - new CoordRec((float) 69.1667, (float) 100), - new CoordRec((float) 2.5, (float) 0), -}; - -static final CoordRec char90_stroke1[] = { - new CoordRec((float) 2.5, (float) 100), - new CoordRec((float) 69.1667, (float) 100), -}; - -static final CoordRec char90_stroke2[] = { - new CoordRec((float) 2.5, (float) 0), - new CoordRec((float) 69.1667, (float) 0), -}; - -static final StrokeRec char90[] = { - new StrokeRec(2, char90_stroke0), - new StrokeRec(2, char90_stroke1), - new StrokeRec(2, char90_stroke2), -}; - -/* char: 91 '[' */ - -static final CoordRec char91_stroke0[] = { - new CoordRec((float) 7.78, (float) 119.048), - new CoordRec((float) 7.78, (float) -33.3333), -}; - -static final CoordRec char91_stroke1[] = { - new CoordRec((float) 12.5419, (float) 119.048), - new CoordRec((float) 12.5419, (float) -33.3333), -}; - -static final CoordRec char91_stroke2[] = { - new CoordRec((float) 7.78, (float) 119.048), - new CoordRec((float) 41.1133, (float) 119.048), -}; - -static final CoordRec char91_stroke3[] = { - new CoordRec((float) 7.78, (float) -33.3333), - new CoordRec((float) 41.1133, (float) -33.3333), -}; - -static final StrokeRec char91[] = { - new StrokeRec(2, char91_stroke0), - new StrokeRec(2, char91_stroke1), - new StrokeRec(2, char91_stroke2), - new StrokeRec(2, char91_stroke3), -}; - -/* char: 92 '\' */ - -static final CoordRec char92_stroke0[] = { - new CoordRec((float) 5.84, (float) 100), - new CoordRec((float) 72.5067, (float) -14.2857), -}; - -static final StrokeRec char92[] = { - new StrokeRec(2, char92_stroke0), -}; - -/* char: 93 ']' */ - -static final CoordRec char93_stroke0[] = { - new CoordRec((float) 33.0114, (float) 119.048), - new CoordRec((float) 33.0114, (float) -33.3333), -}; - -static final CoordRec char93_stroke1[] = { - new CoordRec((float) 37.7733, (float) 119.048), - new CoordRec((float) 37.7733, (float) -33.3333), -}; - -static final CoordRec char93_stroke2[] = { - new CoordRec((float) 4.44, (float) 119.048), - new CoordRec((float) 37.7733, (float) 119.048), -}; - -static final CoordRec char93_stroke3[] = { - new CoordRec((float) 4.44, (float) -33.3333), - new CoordRec((float) 37.7733, (float) -33.3333), -}; - -static final StrokeRec char93[] = { - new StrokeRec(2, char93_stroke0), - new StrokeRec(2, char93_stroke1), - new StrokeRec(2, char93_stroke2), - new StrokeRec(2, char93_stroke3), -}; - -/* char: 94 '^' */ - -static final CoordRec char94_stroke0[] = { - new CoordRec((float) 44.0752, (float) 109.524), - new CoordRec((float) 5.98, (float) 42.8571), -}; - -static final CoordRec char94_stroke1[] = { - new CoordRec((float) 44.0752, (float) 109.524), - new CoordRec((float) 82.1705, (float) 42.8571), -}; - -static final StrokeRec char94[] = { - new StrokeRec(2, char94_stroke0), - new StrokeRec(2, char94_stroke1), -}; - -/* char: 95 '_' */ - -static final CoordRec char95_stroke0[] = { - new CoordRec((float)-1.1, (float) -33.3333), - new CoordRec((float) 103.662, (float) -33.3333), - new CoordRec((float) 103.662, (float) -28.5714), - new CoordRec((float)-1.1, (float) -28.5714), - new CoordRec((float)-1.1, (float) -33.3333), -}; - -static final StrokeRec char95[] = { - new StrokeRec(5, char95_stroke0), -}; - -/* char: 96 '`' */ - -static final CoordRec char96_stroke0[] = { - new CoordRec((float) 33.0219, (float) 100), - new CoordRec((float) 56.8314, (float) 71.4286), -}; - -static final CoordRec char96_stroke1[] = { - new CoordRec((float) 33.0219, (float) 100), - new CoordRec((float) 28.26, (float) 95.2381), - new CoordRec((float) 56.8314, (float) 71.4286), -}; - -static final StrokeRec char96[] = { - new StrokeRec(2, char96_stroke0), - new StrokeRec(3, char96_stroke1), -}; - -/* char: 97 'a' */ - -static final CoordRec char97_stroke0[] = { - new CoordRec((float) 63.8229, (float) 66.6667), - new CoordRec((float) 63.8229, (float) 0), -}; - -static final CoordRec char97_stroke1[] = { - new CoordRec((float) 63.8229, (float) 52.381), - new CoordRec((float) 54.299, (float) 61.9048), - new CoordRec((float) 44.7752, (float) 66.6667), - new CoordRec((float) 30.4895, (float) 66.6667), - new CoordRec((float) 20.9657, (float) 61.9048), - new CoordRec((float) 11.4419, (float) 52.381), - new CoordRec((float) 6.68, (float) 38.0952), - new CoordRec((float) 6.68, (float) 28.5714), - new CoordRec((float) 11.4419, (float) 14.2857), - new CoordRec((float) 20.9657, (float) 4.7619), - new CoordRec((float) 30.4895, (float) 0), - new CoordRec((float) 44.7752, (float) 0), - new CoordRec((float) 54.299, (float) 4.7619), - new CoordRec((float) 63.8229, (float) 14.2857), -}; - -static final StrokeRec char97[] = { - new StrokeRec(2, char97_stroke0), - new StrokeRec(14, char97_stroke1), -}; - -/* char: 98 'b' */ - -static final CoordRec char98_stroke0[] = { - new CoordRec((float) 8.76, (float) 100), - new CoordRec((float) 8.76, (float) 0), -}; - -static final CoordRec char98_stroke1[] = { - new CoordRec((float) 8.76, (float) 52.381), - new CoordRec((float) 18.2838, (float) 61.9048), - new CoordRec((float) 27.8076, (float) 66.6667), - new CoordRec((float) 42.0933, (float) 66.6667), - new CoordRec((float) 51.6171, (float) 61.9048), - new CoordRec((float) 61.141, (float) 52.381), - new CoordRec((float) 65.9029, (float) 38.0952), - new CoordRec((float) 65.9029, (float) 28.5714), - new CoordRec((float) 61.141, (float) 14.2857), - new CoordRec((float) 51.6171, (float) 4.7619), - new CoordRec((float) 42.0933, (float) 0), - new CoordRec((float) 27.8076, (float) 0), - new CoordRec((float) 18.2838, (float) 4.7619), - new CoordRec((float) 8.76, (float) 14.2857), -}; - -static final StrokeRec char98[] = { - new StrokeRec(2, char98_stroke0), - new StrokeRec(14, char98_stroke1), -}; - -/* char: 99 'c' */ - -static final CoordRec char99_stroke0[] = { - new CoordRec((float) 62.6629, (float) 52.381), - new CoordRec((float) 53.139, (float) 61.9048), - new CoordRec((float) 43.6152, (float) 66.6667), - new CoordRec((float) 29.3295, (float) 66.6667), - new CoordRec((float) 19.8057, (float) 61.9048), - new CoordRec((float) 10.2819, (float) 52.381), - new CoordRec((float) 5.52, (float) 38.0952), - new CoordRec((float) 5.52, (float) 28.5714), - new CoordRec((float) 10.2819, (float) 14.2857), - new CoordRec((float) 19.8057, (float) 4.7619), - new CoordRec((float) 29.3295, (float) 0), - new CoordRec((float) 43.6152, (float) 0), - new CoordRec((float) 53.139, (float) 4.7619), - new CoordRec((float) 62.6629, (float) 14.2857), -}; - -static final StrokeRec char99[] = { - new StrokeRec(14, char99_stroke0), -}; - -/* char: 100 'd' */ - -static final CoordRec char100_stroke0[] = { - new CoordRec((float) 61.7829, (float) 100), - new CoordRec((float) 61.7829, (float) 0), -}; - -static final CoordRec char100_stroke1[] = { - new CoordRec((float) 61.7829, (float) 52.381), - new CoordRec((float) 52.259, (float) 61.9048), - new CoordRec((float) 42.7352, (float) 66.6667), - new CoordRec((float) 28.4495, (float) 66.6667), - new CoordRec((float) 18.9257, (float) 61.9048), - new CoordRec((float) 9.4019, (float) 52.381), - new CoordRec((float) 4.64, (float) 38.0952), - new CoordRec((float) 4.64, (float) 28.5714), - new CoordRec((float) 9.4019, (float) 14.2857), - new CoordRec((float) 18.9257, (float) 4.7619), - new CoordRec((float) 28.4495, (float) 0), - new CoordRec((float) 42.7352, (float) 0), - new CoordRec((float) 52.259, (float) 4.7619), - new CoordRec((float) 61.7829, (float) 14.2857), -}; - -static final StrokeRec char100[] = { - new StrokeRec(2, char100_stroke0), - new StrokeRec(14, char100_stroke1), -}; - -/* char: 101 'e' */ - -static final CoordRec char101_stroke0[] = { - new CoordRec((float) 5.72, (float) 38.0952), - new CoordRec((float) 62.8629, (float) 38.0952), - new CoordRec((float) 62.8629, (float) 47.619), - new CoordRec((float) 58.101, (float) 57.1429), - new CoordRec((float) 53.339, (float) 61.9048), - new CoordRec((float) 43.8152, (float) 66.6667), - new CoordRec((float) 29.5295, (float) 66.6667), - new CoordRec((float) 20.0057, (float) 61.9048), - new CoordRec((float) 10.4819, (float) 52.381), - new CoordRec((float) 5.72, (float) 38.0952), - new CoordRec((float) 5.72, (float) 28.5714), - new CoordRec((float) 10.4819, (float) 14.2857), - new CoordRec((float) 20.0057, (float) 4.7619), - new CoordRec((float) 29.5295, (float) 0), - new CoordRec((float) 43.8152, (float) 0), - new CoordRec((float) 53.339, (float) 4.7619), - new CoordRec((float) 62.8629, (float) 14.2857), -}; - -static final StrokeRec char101[] = { - new StrokeRec(17, char101_stroke0), -}; - -/* char: 102 'f' */ - -static final CoordRec char102_stroke0[] = { - new CoordRec((float) 38.7752, (float) 100), - new CoordRec((float) 29.2514, (float) 100), - new CoordRec((float) 19.7276, (float) 95.2381), - new CoordRec((float) 14.9657, (float) 80.9524), - new CoordRec((float) 14.9657, (float) 0), -}; - -static final CoordRec char102_stroke1[] = { - new CoordRec((float) 0.68, (float) 66.6667), - new CoordRec((float) 34.0133, (float) 66.6667), -}; - -static final StrokeRec char102[] = { - new StrokeRec(5, char102_stroke0), - new StrokeRec(2, char102_stroke1), -}; - -/* char: 103 'g' */ - -static final CoordRec char103_stroke0[] = { - new CoordRec((float) 62.5029, (float) 66.6667), - new CoordRec((float) 62.5029, (float) -9.5238), - new CoordRec((float) 57.741, (float) -23.8095), - new CoordRec((float) 52.979, (float) -28.5714), - new CoordRec((float) 43.4552, (float) -33.3333), - new CoordRec((float) 29.1695, (float) -33.3333), - new CoordRec((float) 19.6457, (float) -28.5714), -}; - -static final CoordRec char103_stroke1[] = { - new CoordRec((float) 62.5029, (float) 52.381), - new CoordRec((float) 52.979, (float) 61.9048), - new CoordRec((float) 43.4552, (float) 66.6667), - new CoordRec((float) 29.1695, (float) 66.6667), - new CoordRec((float) 19.6457, (float) 61.9048), - new CoordRec((float) 10.1219, (float) 52.381), - new CoordRec((float) 5.36, (float) 38.0952), - new CoordRec((float) 5.36, (float) 28.5714), - new CoordRec((float) 10.1219, (float) 14.2857), - new CoordRec((float) 19.6457, (float) 4.7619), - new CoordRec((float) 29.1695, (float) 0), - new CoordRec((float) 43.4552, (float) 0), - new CoordRec((float) 52.979, (float) 4.7619), - new CoordRec((float) 62.5029, (float) 14.2857), -}; - -static final StrokeRec char103[] = { - new StrokeRec(7, char103_stroke0), - new StrokeRec(14, char103_stroke1), -}; - -/* char: 104 'h' */ - -static final CoordRec char104_stroke0[] = { - new CoordRec((float) 9.6, (float) 100), - new CoordRec((float) 9.6, (float) 0), -}; - -static final CoordRec char104_stroke1[] = { - new CoordRec((float) 9.6, (float) 47.619), - new CoordRec((float) 23.8857, (float) 61.9048), - new CoordRec((float) 33.4095, (float) 66.6667), - new CoordRec((float) 47.6952, (float) 66.6667), - new CoordRec((float) 57.219, (float) 61.9048), - new CoordRec((float) 61.981, (float) 47.619), - new CoordRec((float) 61.981, (float) 0), -}; - -static final StrokeRec char104[] = { - new StrokeRec(2, char104_stroke0), - new StrokeRec(7, char104_stroke1), -}; - -/* char: 105 'i' */ - -static final CoordRec char105_stroke0[] = { - new CoordRec((float) 10.02, (float) 100), - new CoordRec((float) 14.7819, (float) 95.2381), - new CoordRec((float) 19.5438, (float) 100), - new CoordRec((float) 14.7819, (float) 104.762), - new CoordRec((float) 10.02, (float) 100), -}; - -static final CoordRec char105_stroke1[] = { - new CoordRec((float) 14.7819, (float) 66.6667), - new CoordRec((float) 14.7819, (float) 0), -}; - -static final StrokeRec char105[] = { - new StrokeRec(5, char105_stroke0), - new StrokeRec(2, char105_stroke1), -}; - -/* char: 106 'j' */ - -static final CoordRec char106_stroke0[] = { - new CoordRec((float) 17.3876, (float) 100), - new CoordRec((float) 22.1495, (float) 95.2381), - new CoordRec((float) 26.9114, (float) 100), - new CoordRec((float) 22.1495, (float) 104.762), - new CoordRec((float) 17.3876, (float) 100), -}; - -static final CoordRec char106_stroke1[] = { - new CoordRec((float) 22.1495, (float) 66.6667), - new CoordRec((float) 22.1495, (float) -14.2857), - new CoordRec((float) 17.3876, (float) -28.5714), - new CoordRec((float) 7.8638, (float) -33.3333), - new CoordRec((float)-1.66, (float) -33.3333), -}; - -static final StrokeRec char106[] = { - new StrokeRec(5, char106_stroke0), - new StrokeRec(5, char106_stroke1), -}; - -/* char: 107 'k' */ - -static final CoordRec char107_stroke0[] = { - new CoordRec((float) 9.6, (float) 100), - new CoordRec((float) 9.6, (float) 0), -}; - -static final CoordRec char107_stroke1[] = { - new CoordRec((float) 57.219, (float) 66.6667), - new CoordRec((float) 9.6, (float) 19.0476), -}; - -static final CoordRec char107_stroke2[] = { - new CoordRec((float) 28.6476, (float) 38.0952), - new CoordRec((float) 61.981, (float) 0), -}; - -static final StrokeRec char107[] = { - new StrokeRec(2, char107_stroke0), - new StrokeRec(2, char107_stroke1), - new StrokeRec(2, char107_stroke2), -}; - -/* char: 108 'l' */ - -static final CoordRec char108_stroke0[] = { - new CoordRec((float) 10.02, (float) 100), - new CoordRec((float) 10.02, (float) 0), -}; - -static final StrokeRec char108[] = { - new StrokeRec(2, char108_stroke0), -}; - -/* char: 109 'm' */ - -static final CoordRec char109_stroke0[] = { - new CoordRec((float) 9.6, (float) 66.6667), - new CoordRec((float) 9.6, (float) 0), -}; - -static final CoordRec char109_stroke1[] = { - new CoordRec((float) 9.6, (float) 47.619), - new CoordRec((float) 23.8857, (float) 61.9048), - new CoordRec((float) 33.4095, (float) 66.6667), - new CoordRec((float) 47.6952, (float) 66.6667), - new CoordRec((float) 57.219, (float) 61.9048), - new CoordRec((float) 61.981, (float) 47.619), - new CoordRec((float) 61.981, (float) 0), -}; - -static final CoordRec char109_stroke2[] = { - new CoordRec((float) 61.981, (float) 47.619), - new CoordRec((float) 76.2667, (float) 61.9048), - new CoordRec((float) 85.7905, (float) 66.6667), - new CoordRec((float) 100.076, (float) 66.6667), - new CoordRec((float) 109.6, (float) 61.9048), - new CoordRec((float) 114.362, (float) 47.619), - new CoordRec((float) 114.362, (float) 0), -}; - -static final StrokeRec char109[] = { - new StrokeRec(2, char109_stroke0), - new StrokeRec(7, char109_stroke1), - new StrokeRec(7, char109_stroke2), -}; - -/* char: 110 'n' */ - -static final CoordRec char110_stroke0[] = { - new CoordRec((float) 9.18, (float) 66.6667), - new CoordRec((float) 9.18, (float) 0), -}; - -static final CoordRec char110_stroke1[] = { - new CoordRec((float) 9.18, (float) 47.619), - new CoordRec((float) 23.4657, (float) 61.9048), - new CoordRec((float) 32.9895, (float) 66.6667), - new CoordRec((float) 47.2752, (float) 66.6667), - new CoordRec((float) 56.799, (float) 61.9048), - new CoordRec((float) 61.561, (float) 47.619), - new CoordRec((float) 61.561, (float) 0), -}; - -static final StrokeRec char110[] = { - new StrokeRec(2, char110_stroke0), - new StrokeRec(7, char110_stroke1), -}; - -/* char: 111 'o' */ - -static final CoordRec char111_stroke0[] = { - new CoordRec((float) 28.7895, (float) 66.6667), - new CoordRec((float) 19.2657, (float) 61.9048), - new CoordRec((float) 9.7419, (float) 52.381), - new CoordRec((float) 4.98, (float) 38.0952), - new CoordRec((float) 4.98, (float) 28.5714), - new CoordRec((float) 9.7419, (float) 14.2857), - new CoordRec((float) 19.2657, (float) 4.7619), - new CoordRec((float) 28.7895, (float) 0), - new CoordRec((float) 43.0752, (float) 0), - new CoordRec((float) 52.599, (float) 4.7619), - new CoordRec((float) 62.1229, (float) 14.2857), - new CoordRec((float) 66.8848, (float) 28.5714), - new CoordRec((float) 66.8848, (float) 38.0952), - new CoordRec((float) 62.1229, (float) 52.381), - new CoordRec((float) 52.599, (float) 61.9048), - new CoordRec((float) 43.0752, (float) 66.6667), - new CoordRec((float) 28.7895, (float) 66.6667), -}; - -static final StrokeRec char111[] = { - new StrokeRec(17, char111_stroke0), -}; - -/* char: 112 'p' */ - -static final CoordRec char112_stroke0[] = { - new CoordRec((float) 9.46, (float) 66.6667), - new CoordRec((float) 9.46, (float) -33.3333), -}; - -static final CoordRec char112_stroke1[] = { - new CoordRec((float) 9.46, (float) 52.381), - new CoordRec((float) 18.9838, (float) 61.9048), - new CoordRec((float) 28.5076, (float) 66.6667), - new CoordRec((float) 42.7933, (float) 66.6667), - new CoordRec((float) 52.3171, (float) 61.9048), - new CoordRec((float) 61.841, (float) 52.381), - new CoordRec((float) 66.6029, (float) 38.0952), - new CoordRec((float) 66.6029, (float) 28.5714), - new CoordRec((float) 61.841, (float) 14.2857), - new CoordRec((float) 52.3171, (float) 4.7619), - new CoordRec((float) 42.7933, (float) 0), - new CoordRec((float) 28.5076, (float) 0), - new CoordRec((float) 18.9838, (float) 4.7619), - new CoordRec((float) 9.46, (float) 14.2857), -}; - -static final StrokeRec char112[] = { - new StrokeRec(2, char112_stroke0), - new StrokeRec(14, char112_stroke1), -}; - -/* char: 113 'q' */ - -static final CoordRec char113_stroke0[] = { - new CoordRec((float) 61.9829, (float) 66.6667), - new CoordRec((float) 61.9829, (float) -33.3333), -}; - -static final CoordRec char113_stroke1[] = { - new CoordRec((float) 61.9829, (float) 52.381), - new CoordRec((float) 52.459, (float) 61.9048), - new CoordRec((float) 42.9352, (float) 66.6667), - new CoordRec((float) 28.6495, (float) 66.6667), - new CoordRec((float) 19.1257, (float) 61.9048), - new CoordRec((float) 9.6019, (float) 52.381), - new CoordRec((float) 4.84, (float) 38.0952), - new CoordRec((float) 4.84, (float) 28.5714), - new CoordRec((float) 9.6019, (float) 14.2857), - new CoordRec((float) 19.1257, (float) 4.7619), - new CoordRec((float) 28.6495, (float) 0), - new CoordRec((float) 42.9352, (float) 0), - new CoordRec((float) 52.459, (float) 4.7619), - new CoordRec((float) 61.9829, (float) 14.2857), -}; - -static final StrokeRec char113[] = { - new StrokeRec(2, char113_stroke0), - new StrokeRec(14, char113_stroke1), -}; - -/* char: 114 'r' */ - -static final CoordRec char114_stroke0[] = { - new CoordRec((float) 9.46, (float) 66.6667), - new CoordRec((float) 9.46, (float) 0), -}; - -static final CoordRec char114_stroke1[] = { - new CoordRec((float) 9.46, (float) 38.0952), - new CoordRec((float) 14.2219, (float) 52.381), - new CoordRec((float) 23.7457, (float) 61.9048), - new CoordRec((float) 33.2695, (float) 66.6667), - new CoordRec((float) 47.5552, (float) 66.6667), -}; - -static final StrokeRec char114[] = { - new StrokeRec(2, char114_stroke0), - new StrokeRec(5, char114_stroke1), -}; - -/* char: 115 's' */ - -static final CoordRec char115_stroke0[] = { - new CoordRec((float) 57.081, (float) 52.381), - new CoordRec((float) 52.319, (float) 61.9048), - new CoordRec((float) 38.0333, (float) 66.6667), - new CoordRec((float) 23.7476, (float) 66.6667), - new CoordRec((float) 9.4619, (float) 61.9048), - new CoordRec((float) 4.7, (float) 52.381), - new CoordRec((float) 9.4619, (float) 42.8571), - new CoordRec((float) 18.9857, (float) 38.0952), - new CoordRec((float) 42.7952, (float) 33.3333), - new CoordRec((float) 52.319, (float) 28.5714), - new CoordRec((float) 57.081, (float) 19.0476), - new CoordRec((float) 57.081, (float) 14.2857), - new CoordRec((float) 52.319, (float) 4.7619), - new CoordRec((float) 38.0333, (float) 0), - new CoordRec((float) 23.7476, (float) 0), - new CoordRec((float) 9.4619, (float) 4.7619), - new CoordRec((float) 4.7, (float) 14.2857), -}; - -static final StrokeRec char115[] = { - new StrokeRec(17, char115_stroke0), -}; - -/* char: 116 't' */ - -static final CoordRec char116_stroke0[] = { - new CoordRec((float) 14.8257, (float) 100), - new CoordRec((float) 14.8257, (float) 19.0476), - new CoordRec((float) 19.5876, (float) 4.7619), - new CoordRec((float) 29.1114, (float) 0), - new CoordRec((float) 38.6352, (float) 0), -}; - -static final CoordRec char116_stroke1[] = { - new CoordRec((float) 0.54, (float) 66.6667), - new CoordRec((float) 33.8733, (float) 66.6667), -}; - -static final StrokeRec char116[] = { - new StrokeRec(5, char116_stroke0), - new StrokeRec(2, char116_stroke1), -}; - -/* char: 117 'u' */ - -static final CoordRec char117_stroke0[] = { - new CoordRec((float) 9.46, (float) 66.6667), - new CoordRec((float) 9.46, (float) 19.0476), - new CoordRec((float) 14.2219, (float) 4.7619), - new CoordRec((float) 23.7457, (float) 0), - new CoordRec((float) 38.0314, (float) 0), - new CoordRec((float) 47.5552, (float) 4.7619), - new CoordRec((float) 61.841, (float) 19.0476), -}; - -static final CoordRec char117_stroke1[] = { - new CoordRec((float) 61.841, (float) 66.6667), - new CoordRec((float) 61.841, (float) 0), -}; - -static final StrokeRec char117[] = { - new StrokeRec(7, char117_stroke0), - new StrokeRec(2, char117_stroke1), -}; - -/* char: 118 'v' */ - -static final CoordRec char118_stroke0[] = { - new CoordRec((float) 1.8, (float) 66.6667), - new CoordRec((float) 30.3714, (float) 0), -}; - -static final CoordRec char118_stroke1[] = { - new CoordRec((float) 58.9429, (float) 66.6667), - new CoordRec((float) 30.3714, (float) 0), -}; - -static final StrokeRec char118[] = { - new StrokeRec(2, char118_stroke0), - new StrokeRec(2, char118_stroke1), -}; - -/* char: 119 'w' */ - -static final CoordRec char119_stroke0[] = { - new CoordRec((float) 2.5, (float) 66.6667), - new CoordRec((float) 21.5476, (float) 0), -}; - -static final CoordRec char119_stroke1[] = { - new CoordRec((float) 40.5952, (float) 66.6667), - new CoordRec((float) 21.5476, (float) 0), -}; - -static final CoordRec char119_stroke2[] = { - new CoordRec((float) 40.5952, (float) 66.6667), - new CoordRec((float) 59.6429, (float) 0), -}; - -static final CoordRec char119_stroke3[] = { - new CoordRec((float) 78.6905, (float) 66.6667), - new CoordRec((float) 59.6429, (float) 0), -}; - -static final StrokeRec char119[] = { - new StrokeRec(2, char119_stroke0), - new StrokeRec(2, char119_stroke1), - new StrokeRec(2, char119_stroke2), - new StrokeRec(2, char119_stroke3), -}; - -/* char: 120 'x' */ - -static final CoordRec char120_stroke0[] = { - new CoordRec((float) 1.66, (float) 66.6667), - new CoordRec((float) 54.041, (float) 0), -}; - -static final CoordRec char120_stroke1[] = { - new CoordRec((float) 54.041, (float) 66.6667), - new CoordRec((float) 1.66, (float) 0), -}; - -static final StrokeRec char120[] = { - new StrokeRec(2, char120_stroke0), - new StrokeRec(2, char120_stroke1), -}; - -/* char: 121 'y' */ - -static final CoordRec char121_stroke0[] = { - new CoordRec((float) 6.5619, (float) 66.6667), - new CoordRec((float) 35.1333, (float) 0), -}; - -static final CoordRec char121_stroke1[] = { - new CoordRec((float) 63.7048, (float) 66.6667), - new CoordRec((float) 35.1333, (float) 0), - new CoordRec((float) 25.6095, (float) -19.0476), - new CoordRec((float) 16.0857, (float) -28.5714), - new CoordRec((float) 6.5619, (float) -33.3333), - new CoordRec((float) 1.8, (float) -33.3333), -}; - -static final StrokeRec char121[] = { - new StrokeRec(2, char121_stroke0), - new StrokeRec(6, char121_stroke1), -}; - -/* char: 122 'z' */ - -static final CoordRec char122_stroke0[] = { - new CoordRec((float) 56.821, (float) 66.6667), - new CoordRec((float) 4.44, (float) 0), -}; - -static final CoordRec char122_stroke1[] = { - new CoordRec((float) 4.44, (float) 66.6667), - new CoordRec((float) 56.821, (float) 66.6667), -}; - -static final CoordRec char122_stroke2[] = { - new CoordRec((float) 4.44, (float) 0), - new CoordRec((float) 56.821, (float) 0), -}; - -static final StrokeRec char122[] = { - new StrokeRec(2, char122_stroke0), - new StrokeRec(2, char122_stroke1), - new StrokeRec(2, char122_stroke2), -}; - -/* char: 123 '{' */ - -static final CoordRec char123_stroke0[] = { - new CoordRec((float) 31.1895, (float) 119.048), - new CoordRec((float) 21.6657, (float) 114.286), - new CoordRec((float) 16.9038, (float) 109.524), - new CoordRec((float) 12.1419, (float) 100), - new CoordRec((float) 12.1419, (float) 90.4762), - new CoordRec((float) 16.9038, (float) 80.9524), - new CoordRec((float) 21.6657, (float) 76.1905), - new CoordRec((float) 26.4276, (float) 66.6667), - new CoordRec((float) 26.4276, (float) 57.1429), - new CoordRec((float) 16.9038, (float) 47.619), -}; - -static final CoordRec char123_stroke1[] = { - new CoordRec((float) 21.6657, (float) 114.286), - new CoordRec((float) 16.9038, (float) 104.762), - new CoordRec((float) 16.9038, (float) 95.2381), - new CoordRec((float) 21.6657, (float) 85.7143), - new CoordRec((float) 26.4276, (float) 80.9524), - new CoordRec((float) 31.1895, (float) 71.4286), - new CoordRec((float) 31.1895, (float) 61.9048), - new CoordRec((float) 26.4276, (float) 52.381), - new CoordRec((float) 7.38, (float) 42.8571), - new CoordRec((float) 26.4276, (float) 33.3333), - new CoordRec((float) 31.1895, (float) 23.8095), - new CoordRec((float) 31.1895, (float) 14.2857), - new CoordRec((float) 26.4276, (float) 4.7619), - new CoordRec((float) 21.6657, (float) 0), - new CoordRec((float) 16.9038, (float) -9.5238), - new CoordRec((float) 16.9038, (float) -19.0476), - new CoordRec((float) 21.6657, (float) -28.5714), -}; - -static final CoordRec char123_stroke2[] = { - new CoordRec((float) 16.9038, (float) 38.0952), - new CoordRec((float) 26.4276, (float) 28.5714), - new CoordRec((float) 26.4276, (float) 19.0476), - new CoordRec((float) 21.6657, (float) 9.5238), - new CoordRec((float) 16.9038, (float) 4.7619), - new CoordRec((float) 12.1419, (float) -4.7619), - new CoordRec((float) 12.1419, (float) -14.2857), - new CoordRec((float) 16.9038, (float) -23.8095), - new CoordRec((float) 21.6657, (float) -28.5714), - new CoordRec((float) 31.1895, (float) -33.3333), -}; - -static final StrokeRec char123[] = { - new StrokeRec(10, char123_stroke0), - new StrokeRec(17, char123_stroke1), - new StrokeRec(10, char123_stroke2), -}; - -/* char: 124 '|' */ - -static final CoordRec char124_stroke0[] = { - new CoordRec((float) 11.54, (float) 119.048), - new CoordRec((float) 11.54, (float) -33.3333), -}; - -static final StrokeRec char124[] = { - new StrokeRec(2, char124_stroke0), -}; - -/* char: 125 '}' */ - -static final CoordRec char125_stroke0[] = { - new CoordRec((float) 9.18, (float) 119.048), - new CoordRec((float) 18.7038, (float) 114.286), - new CoordRec((float) 23.4657, (float) 109.524), - new CoordRec((float) 28.2276, (float) 100), - new CoordRec((float) 28.2276, (float) 90.4762), - new CoordRec((float) 23.4657, (float) 80.9524), - new CoordRec((float) 18.7038, (float) 76.1905), - new CoordRec((float) 13.9419, (float) 66.6667), - new CoordRec((float) 13.9419, (float) 57.1429), - new CoordRec((float) 23.4657, (float) 47.619), -}; - -static final CoordRec char125_stroke1[] = { - new CoordRec((float) 18.7038, (float) 114.286), - new CoordRec((float) 23.4657, (float) 104.762), - new CoordRec((float) 23.4657, (float) 95.2381), - new CoordRec((float) 18.7038, (float) 85.7143), - new CoordRec((float) 13.9419, (float) 80.9524), - new CoordRec((float) 9.18, (float) 71.4286), - new CoordRec((float) 9.18, (float) 61.9048), - new CoordRec((float) 13.9419, (float) 52.381), - new CoordRec((float) 32.9895, (float) 42.8571), - new CoordRec((float) 13.9419, (float) 33.3333), - new CoordRec((float) 9.18, (float) 23.8095), - new CoordRec((float) 9.18, (float) 14.2857), - new CoordRec((float) 13.9419, (float) 4.7619), - new CoordRec((float) 18.7038, (float) 0), - new CoordRec((float) 23.4657, (float) -9.5238), - new CoordRec((float) 23.4657, (float) -19.0476), - new CoordRec((float) 18.7038, (float) -28.5714), -}; - -static final CoordRec char125_stroke2[] = { - new CoordRec((float) 23.4657, (float) 38.0952), - new CoordRec((float) 13.9419, (float) 28.5714), - new CoordRec((float) 13.9419, (float) 19.0476), - new CoordRec((float) 18.7038, (float) 9.5238), - new CoordRec((float) 23.4657, (float) 4.7619), - new CoordRec((float) 28.2276, (float) -4.7619), - new CoordRec((float) 28.2276, (float) -14.2857), - new CoordRec((float) 23.4657, (float) -23.8095), - new CoordRec((float) 18.7038, (float) -28.5714), - new CoordRec((float) 9.18, (float) -33.3333), -}; - -static final StrokeRec char125[] = { - new StrokeRec(10, char125_stroke0), - new StrokeRec(17, char125_stroke1), - new StrokeRec(10, char125_stroke2), -}; - -/* char: 126 '~' */ - -static final CoordRec char126_stroke0[] = { - new CoordRec((float) 2.92, (float) 28.5714), - new CoordRec((float) 2.92, (float) 38.0952), - new CoordRec((float) 7.6819, (float) 52.381), - new CoordRec((float) 17.2057, (float) 57.1429), - new CoordRec((float) 26.7295, (float) 57.1429), - new CoordRec((float) 36.2533, (float) 52.381), - new CoordRec((float) 55.301, (float) 38.0952), - new CoordRec((float) 64.8248, (float) 33.3333), - new CoordRec((float) 74.3486, (float) 33.3333), - new CoordRec((float) 83.8724, (float) 38.0952), - new CoordRec((float) 88.6343, (float) 47.619), -}; - -static final CoordRec char126_stroke1[] = { - new CoordRec((float) 2.92, (float) 38.0952), - new CoordRec((float) 7.6819, (float) 47.619), - new CoordRec((float) 17.2057, (float) 52.381), - new CoordRec((float) 26.7295, (float) 52.381), - new CoordRec((float) 36.2533, (float) 47.619), - new CoordRec((float) 55.301, (float) 33.3333), - new CoordRec((float) 64.8248, (float) 28.5714), - new CoordRec((float) 74.3486, (float) 28.5714), - new CoordRec((float) 83.8724, (float) 33.3333), - new CoordRec((float) 88.6343, (float) 47.619), - new CoordRec((float) 88.6343, (float) 57.1429), -}; - -static final StrokeRec char126[] = { - new StrokeRec(11, char126_stroke0), - new StrokeRec(11, char126_stroke1), -}; - -/* char: 127 */ - -static final CoordRec char127_stroke0[] = { - new CoordRec((float) 52.381, (float) 100), - new CoordRec((float) 14.2857, (float) -33.3333), -}; - -static final CoordRec char127_stroke1[] = { - new CoordRec((float) 28.5714, (float) 66.6667), - new CoordRec((float) 14.2857, (float) 61.9048), - new CoordRec((float) 4.7619, (float) 52.381), - new CoordRec((float) 0, (float) 38.0952), - new CoordRec((float) 0, (float) 23.8095), - new CoordRec((float) 4.7619, (float) 14.2857), - new CoordRec((float) 14.2857, (float) 4.7619), - new CoordRec((float) 28.5714, (float) 0), - new CoordRec((float) 38.0952, (float) 0), - new CoordRec((float) 52.381, (float) 4.7619), - new CoordRec((float) 61.9048, (float) 14.2857), - new CoordRec((float) 66.6667, (float) 28.5714), - new CoordRec((float) 66.6667, (float) 42.8571), - new CoordRec((float) 61.9048, (float) 52.381), - new CoordRec((float) 52.381, (float) 61.9048), - new CoordRec((float) 38.0952, (float) 66.6667), - new CoordRec((float) 28.5714, (float) 66.6667), -}; - -static final StrokeRec char127[] = { - new StrokeRec(2, char127_stroke0), - new StrokeRec(17, char127_stroke1), -}; - -static final StrokeCharRec chars[] = { - new StrokeCharRec( 0, /* char0 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char1 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char2 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char3 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char4 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char5 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char6 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char7 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char8 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char9 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char10 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char11 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char12 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char13 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char14 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char15 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char16 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char17 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char18 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char19 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char20 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char21 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char22 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char23 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char24 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char25 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char26 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char27 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char28 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char29 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char30 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char31 */ null, (float) 0, (float) 0 ), - new StrokeCharRec( 0, /* char32 */ null, (float) 52.381, (float) 104.762 ), - new StrokeCharRec( 2, char33, (float) 13.3819, (float) 26.6238 ), - new StrokeCharRec( 2, char34, (float) 23.0676, (float) 51.4352 ), - new StrokeCharRec( 4, char35, (float) 36.5333, (float) 79.4886 ), - new StrokeCharRec( 3, char36, (float) 38.1533, (float) 76.2067 ), - new StrokeCharRec( 3, char37, (float) 49.2171, (float) 96.5743 ), - new StrokeCharRec( 1, char38, (float) 53.599, (float) 101.758 ), - new StrokeCharRec( 1, char39, (float) 4.44, (float) 13.62 ), - new StrokeCharRec( 1, char40, (float) 21.8657, (float) 47.1733 ), - new StrokeCharRec( 1, char41, (float) 24.3276, (float) 47.5333 ), - new StrokeCharRec( 3, char42, (float) 30.7695, (float) 59.439 ), - new StrokeCharRec( 2, char43, (float) 48.8371, (float) 97.2543 ), - new StrokeCharRec( 1, char44, (float) 13.5219, (float) 26.0638 ), - new StrokeCharRec( 1, char45, (float) 50.2371, (float) 100.754 ), - new StrokeCharRec( 1, char46, (float) 13.1019, (float) 26.4838 ), - new StrokeCharRec( 1, char47, (float) 40.5733, (float) 82.1067 ), - new StrokeCharRec( 1, char48, (float) 38.3133, (float) 77.0667 ), - new StrokeCharRec( 1, char49, (float) 30.8676, (float) 66.5295 ), - new StrokeCharRec( 1, char50, (float) 38.7533, (float) 77.6467 ), - new StrokeCharRec( 1, char51, (float) 38.3333, (float) 77.0467 ), - new StrokeCharRec( 2, char52, (float) 37.2133, (float) 80.1686 ), - new StrokeCharRec( 1, char53, (float) 38.1933, (float) 77.6867 ), - new StrokeCharRec( 1, char54, (float) 34.1514, (float) 73.8048 ), - new StrokeCharRec( 2, char55, (float) 38.8933, (float) 77.2267 ), - new StrokeCharRec( 1, char56, (float) 38.9333, (float) 77.6667 ), - new StrokeCharRec( 1, char57, (float) 39.9333, (float) 74.0648 ), - new StrokeCharRec( 2, char58, (float) 14.0819, (float) 26.2238 ), - new StrokeCharRec( 2, char59, (float) 12.9619, (float) 26.3038 ), - new StrokeCharRec( 1, char60, (float) 41.1552, (float) 81.6105 ), - new StrokeCharRec( 2, char61, (float) 48.5571, (float) 97.2543 ), - new StrokeCharRec( 1, char62, (float) 40.8752, (float) 81.6105 ), - new StrokeCharRec( 2, char63, (float) 36.9914, (float) 73.9029 ), - new StrokeCharRec( 2, char64, (float) 34.9314, (float) 74.3648 ), - new StrokeCharRec( 3, char65, (float) 40.5952, (float) 80.4905 ), - new StrokeCharRec( 3, char66, (float) 44.7533, (float) 83.6267 ), - new StrokeCharRec( 1, char67, (float) 39.9933, (float) 84.4886 ), - new StrokeCharRec( 2, char68, (float) 45.2933, (float) 85.2867 ), - new StrokeCharRec( 4, char69, (float) 39.9914, (float) 78.1848 ), - new StrokeCharRec( 3, char70, (float) 39.9914, (float) 78.7448 ), - new StrokeCharRec( 2, char71, (float) 40.3933, (float) 89.7686 ), - new StrokeCharRec( 3, char72, (float) 44.7533, (float) 89.0867 ), - new StrokeCharRec( 1, char73, (float) 10.86, (float) 21.3 ), - new StrokeCharRec( 1, char74, (float) 31.0714, (float) 59.999 ), - new StrokeCharRec( 3, char75, (float) 44.6133, (float) 79.3267 ), - new StrokeCharRec( 2, char76, (float) 40.2514, (float) 71.3229 ), - new StrokeCharRec( 4, char77, (float) 48.9552, (float) 97.2105 ), - new StrokeCharRec( 3, char78, (float) 44.4733, (float) 88.8067 ), - new StrokeCharRec( 1, char79, (float) 44.3352, (float) 88.8305 ), - new StrokeCharRec( 2, char80, (float) 45.4333, (float) 85.6667 ), - new StrokeCharRec( 2, char81, (float) 43.3952, (float) 88.0905 ), - new StrokeCharRec( 3, char82, (float) 45.0133, (float) 82.3667 ), - new StrokeCharRec( 1, char83, (float) 41.3333, (float) 80.8267 ), - new StrokeCharRec( 2, char84, (float) 35.6933, (float) 71.9467 ), - new StrokeCharRec( 1, char85, (float) 44.8733, (float) 89.4867 ), - new StrokeCharRec( 2, char86, (float) 40.4552, (float) 81.6105 ), - new StrokeCharRec( 4, char87, (float) 49.839, (float) 100.518 ), - new StrokeCharRec( 2, char88, (float) 35.8333, (float) 72.3667 ), - new StrokeCharRec( 2, char89, (float) 39.6152, (float) 79.6505 ), - new StrokeCharRec( 3, char90, (float) 35.8333, (float) 73.7467 ), - new StrokeCharRec( 4, char91, (float) 22.0657, (float) 46.1133 ), - new StrokeCharRec( 1, char92, (float) 39.1733, (float) 78.2067 ), - new StrokeCharRec( 4, char93, (float) 23.4876, (float) 46.3933 ), - new StrokeCharRec( 2, char94, (float) 44.0752, (float) 90.2305 ), - new StrokeCharRec( 1, char95, (float) 51.281, (float) 104.062 ), - new StrokeCharRec( 2, char96, (float) 42.5457, (float) 83.5714 ), - new StrokeCharRec( 2, char97, (float) 35.2514, (float) 66.6029 ), - new StrokeCharRec( 2, char98, (float) 37.3314, (float) 70.4629 ), - new StrokeCharRec( 1, char99, (float) 34.0914, (float) 68.9229 ), - new StrokeCharRec( 2, char100, (float) 33.2114, (float) 70.2629 ), - new StrokeCharRec( 1, char101, (float) 34.2914, (float) 68.5229 ), - new StrokeCharRec( 2, char102, (float) 14.9657, (float) 38.6552 ), - new StrokeCharRec( 2, char103, (float) 33.9314, (float) 70.9829 ), - new StrokeCharRec( 2, char104, (float) 33.4095, (float) 71.021 ), - new StrokeCharRec( 2, char105, (float) 14.7819, (float) 28.8638 ), - new StrokeCharRec( 2, char106, (float) 17.3876, (float) 36.2314 ), - new StrokeCharRec( 3, char107, (float) 33.4095, (float) 62.521 ), - new StrokeCharRec( 1, char108, (float) 10.02, (float) 19.34 ), - new StrokeCharRec( 3, char109, (float) 61.981, (float) 123.962 ), - new StrokeCharRec( 2, char110, (float) 32.9895, (float) 70.881 ), - new StrokeCharRec( 1, char111, (float) 33.5514, (float) 71.7448 ), - new StrokeCharRec( 2, char112, (float) 38.0314, (float) 70.8029 ), - new StrokeCharRec( 2, char113, (float) 33.4114, (float) 70.7429 ), - new StrokeCharRec( 2, char114, (float) 23.7457, (float) 49.4952 ), - new StrokeCharRec( 1, char115, (float) 28.5095, (float) 62.321 ), - new StrokeCharRec( 2, char116, (float) 14.8257, (float) 39.3152 ), - new StrokeCharRec( 2, char117, (float) 33.2695, (float) 71.161 ), - new StrokeCharRec( 2, char118, (float) 30.3714, (float) 60.6029 ), - new StrokeCharRec( 4, char119, (float) 40.5952, (float) 80.4905 ), - new StrokeCharRec( 2, char120, (float) 25.4695, (float) 56.401 ), - new StrokeCharRec( 2, char121, (float) 35.1333, (float) 66.0648 ), - new StrokeCharRec( 3, char122, (float) 28.2495, (float) 61.821 ), - new StrokeCharRec( 3, char123, (float) 21.6657, (float) 41.6295 ), - new StrokeCharRec( 1, char124, (float) 11.54, (float) 23.78 ), - new StrokeCharRec( 3, char125, (float) 18.7038, (float) 41.4695 ), - new StrokeCharRec( 2, char126, (float) 45.7771, (float) 91.2743 ), - new StrokeCharRec( 2, char127, (float) 33.3333, (float) 66.6667 ), -}; - -public static final StrokeFontRec glutStrokeRoman = new StrokeFontRec( "Roman", 128, chars, (float) 119.048, (float) -33.3333 ); -} diff --git a/src/jogl/classes/com/sun/opengl/util/gl2/StrokeCharRec.java b/src/jogl/classes/com/sun/opengl/util/gl2/StrokeCharRec.java deleted file mode 100644 index 1d5d3de63..000000000 --- a/src/jogl/classes/com/sun/opengl/util/gl2/StrokeCharRec.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.gl2; - -/* Copyright (c) Mark J. Kilgard, 1994, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -class StrokeCharRec { - public int num_strokes; - public StrokeRec[] stroke; - public float center; - public float right; - - public StrokeCharRec(int num_strokes, - StrokeRec[] stroke, - float center, - float right) { - this.num_strokes = num_strokes; - this.stroke = stroke; - this.center = center; - this.right = right; - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/gl2/StrokeFontRec.java b/src/jogl/classes/com/sun/opengl/util/gl2/StrokeFontRec.java deleted file mode 100644 index 0e6133a2d..000000000 --- a/src/jogl/classes/com/sun/opengl/util/gl2/StrokeFontRec.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.gl2; - -/* Copyright (c) Mark J. Kilgard, 1994, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -class StrokeFontRec { - public String name; - public int num_chars; - public StrokeCharRec[] ch; - public float top; - public float bottom; - - public StrokeFontRec(String name, - int num_chars, - StrokeCharRec[] ch, - float top, - float bottom) { - this.name = name; - this.num_chars = num_chars; - this.ch = ch; - this.top = top; - this.bottom = bottom; - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/gl2/StrokeRec.java b/src/jogl/classes/com/sun/opengl/util/gl2/StrokeRec.java deleted file mode 100644 index 91241ebc0..000000000 --- a/src/jogl/classes/com/sun/opengl/util/gl2/StrokeRec.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.gl2; - -/* Copyright (c) Mark J. Kilgard, 1994, 1998. */ - -/* This program is freely distributable without licensing fees - and is provided without guarantee or warrantee expressed or - implied. This program is -not- in the public domain. */ - -class StrokeRec { - public int num_coords; - public CoordRec[] coord; - - public StrokeRec(int num_coords, - CoordRec[] coord) { - this.num_coords = num_coords; - this.coord = coord; - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/gl2/TileRenderer.java b/src/jogl/classes/com/sun/opengl/util/gl2/TileRenderer.java deleted file mode 100755 index a446b0928..000000000 --- a/src/jogl/classes/com/sun/opengl/util/gl2/TileRenderer.java +++ /dev/null @@ -1,601 +0,0 @@ -package com.sun.opengl.util.gl2; - -import java.awt.Dimension; -import java.nio.Buffer; - -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import javax.media.opengl.glu.gl2.*; - -/** - * A fairly direct port of Brian Paul's tile rendering library, found - * at <a href = "http://www.mesa3d.org/brianp/TR.html"> - * http://www.mesa3d.org/brianp/TR.html </a> . I've java-fied it, but - * the functionality is the same. - * - * Original code Copyright (C) 1997-2005 Brian Paul. Licensed under - * BSD-compatible terms with permission of the author. See LICENSE.txt - * for license information. - * - * @author ryanm - */ -public class TileRenderer -{ - private static final int DEFAULT_TILE_WIDTH = 256; - - private static final int DEFAULT_TILE_HEIGHT = 256; - - private static final int DEFAULT_TILE_BORDER = 0; - - // - // Enumeration flags for accessing variables - // - // @author ryanm - // - - /** - * The width of a tile - */ - public static final int TR_TILE_WIDTH = 0; - /** - * The height of a tile - */ - public static final int TR_TILE_HEIGHT = 1; - /** - * The width of the border around the tiles - */ - public static final int TR_TILE_BORDER = 2; - /** - * The width of the final image - */ - public static final int TR_IMAGE_WIDTH = 3; - /** - * The height of the final image - */ - public static final int TR_IMAGE_HEIGHT = 4; - /** - * The number of rows of tiles - */ - public static final int TR_ROWS = 5; - /** - * The number of columns of tiles - */ - public static final int TR_COLUMNS = 6; - /** - * The current row number - */ - public static final int TR_CURRENT_ROW = 7; - /** - * The current column number - */ - public static final int TR_CURRENT_COLUMN = 8; - /** - * The width of the current tile - */ - public static final int TR_CURRENT_TILE_WIDTH = 9; - /** - * The height of the current tile - */ - public static final int TR_CURRENT_TILE_HEIGHT = 10; - /** - * The order that the rows are traversed - */ - public static final int TR_ROW_ORDER = 11; - - - /** - * Indicates we are traversing rows from the top to the bottom - */ - public static final int TR_TOP_TO_BOTTOM = 1; - - /** - * Indicates we are traversing rows from the bottom to the top - */ - public static final int TR_BOTTOM_TO_TOP = 2; - - /* Final image parameters */ - private Dimension imageSize = new Dimension(); - - private int imageFormat, imageType; - - private Buffer imageBuffer; - - /* Tile parameters */ - private Dimension tileSize = new Dimension(); - - private Dimension tileSizeNB = new Dimension(); - - private int tileBorder; - - private int tileFormat, tileType; - - private Buffer tileBuffer; - - /* Projection parameters */ - private boolean perspective; - - private double left; - - private double right; - - private double bottom; - - private double top; - - private double near; - - private double far; - - /* Misc */ - private int rowOrder; - - private int rows, columns; - - private int currentTile; - - private int currentTileWidth, currentTileHeight; - - private int currentRow, currentColumn; - - private int[] viewportSave = new int[ 4 ]; - - /** - * Creates a new TileRenderer object - */ - public TileRenderer() - { - tileSize.width = DEFAULT_TILE_WIDTH; - tileSize.height = DEFAULT_TILE_HEIGHT; - tileBorder = DEFAULT_TILE_BORDER; - rowOrder = TR_BOTTOM_TO_TOP; - currentTile = -1; - } - - /** - * Sets up the number of rows and columns needed - */ - private void setup() - { - columns = ( imageSize.width + tileSizeNB.width - 1 ) / tileSizeNB.width; - rows = ( imageSize.height + tileSizeNB.height - 1 ) / tileSizeNB.height; - currentTile = 0; - - assert columns >= 0; - assert rows >= 0; - } - - /** - * Sets the size of the tiles to use in rendering. The actual - * effective size of the tile depends on the border size, ie ( - * width - 2*border ) * ( height - 2 * border ) - * - * @param width - * The width of the tiles. Must not be larger than the GL - * context - * @param height - * The height of the tiles. Must not be larger than the - * GL context - * @param border - * The width of the borders on each tile. This is needed - * to avoid artifacts when rendering lines or points with - * thickness > 1. - */ - public void setTileSize( int width, int height, int border ) - { - assert ( border >= 0 ); - assert ( width >= 1 ); - assert ( height >= 1 ); - assert ( width >= 2 * border ); - assert ( height >= 2 * border ); - - tileBorder = border; - tileSize.width = width; - tileSize.height = height; - tileSizeNB.width = width - 2 * border; - tileSizeNB.height = height - 2 * border; - setup(); - } - - /** - * Specify a buffer the tiles to be copied to. This is not - * necessary for the creation of the final image, but useful if you - * want to inspect each tile in turn. - * - * @param format - * Interpreted as in glReadPixels - * @param type - * Interpreted as in glReadPixels - * @param image - * The buffer itself. Must be large enough to contain a - * tile, minus any borders - */ - public void setTileBuffer( int format, int type, Buffer image ) - { - tileFormat = format; - tileType = type; - tileBuffer = image; - } - - /** - * Sets the desired size of the final image - * - * @param width - * The width of the final image - * @param height - * The height of the final image - */ - public void setImageSize( int width, int height ) - { - imageSize.width = width; - imageSize.height = height; - setup(); - } - - /** - * Sets the buffer in which to store the final image - * - * @param format - * Interpreted as in glReadPixels - * @param type - * Interpreted as in glReadPixels - * @param image - * the buffer itself, must be large enough to hold the - * final image - */ - public void setImageBuffer( int format, int type, Buffer image ) - { - imageFormat = format; - imageType = type; - imageBuffer = image; - } - - /** - * Gets the parameters of this TileRenderer object - * - * @param param - * The parameter that is to be retrieved - * @return the value of the parameter - */ - public int getParam( int param ) - { - switch (param) { - case TR_TILE_WIDTH: - return tileSize.width; - case TR_TILE_HEIGHT: - return tileSize.height; - case TR_TILE_BORDER: - return tileBorder; - case TR_IMAGE_WIDTH: - return imageSize.width; - case TR_IMAGE_HEIGHT: - return imageSize.height; - case TR_ROWS: - return rows; - case TR_COLUMNS: - return columns; - case TR_CURRENT_ROW: - if( currentTile < 0 ) - return -1; - else - return currentRow; - case TR_CURRENT_COLUMN: - if( currentTile < 0 ) - return -1; - else - return currentColumn; - case TR_CURRENT_TILE_WIDTH: - return currentTileWidth; - case TR_CURRENT_TILE_HEIGHT: - return currentTileHeight; - case TR_ROW_ORDER: - return rowOrder; - default: - throw new IllegalArgumentException("Invalid enumerant as argument"); - } - } - - /** - * Sets the order of row traversal - * - * @param order - * The row traversal order, must be - * eitherTR_TOP_TO_BOTTOM or TR_BOTTOM_TO_TOP - */ - public void setRowOrder( int order ) - { - if (order == TR_TOP_TO_BOTTOM || order == TR_BOTTOM_TO_TOP) { - rowOrder = order; - } else { - throw new IllegalArgumentException("Must pass TR_TOP_TO_BOTTOM or TR_BOTTOM_TO_TOP"); - } - } - - /** - * Sets the context to use an orthographic projection. Must be - * called before rendering the first tile - * - * @param left - * As in glOrtho - * @param right - * As in glOrtho - * @param bottom - * As in glOrtho - * @param top - * As in glOrtho - * @param zNear - * As in glOrtho - * @param zFar - * As in glOrtho - */ - public void trOrtho( double left, double right, double bottom, double top, double zNear, - double zFar ) - { - this.perspective = false; - this.left = left; - this.right = right; - this.bottom = bottom; - this.top = top; - this.near = zNear; - this.far = zFar; - } - - /** - * Sets the perspective projection frustrum. Must be called before - * rendering the first tile - * - * @param left - * As in glFrustrum - * @param right - * As in glFrustrum - * @param bottom - * As in glFrustrum - * @param top - * As in glFrustrum - * @param zNear - * As in glFrustrum - * @param zFar - * As in glFrustrum - */ - public void trFrustum( double left, double right, double bottom, double top, double zNear, - double zFar ) - { - this.perspective = true; - this.left = left; - this.right = right; - this.bottom = bottom; - this.top = top; - this.near = zNear; - this.far = zFar; - } - - /** - * Convenient way to specify a perspective projection - * - * @param fovy - * As in gluPerspective - * @param aspect - * As in gluPerspective - * @param zNear - * As in gluPerspective - * @param zFar - * As in gluPerspective - */ - public void trPerspective( double fovy, double aspect, double zNear, double zFar ) - { - double xmin, xmax, ymin, ymax; - ymax = zNear * Math.tan( fovy * 3.14159265 / 360.0 ); - ymin = -ymax; - xmin = ymin * aspect; - xmax = ymax * aspect; - trFrustum( xmin, xmax, ymin, ymax, zNear, zFar ); - } - - /** - * Begins rendering a tile. The projection matrix stack should be - * left alone after calling this - * - * @param gl - * The gl context - */ - public void beginTile( GL2 gl ) - { - if (currentTile <= 0) { - setup(); - /* - * Save user's viewport, will be restored after last tile - * rendered - */ - gl.glGetIntegerv( GL2.GL_VIEWPORT, viewportSave, 0 ); - } - - /* which tile (by row and column) we're about to render */ - if (rowOrder == TR_BOTTOM_TO_TOP) { - currentRow = currentTile / columns; - currentColumn = currentTile % columns; - } else { - currentRow = rows - ( currentTile / columns ) - 1; - currentColumn = currentTile % columns; - } - assert ( currentRow < rows ); - assert ( currentColumn < columns ); - - int border = tileBorder; - - int th, tw; - - /* Compute actual size of this tile with border */ - if (currentRow < rows - 1) { - th = tileSize.height; - } else { - th = imageSize.height - ( rows - 1 ) * ( tileSizeNB.height ) + 2 * border; - } - - if (currentColumn < columns - 1) { - tw = tileSize.width; - } else { - tw = imageSize.width - ( columns - 1 ) * ( tileSizeNB.width ) + 2 * border; - } - - /* Save tile size, with border */ - currentTileWidth = tw; - currentTileHeight = th; - - gl.glViewport( 0, 0, tw, th ); - - /* save current matrix mode */ - int[] matrixMode = new int[ 1 ]; - gl.glGetIntegerv( GL2.GL_MATRIX_MODE, matrixMode, 0 ); - gl.glMatrixMode( GL2.GL_PROJECTION ); - gl.glLoadIdentity(); - - /* compute projection parameters */ - double l = - left + ( right - left ) * ( currentColumn * tileSizeNB.width - border ) - / imageSize.width; - double r = l + ( right - left ) * tw / imageSize.width; - double b = - bottom + ( top - bottom ) * ( currentRow * tileSizeNB.height - border ) - / imageSize.height; - double t = b + ( top - bottom ) * th / imageSize.height; - - if( perspective ) { - gl.glFrustum( l, r, b, t, near, far ); - } else { - gl.glOrtho( l, r, b, t, near, far ); - } - - /* restore user's matrix mode */ - gl.glMatrixMode( matrixMode[ 0 ] ); - } - - /** - * Must be called after rendering the scene - * - * @param gl - * the gl context - * @return true if there are more tiles to be rendered, false if - * the final image is complete - */ - public boolean endTile( GL2 gl ) - { - int[] prevRowLength = new int[ 1 ], prevSkipRows = new int[ 1 ], prevSkipPixels = new int[ 1 ], prevAlignment = - new int[ 1 ]; - - assert ( currentTile >= 0 ); - - // be sure OpenGL rendering is finished - gl.glFlush(); - - // save current glPixelStore values - gl.glGetIntegerv( GL2.GL_PACK_ROW_LENGTH, prevRowLength, 0 ); - gl.glGetIntegerv( GL2.GL_PACK_SKIP_ROWS, prevSkipRows, 0 ); - gl.glGetIntegerv( GL2.GL_PACK_SKIP_PIXELS, prevSkipPixels, 0 ); - gl.glGetIntegerv( GL2.GL_PACK_ALIGNMENT, prevAlignment, 0 ); - - if( tileBuffer != null ) { - int srcX = tileBorder; - int srcY = tileBorder; - int srcWidth = tileSizeNB.width; - int srcHeight = tileSizeNB.height; - gl.glReadPixels( srcX, srcY, srcWidth, srcHeight, tileFormat, tileType, tileBuffer ); - } - - if( imageBuffer != null ) { - int srcX = tileBorder; - int srcY = tileBorder; - int srcWidth = currentTileWidth - 2 * tileBorder; - int srcHeight = currentTileHeight - 2 * tileBorder; - int destX = tileSizeNB.width * currentColumn; - int destY = tileSizeNB.height * currentRow; - - /* setup pixel store for glReadPixels */ - gl.glPixelStorei( GL2.GL_PACK_ROW_LENGTH, imageSize.width ); - gl.glPixelStorei( GL2.GL_PACK_SKIP_ROWS, destY ); - gl.glPixelStorei( GL2.GL_PACK_SKIP_PIXELS, destX ); - gl.glPixelStorei( GL2.GL_PACK_ALIGNMENT, 1 ); - - /* read the tile into the final image */ - gl.glReadPixels( srcX, srcY, srcWidth, srcHeight, imageFormat, imageType, imageBuffer ); - } - - /* restore previous glPixelStore values */ - gl.glPixelStorei( GL2.GL_PACK_ROW_LENGTH, prevRowLength[ 0 ] ); - gl.glPixelStorei( GL2.GL_PACK_SKIP_ROWS, prevSkipRows[ 0 ] ); - gl.glPixelStorei( GL2.GL_PACK_SKIP_PIXELS, prevSkipPixels[ 0 ] ); - gl.glPixelStorei( GL2.GL_PACK_ALIGNMENT, prevAlignment[ 0 ] ); - - /* increment tile counter, return 1 if more tiles left to render */ - currentTile++; - if( currentTile >= rows * columns ) { - /* restore user's viewport */ - gl.glViewport( viewportSave[ 0 ], viewportSave[ 1 ], viewportSave[ 2 ], viewportSave[ 3 ] ); - currentTile = -1; /* all done */ - return false; - } else { - return true; - } - } - - /** - * Tile rendering causes problems with using glRasterPos3f, so you - * should use this replacement instead - * - * @param x - * As in glRasterPos3f - * @param y - * As in glRasterPos3f - * @param z - * As in glRasterPos3f - * @param gl - * The gl context - * @param glu - * A GLUgl2 object - */ - public void trRasterPos3f( float x, float y, float z, GL2 gl, GLUgl2 glu ) - { - if (currentTile < 0) { - /* not doing tile rendering right now. Let OpenGL do this. */ - gl.glRasterPos3f( x, y, z ); - } else { - double[] modelview = new double[ 16 ], proj = new double[ 16 ]; - int[] viewport = new int[ 4 ]; - double[] win = new double[3]; - - /* Get modelview, projection and viewport */ - gl.glGetDoublev( GL2.GL_MODELVIEW_MATRIX, modelview, 0 ); - gl.glGetDoublev( GL2.GL_PROJECTION_MATRIX, proj, 0 ); - viewport[ 0 ] = 0; - viewport[ 1 ] = 0; - viewport[ 2 ] = currentTileWidth; - viewport[ 3 ] = currentTileHeight; - - /* Project object coord to window coordinate */ - if( glu.gluProject( x, y, z, modelview, 0, proj, 0, viewport, 0, win, 0 ) ) { - - /* set raster pos to window coord (0,0) */ - gl.glMatrixMode( GL2.GL_MODELVIEW ); - gl.glPushMatrix(); - gl.glLoadIdentity(); - gl.glMatrixMode( GL2.GL_PROJECTION ); - gl.glPushMatrix(); - gl.glLoadIdentity(); - gl.glOrtho( 0.0, currentTileWidth, 0.0, currentTileHeight, 0.0, 1.0 ); - gl.glRasterPos3d( 0.0, 0.0, -win[ 2 ] ); - - /* - * Now use empty bitmap to adjust raster position to - * (winX,winY) - */ - { - byte[] bitmap = { 0 }; - gl.glBitmap( 1, 1, 0.0f, 0.0f, ( float ) win[ 0 ], ( float ) win[ 1 ], bitmap , 0 ); - } - - /* restore original matrices */ - gl.glPopMatrix(); /* proj */ - gl.glMatrixMode( GL2.GL_MODELVIEW ); - gl.glPopMatrix(); - } - } - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/GLSLArrayHandler.java b/src/jogl/classes/com/sun/opengl/util/glsl/GLSLArrayHandler.java deleted file mode 100644 index 1ef9874e4..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/GLSLArrayHandler.java +++ /dev/null @@ -1,60 +0,0 @@ - -package com.sun.opengl.util.glsl; - -import javax.media.opengl.*; -import javax.media.opengl.fixedfunc.*; -import com.sun.opengl.util.*; -import com.sun.opengl.util.glsl.ShaderState; -import java.nio.*; - -public class GLSLArrayHandler implements GLArrayHandler { - private GLArrayDataEditable ad; - - public GLSLArrayHandler(GLArrayDataEditable ad) { - this.ad = ad; - } - - protected final void passVertexAttribPointer(GL2ES2 gl, ShaderState st) { - st.glVertexAttribPointer(gl, ad); - } - - public void enableBuffer(GL gl, boolean enable) { - if(!gl.isGL2ES2()) { - throw new GLException("GLSLArrayHandler expects a GL2ES2 implementation"); - } - GL2ES2 glsl = gl.getGL2ES2(); - ShaderState st = ShaderState.getCurrent(); - if(null==st) { - throw new GLException("No ShaderState current"); - } - - if(enable) { - st.glEnableVertexAttribArray(glsl, ad.getName()); - - Buffer buffer = ad.getBuffer(); - - if(ad.isVBO()) { - // always bind and refresh the VBO mgr, - // in case more than one gl*Pointer objects are in use - glsl.glBindBuffer(GL.GL_ARRAY_BUFFER, ad.getVBOName()); - if(!ad.isBufferWritten()) { - if(null!=buffer) { - glsl.glBufferData(GL.GL_ARRAY_BUFFER, buffer.limit() * ad.getComponentSize(), buffer, ad.getBufferUsage()); - } - ad.setBufferWritten(true); - } - passVertexAttribPointer(glsl, st); - } else if(null!=buffer) { - passVertexAttribPointer(glsl, st); - ad.setBufferWritten(true); - } - } else { - if(ad.isVBO()) { - glsl.glBindBuffer(GL.GL_ARRAY_BUFFER, 0); - } - st.glDisableVertexAttribArray(glsl, ad.getName()); - } - } - -} - diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/ShaderCode.java b/src/jogl/classes/com/sun/opengl/util/glsl/ShaderCode.java deleted file mode 100644 index 606d2e1b5..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/ShaderCode.java +++ /dev/null @@ -1,347 +0,0 @@ - -package com.sun.opengl.util.glsl; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import com.sun.opengl.impl.Debug; - -import java.util.*; -import java.nio.*; -import java.io.*; -import java.net.*; -import java.security.*; - -public class ShaderCode { - public static final boolean DEBUG = Debug.debug("GLSLCode"); - public static final boolean DEBUG_CODE = Debug.isPropertyDefined("jogl.debug.GLSLCode", true, AccessController.getContext()); - - public static final String SUFFIX_VERTEX_SOURCE = "vp" ; - public static final String SUFFIX_VERTEX_BINARY = "bvp" ; - public static final String SUFFIX_FRAGMENT_SOURCE = "fp" ; - public static final String SUFFIX_FRAGMENT_BINARY = "bfp" ; - - public static final String SUB_PATH_NVIDIA = "nvidia" ; - - public ShaderCode(int type, int number, String[][] source) { - switch (type) { - case GL2ES2.GL_VERTEX_SHADER: - case GL2ES2.GL_FRAGMENT_SHADER: - break; - default: - throw new GLException("Unknown shader type: "+type); - } - shaderSource = source; - shaderBinaryFormat = -1; - shaderBinary = null; - shaderType = type; - shader = BufferUtil.newIntBuffer(number); - id = getNextID(); - - if(DEBUG_CODE) { - System.out.println("Created: "+toString()); - dumpShaderSource(System.out); - } - } - - public ShaderCode(int type, int number, int binFormat, Buffer binary) { - switch (type) { - case GL2ES2.GL_VERTEX_SHADER: - case GL2ES2.GL_FRAGMENT_SHADER: - break; - default: - throw new GLException("Unknown shader type: "+type); - } - shaderSource = null; - shaderBinaryFormat = binFormat; - shaderBinary = binary; - shaderType = type; - shader = BufferUtil.newIntBuffer(number); - id = getNextID(); - } - - public static ShaderCode create(GL2ES2 gl, int type, int number, Class context, String[] sourceFiles) { - if(!ShaderUtil.isShaderCompilerAvailable(gl)) return null; - - String[][] shaderSources = null; - if(null!=sourceFiles) { - shaderSources = new String[sourceFiles.length][1]; - for(int i=0; null!=shaderSources && i<sourceFiles.length; i++) { - shaderSources[i][0] = readShaderSource(context, sourceFiles[i]); - if(null == shaderSources[i][0]) { - shaderSources = null; - } - } - } - if(null==shaderSources) { - return null; - } - return new ShaderCode(type, number, shaderSources); - } - - public static ShaderCode create(int type, int number, Class context, int binFormat, String binaryFile) { - ByteBuffer shaderBinary = null; - if(null!=binaryFile && 0<=binFormat) { - shaderBinary = readShaderBinary(context, binaryFile); - if(null == shaderBinary) { - binFormat = -1; - } - } - if(null==shaderBinary) { - return null; - } - return new ShaderCode(type, number, binFormat, shaderBinary); - } - - public static String getFileSuffix(boolean binary, int type) { - switch (type) { - case GL2ES2.GL_VERTEX_SHADER: - return binary?SUFFIX_VERTEX_BINARY:SUFFIX_VERTEX_SOURCE; - case GL2ES2.GL_FRAGMENT_SHADER: - return binary?SUFFIX_FRAGMENT_BINARY:SUFFIX_FRAGMENT_SOURCE; - default: - throw new GLException("illegal shader type: "+type); - } - } - - public static String getBinarySubPath(int binFormat) { - switch (binFormat) { - case GLES2.GL_NVIDIA_PLATFORM_BINARY_NV: - return SUB_PATH_NVIDIA; - default: - throw new GLException("unsupported binary format: "+binFormat); - } - } - - public static ShaderCode create(GL2ES2 gl, int type, int number, Class context, - String srcRoot, String binRoot, String basename) { - ShaderCode res = null; - String srcFileName = null; - String binFileName = null; - - if(ShaderUtil.isShaderCompilerAvailable(gl)) { - String srcPath[] = new String[1]; - srcFileName = srcRoot + '/' + basename + "." + getFileSuffix(false, type); - srcPath[0] = srcFileName; - res = create(gl, type, number, context, srcPath); - if(null!=res) { - return res; - } - } - Set binFmts = ShaderUtil.getShaderBinaryFormats(gl); - for(Iterator iter=binFmts.iterator(); null==res && iter.hasNext(); ) { - int bFmt = ((Integer)(iter.next())).intValue(); - String bFmtPath = getBinarySubPath(bFmt); - if(null==bFmtPath) continue; - binFileName = binRoot + '/' + bFmtPath + '/' + basename + "." + getFileSuffix(true, type); - res = create(type, number, context, bFmt, binFileName); - } - - if(null==res) { - throw new GLException("No shader code found (source nor binary) for src: "+srcFileName+ - ", bin: "+binFileName); - } - - return res; - } - - /** - * returns the uniq shader id as an integer - * @see #key() - */ - public int id() { return id.intValue(); } - - /** - * returns the uniq shader id as an Integer - * - * @see #id() - */ - public Integer key() { return id; } - - public int shaderType() { return shaderType; } - public String shaderTypeStr() { return shaderTypeStr(shaderType); } - - public static String shaderTypeStr(int type) { - switch (type) { - case GL2ES2.GL_VERTEX_SHADER: - return "VERTEX_SHADER"; - case GL2ES2.GL_FRAGMENT_SHADER: - return "FRAGMENT_SHADER"; - } - return "UNKNOWN_SHADER"; - } - - public int shaderBinaryFormat() { return shaderBinaryFormat; } - public Buffer shaderBinary() { return shaderBinary; } - public String[][] shaderSource() { return shaderSource; } - - public boolean isValid() { return valid; } - - public IntBuffer shader() { return shader; } - - public boolean compile(GL2ES2 gl) { - return compile(gl, null); - } - public boolean compile(GL2ES2 gl, PrintStream verboseOut) { - if(isValid()) return true; - - // Create & Compile the vertex/fragment shader objects - if(null!=shaderSource) { - valid=ShaderUtil.createAndCompileShader(gl, shader, shaderType, - shaderSource, verboseOut); - } else if(null!=shaderBinary) { - valid=ShaderUtil.createAndLoadShader(gl, shader, shaderType, - shaderBinaryFormat, shaderBinary, verboseOut); - } else { - throw new GLException("no code (source or binary)"); - } - return valid; - } - - public void destroy(GL2ES2 gl) { - if(isValid()) { - if(null!=gl) { - ShaderUtil.deleteShader(gl, shader()); - } - valid=false; - } - if(null!=shaderBinary) { - shaderBinary.clear(); - shaderBinary=null; - } - shaderSource=null; - shaderBinaryFormat=-1; - shaderType=-1; - id=null; - } - - public boolean equals(Object obj) { - if(this==obj) return true; - if(obj instanceof ShaderCode) { - return id()==((ShaderCode)obj).id(); - } - return false; - } - public int hashCode() { - return id.intValue(); - } - public String toString() { - StringBuffer buf = new StringBuffer("ShaderCode [id="+id+", type="+shaderTypeStr()+", valid="+valid+", shader: "); - for(int i=0; i<shader.remaining(); i++) { - buf.append(" "+shader.get(i)); - } - if(null!=shaderSource) { - buf.append(", source]"); - } else if(null!=shaderBinary) { - buf.append(", binary "+shaderBinary+"]"); - } - return buf.toString(); - } - - public void dumpShaderSource(PrintStream out) { - if(null==shaderSource) { - out.println("<no shader source>"); - return; - } - int sourceNum = (null!=shaderSource)?shaderSource.length:0; - int shaderNum = (null!=shader)?shader.capacity():0; - for(int i=0; i<shaderNum; i++) { - out.println(""); - out.println("Shader #"+i+"/"+shaderNum+" name "+shader.get(i)); - out.println("--------------------------------------------------------------"); - if(i>=sourceNum) { - out.println("<no shader source>"); - } else { - String[] src = shaderSource[i]; - for(int j=0; j<src.length; j++) { - out.println("Segment "+j+"/"+src.length+" :"); - out.println(src[j]); - out.println(""); - } - } - out.println("--------------------------------------------------------------"); - } - } - - public static void readShaderSource(ClassLoader context, String path, URL url, StringBuffer result) { - try { - BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream())); - String line = null; - while ((line = reader.readLine()) != null) { - if (line.startsWith("#include ")) { - String includeFile = line.substring(9).trim(); - // Try relative path first - String next = Locator.getRelativeOf(path, includeFile); - URL nextURL = Locator.getResource(next, context); - if (nextURL == null) { - // Try absolute path - next = includeFile; - nextURL = Locator.getResource(next, context); - } - if (nextURL == null) { - // Fail - throw new FileNotFoundException("Can't find include file " + includeFile); - } - readShaderSource(context, next, nextURL, result); - } else { - result.append(line + "\n"); - } - } - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - public static String readShaderSource(Class context, String path) { - ClassLoader contextCL = (null!=context)?context.getClassLoader():null; - URL url = Locator.getResource(path, contextCL); - if (url == null && null!=context) { - // Try again by scoping the path within the class's package - String className = context.getName().replace('.', '/'); - int lastSlash = className.lastIndexOf('/'); - if (lastSlash >= 0) { - String tmpPath = className.substring(0, lastSlash + 1) + path; - url = Locator.getResource(tmpPath, contextCL); - if (url != null) { - path = tmpPath; - } - } - } - if (url == null) { - return null; - } - StringBuffer result = new StringBuffer(); - readShaderSource(contextCL, path, url, result); - return result.toString(); - } - - public static ByteBuffer readShaderBinary(Class context, String path) { - try { - URL url = Locator.getResource(context, path); - if (url == null) { - return null; - } - return StreamUtil.readAll2Buffer(new BufferedInputStream(url.openStream())); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - protected String[][] shaderSource = null; - protected Buffer shaderBinary = null; - protected int shaderBinaryFormat = -1; - protected IntBuffer shader = null; - protected int shaderType = -1; - protected Integer id = null; - - protected boolean valid=false; - - private static synchronized Integer getNextID() { - return new Integer(nextID++); - } - protected static int nextID = 1; -} - diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/ShaderProgram.java b/src/jogl/classes/com/sun/opengl/util/glsl/ShaderProgram.java deleted file mode 100644 index c06eae383..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/ShaderProgram.java +++ /dev/null @@ -1,212 +0,0 @@ - -package com.sun.opengl.util.glsl; - -import javax.media.opengl.*; - -import java.util.HashMap; -import java.util.Iterator; -import java.nio.*; -import java.io.PrintStream; - -public class ShaderProgram { - public ShaderProgram() { - id = getNextID(); - } - - public boolean linked() { - return programLinked; - } - - public boolean inUse() { - return programInUse; - } - - public int program() { return shaderProgram; } - - /** - * returns the uniq shader id as an integer - * @see #key() - */ - public int id() { return id.intValue(); } - - /** - * returns the uniq shader id as an Integer - * - * @see #id() - */ - public Integer key() { return id; } - - /** - * Detaches all shader codes and deletes the program. - * Destroys the shader codes as well. - * Calls release(gl, true) - * - * @see #release(GL2ES2, boolean) - */ - public synchronized void destroy(GL2ES2 gl) { - release(gl, true); - } - - /** - * Detaches all shader codes and deletes the program. - * Calls release(gl, false) - * - * @see #release(GL2ES2, boolean) - */ - public synchronized void release(GL2ES2 gl) { - release(gl, false); - } - - /** - * Detaches all shader codes and deletes the program. - * If releaseShaderToo is true, destroys the shader codes as well. - */ - public synchronized void release(GL2ES2 gl, boolean releaseShaderToo) { - glUseProgram(gl, false); - for(Iterator iter=shaderMap.values().iterator(); iter.hasNext(); ) { - ShaderCode shaderCode = (ShaderCode) iter.next(); - ShaderUtil.detachShader(gl, shaderProgram, shaderCode.shader()); - if(releaseShaderToo) { - shaderCode.destroy(gl); - } - } - shaderMap.clear(); - gl.glDeleteProgram(shaderProgram); - shaderProgram=-1; - } - - // - // ShaderCode handling - // - - /** - * Adds a new shader to a this non running program. - * - * @return false if the program is in use, or the shader already exist, - * otherwise true. - */ - public synchronized boolean add(ShaderCode shaderCode) { - if(shaderMap.containsKey(shaderCode.key())) return false; - shaderMap.put(shaderCode.key(), shaderCode); - return true; - } - - public synchronized ShaderCode getShader(int id) { - return (ShaderCode) shaderMap.get(new Integer(id)); - } - - // - // Program handling - // - - /** - * Replace a shader in a 'running' program. - * Refetches all previously bin/get attribute names - * and resets all attribute data as well - * - * @see getAttribLocation - * @param gl - * @param oldShaderID the to be replace Shader - * @param newShader the new ShaderCode - * @param verboseOut the optional verbose outputstream - * @throws GLException is the program is not linked - * - * @see #glRefetchAttribLocations - * @see #glResetAllVertexAttributes - * @see #glReplaceShader - */ - public synchronized boolean glReplaceShader(GL2ES2 gl, int oldShaderID, ShaderCode newShader, PrintStream verboseOut) { - if(!programLinked) throw new GLException("Program is not linked"); - boolean shaderWasInUse = programInUse; - glUseProgram(gl, false); - if(!newShader.compile(gl, verboseOut)) { - return false; - } - if(oldShaderID>=0) { - ShaderCode oldShader = (ShaderCode) shaderMap.remove(new Integer(oldShaderID)); - if(null!=oldShader) { - ShaderUtil.detachShader(gl, shaderProgram, oldShader.shader()); - } - } - add(newShader); - - ShaderUtil.attachShader(gl, shaderProgram, newShader.shader()); - gl.glLinkProgram(shaderProgram); - if ( ! ShaderUtil.isProgramValid(gl, shaderProgram, System.err) ) { - return false; - } - - if(shaderWasInUse) { - glUseProgram(gl, true); - } - return true; - } - - public synchronized boolean link(GL2ES2 gl, PrintStream verboseOut) { - if(programLinked) throw new GLException("Program is already linked"); - - if(0>shaderProgram) { - shaderProgram = gl.glCreateProgram(); - } - - for(Iterator iter=shaderMap.values().iterator(); iter.hasNext(); ) { - ShaderCode shaderCode = (ShaderCode) iter.next(); - if(!shaderCode.compile(gl, verboseOut)) { - return false; - } - ShaderUtil.attachShader(gl, shaderProgram, shaderCode.shader()); - } - - // Link the program - gl.glLinkProgram(shaderProgram); - - programLinked = ShaderUtil.isProgramValid(gl, shaderProgram, System.err); - - return programLinked; - } - - public boolean equals(Object obj) { - if(this==obj) return true; - if(obj instanceof ShaderCode) { - return id()==((ShaderCode)obj).id(); - } - return false; - } - public int hashCode() { - return id.intValue(); - } - public String toString() { - StringBuffer buf = new StringBuffer(); - buf.append("ShaderProgram[id="+id); - buf.append(", linked="+programLinked+", inUse="+programInUse+", program: "+shaderProgram+", ["); - for(Iterator iter=shaderMap.values().iterator(); iter.hasNext(); ) { - buf.append((ShaderCode) iter.next()); - buf.append(" "); - } - buf.append("]"); - return buf.toString(); - } - - protected synchronized void glUseProgram(GL2ES2 gl, boolean on) { - if(!programLinked) throw new GLException("Program is not linked"); - if(programInUse==on) return; - gl.glUseProgram(on?shaderProgram:0); - programInUse = on; - - //Throwable tX = new Throwable("Info: ShaderProgram.glUseProgram: "+on); - //tX.printStackTrace(); - - } - - protected boolean programLinked = false; - protected boolean programInUse = false; - protected int shaderProgram=-1; - protected HashMap shaderMap = new HashMap(); - protected Integer id = null; - - private static synchronized Integer getNextID() { - return new Integer(nextID++); - } - protected static int nextID = 1; -} - diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/ShaderState.java b/src/jogl/classes/com/sun/opengl/util/glsl/ShaderState.java deleted file mode 100644 index 8712ac7e2..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/ShaderState.java +++ /dev/null @@ -1,652 +0,0 @@ - -package com.sun.opengl.util.glsl; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import com.sun.opengl.impl.Debug; - -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.nio.*; -import java.io.PrintStream; -import java.security.*; - -public class ShaderState { - public static final boolean DEBUG = Debug.isPropertyDefined("jogl.debug.GLSLState", true, AccessController.getContext()); - - public ShaderState() { - } - - public boolean verbose() { return verbose; } - - public void setVerbose(boolean v) { verbose=v; } - - /** - * Fetches the current shader state from the thread local storage (TLS) - * - * @see javax.media.opengl.glsl.ShaderState#glUseProgram(GL2ES2, boolean) - * @see javax.media.opengl.glsl.ShaderState#getCurrent() - */ - public static synchronized ShaderState getCurrent() { - GLContext current = GLContext.getCurrent(); - if(null==current) { - throw new GLException("No context is current on this thread"); - } - return (ShaderState) current.getAttachedObject(ShaderState.class.getName()); - } - - /** - * Turns the shader program on or off.<br> - * Puts this ShaderState to to the thread local storage (TLS), - * if <code>on</code> is <code>true</code>. - * - * @see javax.media.opengl.glsl.ShaderState#glUseProgram(GL2ES2, boolean) - * @see javax.media.opengl.glsl.ShaderState#getCurrent() - */ - public synchronized void glUseProgram(GL2ES2 gl, boolean on) { - if(on) { - if(null!=shaderProgram) { - shaderProgram.glUseProgram(gl, true); - } else { - throw new GLException("No program is attached"); - } - // update the current ShaderState to the TLS .. - gl.getContext().putAttachedObject(ShaderState.class.getName(), this); - } else if(null!=shaderProgram) { - shaderProgram.glUseProgram(gl, false); - } - } - - public boolean linked() { - return (null!=shaderProgram)?shaderProgram.linked():false; - } - - public boolean inUse() { - return (null!=shaderProgram)?shaderProgram.inUse():false; - } - - /** - * Attach or switch a shader program - * - * Attaching a shader program the first time, - * as well as switching to another program on the fly, - * while managing all attribute and uniform data. - */ - public synchronized void attachShaderProgram(GL2ES2 gl, ShaderProgram prog) { - boolean prgInUse = false; // earmarked state - - if(DEBUG) { - int curId = (null!=shaderProgram)?shaderProgram.id():-1; - int newId = (null!=prog)?prog.id():-1; - System.err.println("Info: attachShaderProgram: "+curId+" -> "+newId+"\n\t"+shaderProgram+"\n\t"+prog); - if(verbose) { - Throwable tX = new Throwable("Info: attachShaderProgram: Trace"); - tX.printStackTrace(); - } - } - if(null!=shaderProgram) { - if(shaderProgram.equals(prog)) { - // nothing to do .. - if(DEBUG) { - System.err.println("Info: attachShaderProgram: NOP: equal id: "+shaderProgram.id()); - } - return; - } - prgInUse = shaderProgram.inUse(); - shaderProgram.glUseProgram(gl, false); - } - - // register new one - shaderProgram = prog; - - if(null!=shaderProgram) { - // reinstall all data .. - shaderProgram.glUseProgram(gl, true); - glResetAllVertexAttributes(gl); - glResetAllUniforms(gl); - if(!prgInUse) { - shaderProgram.glUseProgram(gl, false); - } - } - if(DEBUG) { - System.err.println("Info: attachShaderProgram: END"); - } - } - - public ShaderProgram shaderProgram() { return shaderProgram; } - - /** - * Calls release(gl, true, true) - * - * @see #glReleaseAllVertexAttributes - * @see #glReleaseAllUniforms - * @see #release(GL2ES2, boolean, boolean) - */ - public synchronized void destroy(GL2ES2 gl) { - release(gl, true, true); - } - - /** - * Calls release(gl, false, false) - * - * @see #glReleaseAllVertexAttributes - * @see #glReleaseAllUniforms - * @see #release(GL2ES2, boolean, boolean) - */ - public synchronized void releaseAllData(GL2ES2 gl) { - release(gl, false, false); - } - - /** - * @see #glReleaseAllVertexAttributes - * @see #glReleaseAllUniforms - * @see ShaderProgram#release(GL2ES2, boolean) - */ - public synchronized void release(GL2ES2 gl, boolean releaseProgramToo, boolean releaseShaderToo) { - boolean prgInUse = false; - if(null!=shaderProgram) { - prgInUse = shaderProgram.inUse(); - if(!prgInUse) { - shaderProgram.glUseProgram(gl, true); - } - } - glReleaseAllVertexAttributes(gl); - glReleaseAllUniforms(gl); - if(null!=shaderProgram) { - if(releaseProgramToo) { - shaderProgram.release(gl, releaseShaderToo); - } else if(!prgInUse) { - shaderProgram.glUseProgram(gl, false); - } - } - } - - // - // Shader attribute handling - // - - /** - * Binds an attribute to the shader. - * This must be done before the program is linked ! - * n name - 1 idx, where name is a uniq key - * - * @throws GLException is the program is already linked - * - * @see #glBindAttribLocation - * @see javax.media.opengl.GL2ES2#glBindAttribLocation - * @see #glGetAttribLocation - * @see javax.media.opengl.GL2ES2#glGetAttribLocation - * @see #getAttribLocation - * @see #glReplaceShader - */ - public void glBindAttribLocation(GL2ES2 gl, int index, String name) { - if(null==shaderProgram) throw new GLException("No program is attached"); - if(shaderProgram.linked()) throw new GLException("Program is already linked"); - Integer idx = new Integer(index); - if(!attribMap2Idx.containsKey(name)) { - attribMap2Idx.put(name, idx); - gl.glBindAttribLocation(shaderProgram.program(), index, name); - } - } - - /** - * Gets the index of a shader attribute. - * This must be done after the program is linked ! - * - * @return -1 if there is no such attribute available, - * otherwise >= 0 - * @throws GLException is the program is not linked - * - * @see #glBindAttribLocation - * @see javax.media.opengl.GL2ES2#glBindAttribLocation - * @see #glGetAttribLocation - * @see javax.media.opengl.GL2ES2#glGetAttribLocation - * @see #getAttribLocation - * @see #glReplaceShader - */ - public int glGetAttribLocation(GL2ES2 gl, String name) { - if(!shaderProgram.linked()) throw new GLException("Program is not linked"); - int index = getAttribLocation(name); - if(0>index) { - index = gl.glGetAttribLocation(shaderProgram.program(), name); - if(0<=index) { - Integer idx = new Integer(index); - attribMap2Idx.put(name, idx); - if(DEBUG) { - System.err.println("Info: glGetAttribLocation: "+name+", loc: "+index); - } - } else if(verbose) { - Throwable tX = new Throwable("Info: glGetAttribLocation failed, no location for: "+name+", index: "+index); - tX.printStackTrace(); - } - } - return index; - } - - protected int getAttribLocation(String name) { - Integer idx = (Integer) attribMap2Idx.get(name); - return (null!=idx)?idx.intValue():-1; - } - - - // - // Enabled Vertex Arrays and its data - // - - /** - * Enable a vertex attribute array - * - * Even if the attribute is not found in the current shader, - * it is stored in this state. - * - * @returns false, if the name is not found, otherwise true - * - * @throws GLException if the program is not in use - * - * @see #glEnableVertexAttribArray - * @see #glDisableVertexAttribArray - * @see #glVertexAttribPointer - * @see #getVertexAttributePointer - * @see #glReleaseAllVertexAttributes - * @see #glResetAllVertexAttributes - * @see #glReplaceShader - */ - public boolean glEnableVertexAttribArray(GL2ES2 gl, String name) { - if(!shaderProgram.inUse()) throw new GLException("Program is not in use"); - enabledVertexAttribArraySet.add(name); - int index = glGetAttribLocation(gl, name); - if(0>index) { - if(verbose) { - Throwable tX = new Throwable("Info: glEnableVertexAttribArray failed, no index for: "+name); - tX.printStackTrace(); - } - return false; - } - if(DEBUG) { - System.err.println("Info: glEnableVertexAttribArray: "+name+", loc: "+index); - } - gl.glEnableVertexAttribArray(index); - return true; - } - - public boolean isVertexAttribArrayEnabled(String name) { - if(!shaderProgram.inUse()) throw new GLException("Program is not in use"); - return enabledVertexAttribArraySet.contains(name); - } - - /** - * Disables a vertex attribute array - * - * Even if the attribute is not found in the current shader, - * it is removed from this state. - * - * @returns false, if the name is not found, otherwise true - * - * @throws GLException if the program is not in use - * - * @see #glEnableVertexAttribArray - * @see #glDisableVertexAttribArray - * @see #glVertexAttribPointer - * @see #getVertexAttributePointer - * @see #glReleaseAllVertexAttributes - * @see #glResetAllVertexAttributes - * @see #glReplaceShader - */ - public boolean glDisableVertexAttribArray(GL2ES2 gl, String name) { - if(!shaderProgram.inUse()) throw new GLException("Program is not in use"); - enabledVertexAttribArraySet.remove(name); - int index = glGetAttribLocation(gl, name); - if(0>index) { - if(verbose) { - Throwable tX = new Throwable("Info: glDisableVertexAttribArray failed, no index for: "+name); - tX.printStackTrace(); - } - return false; - } - if(DEBUG) { - System.err.println("Info: glDisableVertexAttribArray: "+name); - } - gl.glDisableVertexAttribArray(index); - return true; - } - - /** - * Set the vertex attribute data. - * Enable the attribute, if it is not enabled yet. - * - * Even if the attribute is not found in the current shader, - * it is stored in this state. - * - * @param data the GLArrayData's name must match the attributes one, - * it's index will be set with the attribute's location, - * if found. - * - * @returns false, if the name is not found, otherwise true - * - * @throws GLException if the program is not in use - * - * @see #glEnableVertexAttribArray - * @see #glDisableVertexAttribArray - * @see #glVertexAttribPointer - * @see #getVertexAttributePointer - * @see #glReleaseAllVertexAttributes - * @see #glResetAllVertexAttributes - * @see #glReplaceShader - */ - public boolean glVertexAttribPointer(GL2ES2 gl, GLArrayData data) { - if(!shaderProgram.inUse()) throw new GLException("Program is not in use"); - if(!enabledVertexAttribArraySet.contains(data.getName())) { - if(!glEnableVertexAttribArray(gl, data.getName())) { - if(verbose) { - Throwable tX = new Throwable("Info: glVertexAttribPointer: couldn't enable: "+data); - tX.printStackTrace(); - } - } - } - int index = getAttribLocation(data.getName()); - if(0>index) { - if(verbose) { - Throwable tX = new Throwable("Info: glVertexAttribPointer failed, no index for: "+data); - tX.printStackTrace(); - } - } - data.setLocation(index); - vertexAttribMap2Data.put(data.getName(), data); - if(0<=index) { - // only pass the data, if the attribute exists in the current shader - if(DEBUG) { - System.err.println("Info: glVertexAttribPointer: "+data); - } - gl.glVertexAttribPointer(data); - return true; - } - return false; - } - - /** - * Get the vertex attribute data, previously set. - * - * @returns the GLArrayData object, null if not previously set. - * - * @see #glEnableVertexAttribArray - * @see #glDisableVertexAttribArray - * @see #glVertexAttribPointer - * @see #getVertexAttributePointer - * @see #glReleaseAllVertexAttributes - * @see #glResetAllVertexAttributes - * @see #glReplaceShader - */ - public GLArrayData getVertexAttribPointer(String name) { - return (GLArrayData) vertexAttribMap2Data.get(name); - } - - /** - * Releases all mapped vertex attribute data, - * disables all enabled attributes and loses all indices - * - * @throws GLException is the program is not in use but the shaderProgram is set - * - * @see #glEnableVertexAttribArray - * @see #glDisableVertexAttribArray - * @see #glVertexAttribPointer - * @see #getVertexAttributePointer - * @see #glReleaseAllVertexAttributes - * @see #glResetAllVertexAttributes - * @see #glResetAllVertexAttributes - * @see #glReplaceShader - */ - public void glReleaseAllVertexAttributes(GL2ES2 gl) { - if(null!=shaderProgram) { - if(!shaderProgram.inUse()) throw new GLException("Program is not in use"); - for(Iterator iter = vertexAttribMap2Data.keySet().iterator(); iter.hasNext(); ) { - if(!glDisableVertexAttribArray(gl, (String) iter.next())) { - throw new GLException("Internal Error: mapped vertex attribute couldn't be disabled"); - } - } - for(Iterator iter = enabledVertexAttribArraySet.iterator(); iter.hasNext(); ) { - if(!glDisableVertexAttribArray(gl, (String) iter.next())) { - throw new GLException("Internal Error: prev enabled vertex attribute couldn't be disabled"); - } - } - } - vertexAttribMap2Data.clear(); - enabledVertexAttribArraySet.clear(); - attribMap2Idx.clear(); - } - - /** - * Disables all vertex attribute arrays. - * - * Their enabled stated will be removed from this state only - * if 'removeFromState' is true. - * - * This method purpose is more for debugging. - * - * @throws GLException is the program is not in use but the shaderProgram is set - * - * @see #glEnableVertexAttribArray - * @see #glDisableVertexAttribArray - * @see #glVertexAttribPointer - * @see #getVertexAttributePointer - * @see #glReleaseAllVertexAttributes - * @see #glResetAllVertexAttributes - * @see #glResetAllVertexAttributes - * @see #glReplaceShader - */ - public void glDisableAllVertexAttributeArrays(GL2ES2 gl, boolean removeFromState) { - if(!shaderProgram.inUse()) throw new GLException("Program is not in use"); - - for(Iterator iter = enabledVertexAttribArraySet.iterator(); iter.hasNext(); ) { - String name = (String) iter.next(); - if(removeFromState) { - enabledVertexAttribArraySet.remove(name); - } - int index = glGetAttribLocation(gl, name); - if(0<=index) { - gl.glDisableVertexAttribArray(index); - } - } - } - - /** - * Reset all previously enabled mapped vertex attribute data, - * incl enabling them - * - * @throws GLException is the program is not in use - * - * @see #glEnableVertexAttribArray - * @see #glDisableVertexAttribArray - * @see #glVertexAttribPointer - * @see #getVertexAttributePointer - * @see #glReleaseAllVertexAttributes - * @see #glResetAllVertexAttributes - * @see #glReplaceShader - */ - public void glResetAllVertexAttributes(GL2ES2 gl) { - if(!shaderProgram.inUse()) throw new GLException("Program is not in use"); - attribMap2Idx.clear(); - - /** - * - for(Iterator iter = enabledVertexAttribArraySet.iterator(); iter.hasNext(); ) { - glEnableVertexAttribArray(gl, (String) iter.next()); - } - for(Iterator iter = vertexAttribMap2Data.values().iterator(); iter.hasNext(); ) { - GLArrayData data = (GLArrayData) iter.next(); - - ... - } */ - - for(Iterator iter = enabledVertexAttribArraySet.iterator(); iter.hasNext(); ) { - // get new location .. - String name = (String) iter.next(); - int loc = glGetAttribLocation(gl, name); - - // get & update data .. - GLArrayData data = getVertexAttribPointer(name); - data.setLocation(loc); - vertexAttribMap2Data.put(name, data); - - if(0>loc) { - // not used in shader - continue; - } - - // enable attrib, VBO and pass location/data - gl.glEnableVertexAttribArray(loc); - - if( data.isVBO() ) { - gl.glBindBuffer(GL.GL_ARRAY_BUFFER, data.getVBOName()); - } - - gl.glVertexAttribPointer(data); - } - } - - // - // Shader Uniform handling - // - - /** - * Gets the index of a shader uniform. - * This must be done when the program is in use ! - * - * @return -1 if there is no such attribute available, - * otherwise >= 0 - - * @throws GLException is the program is not linked - * - * @see #glGetUniformLocation - * @see javax.media.opengl.GL2ES2#glGetUniformLocation - * @see #getUniformLocation - * @see #glReplaceShader - */ - protected int glGetUniformLocation(GL2ES2 gl, String name) { - if(!shaderProgram.inUse()) throw new GLException("Program is not in use"); - int index = getUniformLocation(name); - if(0>index) { - index = gl.glGetUniformLocation(shaderProgram.program(), name); - if(0<=index) { - Integer idx = new Integer(index); - uniformMap2Idx.put(name, idx); - } else if(verbose) { - Throwable tX = new Throwable("Info: glUniform failed, no location for: "+name+", index: "+index); - tX.printStackTrace(); - } - } - return index; - } - - protected int getUniformLocation(String name) { - Integer idx = (Integer) uniformMap2Idx.get(name); - return (null!=idx)?idx.intValue():-1; - } - - /** - * Set the uniform data. - * - * Even if the uniform is not found in the current shader, - * it is stored in this state. - * - * @param data the GLUniforms's name must match the uniform one, - * it's index will be set with the uniforms's location, - * if found. - * - * - * @returns false, if the name is not found, otherwise true - * - * @throws GLException if the program is not in use - * - * @see #glGetUniformLocation - * @see javax.media.opengl.GL2ES2#glGetUniformLocation - * @see #getUniformLocation - * @see #glReplaceShader - */ - public boolean glUniform(GL2ES2 gl, GLUniformData data) { - if(!shaderProgram.inUse()) throw new GLException("Program is not in use"); - int location = glGetUniformLocation(gl, data.getName()); - data.setLocation(location); - uniformMap2Data.put(data.getName(), data); - if(0<=location) { - // only pass the data, if the uniform exists in the current shader - if(DEBUG) { - System.err.println("Info: glUniform: "+data); - } - gl.glUniform(data); - } - return true; - } - - /** - * Get the uniform data, previously set. - * - * @returns the GLUniformData object, null if not previously set. - */ - public GLUniformData getUniform(String name) { - return (GLUniformData) uniformMap2Data.get(name); - } - - /** - * Releases all mapped uniform data - * and loses all indices - * - * @throws GLException is the program is not in use - */ - public void glReleaseAllUniforms(GL2ES2 gl) { - uniformMap2Data.clear(); - uniformMap2Idx.clear(); - } - - /** - * Reset all previously mapped uniform data - * - * @throws GLException is the program is not in use - */ - public void glResetAllUniforms(GL2ES2 gl) { - if(!shaderProgram.inUse()) throw new GLException("Program is not in use"); - uniformMap2Idx.clear(); - for(Iterator iter = uniformMap2Data.values().iterator(); iter.hasNext(); ) { - glUniform(gl, (GLUniformData) iter.next()); - } - } - - public String toString() { - StringBuffer buf = new StringBuffer(); - buf.append("ShaderState["); - buf.append(shaderProgram.toString()); - buf.append(",EnabledStates: ["); - for(Iterator iter = enabledVertexAttribArraySet.iterator(); iter.hasNext(); ) { - buf.append("\n "); - buf.append((String)iter.next()); - } - buf.append("], ["); - for(Iterator iter = vertexAttribMap2Data.values().iterator(); iter.hasNext(); ) { - GLArrayData data = (GLArrayData) iter.next(); - if(data.getLocation()>=0) { - buf.append("\n "); - buf.append(data); - } - } - buf.append("], ["); - for(Iterator iter=uniformMap2Data.values().iterator(); iter.hasNext(); ) { - GLUniformData data = (GLUniformData) iter.next(); - if(data.getLocation()>=0) { - buf.append("\n "); - buf.append(data); - } - } - buf.append("]"); - return buf.toString(); - } - - protected boolean verbose = false; - protected ShaderProgram shaderProgram=null; - protected HashMap attribMap2Idx = new HashMap(); - protected HashSet enabledVertexAttribArraySet = new HashSet(); - protected HashMap vertexAttribMap2Data = new HashMap(); - protected HashMap uniformMap2Idx = new HashMap(); - protected HashMap uniformMap2Data = new HashMap(); - -} - diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/ShaderUtil.java b/src/jogl/classes/com/sun/opengl/util/glsl/ShaderUtil.java deleted file mode 100644 index 390fb27c7..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/ShaderUtil.java +++ /dev/null @@ -1,476 +0,0 @@ -/* - * Copyright (c) 2009 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -package com.sun.opengl.util.glsl; - -import java.io.PrintStream; -import java.nio.*; -import java.util.*; - -import javax.media.opengl.*; - -public class ShaderUtil { - static abstract class Impl { - public abstract String getShaderInfoLog(GL gl, int shaderObj); - public abstract String getProgramInfoLog(GL gl, int programObj); - public abstract boolean isShaderStatusValid(GL gl, int shaderObj, int name); - public abstract boolean isShaderStatusValid(GL gl, int shaderObj, int name, PrintStream verboseOut); - public abstract boolean isShaderStatusValid(GL gl, IntBuffer shaders, int name); - public abstract boolean isShaderStatusValid(GL gl, IntBuffer shaders, int name, PrintStream verboseOut); - public abstract boolean isProgramStatusValid(GL gl, int programObj, int name); - public abstract boolean isProgramValid(GL gl, int programObj); - public abstract boolean isProgramValid(GL gl, int programObj, PrintStream verboseOut); - public abstract void createShader(GL gl, int type, IntBuffer shaders); - public abstract Set getShaderBinaryFormats(GL gl); - public abstract boolean isShaderCompilerAvailable(GL gl); - public abstract void shaderSource(GL gl, int shader, java.lang.String[] source); - public abstract void shaderSource(GL gl, IntBuffer shaders, java.lang.String[][] sources); - public abstract void shaderBinary(GL gl, IntBuffer shaders, int binFormat, java.nio.Buffer bin); - public abstract void compileShader(GL gl, IntBuffer shaders); - public abstract void attachShader(GL gl, int program, IntBuffer shaders); - public abstract void detachShader(GL gl, int program, IntBuffer shaders); - public abstract void deleteShader(GL gl, IntBuffer shaders); - - public abstract boolean createAndLoadShader(GL gl, IntBuffer shader, int shaderType, - int binFormat, java.nio.Buffer bin, - PrintStream verboseOut); - - public abstract boolean createAndCompileShader(GL gl, IntBuffer shader, int shaderType, - java.lang.String[][] sources, - PrintStream verboseOut); - } - - static class GL2ES2Impl extends Impl { - public String getShaderInfoLog(GL _gl, int shaderObj) { - GL2ES2 gl = _gl.getGL2ES2(); - int[] infoLogLength=new int[1]; - gl.glGetShaderiv(shaderObj, gl.GL_INFO_LOG_LENGTH, infoLogLength, 0); - - if(infoLogLength[0]==0) { - return "(no info log)"; - } - int[] charsWritten=new int[1]; - byte[] infoLogBytes = new byte[infoLogLength[0]]; - gl.glGetShaderInfoLog(shaderObj, infoLogLength[0], charsWritten, 0, infoLogBytes, 0); - - return new String(infoLogBytes, 0, charsWritten[0]); - } - - public String getProgramInfoLog(GL _gl, int programObj) { - GL2ES2 gl = _gl.getGL2ES2(); - int[] infoLogLength=new int[1]; - gl.glGetProgramiv(programObj, gl.GL_INFO_LOG_LENGTH, infoLogLength, 0); - - if(infoLogLength[0]==0) { - return "(no info log)"; - } - int[] charsWritten=new int[1]; - byte[] infoLogBytes = new byte[infoLogLength[0]]; - gl.glGetProgramInfoLog(programObj, infoLogLength[0], charsWritten, 0, infoLogBytes, 0); - - return new String(infoLogBytes, 0, charsWritten[0]); - } - - public boolean isShaderStatusValid(GL _gl, int shaderObj, int name) { - return isShaderStatusValid(_gl, shaderObj, name, null); - } - - public boolean isShaderStatusValid(GL _gl, int shaderObj, int name, PrintStream verboseOut) { - GL2ES2 gl = _gl.getGL2ES2(); - int[] ires = new int[1]; - gl.glGetShaderiv(shaderObj, name, ires, 0); - - boolean res = ires[0]==1; - if(!res && null!=verboseOut) { - verboseOut.println("Shader status invalid: "+ getShaderInfoLog(gl, shaderObj)); - } - return res; - } - - public boolean isShaderStatusValid(GL _gl, IntBuffer shaders, int name) { - return isShaderStatusValid(_gl, shaders, name, null); - } - - public boolean isShaderStatusValid(GL _gl, IntBuffer shaders, int name, PrintStream verboseOut) { - boolean res = true; - for (int i = shaders.position(); i < shaders.limit(); i++) { - res = isShaderStatusValid(_gl, shaders.get(i), name, verboseOut) && res; - } - return res; - } - - public boolean isProgramStatusValid(GL _gl, int programObj, int name) { - GL2ES2 gl = _gl.getGL2ES2(); - int[] ires = new int[1]; - gl.glGetProgramiv(programObj, name, ires, 0); - - return ires[0]==1; - } - - public boolean isProgramValid(GL _gl, int programObj) { - return isProgramValid(_gl, programObj, null); - } - - public boolean isProgramValid(GL _gl, int programObj, PrintStream verboseOut) { - GL2ES2 gl = _gl.getGL2ES2(); - int[] ires = new int[1]; - if(!gl.glIsProgram(programObj)) { - if(null!=verboseOut) { - verboseOut.println("Program name invalid: "+programObj); - } - return false; - } - if(!isProgramStatusValid(gl, programObj, gl.GL_LINK_STATUS)) { - if(null!=verboseOut) { - verboseOut.println("Program link failed: "+programObj+"\n\t"+ getProgramInfoLog(gl, programObj)); - } - return false; - } - if ( !gl.isGLES2() || isShaderCompilerAvailable(gl) ) { - // failed on APX2500 (ES2.0, no compiler) for valid programs - gl.glValidateProgram(programObj); - if(!isProgramStatusValid(gl, programObj, gl.GL_VALIDATE_STATUS)) { - if(null!=verboseOut) { - verboseOut.println("Program validation failed: "+programObj+"\n\t"+ getProgramInfoLog(gl, programObj)); - } - return false; - } - } - return true; - } - - public void createShader(GL _gl, int type, IntBuffer shaders) { - GL2ES2 gl = _gl.getGL2ES2(); - for (int i = shaders.position(); i < shaders.limit(); i++) { - shaders.put(i, gl.glCreateShader(type)); - } - } - - private Boolean shaderCompilerAvailable = null; - private Set shaderBinaryFormats = null; - - public Set getShaderBinaryFormats(GL _gl) { - GL2ES2 gl = _gl.getGL2ES2(); - if(null==shaderBinaryFormats) { - if(gl.getContext()!=GLContext.getCurrent()) { - return new HashSet(0); // bail out - } - - int[] param = new int[1]; - shaderBinaryFormats = new HashSet(); - - if (gl.isGLES2()) { - gl.glGetIntegerv(GL2ES2.GL_NUM_SHADER_BINARY_FORMATS, param, 0); - int numFormats = param[0]; - if(numFormats>0) { - int[] formats = new int[numFormats]; - gl.glGetIntegerv(GL2ES2.GL_SHADER_BINARY_FORMATS, formats, 0); - for(int i=0; i<numFormats; i++) { - shaderBinaryFormats.add(new Integer(formats[i])); - } - } - } - } - return shaderBinaryFormats; - } - - - public boolean isShaderCompilerAvailable(GL _gl) { - GL2ES2 gl = _gl.getGL2ES2(); - if(null==shaderCompilerAvailable) { - if(gl.getContext()!=GLContext.getCurrent()) { - return false; // bail out - } - Set bfs = getShaderBinaryFormats(gl); - if(gl.isGLES2()) { - byte[] param = new byte[1]; - gl.glGetBooleanv(GL2ES2.GL_SHADER_COMPILER, param, 0); - boolean v = param[0]!=(byte)0x00; - if(!v && bfs.size()==0) { - // no supported binary formats, hence a compiler must be available! - v = true; - } - shaderCompilerAvailable = new Boolean(v); - } else if( gl.isGL2() || gl.isGL2ES2() ) { - shaderCompilerAvailable = new Boolean(true); - } else { - throw new GLException("Invalid OpenGL profile"); - } - } - return shaderCompilerAvailable.booleanValue(); - } - - public void shaderSource(GL _gl, int shader, java.lang.String[] source) - { - GL2ES2 gl = _gl.getGL2ES2(); - if(!isShaderCompilerAvailable(_gl)) { - throw new GLException("No compiler is available"); - } - - int count = (null!=source)?source.length:0; - if(count==0) { - throw new GLException("No sources specified"); - } - - int[] lengths = new int[count]; - for(int i=0; i<count; i++) { - lengths[i] = source[i].length(); - } - gl.glShaderSource(shader, count, source, lengths, 0); - } - - public void shaderSource(GL _gl, IntBuffer shaders, java.lang.String[][] sources) - { - int sourceNum = (null!=sources)?sources.length:0; - int shaderNum = (null!=shaders)?shaders.remaining():0; - if(shaderNum<=0 || sourceNum<=0 || shaderNum!=sourceNum) { - throw new GLException("Invalid number of shaders and/or sources: shaders="+ - shaderNum+", sources="+sourceNum); - } - for(int i=0; i<sourceNum; i++) { - shaderSource(_gl, shaders.get(shaders.position() + i), sources[i]); - } - } - - public void shaderBinary(GL _gl, IntBuffer shaders, int binFormat, java.nio.Buffer bin) - { - GL2ES2 gl = _gl.getGL2ES2(); - if(getShaderBinaryFormats(gl).size()<=0) { - throw new GLException("No binary formats are supported"); - } - - int shaderNum = shaders.remaining(); - if(shaderNum<=0) { - throw new GLException("No shaders specified"); - } - if(null==bin) { - throw new GLException("Null shader binary"); - } - int binLength = bin.remaining(); - if(0>=binLength) { - throw new GLException("Empty shader binary (remaining == 0)"); - } - gl.glShaderBinary(shaderNum, shaders, binFormat, bin, binLength); - } - - public void compileShader(GL _gl, IntBuffer shaders) - { - GL2ES2 gl = _gl.getGL2ES2(); - for (int i = shaders.position(); i < shaders.limit(); i++) { - gl.glCompileShader(shaders.get(i)); - } - } - - public void attachShader(GL _gl, int program, IntBuffer shaders) - { - GL2ES2 gl = _gl.getGL2ES2(); - for (int i = shaders.position(); i < shaders.limit(); i++) { - gl.glAttachShader(program, shaders.get(i)); - } - } - - public void detachShader(GL _gl, int program, IntBuffer shaders) - { - GL2ES2 gl = _gl.getGL2ES2(); - for (int i = shaders.position(); i < shaders.limit(); i++) { - gl.glDetachShader(program, shaders.get(i)); - } - } - - public void deleteShader(GL _gl, IntBuffer shaders) - { - GL2ES2 gl = _gl.getGL2ES2(); - for (int i = shaders.position(); i < shaders.limit(); i++) { - gl.glDeleteShader(shaders.get(i)); - - } - } - - public boolean createAndLoadShader(GL _gl, IntBuffer shader, int shaderType, - int binFormat, java.nio.Buffer bin, - PrintStream verboseOut) - { - GL2ES2 gl = _gl.getGL2ES2(); - int err = gl.glGetError(); // flush previous errors .. - if(err!=GL.GL_NO_ERROR && null!=verboseOut) { - verboseOut.println("createAndLoadShader: Pre GL Error: 0x"+Integer.toHexString(err)); - } - - createShader(gl, shaderType, shader); - err = gl.glGetError(); - if(err!=GL.GL_NO_ERROR) { - throw new GLException("createAndLoadShader: CreateShader failed, GL Error: 0x"+Integer.toHexString(err)); - } - - - shaderBinary(gl, shader, binFormat, bin); - - err = gl.glGetError(); - if(err!=GL.GL_NO_ERROR && null!=verboseOut) { - verboseOut.println("createAndLoadShader: ShaderBinary failed, GL Error: 0x"+Integer.toHexString(err)); - } - return err == GL.GL_NO_ERROR; - } - - public boolean createAndCompileShader(GL _gl, IntBuffer shader, int shaderType, - java.lang.String[][] sources, - PrintStream verboseOut) - { - GL2ES2 gl = _gl.getGL2ES2(); - int err = gl.glGetError(); // flush previous errors .. - if(err!=GL.GL_NO_ERROR && null!=verboseOut) { - verboseOut.println("createAndCompileShader: Pre GL Error: 0x"+Integer.toHexString(err)); - } - - createShader(gl, shaderType, shader); - err = gl.glGetError(); - if(err!=GL.GL_NO_ERROR) { - throw new GLException("createAndCompileShader: CreateShader failed, GL Error: 0x"+Integer.toHexString(err)); - } - - shaderSource(gl, shader, sources); - err = gl.glGetError(); - if(err!=GL.GL_NO_ERROR) { - throw new GLException("createAndCompileShader: ShaderSource failed, GL Error: 0x"+Integer.toHexString(err)); - } - - compileShader(gl, shader); - err = gl.glGetError(); - if(err!=GL.GL_NO_ERROR && null!=verboseOut) { - verboseOut.println("createAndCompileShader: CompileShader failed, GL Error: 0x"+Integer.toHexString(err)); - } - - return isShaderStatusValid(gl, shader, gl.GL_COMPILE_STATUS, verboseOut) && err == GL.GL_NO_ERROR; - } - - } - - public static String getShaderInfoLog(GL gl, int shaderObj) { - return getImpl(gl).getShaderInfoLog(gl, shaderObj); - } - - public static String getProgramInfoLog(GL gl, int programObj) { - return getImpl(gl).getProgramInfoLog(gl, programObj); - } - - public static boolean isShaderStatusValid(GL gl, int shaderObj, int name) { - return getImpl(gl).isShaderStatusValid(gl, shaderObj, name); - } - - public static boolean isShaderStatusValid(GL gl, int shaderObj, int name, PrintStream verboseOut) { - return getImpl(gl).isShaderStatusValid(gl, shaderObj, name, verboseOut); - } - - public static boolean isShaderStatusValid(GL gl, IntBuffer shaders, int name) { - return getImpl(gl).isShaderStatusValid(gl, shaders, name); - } - - public static boolean isShaderStatusValid(GL gl, IntBuffer shaders, int name, PrintStream verboseOut) { - return getImpl(gl).isShaderStatusValid(gl, shaders, name, verboseOut); - } - - public static boolean isProgramStatusValid(GL gl, int programObj, int name) { - return getImpl(gl).isProgramStatusValid(gl, programObj, name); - } - - public static boolean isProgramValid(GL gl, int programObj) { - return getImpl(gl).isProgramValid(gl, programObj); - } - - public static boolean isProgramValid(GL gl, int programObj, PrintStream verboseOut) { - return getImpl(gl).isProgramValid(gl, programObj, verboseOut); - } - - public static void createShader(GL gl, int type, IntBuffer shaders) { - getImpl(gl).createShader(gl, type, shaders); - } - - public static Set getShaderBinaryFormats(GL gl) { - return getImpl(gl).getShaderBinaryFormats(gl); - } - - public static boolean isShaderCompilerAvailable(GL gl) { - return getImpl(gl).isShaderCompilerAvailable(gl); - } - - public static void shaderSource(GL gl, int shader, java.lang.String[] source) { - getImpl(gl).shaderSource(gl, shader, source); - } - - public static void shaderSource(GL gl, IntBuffer shaders, java.lang.String[][] sources) { - getImpl(gl).shaderSource(gl, shaders, sources); - } - - public static void shaderBinary(GL gl, IntBuffer shaders, int binFormat, java.nio.Buffer bin) { - getImpl(gl).shaderBinary(gl, shaders, binFormat, bin); - } - - public static void compileShader(GL gl, IntBuffer shaders) { - getImpl(gl).compileShader(gl, shaders); - } - - public static void attachShader(GL gl, int program, IntBuffer shaders) { - getImpl(gl).attachShader(gl, program, shaders); - } - - public static void detachShader(GL gl, int program, IntBuffer shaders) { - getImpl(gl).detachShader(gl, program, shaders); - } - - public static void deleteShader(GL gl, IntBuffer shaders) { - getImpl(gl).deleteShader(gl, shaders); - } - - public static boolean createAndLoadShader(GL gl, IntBuffer shader, int shaderType, - int binFormat, java.nio.Buffer bin, - PrintStream verboseOut) { - return getImpl(gl).createAndLoadShader(gl, shader, shaderType, binFormat, bin, verboseOut); - } - - public static boolean createAndCompileShader(GL gl, IntBuffer shader, int shaderType, - java.lang.String[][] sources, - PrintStream verboseOut) { - return getImpl(gl).createAndCompileShader(gl, shader, shaderType, sources, verboseOut); - } - - private static Impl getImpl(GL _gl) { - GL2ES2 gl = _gl.getGL2ES2(); - GLContext context = gl.getContext(); - Impl impl = (Impl) context.getAttachedObject(ShaderUtil.class.getName()); - if (impl == null) { - impl = new GL2ES2Impl(); - context.putAttachedObject(ShaderUtil.class.getName(), impl); - } - return impl; - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/FixedFuncUtil.java b/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/FixedFuncUtil.java deleted file mode 100644 index 4149aec69..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/FixedFuncUtil.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2009 Sun Microsystems, Inc. All Rights Reserved. - */ - -package com.sun.opengl.util.glsl.fixedfunc; - -import javax.media.opengl.*; -import javax.media.opengl.fixedfunc.*; - -import com.sun.opengl.util.glsl.fixedfunc.impl.*; - -/** - * Tool to pipeline GL2ES2 into a fixed function emulation implementing GL2ES1. - */ -public class FixedFuncUtil { - /** - * @return If gl is a GL2ES1 and force is false, return the type cast object, - * otherwise create a fixed function emulation pipeline with the GL2ES2 impl. - * @throws GLException if the GL object is neither GL2ES1 nor GL2ES2 - */ - public static final GL2ES1 getFixedFuncImpl(GL gl, boolean force) { - if(!force && gl.isGL2ES1()) { - return gl.getGL2ES1(); - } else if(gl.isGL2ES2()) { - GL2ES2 es2 = gl.getGL2ES2(); - FixedFuncHook hook = new FixedFuncHook(es2); - FixedFuncImpl impl = new FixedFuncImpl(es2, hook); - gl.getContext().setGL(impl); - return impl; - } - throw new GLException("GL Object is neither GL2ES1 nor GL2ES2"); - } - - /** - * @return If gl is a GL2ES1, return the type cast object, - * otherwise create a fixed function emulation pipeline with the GL2ES2 impl. - * @throws GLException if the GL object is neither GL2ES1 nor GL2ES2 - */ - public static final GL2ES1 getFixedFuncImpl(GL gl) { - return getFixedFuncImpl(gl, false); - } - - /** - * Mapping fixed function (client) array indices to - * GLSL array attribute names. - * - * Useful for uniq mapping of canonical array index names as listed. - * - * @see #mgl_Vertex - * @see javax.media.opengl.fixedfunc.GLPointerFunc#GL_VERTEX_ARRAY - * @see #mgl_Normal - * @see javax.media.opengl.fixedfunc.GLPointerFunc#GL_NORMAL_ARRAY - * @see #mgl_Color - * @see javax.media.opengl.fixedfunc.GLPointerFunc#GL_COLOR_ARRAY - * @see #mgl_MultiTexCoord - * @see javax.media.opengl.fixedfunc.GLPointerFunc#GL_TEXTURE_COORD_ARRAY - * @see javax.media.opengl.fixedfunc.GLPointerFunc#glEnableClientState - * @see javax.media.opengl.fixedfunc.GLPointerFunc#glVertexPointer - * @see javax.media.opengl.fixedfunc.GLPointerFunc#glColorPointer - * @see javax.media.opengl.fixedfunc.GLPointerFunc#glNormalPointer - * @see javax.media.opengl.fixedfunc.GLPointerFunc#glTexCoordPointer - */ - public static String getPredefinedArrayIndexName(int glArrayIndex) { - return FixedFuncPipeline.getPredefinedArrayIndexName(glArrayIndex); - } - - /** - * String name for - * @see javax.media.opengl.GL#GL_VERTEX_ARRAY - */ - public static final String mgl_Vertex = FixedFuncPipeline.mgl_Vertex; - - /** - * String name for - * @see javax.media.opengl.GL#GL_NORMAL_ARRAY - */ - public static final String mgl_Normal = FixedFuncPipeline.mgl_Normal; - - /** - * String name for - * @see javax.media.opengl.GL#GL_COLOR_ARRAY - */ - public static final String mgl_Color = FixedFuncPipeline.mgl_Color; - - /** - * String name for - * @see javax.media.opengl.GL#GL_TEXTURE_COORD_ARRAY - */ - public static final String mgl_MultiTexCoord = FixedFuncPipeline.mgl_MultiTexCoord; -} diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/FixedFuncHook.java b/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/FixedFuncHook.java deleted file mode 100755 index a702332cd..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/FixedFuncHook.java +++ /dev/null @@ -1,331 +0,0 @@ -/* - * Copyright 2009 Sun Microsystems, Inc. All Rights Reserved. - */ - -package com.sun.opengl.util.glsl.fixedfunc.impl; - -import javax.media.opengl.*; -import javax.media.opengl.fixedfunc.*; -import javax.media.opengl.glu.*; -import com.jogamp.gluegen.runtime.BufferFactory; -import com.sun.opengl.util.*; -import com.sun.opengl.util.glsl.*; -import java.nio.*; - -public class FixedFuncHook implements GLLightingFunc, GLMatrixFunc, GLPointerFunc { - public static final int MAX_TEXTURE_UNITS = 8; - - protected FixedFuncPipeline fixedFunction=null; - protected PMVMatrix pmvMatrix=null; - protected GL2ES2 gl=null; - - public FixedFuncHook (GL2ES2 gl) { - this(gl, null); - } - - public FixedFuncHook (GL2ES2 gl, PMVMatrix matrix) { - this.gl = gl; - pmvMatrix = (null!=matrix)?matrix:new PMVMatrix(); - - fixedFunction = new FixedFuncPipeline(gl, pmvMatrix); - } - - public FixedFuncHook(GL2ES2 gl, PMVMatrix matrix, - Class shaderRootClass, String shaderSrcRoot, String shaderBinRoot, - String vertexColorFile, - String vertexColorLightFile, - String fragmentColorFile, - String fragmentColorTextureFile) { - this.gl = gl; - pmvMatrix = matrix; - - fixedFunction = new FixedFuncPipeline(gl, pmvMatrix, - shaderRootClass, shaderSrcRoot, shaderBinRoot, - vertexColorFile, vertexColorLightFile, fragmentColorFile, fragmentColorTextureFile); - } - - public void destroy() { - fixedFunction.destroy(gl); - fixedFunction = null; - } - - public PMVMatrix getMatrix() { return pmvMatrix; } - - // - // FixedFuncHookIf - hooks - // - public void glDrawArrays(int mode, int first, int count) { - fixedFunction.validate(gl); - gl.glDrawArrays(mode, first, count); - } - public void glDrawElements(int mode, int count, int type, java.nio.Buffer indices) { - fixedFunction.validate(gl); - gl.glDrawElements(mode, count, type, indices); - } - public void glDrawElements(int mode, int count, int type, long indices_buffer_offset) { - fixedFunction.validate(gl); - gl.glDrawElements(mode, count, type, indices_buffer_offset); - } - - public void glActiveTexture(int texture) { - fixedFunction.glActiveTexture(gl, texture); - gl.glActiveTexture(texture); - } - public void glEnable(int cap) { - if(fixedFunction.glEnable(gl, cap, true)) { - gl.glEnable(cap); - } - } - public void glDisable(int cap) { - if(fixedFunction.glEnable(gl, cap, false)) { - gl.glDisable(cap); - } - } - public void glCullFace(int faceName) { - fixedFunction.glCullFace(gl, faceName); - gl.glCullFace(faceName); - } - - public void glGetFloatv(int pname, java.nio.FloatBuffer params) { - if(pmvMatrix.isMatrixGetName(pname)) { - pmvMatrix.glGetFloatv(pname, params); - return; - } - gl.glGetFloatv(pname, params); - } - public void glGetFloatv(int pname, float[] params, int params_offset) { - if(pmvMatrix.isMatrixGetName(pname)) { - pmvMatrix.glGetFloatv(pname, params, params_offset); - return; - } - gl.glGetFloatv(pname, params, params_offset); - } - public void glGetIntegerv(int pname, IntBuffer params) { - if(pmvMatrix.isMatrixGetName(pname)) { - pmvMatrix.glGetIntegerv(pname, params); - return; - } - gl.glGetIntegerv(pname, params); - } - public void glGetIntegerv(int pname, int[] params, int params_offset) { - if(pmvMatrix.isMatrixGetName(pname)) { - pmvMatrix.glGetIntegerv(pname, params, params_offset); - return; - } - gl.glGetIntegerv(pname, params, params_offset); - } - - // - // MatrixIf - // - public int glGetMatrixMode() { - return pmvMatrix.glGetMatrixMode(); - } - public void glMatrixMode(int mode) { - pmvMatrix.glMatrixMode(mode); - } - public void glLoadMatrixf(java.nio.FloatBuffer m) { - pmvMatrix.glLoadMatrixf(m); - } - public void glLoadMatrixf(float[] m, int m_offset) { - glLoadMatrixf(BufferUtil.newFloatBuffer(m, m_offset)); - } - public void glPopMatrix() { - pmvMatrix.glPopMatrix(); - } - public void glPushMatrix() { - pmvMatrix.glPushMatrix(); - } - public void glLoadIdentity() { - pmvMatrix.glLoadIdentity(); - } - public void glMultMatrixf(java.nio.FloatBuffer m) { - pmvMatrix.glMultMatrixf(m); - } - public void glMultMatrixf(float[] m, int m_offset) { - glMultMatrixf(BufferUtil.newFloatBuffer(m, m_offset)); - } - public void glTranslatef(float x, float y, float z) { - pmvMatrix.glTranslatef(x, y, z); - } - public void glRotatef(float angdeg, float x, float y, float z) { - pmvMatrix.glRotatef(angdeg, x, y, z); - } - public void glScalef(float x, float y, float z) { - pmvMatrix.glScalef(x, y, z); - } - public void glOrthof(float left, float right, float bottom, float top, float zNear, float zFar) { - pmvMatrix.glOrthof(left, right, bottom, top, zNear, zFar); - } - public void glFrustumf(float left, float right, float bottom, float top, float zNear, float zFar) { - pmvMatrix.glFrustumf(left, right, bottom, top, zNear, zFar); - } - - // - // LightingIf - // - public void glColor4f(float red, float green, float blue, float alpha) { - fixedFunction.glColor4fv(gl, BufferUtil.newFloatBuffer(new float[] { red, green, blue, alpha })); - } - - public void glLightfv(int light, int pname, java.nio.FloatBuffer params) { - fixedFunction.glLightfv(gl, light, pname, params); - } - public void glLightfv(int light, int pname, float[] params, int params_offset) { - glLightfv(light, pname, BufferUtil.newFloatBuffer(params, params_offset)); - } - public void glMaterialfv(int face, int pname, java.nio.FloatBuffer params) { - fixedFunction.glMaterialfv(gl, face, pname, params); - } - public void glMaterialfv(int face, int pname, float[] params, int params_offset) { - glMaterialfv(face, pname, BufferUtil.newFloatBuffer(params, params_offset)); - } - public void glMaterialf(int face, int pname, float param) { - glMaterialfv(face, pname, BufferUtil.newFloatBuffer(new float[] { param })); - } - public void glShadeModel(int mode) { - fixedFunction.glShadeModel(gl, mode); - } - - // - // PointerIf - // - public void glEnableClientState(int glArrayIndex) { - fixedFunction.glEnableClientState(gl, glArrayIndex); - } - public void glDisableClientState(int glArrayIndex) { - fixedFunction.glDisableClientState(gl, glArrayIndex); - } - - public void glVertexPointer(GLArrayData array) { - if(array.isVBO()) { - if(!gl.glIsVBOArrayEnabled()) { - throw new GLException("VBO array is not enabled: "+array); - } - } else { - if(gl.glIsVBOArrayEnabled()) { - throw new GLException("VBO array is not disabled: "+array); - } - BufferFactory.rangeCheck(array.getBuffer(), 1); - if (!BufferFactory.isDirect(array.getBuffer())) { - throw new GLException("Argument \"pointer\" was not a direct buffer"); } - } - fixedFunction.glVertexPointer(gl, array); - } - - public void glVertexPointer(int size, int type, int stride, java.nio.Buffer pointer) { - glVertexPointer(GLArrayDataWrapper.createFixed(gl, GL_VERTEX_ARRAY, size, type, false, stride, pointer, 0, 0)); - } - public void glVertexPointer(int size, int type, int stride, long pointer_buffer_offset) { - int vboName = gl.glGetBoundBuffer(GL.GL_ARRAY_BUFFER); - if(vboName==0) { - throw new GLException("no GL_ARRAY_BUFFER VBO bound"); - } - glVertexPointer(GLArrayDataWrapper.createFixed(gl, GL_VERTEX_ARRAY, size, type, false, - stride, null, vboName, pointer_buffer_offset)); - } - - public void glColorPointer(GLArrayData array) { - if(array.isVBO()) { - if(!gl.glIsVBOArrayEnabled()) { - throw new GLException("VBO array is not enabled: "+array); - } - } else { - if(gl.glIsVBOArrayEnabled()) { - throw new GLException("VBO array is not disabled: "+array); - } - BufferFactory.rangeCheck(array.getBuffer(), 1); - if (!BufferFactory.isDirect(array.getBuffer())) { - throw new GLException("Argument \"pointer\" was not a direct buffer"); } - } - fixedFunction.glColorPointer(gl, array); - } - public void glColorPointer(int size, int type, int stride, java.nio.Buffer pointer) { - glColorPointer(GLArrayDataWrapper.createFixed(gl, GL_COLOR_ARRAY, size, type, false, - stride, pointer, 0, 0)); - } - public void glColorPointer(int size, int type, int stride, long pointer_buffer_offset) { - int vboName = gl.glGetBoundBuffer(GL.GL_ARRAY_BUFFER); - if(vboName==0) { - throw new GLException("no GL_ARRAY_BUFFER VBO bound"); - } - glColorPointer(GLArrayDataWrapper.createFixed(gl, GL_COLOR_ARRAY, size, type, false, - stride, null, vboName, pointer_buffer_offset)); - } - - public void glNormalPointer(GLArrayData array) { - if(array.getComponentNumber()!=3) { - throw new GLException("Only 3 components per normal allowed"); - } - if(array.isVBO()) { - if(!gl.glIsVBOArrayEnabled()) { - throw new GLException("VBO array is not enabled: "+array); - } - } else { - if(gl.glIsVBOArrayEnabled()) { - throw new GLException("VBO array is not disabled: "+array); - } - BufferFactory.rangeCheck(array.getBuffer(), 1); - if (!BufferFactory.isDirect(array.getBuffer())) { - throw new GLException("Argument \"pointer\" was not a direct buffer"); } - } - fixedFunction.glNormalPointer(gl, array); - } - public void glNormalPointer(int type, int stride, java.nio.Buffer pointer) { - glNormalPointer(GLArrayDataWrapper.createFixed(gl, GL_NORMAL_ARRAY, 3, type, false, - stride, pointer, 0, 0)); - } - public void glNormalPointer(int type, int stride, long pointer_buffer_offset) { - int vboName = gl.glGetBoundBuffer(GL.GL_ARRAY_BUFFER); - if(vboName==0) { - throw new GLException("no GL_ARRAY_BUFFER VBO bound"); - } - glNormalPointer(GLArrayDataWrapper.createFixed(gl, GL_NORMAL_ARRAY, 3, type, false, - stride, null, vboName, pointer_buffer_offset)); - } - - public void glTexCoordPointer(GLArrayData array) { - if(array.isVBO()) { - if(!gl.glIsVBOArrayEnabled()) { - throw new GLException("VBO array is not enabled: "+array); - } - } else { - if(gl.glIsVBOArrayEnabled()) { - throw new GLException("VBO array is not disabled: "+array); - } - BufferFactory.rangeCheck(array.getBuffer(), 1); - if (!BufferFactory.isDirect(array.getBuffer())) { - throw new GLException("Argument \"pointer\" was not a direct buffer"); } - } - fixedFunction.glTexCoordPointer(gl, array); - } - public void glTexCoordPointer(int size, int type, int stride, java.nio.Buffer pointer) { - glTexCoordPointer( - GLArrayDataWrapper.createFixed(gl, GL_TEXTURE_COORD_ARRAY, size, type, false, stride, pointer, 0,0)); - } - public void glTexCoordPointer(int size, int type, int stride, long pointer_buffer_offset) { - int vboName = gl.glGetBoundBuffer(GL.GL_ARRAY_BUFFER); - if(vboName==0) { - throw new GLException("no GL_ARRAY_BUFFER VBO bound"); - } - glTexCoordPointer( - GLArrayDataWrapper.createFixed(gl, GL_TEXTURE_COORD_ARRAY, size, type, false, - stride, null, vboName, pointer_buffer_offset) ); - } - - public final String toString() { - StringBuffer buf = new StringBuffer(); - buf.append(getClass().getName()+" ("); - if(null!=pmvMatrix) { - buf.append(", matrixDirty: "+pmvMatrix.isDirty()); - } - buf.append("\n\t, FixedFunction: "+fixedFunction); - buf.append(gl); - buf.append(" )"); - - return buf.toString(); - } - -} - - diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/FixedFuncPipeline.java b/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/FixedFuncPipeline.java deleted file mode 100644 index 1b8dd1f11..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/FixedFuncPipeline.java +++ /dev/null @@ -1,554 +0,0 @@ - -package com.sun.opengl.util.glsl.fixedfunc.impl; - -import javax.media.opengl.*; -import javax.media.opengl.fixedfunc.*; -import com.sun.opengl.util.*; -import com.sun.opengl.util.glsl.*; -import com.sun.opengl.util.glsl.fixedfunc.*; -import java.nio.*; - -public class FixedFuncPipeline { - public static final int MAX_TEXTURE_UNITS = 8; - public static final int MAX_LIGHTS = 8; - - // We can't have any dependencies on the FixedFuncUtil class for build bootstrapping reasons - public static final String mgl_Vertex = "mgl_Vertex"; - public static final String mgl_Normal = "mgl_Normal"; - public static final String mgl_Color = "mgl_Color"; - public static final String mgl_MultiTexCoord = "mgl_MultiTexCoord" ; - - public static String getPredefinedArrayIndexName(int glArrayIndex) { - switch(glArrayIndex) { - case GLPointerFunc.GL_VERTEX_ARRAY: - return mgl_Vertex; - case GLPointerFunc.GL_NORMAL_ARRAY: - return mgl_Normal; - case GLPointerFunc.GL_COLOR_ARRAY: - return mgl_Color; - case GLPointerFunc.GL_TEXTURE_COORD_ARRAY: - return mgl_MultiTexCoord; - } - return null; - } - - public FixedFuncPipeline(GL2ES2 gl, PMVMatrix pmvMatrix) { - init(gl, pmvMatrix, FixedFuncPipeline.class, shaderSrcRootDef, shaderBinRootDef, - vertexColorFileDef, vertexColorLightFileDef, fragmentColorFileDef, fragmentColorTextureFileDef); - } - public FixedFuncPipeline(GL2ES2 gl, PMVMatrix pmvMatrix, Class shaderRootClass, String shaderSrcRoot, String shaderBinRoot, - String vertexColorFile, - String vertexColorLightFile, - String fragmentColorFile, - String fragmentColorTextureFile) { - init(gl, pmvMatrix, shaderRootClass, shaderSrcRoot, shaderBinRoot, - vertexColorFile, vertexColorLightFile, fragmentColorFile, fragmentColorTextureFile); - } - - public boolean verbose() { return verbose; } - - public void setVerbose(boolean v) { verbose=v; } - - public boolean isValid() { - return shaderState.linked(); - } - - public ShaderState getShaderState() { - return shaderState; - } - - public int getActiveTextureUnit() { - return activeTextureUnit; - } - - public String getArrayIndexName(int glArrayIndex) { - String name = getPredefinedArrayIndexName(glArrayIndex); - switch(glArrayIndex) { - case GLPointerFunc.GL_VERTEX_ARRAY: - case GLPointerFunc.GL_NORMAL_ARRAY: - case GLPointerFunc.GL_COLOR_ARRAY: - break; - case GLPointerFunc.GL_TEXTURE_COORD_ARRAY: - name = name + activeTextureUnit; - } - return name; - } - - public void destroy(GL2ES2 gl) { - shaderProgramColor.release(gl, true); - shaderProgramColorLight.release(gl, true); - shaderProgramColorTexture.release(gl, true); - shaderProgramColorTextureLight.release(gl, true); - shaderState.destroy(gl); - } - - public void glEnableClientState(GL2ES2 gl, int glArrayIndex) { - shaderState.glUseProgram(gl, true); - - shaderState.glEnableVertexAttribArray(gl, getArrayIndexName(glArrayIndex)); - // textureCoordsEnabled |= (1 << activeTextureUnit); - if ( textureCoordsEnabled.get(activeTextureUnit) != 1 ) { - textureCoordsEnabled.put(activeTextureUnit, 1); - textureCoordsEnabledDirty = true; - } - } - - public void glDisableClientState(GL2ES2 gl, int glArrayIndex) { - shaderState.glUseProgram(gl, true); - - shaderState.glDisableVertexAttribArray(gl, getArrayIndexName(glArrayIndex)); - // textureCoordsEnabled &= ~(1 << activeTextureUnit); - if ( textureCoordsEnabled.get(activeTextureUnit) != 0 ) { - textureCoordsEnabled.put(activeTextureUnit, 0); - textureCoordsEnabledDirty = true; - } - } - - public void glVertexPointer(GL2ES2 gl, GLArrayData data) { - shaderState.glUseProgram(gl, true); - shaderState.glVertexAttribPointer(gl, data); - } - - public void glColorPointer(GL2ES2 gl, GLArrayData data) { - shaderState.glUseProgram(gl, true); - shaderState.glVertexAttribPointer(gl, data); - } - - public void glColor4fv(GL2ES2 gl, FloatBuffer data ) { - shaderState.glUseProgram(gl, true); - GLUniformData ud = shaderState.getUniform(mgl_ColorStatic); - if(null!=ud) { - ud.setData(data); - shaderState.glUniform(gl, ud); - } - } - - public void glNormalPointer(GL2ES2 gl, GLArrayData data) { - shaderState.glUseProgram(gl, true); - shaderState.glVertexAttribPointer(gl, data); - } - - public void glTexCoordPointer(GL2ES2 gl, GLArrayData data) { - shaderState.glUseProgram(gl, true); - data.setName( getArrayIndexName(data.getIndex()) ); - shaderState.glVertexAttribPointer(gl, data); - } - - public void glLightfv(GL2ES2 gl, int light, int pname, java.nio.FloatBuffer params) { - shaderState.glUseProgram(gl, true); - light -=GLLightingFunc.GL_LIGHT0; - if(0 <= light && light < MAX_LIGHTS) { - GLUniformData ud = null; - switch(pname) { - case GLLightingFunc.GL_AMBIENT: - ud = shaderState.getUniform(mgl_LightSource+"["+light+"].ambient"); - break; - case GLLightingFunc.GL_DIFFUSE: - ud = shaderState.getUniform(mgl_LightSource+"["+light+"].diffuse"); - break; - case GLLightingFunc.GL_SPECULAR: - ud = shaderState.getUniform(mgl_LightSource+"["+light+"].specular"); - break; - case GLLightingFunc.GL_POSITION: - ud = shaderState.getUniform(mgl_LightSource+"["+light+"].position"); - break; - case GLLightingFunc.GL_SPOT_DIRECTION: - ud = shaderState.getUniform(mgl_LightSource+"["+light+"].spotDirection"); - break; - case GLLightingFunc.GL_SPOT_EXPONENT: - ud = shaderState.getUniform(mgl_LightSource+"["+light+"].spotExponent"); - break; - case GLLightingFunc.GL_SPOT_CUTOFF: - ud = shaderState.getUniform(mgl_LightSource+"["+light+"].spotCutoff"); - break; - case GLLightingFunc.GL_CONSTANT_ATTENUATION: - ud = shaderState.getUniform(mgl_LightSource+"["+light+"].constantAttenuation"); - break; - case GLLightingFunc.GL_LINEAR_ATTENUATION: - ud = shaderState.getUniform(mgl_LightSource+"["+light+"].linearAttenuation"); - break; - case GLLightingFunc.GL_QUADRATIC_ATTENUATION: - ud = shaderState.getUniform(mgl_LightSource+"["+light+"].quadraticAttenuation"); - break; - default: - if(verbose) { - System.err.println("glLightfv pname not within [GL_AMBIENT GL_DIFFUSE GL_SPECULAR GL_POSITION GL_SPOT_DIRECTION]: "+pname); - } - return; - } - if(null!=ud) { - ud.setData(params); - shaderState.glUniform(gl, ud); - } - } else if(verbose) { - System.err.println("glLightfv light not within [0.."+MAX_LIGHTS+"]: "+light); - } - } - - public void glMaterialfv(GL2ES2 gl, int face, int pname, java.nio.FloatBuffer params) { - shaderState.glUseProgram(gl, true); - - switch (face) { - case GL.GL_FRONT: - case GL.GL_FRONT_AND_BACK: - break; - case GL.GL_BACK: - if(verbose) { - System.err.println("glMaterialfv face GL_BACK currently not supported"); - } - break; - default: - } - - GLUniformData ud = null; - switch(pname) { - case GLLightingFunc.GL_AMBIENT: - ud = shaderState.getUniform(mgl_FrontMaterial+".ambient"); - break; - case GLLightingFunc.GL_AMBIENT_AND_DIFFUSE: - glMaterialfv(gl, face, GLLightingFunc.GL_AMBIENT, params); - // fall through intended .. - case GLLightingFunc.GL_DIFFUSE: - ud = shaderState.getUniform(mgl_FrontMaterial+".diffuse"); - break; - case GLLightingFunc.GL_SPECULAR: - ud = shaderState.getUniform(mgl_FrontMaterial+".specular"); - break; - case GLLightingFunc.GL_EMISSION: - ud = shaderState.getUniform(mgl_FrontMaterial+".emission"); - break; - case GLLightingFunc.GL_SHININESS: - ud = shaderState.getUniform(mgl_FrontMaterial+".shininess"); - break; - default: - if(verbose) { - System.err.println("glMaterialfv pname not within [GL_AMBIENT GL_DIFFUSE GL_SPECULAR GL_EMISSION GL_SHININESS]: "+pname); - } - return; - } - if(null!=ud) { - ud.setData(params); - shaderState.glUniform(gl, ud); - } - } - - public void glShadeModel(GL2ES2 gl, int mode) { - shaderState.glUseProgram(gl, true); - GLUniformData ud = shaderState.getUniform(mgl_ShadeModel); - if(null!=ud) { - ud.setData(mode); - shaderState.glUniform(gl, ud); - } - } - - public void glActiveTexture(GL2ES2 gl, int textureUnit) { - textureUnit -= GL.GL_TEXTURE0; - if(0 <= textureUnit && textureUnit<MAX_TEXTURE_UNITS) { - shaderState.glUseProgram(gl, true); - GLUniformData ud; - ud = shaderState.getUniform(mgl_ActiveTexture); - if(null!=ud) { - ud.setData(textureUnit); - shaderState.glUniform(gl, ud); - } - ud = shaderState.getUniform(mgl_ActiveTextureIdx); - if(null!=ud) { - ud.setData(textureUnit); - shaderState.glUniform(gl, ud); - } - activeTextureUnit = textureUnit; - } else { - throw new GLException("glActivateTexture textureUnit not within GL_TEXTURE0 + [0.."+MAX_TEXTURE_UNITS+"]: "+textureUnit); - } - } - - /** - * @return false if digested in regard to GL2ES2 spec, - * eg this call must not be passed to an underlying ES2 implementation. - * true if this call shall be passed to an underlying GL2ES2/ES2 implementation as well. - */ - public boolean glEnable(GL2ES2 gl, int cap, boolean enable) { - switch(cap) { - case GL.GL_TEXTURE_2D: - textureEnabled=enable; - return true; - case GLLightingFunc.GL_LIGHTING: - lightingEnabled=enable; - return false; - case GL.GL_CULL_FACE: - cullFace=Math.abs(cullFace); - if(!enable) { - cullFace*=-1; - } - return true; - } - - int light = cap - GLLightingFunc.GL_LIGHT0; - if(0 <= light && light < MAX_LIGHTS) { - if ( (lightsEnabled.get(light)==1) != enable ) { - lightsEnabled.put(light, enable?1:0); - lightsEnabledDirty = true; - return false; - } - } - return true; // pass it on .. - } - - public void glCullFace(GL2ES2 gl, int faceName) { - switch(faceName) { - case GL.GL_FRONT: - faceName = 1; break; - case GL.GL_BACK: - faceName = 2; break; - case GL.GL_FRONT_AND_BACK: - faceName = 3; break; - } - if(0>cullFace) { - faceName *= -1; - } - cullFace = faceName; - } - - public void validate(GL2ES2 gl) { - shaderState.glUseProgram(gl, true); - GLUniformData ud; - if(pmvMatrix.update()) { - ud = shaderState.getUniform(mgl_PMVMatrix); - if(null!=ud) { - // same data object .. - shaderState.glUniform(gl, ud); - } else { - throw new GLException("Failed to update: mgl_PMVMatrix"); - } - ud = shaderState.getUniform(mgl_NormalMatrix); - if(null!=ud) { - // same data object .. - shaderState.glUniform(gl, ud); - } - } - ud = shaderState.getUniform(mgl_ColorEnabled); - if(null!=ud) { - int ca = (shaderState.isVertexAttribArrayEnabled(mgl_Color)==true)?1:0; - if(ca!=ud.intValue()) { - ud.setData(ca); - shaderState.glUniform(gl, ud); - } - } - ud = shaderState.getUniform(mgl_CullFace); - if(null!=ud) { - if(cullFace!=ud.intValue()) { - ud.setData(cullFace); - shaderState.glUniform(gl, ud); - } - } - - if(lightsEnabledDirty) { - ud = shaderState.getUniform(mgl_LightsEnabled); - if(null!=ud) { - // same data object - shaderState.glUniform(gl, ud); - } - lightsEnabledDirty=false; - } - - if(textureCoordsEnabledDirty) { - ud = shaderState.getUniform(mgl_TexCoordEnabled); - if(null!=ud) { - // same data object - shaderState.glUniform(gl, ud); - } - textureCoordsEnabledDirty=false; - } - - if(textureEnabled) { - if(lightingEnabled) { - shaderState.attachShaderProgram(gl, shaderProgramColorTextureLight); - } else { - shaderState.attachShaderProgram(gl, shaderProgramColorTexture); - } - } else { - if(lightingEnabled) { - shaderState.attachShaderProgram(gl, shaderProgramColorLight); - } else { - shaderState.attachShaderProgram(gl, shaderProgramColor); - } - } - if(DEBUG) { - System.err.println("validate: "+this); - } - } - - public String toString() { - return "FixedFuncPipeline[pmv: "+pmvMatrix+ - ", textureEnabled: "+textureEnabled+ - ", textureCoordsEnabled: "+textureCoordsEnabled+ - ", lightingEnabled: "+lightingEnabled+ - ", lightsEnabled: "+lightsEnabled+ - "\n\t, shaderProgramColor: "+shaderProgramColor+ - "\n\t, shaderProgramColorTexture: "+shaderProgramColorTexture+ - "\n\t, shaderProgramColorLight: "+shaderProgramColorLight+ - "\n\t, shaderProgramColorTextureLight: "+shaderProgramColorTextureLight+ - "\n\t, ShaderState: "+shaderState+ - "]"; - } - - protected void init(GL2ES2 gl, PMVMatrix pmvMatrix, Class shaderRootClass, String shaderSrcRoot, String shaderBinRoot, - String vertexColorFile, - String vertexColorLightFile, - String fragmentColorFile, - String fragmentColorTextureFile) - { - if(null==pmvMatrix) { - throw new GLException("PMVMatrix is null"); - } - this.pmvMatrix=pmvMatrix; - this.shaderState=new ShaderState(); - this.shaderState.setVerbose(verbose); - ShaderCode vertexColor, vertexColorLight, fragmentColor, fragmentColorTexture; - - vertexColor = ShaderCode.create( gl, gl.GL_VERTEX_SHADER, 1, shaderRootClass, - shaderSrcRoot, shaderBinRoot, vertexColorFile); - - vertexColorLight = ShaderCode.create( gl, gl.GL_VERTEX_SHADER, 1, shaderRootClass, - shaderSrcRoot, shaderBinRoot, vertexColorLightFile); - - fragmentColor = ShaderCode.create( gl, gl.GL_FRAGMENT_SHADER, 1, shaderRootClass, - shaderSrcRoot, shaderBinRoot, fragmentColorFile); - - fragmentColorTexture = ShaderCode.create( gl, gl.GL_FRAGMENT_SHADER, 1, shaderRootClass, - shaderSrcRoot, shaderBinRoot, fragmentColorTextureFile); - - shaderProgramColor = new ShaderProgram(); - shaderProgramColor.add(vertexColor); - shaderProgramColor.add(fragmentColor); - if(!shaderProgramColor.link(gl, System.err)) { - throw new GLException("Couldn't link VertexColor program: "+shaderProgramColor); - } - - shaderProgramColorTexture = new ShaderProgram(); - shaderProgramColorTexture.add(vertexColor); - shaderProgramColorTexture.add(fragmentColorTexture); - if(!shaderProgramColorTexture.link(gl, System.err)) { - throw new GLException("Couldn't link VertexColorTexture program: "+shaderProgramColorTexture); - } - - shaderProgramColorLight = new ShaderProgram(); - shaderProgramColorLight.add(vertexColorLight); - shaderProgramColorLight.add(fragmentColor); - if(!shaderProgramColorLight.link(gl, System.err)) { - throw new GLException("Couldn't link VertexColorLight program: "+shaderProgramColorLight); - } - - shaderProgramColorTextureLight = new ShaderProgram(); - shaderProgramColorTextureLight.add(vertexColorLight); - shaderProgramColorTextureLight.add(fragmentColorTexture); - if(!shaderProgramColorTextureLight.link(gl, System.err)) { - throw new GLException("Couldn't link VertexColorLight program: "+shaderProgramColorTextureLight); - } - - shaderState.attachShaderProgram(gl, shaderProgramColor); - shaderState.glUseProgram(gl, true); - - // mandatory .. - if(!shaderState.glUniform(gl, new GLUniformData(mgl_PMVMatrix, 4, 4, pmvMatrix.glGetPMvMviMatrixf()))) { - throw new GLException("Error setting PMVMatrix in shader: "+this); - } - - // optional parameter .. - shaderState.glUniform(gl, new GLUniformData(mgl_NormalMatrix, 3, 3, pmvMatrix.glGetNormalMatrixf())); - - shaderState.glUniform(gl, new GLUniformData(mgl_ColorEnabled, 0)); - shaderState.glUniform(gl, new GLUniformData(mgl_ColorStatic, 4, zero4f)); - shaderState.glUniform(gl, new GLUniformData(mgl_TexCoordEnabled, 1, textureCoordsEnabled)); - shaderState.glUniform(gl, new GLUniformData(mgl_ActiveTexture, activeTextureUnit)); - shaderState.glUniform(gl, new GLUniformData(mgl_ActiveTextureIdx, activeTextureUnit)); - shaderState.glUniform(gl, new GLUniformData(mgl_ShadeModel, 0)); - shaderState.glUniform(gl, new GLUniformData(mgl_CullFace, cullFace)); - for(int i=0; i<MAX_LIGHTS; i++) { - shaderState.glUniform(gl, new GLUniformData(mgl_LightSource+"["+i+"].ambient", 4, defAmbient)); - shaderState.glUniform(gl, new GLUniformData(mgl_LightSource+"["+i+"].diffuse", 4, defDiffuse)); - shaderState.glUniform(gl, new GLUniformData(mgl_LightSource+"["+i+"].specular", 4, defSpecular)); - shaderState.glUniform(gl, new GLUniformData(mgl_LightSource+"["+i+"].position", 4, defPosition)); - shaderState.glUniform(gl, new GLUniformData(mgl_LightSource+"["+i+"].spotDirection", 3, defSpotDir)); - shaderState.glUniform(gl, new GLUniformData(mgl_LightSource+"["+i+"].spotExponent", defSpotExponent)); - shaderState.glUniform(gl, new GLUniformData(mgl_LightSource+"["+i+"].spotCutoff", defSpotCutoff)); - shaderState.glUniform(gl, new GLUniformData(mgl_LightSource+"["+i+"].constantAttenuation", defConstantAtten)); - shaderState.glUniform(gl, new GLUniformData(mgl_LightSource+"["+i+"].linearAttenuation", defLinearAtten)); - shaderState.glUniform(gl, new GLUniformData(mgl_LightSource+"["+i+"].quadraticAttenuation", defQuadraticAtten)); - } - shaderState.glUniform(gl, new GLUniformData(mgl_LightsEnabled, 1, lightsEnabled)); - shaderState.glUniform(gl, new GLUniformData(mgl_FrontMaterial+".ambient", 4, defMatAmbient)); - shaderState.glUniform(gl, new GLUniformData(mgl_FrontMaterial+".diffuse", 4, defMatDiffuse)); - shaderState.glUniform(gl, new GLUniformData(mgl_FrontMaterial+".specular", 4, defMatSpecular)); - shaderState.glUniform(gl, new GLUniformData(mgl_FrontMaterial+".emission", 4, defMatEmission)); - shaderState.glUniform(gl, new GLUniformData(mgl_FrontMaterial+".shininess", defMatShininess)); - - shaderState.glUseProgram(gl, false); - } - - protected static final boolean DEBUG=false; - protected boolean verbose=false; - - protected boolean textureEnabled=false; - protected IntBuffer textureCoordsEnabled = BufferUtil.newIntBuffer(new int[] { 0, 0, 0, 0, 0, 0, 0, 0 }); - protected boolean textureCoordsEnabledDirty = false; - protected int activeTextureUnit=0; - - protected int cullFace=-2; // <=0 disabled, 1: front, 2: back (default, but disabled), 3: front & back - - protected boolean lightingEnabled=false; - protected IntBuffer lightsEnabled = BufferUtil.newIntBuffer(new int[] { 0, 0, 0, 0, 0, 0, 0, 0 }); - protected boolean lightsEnabledDirty = false; - - protected PMVMatrix pmvMatrix; - protected ShaderState shaderState; - protected ShaderProgram shaderProgramColor; - protected ShaderProgram shaderProgramColorTexture; - protected ShaderProgram shaderProgramColorLight; - protected ShaderProgram shaderProgramColorTextureLight; - - // uniforms .. - protected static final String mgl_PMVMatrix = "mgl_PMVMatrix"; // m4fv[3] - protected static final String mgl_NormalMatrix = "mgl_NormalMatrix"; // m4fv - protected static final String mgl_ColorEnabled = "mgl_ColorEnabled"; // 1i - protected static final String mgl_ColorStatic = "mgl_ColorStatic"; // 4fv - - protected static final String mgl_LightSource = "mgl_LightSource"; // struct mgl_LightSourceParameters[MAX_LIGHTS] - protected static final String mgl_FrontMaterial = "mgl_FrontMaterial"; // struct mgl_MaterialParameters - protected static final String mgl_LightsEnabled = "mgl_LightsEnabled"; // int mgl_LightsEnabled[MAX_LIGHTS]; - - protected static final String mgl_ShadeModel = "mgl_ShadeModel"; // 1i - - protected static final String mgl_TexCoordEnabled = "mgl_TexCoordEnabled"; // int mgl_TexCoordEnabled[MAX_TEXTURE_UNITS]; - protected static final String mgl_ActiveTexture = "mgl_ActiveTexture"; // 1i - protected static final String mgl_ActiveTextureIdx = "mgl_ActiveTextureIdx";// 1i - - protected static final String mgl_CullFace = "mgl_CullFace"; // 1i - - protected static final FloatBuffer zero4f = BufferUtil.newFloatBuffer(new float[] { 0.0f, 0.0f, 0.0f, 0.0f }); - - public static final FloatBuffer defAmbient = BufferUtil.newFloatBuffer(new float[] { 0f, 0f, 0f, 1f }); - public static final FloatBuffer defDiffuse = zero4f; - public static final FloatBuffer defSpecular= zero4f; - public static final FloatBuffer defPosition= BufferUtil.newFloatBuffer(new float[] { 0f, 0f, 1f, 0f }); - public static final FloatBuffer defSpotDir = BufferUtil.newFloatBuffer(new float[] { 0f, 0f, -1f }); - public static final float defSpotExponent = 0f; - public static final float defSpotCutoff = 180f; - public static final float defConstantAtten = 1f; - public static final float defLinearAtten = 0f; - public static final float defQuadraticAtten= 0f; - - public static final FloatBuffer defMatAmbient = BufferUtil.newFloatBuffer(new float[] { 0.2f, 0.2f, 0.2f, 1.0f }); - public static final FloatBuffer defMatDiffuse = BufferUtil.newFloatBuffer(new float[] { 0.8f, 0.8f, 0.8f, 1.0f }); - public static final FloatBuffer defMatSpecular= BufferUtil.newFloatBuffer(new float[] { 0f, 0f, 0f, 1f}); - public static final FloatBuffer defMatEmission= BufferUtil.newFloatBuffer(new float[] { 0f, 0f, 0f, 1f}); - public static final float defMatShininess = 0f; - - protected static final String vertexColorFileDef = "FixedFuncColor"; - protected static final String vertexColorLightFileDef = "FixedFuncColorLight"; - protected static final String fragmentColorFileDef = "FixedFuncColor"; - protected static final String fragmentColorTextureFileDef = "FixedFuncColorTexture"; - protected static final String shaderSrcRootDef = "shaders" ; - protected static final String shaderBinRootDef = "shaders/bin" ; -} - diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/FixedFuncColor.fp b/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/FixedFuncColor.fp deleted file mode 100644 index 408ff7251..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/FixedFuncColor.fp +++ /dev/null @@ -1,16 +0,0 @@ -#include es_precision.glsl - -#include mgl_uniform.glsl -#include mgl_varying.glsl - -void main (void) -{ - if( mgl_CullFace > 0 && - ( ( mgl_CullFace == 1 && gl_FrontFacing ) || - ( mgl_CullFace == 2 && !gl_FrontFacing ) || - ( mgl_CullFace == 3 ) ) ) { - discard; - } - gl_FragColor = frontColor; -} - diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/FixedFuncColor.vp b/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/FixedFuncColor.vp deleted file mode 100644 index 346e40196..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/FixedFuncColor.vp +++ /dev/null @@ -1,22 +0,0 @@ -#include es_precision.glsl - -#include mgl_const.glsl -#include mgl_uniform.glsl -#include mgl_attribute.glsl -#include mgl_varying.glsl - -#include mgl_settexcoord.vp - -void main(void) -{ - if(mgl_ColorEnabled>0) { - frontColor=mgl_Color; - } else { - frontColor=mgl_ColorStatic; - } - - gl_Position = mgl_PMVMatrix[0] * mgl_PMVMatrix[1] * mgl_Vertex; - - setTexCoord(gl_Position); -} - diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/FixedFuncColorLight.vp b/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/FixedFuncColorLight.vp deleted file mode 100644 index ce203cfb9..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/FixedFuncColorLight.vp +++ /dev/null @@ -1,70 +0,0 @@ -#include es_precision.glsl -#include mgl_lightdef.glsl - -#include mgl_const.glsl -#include mgl_uniform.glsl -#include mgl_uniform_light.glsl -#include mgl_attribute.glsl -#include mgl_varying.glsl - -#include mgl_settexcoord.vp - -void main(void) -{ - vec4 position; - vec3 normal, lightDir, cameraDir, halfDir; - vec4 ambient, diffuse, specular; - float NdotL, NdotHV, dist, attenuation; - int i; - - position = mgl_PMVMatrix[1] * mgl_Vertex; // vertex eye position - - normal = normalize(mgl_NormalMatrix * mgl_Normal); - // cameraPosition: (mgl_PMVMatrix[2] * vec4(0,0,0,1.0)).xyz - cameraDir = normalize( (mgl_PMVMatrix[2] * vec4(0,0,0,1.0)).xyz - mgl_Vertex.xyz ); - - ambient = vec4(0,0,0,0); - diffuse = vec4(0,0,0,0); - specular = vec4(0,0,0,0); - - bool lightEnabled = false; - - for(i=0; i<MAX_LIGHTS; i++) { - if( 0!= mgl_LightsEnabled[i] ) { - lightEnabled = true; - ambient += mgl_LightSource[i].ambient; - lightDir = mgl_LightSource[i].position.xyz - position.xyz; - dist = length(lightDir); - lightDir = normalize(lightDir); - attenuation = 1.0 / ( - mgl_LightSource[i].constantAttenuation+ - mgl_LightSource[i].linearAttenuation * dist + - mgl_LightSource[i].quadraticAttenuation * dist * dist ); - NdotL = max(0.0, dot(normal, lightDir)); - diffuse += mgl_LightSource[i].diffuse * NdotL * attenuation; - if (NdotL != 0.0) { - halfDir = normalize (lightDir + cameraDir); - NdotHV = max(0.0, dot(normal, halfDir)); - specular += mgl_LightSource[i].specular * - pow(NdotHV,mgl_FrontMaterial.shininess) * attenuation; - } - } - } - ambient += mgl_FrontMaterial.ambient; - diffuse *= mgl_FrontMaterial.diffuse; - specular *= mgl_FrontMaterial.specular; - - if(mgl_ColorEnabled>0) { - frontColor=mgl_Color; - } else { - frontColor=mgl_ColorStatic; - } - if( lightEnabled ) { - frontColor *= ambient + diffuse + specular; - } - - gl_Position = mgl_PMVMatrix[0] * position; - - setTexCoord(gl_Position); -} - diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/FixedFuncColorTexture.fp b/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/FixedFuncColorTexture.fp deleted file mode 100644 index 86e6ace73..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/FixedFuncColorTexture.fp +++ /dev/null @@ -1,47 +0,0 @@ - -#include es_precision.glsl -#include mgl_lightdef.glsl - -#include mgl_const.glsl -#include mgl_uniform.glsl -#include mgl_varying.glsl - -vec4 getTexColor(in sampler2D tex, in int idx) { - vec4 coord; - if(idx==0) { - coord= mgl_TexCoords[0]; - } else if(idx==1) { - coord= mgl_TexCoords[1]; - } else if(idx==2) { - coord= mgl_TexCoords[2]; - } else if(idx==3) { - coord= mgl_TexCoords[3]; - } else if(idx==4) { - coord= mgl_TexCoords[4]; - } else if(idx==5) { - coord= mgl_TexCoords[5]; - } else if(idx==6) { - coord= mgl_TexCoords[6]; - } else { - coord= mgl_TexCoords[7]; - } - return texture2D(tex, coord.st); -} - -void main (void) -{ - if( mgl_CullFace > 0 && - ( ( mgl_CullFace == 1 && gl_FrontFacing ) || - ( mgl_CullFace == 2 && !gl_FrontFacing ) || - ( mgl_CullFace == 3 ) ) ) { - discard; - } - - vec4 texColor = getTexColor(mgl_ActiveTexture,mgl_ActiveTextureIdx); - - if(length(texColor.rgb)>0.0) { - gl_FragColor = vec4(frontColor.rgb*texColor.rgb, frontColor.a) ; - } else { - gl_FragColor = frontColor; - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColor.bfp b/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColor.bfp Binary files differdeleted file mode 100755 index 3ebaaee1d..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColor.bfp +++ /dev/null diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColor.bvp b/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColor.bvp Binary files differdeleted file mode 100755 index 279ef72c7..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColor.bvp +++ /dev/null diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColorLight.bvp b/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColorLight.bvp Binary files differdeleted file mode 100755 index 5a9deea71..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColorLight.bvp +++ /dev/null diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColorTexture.bfp b/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColorTexture.bfp Binary files differdeleted file mode 100755 index ce1397fe1..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/bin/nvidia/FixedFuncColorTexture.bfp +++ /dev/null diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/es_precision.glsl b/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/es_precision.glsl deleted file mode 100644 index fd6abe54e..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/es_precision.glsl +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef es_precision_glsl -#define es_precision_glsl - -#ifdef GL_ES - #define MEDIUMP mediump - #define HIGHP highp - #define LOWP lowp -#else - #define MEDIUMP - #define HIGHP - #define LOWP -#endif - -#endif // es_precision_glsl diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/mgl_attribute.glsl b/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/mgl_attribute.glsl deleted file mode 100644 index b09bdb05a..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/mgl_attribute.glsl +++ /dev/null @@ -1,19 +0,0 @@ - -#ifndef mgl_attribute_glsl -#define mgl_attribute_glsl - -#include es_precision.glsl - -attribute HIGHP vec4 mgl_Vertex; -attribute HIGHP vec3 mgl_Normal; -attribute HIGHP vec4 mgl_Color; -attribute HIGHP vec4 mgl_MultiTexCoord0; -attribute HIGHP vec4 mgl_MultiTexCoord1; -attribute HIGHP vec4 mgl_MultiTexCoord2; -attribute HIGHP vec4 mgl_MultiTexCoord3; -attribute HIGHP vec4 mgl_MultiTexCoord4; -attribute HIGHP vec4 mgl_MultiTexCoord5; -attribute HIGHP vec4 mgl_MultiTexCoord6; -attribute HIGHP vec4 mgl_MultiTexCoord7; - -#endif // mgl_attribute_glsl diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/mgl_const.glsl b/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/mgl_const.glsl deleted file mode 100644 index 1a464a1cb..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/mgl_const.glsl +++ /dev/null @@ -1,10 +0,0 @@ - -#ifndef mgl_const_glsl -#define mgl_const_glsl - -#include es_precision.glsl - -const LOWP int MAX_TEXTURE_UNITS = 8; // <=gl_MaxTextureImageUnits -const LOWP int MAX_LIGHTS = 8; - -#endif // mgl_const_glsl diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/mgl_lightdef.glsl b/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/mgl_lightdef.glsl deleted file mode 100644 index 98e214139..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/mgl_lightdef.glsl +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef mgl_lightdef_glsl -#define mgl_lightdef_glsl - -struct mgl_LightSourceParameters { - vec4 ambient; - vec4 diffuse; - vec4 specular; - vec4 position; - // vec4 halfVector; // is computed here - vec3 spotDirection; - float spotExponent; - float spotCutoff; // (range: [0.0,90.0], 180.0) - //float spotCosCutoff; // (range: [1.0,0.0],-1.0) - float constantAttenuation; - float linearAttenuation; - float quadraticAttenuation; -}; -struct mgl_MaterialParameters { - vec4 ambient; - vec4 diffuse; - vec4 specular; - vec4 emission; - float shininess; -}; - -#endif // mgl_lightdef_glsl diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/mgl_settexcoord.vp b/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/mgl_settexcoord.vp deleted file mode 100644 index 1efe328d0..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/mgl_settexcoord.vp +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef mgl_settexcoord_vp -#define mgl_settexcoord_vp - -#include es_precision.glsl - -#include mgl_const.glsl -#include mgl_uniform.glsl -#include mgl_attribute.glsl -#include mgl_varying.glsl - -void setTexCoord(in vec4 defpos) { - /** - * bitwise operator not supported on APX 2500 ES 2.0 - * - mgl_TexCoords[0] = ( 0 != (mgl_TexCoordEnabled & 1) ) ? mgl_MultiTexCoord0 : defpos; - mgl_TexCoords[1] = ( 0 != (mgl_TexCoordEnabled & 2) ) ? mgl_MultiTexCoord1 : defpos; - mgl_TexCoords[2] = ( 0 != (mgl_TexCoordEnabled & 4) ) ? mgl_MultiTexCoord2 : defpos; - mgl_TexCoords[3] = ( 0 != (mgl_TexCoordEnabled & 8) ) ? mgl_MultiTexCoord3 : defpos; - mgl_TexCoords[4] = ( 0 != (mgl_TexCoordEnabled & 16) ) ? mgl_MultiTexCoord4 : defpos; - mgl_TexCoords[5] = ( 0 != (mgl_TexCoordEnabled & 32) ) ? mgl_MultiTexCoord5 : defpos; - mgl_TexCoords[6] = ( 0 != (mgl_TexCoordEnabled & 64) ) ? mgl_MultiTexCoord6 : defpos; - mgl_TexCoords[7] = ( 0 != (mgl_TexCoordEnabled & 128) ) ? mgl_MultiTexCoord7 : defpos; - */ - - mgl_TexCoords[0] = ( 0 != mgl_TexCoordEnabled[0] ) ? mgl_MultiTexCoord0 : defpos; - mgl_TexCoords[1] = ( 0 != mgl_TexCoordEnabled[1] ) ? mgl_MultiTexCoord1 : defpos; - mgl_TexCoords[2] = ( 0 != mgl_TexCoordEnabled[2] ) ? mgl_MultiTexCoord2 : defpos; - mgl_TexCoords[3] = ( 0 != mgl_TexCoordEnabled[3] ) ? mgl_MultiTexCoord3 : defpos; - mgl_TexCoords[4] = ( 0 != mgl_TexCoordEnabled[4] ) ? mgl_MultiTexCoord4 : defpos; - mgl_TexCoords[5] = ( 0 != mgl_TexCoordEnabled[5] ) ? mgl_MultiTexCoord5 : defpos; - mgl_TexCoords[6] = ( 0 != mgl_TexCoordEnabled[6] ) ? mgl_MultiTexCoord6 : defpos; - mgl_TexCoords[7] = ( 0 != mgl_TexCoordEnabled[7] ) ? mgl_MultiTexCoord7 : defpos; -} - -#endif // mgl_settexcoord_vp diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/mgl_uniform.glsl b/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/mgl_uniform.glsl deleted file mode 100644 index d8b3c7f95..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/mgl_uniform.glsl +++ /dev/null @@ -1,18 +0,0 @@ - -#ifndef mgl_uniform_glsl -#define mgl_uniform_glsl - -#include es_precision.glsl - -#include mgl_const.glsl - -uniform HIGHP mat4 mgl_PMVMatrix[3]; // P, Mv, and Mvi -uniform HIGHP mat3 mgl_NormalMatrix; // transpose(inverse(ModelView)).3x3 -uniform LOWP int mgl_ColorEnabled; -uniform HIGHP vec4 mgl_ColorStatic; -uniform LOWP int mgl_TexCoordEnabled[MAX_TEXTURE_UNITS]; -uniform sampler2D mgl_ActiveTexture; -uniform LOWP int mgl_ActiveTextureIdx; -uniform LOWP int mgl_CullFace; - -#endif // mgl_uniform_glsl diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/mgl_uniform_light.glsl b/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/mgl_uniform_light.glsl deleted file mode 100644 index 0dedb5d5d..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/mgl_uniform_light.glsl +++ /dev/null @@ -1,15 +0,0 @@ - -#ifndef mgl_uniform_light_glsl -#define mgl_uniform_light_glsl - -#include es_precision.glsl - -#include mgl_const.glsl -#include mgl_lightdef.glsl - -uniform LOWP int mgl_LightsEnabled[MAX_LIGHTS]; - -uniform mgl_LightSourceParameters mgl_LightSource[MAX_LIGHTS]; -uniform mgl_MaterialParameters mgl_FrontMaterial; - -#endif // mgl_uniform_light_glsl diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/mgl_varying.glsl b/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/mgl_varying.glsl deleted file mode 100644 index fc9f735d1..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/mgl_varying.glsl +++ /dev/null @@ -1,12 +0,0 @@ - -#ifndef mgl_varying_glsl -#define mgl_varying_glsl - -#include es_precision.glsl - -#include mgl_const.glsl - -varying vec4 frontColor; -varying vec4 mgl_TexCoords[MAX_TEXTURE_UNITS]; - -#endif // mgl_varying_glsl diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/scripts/nvidia-apx/glslc-ff.bat b/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/scripts/nvidia-apx/glslc-ff.bat deleted file mode 100755 index 002dca8ef..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/scripts/nvidia-apx/glslc-ff.bat +++ /dev/null @@ -1,9 +0,0 @@ -REM -REM You have to call it from the 'shaders' directory, e.g.: -REM scripts\nvidia-apx\glslc-ff.bat -REM -IF !"%JOGLDIR%"==""! GOTO YESPATH -set JOGLDIR=..\lib -:YESPATH - -java -cp %JOGLDIR%\jogl.core.jar;%JOGLDIR%\jogl.gles2.jar;%JOGLDIR%\jogl.fixed.jar;%JOGLDIR%\jogl.sdk.jar com.sun.opengl.util.glsl.sdk.CompileShaderNVidia FixedFuncColor.fp FixedFuncColorTexture.fp FixedFuncColorLight.vp FixedFuncColor.vp diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/scripts/nvidia-apx/glslc.bat b/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/scripts/nvidia-apx/glslc.bat deleted file mode 100755 index 9b5a4b39c..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/fixedfunc/impl/shaders/scripts/nvidia-apx/glslc.bat +++ /dev/null @@ -1,9 +0,0 @@ -REM -REM You have to call it from the 'shaders' directory, e.g.: -REM scripts\nvidia-apx\glslc.bat <FileName> -REM -IF !"%JOGLDIR%"==""! GOTO YESPATH -set JOGLDIR=..\lib -:YESPATH - -java -cp %JOGLDIR%\jogl.core.jar;%JOGLDIR%\jogl.gles2.jar;%JOGLDIR%\jogl.fixed.jar;%JOGLDIR%\jogl.sdk.jar com.sun.opengl.util.glsl.sdk.CompileShaderNVidia %1 diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/sdk/CompileShader.java b/src/jogl/classes/com/sun/opengl/util/glsl/sdk/CompileShader.java deleted file mode 100755 index f18005feb..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/sdk/CompileShader.java +++ /dev/null @@ -1,184 +0,0 @@ -package com.sun.opengl.util.glsl.sdk; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import com.sun.opengl.util.glsl.*; - -import java.io.*; -import java.net.*; - -/** Precompiles a shader into a vendor binary format. Input is the - resource name of the shader, such as - "com/sun/opengl/impl/glsl/fixed/shader/a.fp". - Output is "com/sun/opengl/impl/glsl/fixed/shader/bin/nvidia/a.bfp". - - All path and suffixes are determined by the ShaderCode class, - which ensures runtime compatibility. - - @see javax.media.opengl.glsl.ShaderCode - */ - -public abstract class CompileShader { - - public abstract int getBinaryFormat(); - - public abstract File getSDKCompilerDir(); - - public abstract String getVertexShaderCompiler(); - - public abstract String getFragmentShaderCompiler(); - - public void processOneShader(String resourceName) - throws IOException, UnsupportedEncodingException, InterruptedException - { - int type = -1; - String outName=null; - int suffixLen = -1; - if(resourceName.endsWith(ShaderCode.getFileSuffix(false, GL2ES2.GL_FRAGMENT_SHADER))) { - suffixLen = 2; - type = GL2ES2.GL_FRAGMENT_SHADER; - } else if(resourceName.endsWith(".frag")) { - suffixLen = 4; - type = GL2ES2.GL_FRAGMENT_SHADER; - } else if(resourceName.endsWith(ShaderCode.getFileSuffix(false, GL2ES2.GL_VERTEX_SHADER))) { - suffixLen = 2; - type = GL2ES2.GL_VERTEX_SHADER; - } else if(resourceName.endsWith(".vert")) { - suffixLen = 4; - type = GL2ES2.GL_VERTEX_SHADER; - } - String justName = basename(resourceName); - outName = justName.substring(0, justName.length() - suffixLen) + - ShaderCode.getFileSuffix(true, type); - URL resourceURL = Locator.getResource(null, resourceName); - String dirName = dirname(resourceURL.getPath()); - - outName = dirName + File.separator + "bin" + File.separator + - ShaderCode.getBinarySubPath(getBinaryFormat()) + File.separator + - outName; - processOneShader(resourceName, outName, type); - } - - public void processOneShader(String resourceName, String outName, int type) - throws IOException, UnsupportedEncodingException, InterruptedException - { - URL resourceURL = Locator.getResource(null, resourceName); - String dirName = dirname(resourceURL.getPath()); - - String shader = ShaderCode.readShaderSource(null, resourceName); - if(null==shader) { - System.err.println("Can't find shader source " + resourceName + " - ignored"); - return; - } - System.err.println("Preprocessing: "+ resourceName+", in dir: "+dirName); - String justName = basename(resourceName); - String processor; - switch (type) { - case GL2ES2.GL_VERTEX_SHADER: - processor = getVertexShaderCompiler(); - break; - case GL2ES2.GL_FRAGMENT_SHADER: - processor = getFragmentShaderCompiler(); - break; - default: - throw new GLException("Unknown shader type: "+type); - } - File outputFile = new File(outName); - - // Write shader to a file in java.io.tmpdir - File tmpDir = new File(dirName+File.separator+"tmp"); - tmpDir.mkdirs(); - File tmpFile = new File(tmpDir, justName); - Writer writer = new BufferedWriter(new FileWriter(tmpFile)); - writer.write(shader, 0, shader.length()); - writer.flush(); - writer.close(); - System.err.println("Preprocessed: "+ tmpFile.getAbsolutePath()); - - File processorDir = getSDKCompilerDir(); - - System.err.println("SDK: "+ processorDir.getAbsolutePath() + ", compiler: "+processor); - - System.err.println("Output: "+ outputFile.getAbsolutePath()); - - // Run the tool - Process process = Runtime.getRuntime().exec(new String[] { - processorDir.getAbsolutePath() + File.separator + processor, - tmpFile.getAbsolutePath(), - outputFile.getAbsolutePath() - }); // , null, processorDir); - new StreamMonitor(process.getInputStream()); - new StreamMonitor(process.getErrorStream()); - process.waitFor(); - // Delete the temporary file - // tmpFile.delete(); - } - - protected static String basename(String path) { - int lastSlash = path.lastIndexOf("/"); - if (lastSlash < 0) { - lastSlash = path.lastIndexOf("\\"); - } - String basename; - if (lastSlash < 0) { - basename = path; - } else { - basename = path.substring(lastSlash + 1); - } - return basename; - } - - protected static String dirname(String path) { - int lastSlash = path.lastIndexOf("/"); - if (lastSlash < 0) { - lastSlash = path.lastIndexOf("\\"); - } - String dirname; - if (lastSlash < 0) { - dirname = new String(); - } else { - dirname = path.substring(0, lastSlash + 1); - } - return dirname; - } - - public void run(String[] args) { - try { - for (int i = 0; i < args.length; i++) { - processOneShader(args[i]); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - private static class StreamMonitor implements Runnable { - private InputStream istream; - public StreamMonitor(InputStream stream) { - istream = stream; - new Thread(this, "Output Reader Thread").start(); - } - - public void run() - { - byte[] buffer = new byte[4096]; - try { - int numRead = 0; - do { - numRead = istream.read(buffer); - if (numRead > 0) { - System.out.write(buffer, 0, numRead); - System.out.flush(); - } - } while (numRead >= 0); - } - catch (IOException e) { - try { - istream.close(); - } catch (IOException e2) { - } - // Should allow clean exit when process shuts down - } - } - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/glsl/sdk/CompileShaderNVidia.java b/src/jogl/classes/com/sun/opengl/util/glsl/sdk/CompileShaderNVidia.java deleted file mode 100755 index 387ccf732..000000000 --- a/src/jogl/classes/com/sun/opengl/util/glsl/sdk/CompileShaderNVidia.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.sun.opengl.util.glsl.sdk; - -import javax.media.opengl.*; - -import java.io.*; - -/** Precompiles a shader into NVidia binary format. Input is the - resource name of the shader, such as - "com/sun/opengl/impl/glsl/fixed/shader/a.fp". - Output is "com/sun/opengl/impl/glsl/fixed/shader/bin/nvidia/a.bfp". */ - -public class CompileShaderNVidia extends CompileShader { - private static final String NVAPSDK; - - static { - String nvapSDKProp = System.getProperty("NVAPSDK"); - if (nvapSDKProp != null) { - NVAPSDK = nvapSDKProp; - } else { - NVAPSDK = "C:\\nvap_sdk_0_3_x"; - } - } - - public int getBinaryFormat() { - return GLES2.GL_NVIDIA_PLATFORM_BINARY_NV; - } - - public File getSDKCompilerDir() { - File compilerDir = new File( NVAPSDK + File.separator + "tools" + File.separator ); - File compilerFile = new File( compilerDir, getVertexShaderCompiler()); - if(!compilerFile.exists()) { - compilerDir = new File( NVAPSDK ); - compilerFile = new File( compilerDir, getVertexShaderCompiler()); - } - if(!compilerFile.exists()) { - throw new GLException("Can't find compiler: "+getVertexShaderCompiler() + " in : " + - NVAPSDK+", "+NVAPSDK + File.separator + "tools"); - } - return compilerDir; - } - - public String getVertexShaderCompiler() { - return "glslv.bat"; - } - - public String getFragmentShaderCompiler() { - return "glslf.bat"; - } - - public static void main(String[] args) { - new CompileShaderNVidia().run(args); - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/packrect/BackingStoreManager.java b/src/jogl/classes/com/sun/opengl/util/packrect/BackingStoreManager.java deleted file mode 100755 index 754ba2757..000000000 --- a/src/jogl/classes/com/sun/opengl/util/packrect/BackingStoreManager.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.packrect; - -/** This interface must be implemented by the end user and is called - in response to events like addition of rectangles into the - RectanglePacker. It is used both when a full re-layout must be - done as well as when the data in the backing store must be copied - to a new one. */ - -public interface BackingStoreManager { - public Object allocateBackingStore(int w, int h); - public void deleteBackingStore(Object backingStore); - - /** Indication whether this BackingStoreManager supports compaction; - in other words, the allocation of a new backing store and - movement of the contents of the backing store from the old to - the new one. If it does not, then RectanglePacker.add() may - throw an exception if additionFailed() can not make enough room - available. If an implementation returns false, this also implies - that the backing store can not grow, so that preExpand() will - never be called. */ - public boolean canCompact(); - - /** Notification that expansion of the backing store is about to be - done due to addition of the given rectangle. Gives the manager a - chance to do some compaction and potentially remove old entries - from the backing store, if it acts like a least-recently-used - cache. This method receives as argument the number of attempts - so far to add the given rectangle. Manager should return true if - the RectanglePacker should retry the addition (which may result - in this method being called again, with an increased attempt - number) or false if the RectanglePacker should just expand the - backing store. The caller should not call RectanglePacker.add() - in its preExpand() method. */ - public boolean preExpand(Rect cause, int attemptNumber); - - /** Notification that addition of the given Rect failed because a - maximum size was set in the RectanglePacker and the backing - store could not be expanded, or because compaction (and, - therefore, implicitly expansion) was not supported. Should - return false if the manager can do nothing more to handle the - failed addition, which will cause a RuntimeException to be - thrown from the RectanglePacker. */ - public boolean additionFailed(Rect cause, int attemptNumber); - - /** Notification that movement is starting. */ - public void beginMovement(Object oldBackingStore, Object newBackingStore); - - /** Tells the manager to move the contents of the given rect from - the old location on the old backing store to the new location on - the new backing store. The backing stores can be identical in - the case of compacting the existing backing store instead of - reallocating it. */ - public void move(Object oldBackingStore, - Rect oldLocation, - Object newBackingStore, - Rect newLocation); - - /** Notification that movement is ending. */ - public void endMovement(Object oldBackingStore, Object newBackingStore); -} diff --git a/src/jogl/classes/com/sun/opengl/util/packrect/Level.java b/src/jogl/classes/com/sun/opengl/util/packrect/Level.java deleted file mode 100755 index 3dae4301d..000000000 --- a/src/jogl/classes/com/sun/opengl/util/packrect/Level.java +++ /dev/null @@ -1,275 +0,0 @@ -/* - * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.packrect; - -import java.util.*; - -public class Level { - private int width; - private int height; - private int yPos; - private LevelSet holder; - - private List/*<Rect>*/ rects = new ArrayList/*<Rect>*/(); - private List/*<Rect>*/ freeList; - private int nextAddX; - - static class RectXComparator implements Comparator { - public int compare(Object o1, Object o2) { - Rect r1 = (Rect) o1; - Rect r2 = (Rect) o2; - return r1.x() - r2.x(); - } - - public boolean equals(Object obj) { - return this == obj; - } - } - private static final Comparator rectXComparator = new RectXComparator(); - - public Level(int width, int height, int yPos, LevelSet holder) { - this.width = width; - this.height = height; - this.yPos = yPos; - this.holder = holder; - } - - public int w() { return width; } - public int h() { return height; } - public int yPos() { return yPos; } - - /** Tries to add the given rectangle to this level only allowing - non-disruptive changes like trivial expansion of the last level - in the RectanglePacker and allocation from the free list. More - disruptive changes like compaction of the level must be - requested explicitly. */ - public boolean add(Rect rect) { - if (rect.h() > height) { - // See whether it's worth trying to expand vertically - if (nextAddX + rect.w() > width) { - return false; - } - - // See whether we're the last level and can expand - if (!holder.canExpand(this, rect.h())) { - return false; - } - - // Trivially expand and try the allocation - holder.expand(this, height, rect.h()); - height = rect.h(); - } - - // See whether we can add at the end - if (nextAddX + rect.w() <= width) { - rect.setPosition(nextAddX, yPos); - rects.add(rect); - nextAddX += rect.w(); - return true; - } - - // See whether we can add from the free list - if (freeList != null) { - Rect candidate = null; - for (Iterator iter = freeList.iterator(); iter.hasNext(); ) { - Rect cur = (Rect) iter.next(); - if (cur.canContain(rect)) { - candidate = cur; - break; - } - } - - if (candidate != null) { - // Remove the candidate from the free list - freeList.remove(candidate); - // Set up and add the real rect - rect.setPosition(candidate.x(), candidate.y()); - rects.add(rect); - // Re-add any remaining free space - if (candidate.w() > rect.w()) { - candidate.setPosition(candidate.x() + rect.w(), candidate.y()); - candidate.setSize(candidate.w() - rect.w(), height); - freeList.add(candidate); - } - - coalesceFreeList(); - - return true; - } - } - - return false; - } - - /** Removes the given Rect from this Level. */ - public boolean remove(Rect rect) { - if (!rects.remove(rect)) - return false; - - // If this is the rightmost rectangle, instead of adding its space - // to the free list, we can just decrease the nextAddX - if (rect.maxX() + 1 == nextAddX) { - nextAddX -= rect.w(); - } else { - if (freeList == null) { - freeList = new ArrayList/*<Rect>*/(); - } - freeList.add(new Rect(rect.x(), rect.y(), rect.w(), height, null)); - coalesceFreeList(); - } - - return true; - } - - /** Indicates whether this Level contains no rectangles. */ - public boolean isEmpty() { - return rects.isEmpty(); - } - - /** Indicates whether this Level could satisfy an allocation request - if it were compacted. */ - public boolean couldAllocateIfCompacted(Rect rect) { - if (rect.h() > height) - return false; - if (freeList == null) - return false; - int freeListWidth = 0; - for (Iterator iter = freeList.iterator(); iter.hasNext(); ) { - Rect cur = (Rect) iter.next(); - freeListWidth += cur.w(); - } - // Add on the remaining space at the end - freeListWidth += (width - nextAddX); - return (freeListWidth >= rect.w()); - } - - public void compact(Object backingStore, BackingStoreManager manager) { - Collections.sort(rects, rectXComparator); - int nextCompactionDest = 0; - manager.beginMovement(backingStore, backingStore); - for (Iterator iter = rects.iterator(); iter.hasNext(); ) { - Rect cur = (Rect) iter.next(); - if (cur.x() != nextCompactionDest) { - manager.move(backingStore, cur, - backingStore, new Rect(nextCompactionDest, cur.y(), cur.w(), cur.h(), null)); - cur.setPosition(nextCompactionDest, cur.y()); - } - nextCompactionDest += cur.w(); - } - nextAddX = nextCompactionDest; - freeList.clear(); - manager.endMovement(backingStore, backingStore); - } - - public Iterator iterator() { - return rects.iterator(); - } - - /** Visits all Rects contained in this Level. */ - public void visit(RectVisitor visitor) { - for (Iterator iter = rects.iterator(); iter.hasNext(); ) { - Rect rect = (Rect) iter.next(); - visitor.visit(rect); - } - } - - /** Updates the references to the Rect objects in this Level with - the "next locations" of those Rects. This is actually used to - update the new Rects in a newly laid-out LevelSet with the - original Rects. */ - public void updateRectangleReferences() { - for (int i = 0; i < rects.size(); i++) { - Rect cur = (Rect) rects.get(i); - Rect next = cur.getNextLocation(); - next.setPosition(cur.x(), cur.y()); - if (cur.w() != next.w() || cur.h() != next.h()) - throw new RuntimeException("Unexpected disparity in rectangle sizes during updateRectangleReferences"); - rects.set(i, next); - } - } - - private void coalesceFreeList() { - if (freeList == null) - return; - if (freeList.isEmpty()) - return; - - // Try to coalesce adjacent free blocks in the free list - Collections.sort(freeList, rectXComparator); - int i = 0; - while (i < freeList.size() - 1) { - Rect r1 = (Rect) freeList.get(i); - Rect r2 = (Rect) freeList.get(i+1); - if (r1.maxX() + 1 == r2.x()) { - // Coalesce r1 and r2 into one block - freeList.remove(i+1); - r1.setSize(r1.w() + r2.w(), r1.h()); - } else { - ++i; - } - } - // See whether the last block bumps up against the addition point - Rect last = (Rect) freeList.get(freeList.size() - 1); - if (last.maxX() + 1 == nextAddX) { - nextAddX -= last.w(); - freeList.remove(freeList.size() - 1); - } - if (freeList.isEmpty()) { - freeList = null; - } - } - - //---------------------------------------------------------------------- - // Debugging functionality - // - - public void dumpFreeSpace() { - int freeListWidth = 0; - for (Iterator iter = freeList.iterator(); iter.hasNext(); ) { - Rect cur = (Rect) iter.next(); - System.err.println(" Free rectangle at " + cur); - freeListWidth += cur.w(); - } - // Add on the remaining space at the end - System.err.println(" Remaining free space " + (width - nextAddX)); - freeListWidth += (width - nextAddX); - System.err.println(" Total free space " + freeListWidth); - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/packrect/LevelSet.java b/src/jogl/classes/com/sun/opengl/util/packrect/LevelSet.java deleted file mode 100755 index 973980fdc..000000000 --- a/src/jogl/classes/com/sun/opengl/util/packrect/LevelSet.java +++ /dev/null @@ -1,213 +0,0 @@ -/* - * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.packrect; - -import java.util.*; - -/** Manages a list of Levels; this is the core data structure - contained within the RectanglePacker and encompasses the storage - algorithm for the contained Rects. */ - -public class LevelSet { - // Maintained in sorted order by increasing Y coordinate - private List/*<Level>*/ levels = new ArrayList/*<Level>*/(); - private int nextAddY; - private int w; - private int h; - - /** A LevelSet manages all of the backing store for a region of a - specified width and height. */ - public LevelSet(int w, int h) { - this.w = w; - this.h = h; - } - - public int w() { return w; } - public int h() { return h; } - - /** Returns true if the given rectangle was successfully added to - the LevelSet given its current dimensions, false if not. Caller - is responsible for performing compaction, expansion, etc. as a - consequence. */ - public boolean add(Rect rect) { - if (rect.w() > w) - return false; - - // Go in reverse order through the levels seeing whether we can - // trivially satisfy the allocation request - for (int i = levels.size() - 1; i >= 0; --i) { - Level level = (Level) levels.get(i); - if (level.add(rect)) - return true; - } - - // See whether compaction could satisfy this allocation. This - // increases the computational complexity of the addition process, - // but prevents us from expanding unnecessarily. - for (int i = levels.size() - 1; i >= 0; --i) { - Level level = (Level) levels.get(i); - if (level.couldAllocateIfCompacted(rect)) - return false; - } - - // OK, we need to either add a new Level or expand the backing - // store. Try to add a new Level. - if (nextAddY + rect.h() > h) - return false; - - Level newLevel = new Level(w, rect.h(), nextAddY, this); - levels.add(newLevel); - nextAddY += rect.h(); - boolean res = newLevel.add(rect); - if (!res) - throw new RuntimeException("Unexpected failure in addition to new Level"); - return true; - } - - /** Removes the given Rect from this LevelSet. */ - public boolean remove(Rect rect) { - for (int i = levels.size() - 1; i >= 0; --i) { - Level level = (Level) levels.get(i); - if (level.remove(rect)) - return true; - } - - return false; - } - - /** Allocates the given Rectangle, performing compaction of a Level - if necessary. This is the correct fallback path to {@link - #add(Rect)} above. Returns true if allocated successfully, false - otherwise (indicating the need to expand the backing store). */ - public boolean compactAndAdd(Rect rect, - Object backingStore, - BackingStoreManager manager) { - for (int i = levels.size() - 1; i >= 0; --i) { - Level level = (Level) levels.get(i); - if (level.couldAllocateIfCompacted(rect)) { - level.compact(backingStore, manager); - boolean res = level.add(rect); - if (!res) - throw new RuntimeException("Unexpected failure to add after compaction"); - return true; - } - } - - return false; - } - - /** Indicates whether it's legal to trivially increase the height of - the given Level. This is only possible if it's the last Level - added and there's enough room in the backing store. */ - public boolean canExpand(Level level, int height) { - if (levels.isEmpty()) - return false; // Should not happen - if (levels.get(levels.size() - 1) == level && - (h - nextAddY >= height - level.h())) - return true; - return false; - } - - public void expand(Level level, int oldHeight, int newHeight) { - nextAddY += (newHeight - oldHeight); - } - - /** Gets the used height of the levels in this LevelSet. */ - public int getUsedHeight() { - return nextAddY; - } - - /** Sets the height of this LevelSet. It is only legal to reduce the - height to greater than or equal to the currently used height. */ - public void setHeight(int height) throws IllegalArgumentException { - if (height < getUsedHeight()) { - throw new IllegalArgumentException("May not reduce height below currently used height"); - } - h = height; - } - - /** Returns the vertical fragmentation ratio of this LevelSet. This - is defined as the ratio of the sum of the heights of all - completely empty Levels divided by the overall used height of - the LevelSet. A high vertical fragmentation ratio indicates that - it may be profitable to perform a compaction. */ - public float verticalFragmentationRatio() { - int freeHeight = 0; - int usedHeight = getUsedHeight(); - if (usedHeight == 0) - return 0.0f; - for (Iterator iter = iterator(); iter.hasNext(); ) { - Level level = (Level) iter.next(); - if (level.isEmpty()) { - freeHeight += level.h(); - } - } - return (float) freeHeight / (float) usedHeight; - } - - public Iterator iterator() { - return levels.iterator(); - } - - /** Visits all Rects contained in this LevelSet. */ - public void visit(RectVisitor visitor) { - for (Iterator iter = levels.iterator(); iter.hasNext(); ) { - Level level = (Level) iter.next(); - level.visit(visitor); - } - } - - /** Updates the references to the Rect objects in this LevelSet with - the "next locations" of those Rects. This is actually used to - update the new Rects in a newly laid-out LevelSet with the - original Rects. */ - public void updateRectangleReferences() { - for (Iterator iter = levels.iterator(); iter.hasNext(); ) { - Level level = (Level) iter.next(); - level.updateRectangleReferences(); - } - } - - /** Clears out all Levels stored in this LevelSet. */ - public void clear() { - levels.clear(); - nextAddY = 0; - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/packrect/Rect.java b/src/jogl/classes/com/sun/opengl/util/packrect/Rect.java deleted file mode 100755 index 2f12981a6..000000000 --- a/src/jogl/classes/com/sun/opengl/util/packrect/Rect.java +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.packrect; - -/** Represents a rectangular region on the backing store. The edges of - the rectangle are the infinitely thin region between adjacent - pixels on the screen. The origin of the rectangle is its - upper-left corner. It is inclusive of the pixels on the top and - left edges and exclusive of the pixels on the bottom and right - edges. For example, a rect at position (0, 0) and of size (1, 1) - would include only the pixel at (0, 0). <P> - - Negative coordinates and sizes are not supported, since they make - no sense in the context of the packer, which deals only with - positively sized regions. <P> - - This class contains a user data field for efficient hookup to - external data structures as well as enough other hooks to - efficiently plug into the rectangle packer. */ - -public class Rect { - private int x; - private int y; - private int w; - private int h; - - // The level we're currently installed in in the parent - // RectanglePacker, or null if not hooked in to the table yet - private Level level; - - // The user's object this rectangle represents. - private Object userData; - - // Used transiently during re-layout of the backing store (when - // there is no room left due either to fragmentation or just being - // out of space) - private Rect nextLocation; - - public Rect() { - this(null); - } - - public Rect(Object userData) { - this(0, 0, 0, 0, userData); - } - - public Rect(int x, int y, int w, int h, Object userData) { - setPosition(x, y); - setSize(w, h); - setUserData(userData); - } - - public int x() { return x; } - public int y() { return y; } - public int w() { return w; } - public int h() { return h; } - public Object getUserData() { return userData; } - public Rect getNextLocation() { return nextLocation; } - - public void setPosition(int x, int y) { - if (x < 0) - throw new IllegalArgumentException("Negative x"); - if (y < 0) - throw new IllegalArgumentException("Negative y"); - this.x = x; - this.y = y; - } - - public void setSize(int w, int h) throws IllegalArgumentException { - if (w < 0) - throw new IllegalArgumentException("Negative width"); - if (h < 0) - throw new IllegalArgumentException("Negative height"); - this.w = w; - this.h = h; - } - - public void setUserData(Object obj) { userData = obj; } - public void setNextLocation(Rect nextLocation) { this.nextLocation = nextLocation; } - - // Helpers for computations. - - /** Returns the maximum x-coordinate contained within this - rectangle. Note that this returns a different result than Java - 2D's rectangles; for a rectangle of position (0, 0) and size (1, - 1) this will return 0, not 1. Returns -1 if the width of this - rectangle is 0. */ - public int maxX() { - if (w() < 1) - return -1; - return x() + w() - 1; - } - - /** Returns the maximum y-coordinate contained within this - rectangle. Note that this returns a different result than Java - 2D's rectangles; for a rectangle of position (0, 0) and size (1, - 1) this will return 0, not 1. Returns -1 if the height of this - rectangle is 0. */ - public int maxY() { - if (h() < 1) - return -1; - return y() + h() - 1; - } - - public boolean canContain(Rect other) { - return (w() >= other.w() && - h() >= other.h()); - } - - public String toString() { - return "[Rect x: " + x() + " y: " + y() + " w: " + w() + " h: " + h() + "]"; - } - - // Unclear whether it's a good idea to override hashCode and equals - // for these objects - /* - public boolean equals(Object other) { - if (other == null || (!(other instanceof Rect))) { - return false; - } - - Rect r = (Rect) other; - return (this.x() == r.x() && - this.y() == r.y() && - this.w() == r.w() && - this.h() == r.h()); - } - - public int hashCode() { - return (x + y * 13 + w * 17 + h * 23); - } - */ -} diff --git a/src/jogl/classes/com/sun/opengl/util/packrect/RectVisitor.java b/src/jogl/classes/com/sun/opengl/util/packrect/RectVisitor.java deleted file mode 100755 index 8f395ed99..000000000 --- a/src/jogl/classes/com/sun/opengl/util/packrect/RectVisitor.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.packrect; - -/** Iteration construct without exposing the internals of the - RectanglePacker and without implementing a complex Iterator. */ - -public interface RectVisitor { - public void visit(Rect rect); -} diff --git a/src/jogl/classes/com/sun/opengl/util/packrect/RectanglePacker.java b/src/jogl/classes/com/sun/opengl/util/packrect/RectanglePacker.java deleted file mode 100755 index 51e6842c0..000000000 --- a/src/jogl/classes/com/sun/opengl/util/packrect/RectanglePacker.java +++ /dev/null @@ -1,306 +0,0 @@ -/* - * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.packrect; - -import java.util.*; - -/** Packs rectangles supplied by the user (typically representing - image regions) into a larger backing store rectangle (typically - representing a large texture). Supports automatic compaction of - the space on the backing store, and automatic expansion of the - backing store, when necessary. */ - -public class RectanglePacker { - private BackingStoreManager manager; - private Object backingStore; - private LevelSet levels; - private float EXPANSION_FACTOR = 0.5f; - private float SHRINK_FACTOR = 0.3f; - - private int initialWidth; - private int initialHeight; - - private int maxWidth = -1; - private int maxHeight = -1; - - static class RectHComparator implements Comparator { - public int compare(Object o1, Object o2) { - Rect r1 = (Rect) o1; - Rect r2 = (Rect) o2; - return r2.h() - r1.h(); - } - - public boolean equals(Object obj) { - return this == obj; - } - } - private static final Comparator rectHComparator = new RectHComparator(); - - public RectanglePacker(BackingStoreManager manager, - int initialWidth, - int initialHeight) { - this.manager = manager; - levels = new LevelSet(initialWidth, initialHeight); - this.initialWidth = initialWidth; - this.initialHeight = initialHeight; - } - - public Object getBackingStore() { - if (backingStore == null) { - backingStore = manager.allocateBackingStore(levels.w(), levels.h()); - } - - return backingStore; - } - - /** Sets up a maximum width and height for the backing store. These - are optional and if not specified the backing store will grow as - necessary. Setting up a maximum width and height introduces the - possibility that additions will fail; these are handled with the - BackingStoreManager's allocationFailed notification. */ - public void setMaxSize(int maxWidth, int maxHeight) { - this.maxWidth = maxWidth; - this.maxHeight = maxHeight; - } - - /** Decides upon an (x, y) position for the given rectangle (leaving - its width and height unchanged) and places it on the backing - store. May provoke re-layout of other Rects already added. If - the BackingStoreManager does not support compaction, and {@link - BackingStoreManager#preExpand BackingStoreManager.preExpand} - does not clear enough space for the incoming rectangle, then - this method will throw a RuntimeException. */ - public void add(Rect rect) throws RuntimeException { - // Allocate backing store if we don't have any yet - if (backingStore == null) - backingStore = manager.allocateBackingStore(levels.w(), levels.h()); - - int attemptNumber = 0; - boolean tryAgain = false; - - do { - // Try to allocate - if (levels.add(rect)) - return; - - if (manager.canCompact()) { - // Try to allocate with horizontal compaction - if (levels.compactAndAdd(rect, backingStore, manager)) - return; - // Let the manager have a chance at potentially evicting some entries - tryAgain = manager.preExpand(rect, attemptNumber++); - } else { - tryAgain = manager.additionFailed(rect, attemptNumber++); - } - } while (tryAgain); - - if (!manager.canCompact()) { - throw new RuntimeException("BackingStoreManager does not support compaction or expansion, and didn't clear space for new rectangle"); - } - - compactImpl(rect); - - // Retry the addition of the incoming rectangle - add(rect); - // Done - } - - /** Removes the given rectangle from this RectanglePacker. */ - public void remove(Rect rect) { - levels.remove(rect); - } - - /** Visits all Rects contained in this RectanglePacker. */ - public void visit(RectVisitor visitor) { - levels.visit(visitor); - } - - /** Returns the vertical fragmentation ratio of this - RectanglePacker. This is defined as the ratio of the sum of the - heights of all completely empty Levels divided by the overall - used height of the LevelSet. A high vertical fragmentation ratio - indicates that it may be profitable to perform a compaction. */ - public float verticalFragmentationRatio() { - return levels.verticalFragmentationRatio(); - } - - /** Forces a compaction cycle, which typically results in allocating - a new backing store and copying all entries to it. */ - public void compact() { - compactImpl(null); - } - - // The "cause" rect may be null - private void compactImpl(Rect cause) { - // Have to either expand, compact or both. Need to figure out what - // direction to go. Prefer to expand vertically. Expand - // horizontally only if rectangle being added is too wide. FIXME: - // may want to consider rebalancing the width and height to be - // more equal if it turns out we keep expanding in the vertical - // direction. - boolean done = false; - int newWidth = levels.w(); - int newHeight = levels.h(); - LevelSet nextLevelSet = null; - int attemptNumber = 0; - boolean needAdditionFailureNotification = false; - - while (!done) { - if (cause != null) { - if (cause.w() > newWidth) { - newWidth = cause.w(); - } else { - newHeight = (int) (newHeight * (1.0f + EXPANSION_FACTOR)); - } - } - - // Clamp to maximum values - needAdditionFailureNotification = false; - if (maxWidth > 0 && newWidth > maxWidth) { - newWidth = maxWidth; - needAdditionFailureNotification = true; - } - if (maxHeight > 0 && newHeight > maxHeight) { - newHeight = maxHeight; - needAdditionFailureNotification = true; - } - - nextLevelSet = new LevelSet(newWidth, newHeight); - - // Make copies of all existing rectangles - List/*<Rect>*/ newRects = new ArrayList/*<Rect>*/(); - for (Iterator i1 = levels.iterator(); i1.hasNext(); ) { - Level level = (Level) i1.next(); - for (Iterator i2 = level.iterator(); i2.hasNext(); ) { - Rect cur = (Rect) i2.next(); - Rect newRect = new Rect(0, 0, cur.w(), cur.h(), null); - cur.setNextLocation(newRect); - // Hook up the reverse mapping too for easier replacement - newRect.setNextLocation(cur); - newRects.add(newRect); - } - } - // Sort them by decreasing height (note: this isn't really - // guaranteed to improve the chances of a successful layout) - Collections.sort(newRects, rectHComparator); - // Try putting all of these rectangles into the new level set - done = true; - for (Iterator iter = newRects.iterator(); iter.hasNext(); ) { - if (!nextLevelSet.add((Rect) iter.next())) { - done = false; - break; - } - } - - if (done && cause != null) { - // Try to add the new rectangle as well - if (nextLevelSet.add(cause)) { - // We're OK - } else { - done = false; - } - } - - // Don't send addition failure notifications if we're only doing - // a compaction - if (!done && needAdditionFailureNotification && cause != null) { - manager.additionFailed(cause, attemptNumber); - } - ++attemptNumber; - } - - // See whether the implicit compaction that just occurred has - // yielded excess empty space. - if (nextLevelSet.getUsedHeight() > 0 && - nextLevelSet.getUsedHeight() < nextLevelSet.h() * SHRINK_FACTOR) { - int shrunkHeight = Math.max(initialHeight, - (int) (nextLevelSet.getUsedHeight() * (1.0f + EXPANSION_FACTOR))); - if (maxHeight > 0 && shrunkHeight > maxHeight) { - shrunkHeight = maxHeight; - } - nextLevelSet.setHeight(shrunkHeight); - } - - // If we temporarily added the new rectangle to the new LevelSet, - // take it out since we don't "really" add it here but in add(), above - if (cause != null) { - nextLevelSet.remove(cause); - } - - // OK, now we have a new layout and a mapping from the old to the - // new locations of rectangles on the backing store. Allocate a - // new backing store, move the contents over and deallocate the - // old one. - Object newBackingStore = manager.allocateBackingStore(nextLevelSet.w(), - nextLevelSet.h()); - manager.beginMovement(backingStore, newBackingStore); - for (Iterator i1 = levels.iterator(); i1.hasNext(); ) { - Level level = (Level) i1.next(); - for (Iterator i2 = level.iterator(); i2.hasNext(); ) { - Rect cur = (Rect) i2.next(); - manager.move(backingStore, cur, - newBackingStore, cur.getNextLocation()); - } - } - // Replace references to temporary rectangles with original ones - nextLevelSet.updateRectangleReferences(); - manager.endMovement(backingStore, newBackingStore); - // Now delete the old backing store - manager.deleteBackingStore(backingStore); - // Update to new versions of backing store and LevelSet - backingStore = newBackingStore; - levels = nextLevelSet; - } - - /** Clears all Rects contained in this RectanglePacker. */ - public void clear() { - levels.clear(); - } - - /** Disposes the backing store allocated by the - BackingStoreManager. This RectanglePacker may no longer be used - after calling this method. */ - public void dispose() { - if (backingStore != null) - manager.deleteBackingStore(backingStore); - backingStore = null; - levels = null; - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/packrect/package.html b/src/jogl/classes/com/sun/opengl/util/packrect/package.html deleted file mode 100755 index c1c5db477..000000000 --- a/src/jogl/classes/com/sun/opengl/util/packrect/package.html +++ /dev/null @@ -1,9 +0,0 @@ -<BODY> -This package implements a rectangle packing algorithm suitable for -tracking the placement of multiple rectangles inside a larger one. It -is useful for cases such as placing the contents of multiple windows -on a larger backing store texture for a compositing window manager; -placing multiple rasterized strings in a texture map for quick -rendering to the screen; and many other situations where it is useful -to carve up a larger texture into smaller pieces dynamically. <P> -</BODY> diff --git a/src/jogl/classes/com/sun/opengl/util/texture/Texture.java b/src/jogl/classes/com/sun/opengl/util/texture/Texture.java deleted file mode 100755 index 3a2799cf3..000000000 --- a/src/jogl/classes/com/sun/opengl/util/texture/Texture.java +++ /dev/null @@ -1,1120 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - */ - -package com.sun.opengl.util.texture; - -import java.nio.*; -import java.security.*; - -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import javax.media.nativewindow.NativeWindowFactory; -import com.sun.opengl.impl.*; -import com.sun.opengl.util.texture.*; -import com.sun.opengl.util.texture.spi.*; - -/** - * Represents an OpenGL texture object. Contains convenience routines - * for enabling/disabling OpenGL texture state, binding this texture, - * and computing texture coordinates for both the entire image as well - * as a sub-image. - * - * <p><a name="nonpow2"><b>Non-power-of-two restrictions</b></a> - * <br> When creating an OpenGL texture object, the Texture class will - * attempt to leverage the <a - * href="http://www.opengl.org/registry/specs/ARB/texture_non_power_of_two.txt">GL_ARB_texture_non_power_of_two</a> - * and <a - * href="http://www.opengl.org/registry/specs/ARB/texture_rectangle.txt">GL_ARB_texture_rectangle</a> - * extensions (in that order) whenever possible. If neither extension - * is available, the Texture class will simply upload a non-pow2-sized - * image into a standard pow2-sized texture (without any special - * scaling). Since the choice of extension (or whether one is used at - * all) depends on the user's machine configuration, developers are - * recommended to use {@link #getImageTexCoords} and {@link - * #getSubImageTexCoords}, as those methods will calculate the - * appropriate texture coordinates for the situation. - * - * <p>One caveat in this approach is that certain texture wrap modes - * (e.g. <code>GL_REPEAT</code>) are not legal when the GL_ARB_texture_rectangle - * extension is in use. Another issue to be aware of is that in the - * default pow2 scenario, if the original image does not have pow2 - * dimensions, then wrapping may not work as one might expect since - * the image does not extend to the edges of the pow2 texture. If - * texture wrapping is important, it is recommended to use only - * pow2-sized images with the Texture class. - * - * <p><a name="perftips"><b>Performance Tips</b></a> - * <br> For best performance, try to avoid calling {@link #enable} / - * {@link #bind} / {@link #disable} any more than necessary. For - * example, applications using many Texture objects in the same scene - * may want to reduce the number of calls to both {@link #enable} and - * {@link #disable}. To do this it is necessary to call {@link - * #getTarget} to make sure the OpenGL texture target is the same for - * all of the Texture objects in use; non-power-of-two textures using - * the GL_ARB_texture_rectangle extension use a different target than - * power-of-two textures using the GL_TEXTURE_2D target. Note that - * when switching between textures it is necessary to call {@link - * #bind}, but when drawing many triangles all using the same texture, - * for best performance only one call to {@link #bind} should be made. - * - * <p><a name="premult"><b>Alpha premultiplication and blending</b></a> - * <br> The mathematically correct way to perform blending in OpenGL - * (with the SrcOver "source over destination" mode, or any other - * Porter-Duff rule) is to use "premultiplied color components", which - * means the R/G/ B color components have already been multiplied by - * the alpha value. To make things easier for developers, the Texture - * class will automatically convert non-premultiplied image data into - * premultiplied data when storing it into an OpenGL texture. As a - * result, it is important to use the correct blending function; for - * example, the SrcOver rule is expressed as: -<pre> - gl.glBlendFunc(GL.GL_ONE, GL.GL_ONE_MINUS_SRC_ALPHA); -</pre> - * Also, when using a texture function like <code>GL_MODULATE</code> where - * the current color plays a role, it is important to remember to make - * sure that the color is specified in a premultiplied form, for - * example: -<pre> - float a = ...; - float r = r * a; - float g = g * a; - float b = b * a; - gl.glColor4f(r, g, b, a); -</pre> - * - * For reference, here is a list of the Porter-Duff compositing rules - * and the associated OpenGL blend functions (source and destination - * factors) to use in the face of premultiplied alpha: - * -<CENTER> -<TABLE WIDTH="75%"> -<TR> <TD> Rule <TD> Source <TD> Dest -<TR> <TD> Clear <TD> GL_ZERO <TD> GL_ZERO -<TR> <TD> Src <TD> GL_ONE <TD> GL_ZERO -<TR> <TD> SrcOver <TD> GL_ONE <TD> GL_ONE_MINUS_SRC_ALPHA -<TR> <TD> DstOver <TD> GL_ONE_MINUS_DST_ALPHA <TD> GL_ONE -<TR> <TD> SrcIn <TD> GL_DST_ALPHA <TD> GL_ZERO -<TR> <TD> DstIn <TD> GL_ZERO <TD> GL_SRC_ALPHA -<TR> <TD> SrcOut <TD> GL_ONE_MINUS_DST_ALPHA <TD> GL_ZERO -<TR> <TD> DstOut <TD> GL_ZERO <TD> GL_ONE_MINUS_SRC_ALPHA -<TR> <TD> Dst <TD> GL_ZERO <TD> GL_ONE -<TR> <TD> SrcAtop <TD> GL_DST_ALPHA <TD> GL_ONE_MINUS_SRC_ALPHA -<TR> <TD> DstAtop <TD> GL_ONE_MINUS_DST_ALPHA <TD> GL_SRC_ALPHA -<TR> <TD> AlphaXor <TD> GL_ONE_MINUS_DST_ALPHA <TD> GL_ONE_MINUS_SRC_ALPHA -</TABLE> -</CENTER> - * - * @author Chris Campbell - * @author Kenneth Russell - */ -public class Texture { - /** The GL target type. */ - private int target; - /** The GL texture ID. */ - private int texID; - /** The width of the texture. */ - private int texWidth; - /** The height of the texture. */ - private int texHeight; - /** The width of the image. */ - private int imgWidth; - /** The height of the image. */ - private int imgHeight; - /** The original aspect ratio of the image, before any rescaling - that might have occurred due to using the GLU mipmap routines. */ - private float aspectRatio; - /** Indicates whether the TextureData requires a vertical flip of - the texture coords. */ - private boolean mustFlipVertically; - /** Indicates whether we're using automatic mipmap generation - support (GL_GENERATE_MIPMAP). */ - private boolean usingAutoMipmapGeneration; - - /** The texture coordinates corresponding to the entire image. */ - private TextureCoords coords; - - /** An estimate of the amount of texture memory this texture consumes. */ - private int estimatedMemorySize; - - private static final AccessControlContext localACC = AccessController.getContext(); - - private static final boolean DEBUG = Debug.debug("Texture"); - private static final boolean VERBOSE = Debug.verbose(); - - // For testing alternate code paths on more capable hardware - private static final boolean disableNPOT = Debug.isPropertyDefined("jogl.texture.nonpot", true, localACC); - private static final boolean disableTexRect = Debug.isPropertyDefined("jogl.texture.notexrect", true, localACC); - - public Texture(TextureData data) throws GLException { - texID = 0; - updateImage(data); - } - - // Constructor for use when creating e.g. cube maps, where there is - // no initial texture data - public Texture(int target) throws GLException { - texID = 0; - this.target = target; - } - - // Package-private constructor for creating a texture object which wraps - // an existing texture ID from another package - Texture(int textureID, - int target, - int texWidth, - int texHeight, - int imgWidth, - int imgHeight, - boolean mustFlipVertically) { - this.texID = textureID; - this.target = target; - this.mustFlipVertically = mustFlipVertically; - this.texWidth = texWidth; - this.texHeight = texHeight; - setImageSize(imgWidth, imgHeight, target); - } - - /** - * Enables this texture's target (e.g., GL_TEXTURE_2D) in the - * current GL context's state. This method is a shorthand equivalent - * of the following OpenGL code: - <pre> - gl.glEnable(texture.getTarget()); - </pre> - * - * See the <a href="#perftips">performance tips</a> above for hints - * on how to maximize performance when using many Texture objects. - * - * @throws GLException if no OpenGL context was current or if any - * OpenGL-related errors occurred - */ - public void enable() throws GLException { - GLContext.getCurrentGL().glEnable(target); - } - - /** - * Disables this texture's target (e.g., GL_TEXTURE_2D) in the - * current GL context's state. This method is a shorthand equivalent - * of the following OpenGL code: - <pre> - gl.glDisable(texture.getTarget()); - </pre> - * - * See the <a href="#perftips">performance tips</a> above for hints - * on how to maximize performance when using many Texture objects. - * - * @throws GLException if no OpenGL context was current or if any - * OpenGL-related errors occurred - */ - public void disable() throws GLException { - GLContext.getCurrentGL().glDisable(target); - } - - /** - * Binds this texture to the current GL context. This method is a - * shorthand equivalent of the following OpenGL code: - <pre> - gl.glBindTexture(texture.getTarget(), texture.getTextureObject()); - </pre> - * - * See the <a href="#perftips">performance tips</a> above for hints - * on how to maximize performance when using many Texture objects. - * - * @throws GLException if no OpenGL context was current or if any - * OpenGL-related errors occurred - */ - public void bind() throws GLException { - validateTexID(null, true); - GLContext.getCurrentGL().glBindTexture(target, texID); - } - - /** - * Disposes the native resources used by this texture object. - * - * @throws GLException if no OpenGL context was current or if any - * OpenGL-related errors occurred - * @deprecated use destroy(GL) - */ - public void dispose() throws GLException { - destroy(GLContext.getCurrentGL()); - } - - /** - * Disposes the native resources used by this texture object. - * - * @throws GLException if any OpenGL-related errors occurred - * @deprecated use destroy(GL) - */ - public void dispose(GL gl) throws GLException { - destroy(gl); - } - - /** - * Destroys the native resources used by this texture object. - * - * @throws GLException if any OpenGL-related errors occurred - */ - public void destroy(GL gl) throws GLException { - if(0<texID) { - gl.glDeleteTextures(1, new int[] {texID}, 0); - texID = 0; - } - } - - /** - * Returns the OpenGL "target" of this texture. - * - * @return the OpenGL target of this texture - * @see javax.media.opengl.GL#GL_TEXTURE_2D - * @see javax.media.opengl.GL2#GL_TEXTURE_RECTANGLE_ARB - */ - public int getTarget() { - return target; - } - - /** - * Returns the width of the allocated OpenGL texture in pixels. - * Note that the texture width will be greater than or equal to the - * width of the image contained within. - * - * @return the width of the texture - */ - public int getWidth() { - return texWidth; - } - - /** - * Returns the height of the allocated OpenGL texture in pixels. - * Note that the texture height will be greater than or equal to the - * height of the image contained within. - * - * @return the height of the texture - */ - public int getHeight() { - return texHeight; - } - - /** - * Returns the width of the image contained within this texture. - * Note that for non-power-of-two textures in particular this may - * not be equal to the result of {@link #getWidth}. It is - * recommended that applications call {@link #getImageTexCoords} and - * {@link #getSubImageTexCoords} rather than using this API - * directly. - * - * @return the width of the image - */ - public int getImageWidth() { - return imgWidth; - } - - /** - * Returns the height of the image contained within this texture. - * Note that for non-power-of-two textures in particular this may - * not be equal to the result of {@link #getHeight}. It is - * recommended that applications call {@link #getImageTexCoords} and - * {@link #getSubImageTexCoords} rather than using this API - * directly. - * - * @return the height of the image - */ - public int getImageHeight() { - return imgHeight; - } - - /** - * Returns the original aspect ratio of the image, defined as (image - * width) / (image height), before any scaling that might have - * occurred as a result of using the GLU mipmap routines. - */ - public float getAspectRatio() { - return aspectRatio; - } - - /** - * Returns the set of texture coordinates corresponding to the - * entire image. If the TextureData indicated that the texture - * coordinates must be flipped vertically, the returned - * TextureCoords will take that into account. - * - * @return the texture coordinates corresponding to the entire image - */ - public TextureCoords getImageTexCoords() { - return coords; - } - - /** - * Returns the set of texture coordinates corresponding to the - * specified sub-image. The (x1, y1) and (x2, y2) points are - * specified in terms of pixels starting from the lower-left of the - * image. (x1, y1) should specify the lower-left corner of the - * sub-image and (x2, y2) the upper-right corner of the sub-image. - * If the TextureData indicated that the texture coordinates must be - * flipped vertically, the returned TextureCoords will take that - * into account; this should not be handled by the end user in the - * specification of the y1 and y2 coordinates. - * - * @return the texture coordinates corresponding to the specified sub-image - */ - public TextureCoords getSubImageTexCoords(int x1, int y1, int x2, int y2) { - if (target == GL2.GL_TEXTURE_RECTANGLE_ARB) { - if (mustFlipVertically) { - return new TextureCoords(x1, texHeight - y1, x2, texHeight - y2); - } else { - return new TextureCoords(x1, y1, x2, y2); - } - } else { - float tx1 = (float)x1 / (float)texWidth; - float ty1 = (float)y1 / (float)texHeight; - float tx2 = (float)x2 / (float)texWidth; - float ty2 = (float)y2 / (float)texHeight; - if (mustFlipVertically) { - float yMax = (float) imgHeight / (float) texHeight; - return new TextureCoords(tx1, yMax - ty1, tx2, yMax - ty2); - } else { - return new TextureCoords(tx1, ty1, tx2, ty2); - } - } - } - - /** - * Updates the entire content area of this texture using the data in - * the given image. - * - * @throws GLException if no OpenGL context was current or if any - * OpenGL-related errors occurred - */ - public void updateImage(TextureData data) throws GLException { - updateImage(data, 0); - } - - /** - * Indicates whether this texture's texture coordinates must be - * flipped vertically in order to properly display the texture. This - * is handled automatically by {@link #getImageTexCoords - * getImageTexCoords} and {@link #getSubImageTexCoords - * getSubImageTexCoords}, but applications may generate or otherwise - * produce texture coordinates which must be corrected. - */ - public boolean getMustFlipVertically() { - return mustFlipVertically; - } - - /** - * Updates the content area of the specified target of this texture - * using the data in the given image. In general this is intended - * for construction of cube maps. - * - * @throws GLException if no OpenGL context was current or if any - * OpenGL-related errors occurred - */ - public void updateImage(TextureData data, int target) throws GLException { - GL gl = GLContext.getCurrentGL(); - validateTexID(gl, true); - - imgWidth = data.getWidth(); - imgHeight = data.getHeight(); - aspectRatio = (float) imgWidth / (float) imgHeight; - mustFlipVertically = data.getMustFlipVertically(); - - int texTarget = 0; - int texParamTarget = this.target; - - // See whether we have automatic mipmap generation support - boolean haveAutoMipmapGeneration = - (gl.isExtensionAvailable("GL_VERSION_1_4") || - gl.isExtensionAvailable("GL_SGIS_generate_mipmap")); - - // Indicate to the TextureData what functionality is available - data.setHaveEXTABGR(gl.isExtensionAvailable("GL_EXT_abgr")); - data.setHaveGL12(gl.isExtensionAvailable("GL_VERSION_1_2")); - - // Indicates whether both width and height are power of two - boolean isPOT = isPowerOfTwo(imgWidth) && isPowerOfTwo(imgHeight); - - // Note that automatic mipmap generation doesn't work for - // GL_ARB_texture_rectangle - if (!isPOT && !haveNPOT(gl)) { - haveAutoMipmapGeneration = false; - } - - boolean expandingCompressedTexture = false; - boolean done = false; - if (data.getMipmap() && !haveAutoMipmapGeneration) { - // GLU always scales the texture's dimensions to be powers of - // two. It also doesn't really matter exactly what the texture - // width and height are because the texture coords are always - // between 0.0 and 1.0. - imgWidth = nextPowerOfTwo(imgWidth); - imgHeight = nextPowerOfTwo(imgHeight); - texWidth = imgWidth; - texHeight = imgHeight; - texTarget = GL.GL_TEXTURE_2D; - done = true; - } - - if (!done && preferTexRect(gl) && !isPOT && - haveTexRect(gl) && !data.isDataCompressed() && gl.isGL2()) { - // GL_ARB_texture_rectangle does not work for compressed textures - if (DEBUG) { - System.err.println("Using GL_ARB_texture_rectangle preferentially on this hardware"); - } - - texWidth = imgWidth; - texHeight = imgHeight; - texTarget = GL2.GL_TEXTURE_RECTANGLE_ARB; - done = true; - } - - if (!done && (isPOT || haveNPOT(gl))) { - if (DEBUG) { - if (isPOT) { - System.err.println("Power-of-two texture"); - } else { - System.err.println("Using GL_ARB_texture_non_power_of_two"); - } - } - - texWidth = imgWidth; - texHeight = imgHeight; - texTarget = GL.GL_TEXTURE_2D; - done = true; - } - - if (!done && haveTexRect(gl) && !data.isDataCompressed() && gl.isGL2()) { - // GL_ARB_texture_rectangle does not work for compressed textures - if (DEBUG) { - System.err.println("Using GL_ARB_texture_rectangle"); - } - - texWidth = imgWidth; - texHeight = imgHeight; - texTarget = GL2.GL_TEXTURE_RECTANGLE_ARB; - done = true; - } - - if (!done) { - // If we receive non-power-of-two compressed texture data and - // don't have true hardware support for compressed textures, we - // can fake this support by producing an empty "compressed" - // texture image, using glCompressedTexImage2D with that to - // allocate the texture, and glCompressedTexSubImage2D with the - // incoming data. - if (data.isDataCompressed()) { - if (data.getMipmapData() != null) { - - // We don't currently support expanding of compressed, - // mipmapped non-power-of-two textures to the nearest power - // of two; the obvious port of the non-mipmapped code didn't - // work - throw new GLException("Mipmapped non-power-of-two compressed textures only supported on OpenGL 2.0 hardware (GL_ARB_texture_non_power_of_two)"); - } - - expandingCompressedTexture = true; - } - - if (DEBUG) { - System.err.println("Expanding texture to power-of-two dimensions"); - } - - if (data.getBorder() != 0) { - throw new RuntimeException("Scaling up a non-power-of-two texture which has a border won't work"); - } - texWidth = nextPowerOfTwo(imgWidth); - texHeight = nextPowerOfTwo(imgHeight); - texTarget = GL.GL_TEXTURE_2D; - } - - texParamTarget = texTarget; - setImageSize(imgWidth, imgHeight, texTarget); - - if (target != 0) { - // Allow user to override auto detection and skip bind step (for - // cubemap construction) - texTarget = target; - if (this.target == 0) { - throw new GLException("Override of target failed; no target specified yet"); - } - texParamTarget = this.target; - gl.glBindTexture(texParamTarget, texID); - } else { - gl.glBindTexture(texTarget, texID); - } - - if (data.getMipmap() && !haveAutoMipmapGeneration) { - int[] align = new int[1]; - gl.glGetIntegerv(GL.GL_UNPACK_ALIGNMENT, align, 0); // save alignment - gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, data.getAlignment()); - - if (data.isDataCompressed()) { - throw new GLException("May not request mipmap generation for compressed textures"); - } - - try { - // FIXME: may need check for GLUnsupportedException - GLU glu = GLU.createGLU(gl); - glu.gluBuild2DMipmaps(texTarget, data.getInternalFormat(), - data.getWidth(), data.getHeight(), - data.getPixelFormat(), data.getPixelType(), data.getBuffer()); - } finally { - gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, align[0]); // restore alignment - } - } else { - checkCompressedTextureExtensions(data); - Buffer[] mipmapData = data.getMipmapData(); - if (mipmapData != null) { - int width = texWidth; - int height = texHeight; - for (int i = 0; i < mipmapData.length; i++) { - if (data.isDataCompressed()) { - // Need to use glCompressedTexImage2D directly to allocate and fill this image - // Avoid spurious memory allocation when possible - gl.glCompressedTexImage2D(texTarget, i, data.getInternalFormat(), - width, height, data.getBorder(), - mipmapData[i].remaining(), mipmapData[i]); - } else { - // Allocate texture image at this level - gl.glTexImage2D(texTarget, i, data.getInternalFormat(), - width, height, data.getBorder(), - data.getPixelFormat(), data.getPixelType(), null); - updateSubImageImpl(data, texTarget, i, 0, 0, 0, 0, data.getWidth(), data.getHeight()); - } - - width = Math.max(width / 2, 1); - height = Math.max(height / 2, 1); - } - } else { - if (data.isDataCompressed()) { - if (!expandingCompressedTexture) { - // Need to use glCompressedTexImage2D directly to allocate and fill this image - // Avoid spurious memory allocation when possible - gl.glCompressedTexImage2D(texTarget, 0, data.getInternalFormat(), - texWidth, texHeight, data.getBorder(), - data.getBuffer().capacity(), data.getBuffer()); - } else { - ByteBuffer buf = DDSImage.allocateBlankBuffer(texWidth, - texHeight, - data.getInternalFormat()); - gl.glCompressedTexImage2D(texTarget, 0, data.getInternalFormat(), - texWidth, texHeight, data.getBorder(), - buf.capacity(), buf); - updateSubImageImpl(data, texTarget, 0, 0, 0, 0, 0, data.getWidth(), data.getHeight()); - } - } else { - if (data.getMipmap() && haveAutoMipmapGeneration && gl.isGL2ES1()) { - // For now, only use hardware mipmapping for uncompressed 2D - // textures where the user hasn't explicitly specified - // mipmap data; don't know about interactions between - // GL_GENERATE_MIPMAP and glCompressedTexImage2D - gl.glTexParameteri(texParamTarget, GL2ES1.GL_GENERATE_MIPMAP, GL.GL_TRUE); - usingAutoMipmapGeneration = true; - } - - gl.glTexImage2D(texTarget, 0, data.getInternalFormat(), - texWidth, texHeight, data.getBorder(), - data.getPixelFormat(), data.getPixelType(), null); - updateSubImageImpl(data, texTarget, 0, 0, 0, 0, 0, data.getWidth(), data.getHeight()); - } - } - } - - int minFilter = (data.getMipmap() ? GL.GL_LINEAR_MIPMAP_LINEAR : GL.GL_LINEAR); - int magFilter = GL.GL_LINEAR; - int wrapMode = (gl.isExtensionAvailable("GL_VERSION_1_2") || !gl.isGL2()) ? GL.GL_CLAMP_TO_EDGE : GL2.GL_CLAMP; - - // REMIND: figure out what to do for GL_TEXTURE_RECTANGLE_ARB - if (texTarget != GL2.GL_TEXTURE_RECTANGLE_ARB) { - gl.glTexParameteri(texParamTarget, GL.GL_TEXTURE_MIN_FILTER, minFilter); - gl.glTexParameteri(texParamTarget, GL.GL_TEXTURE_MAG_FILTER, magFilter); - gl.glTexParameteri(texParamTarget, GL.GL_TEXTURE_WRAP_S, wrapMode); - gl.glTexParameteri(texParamTarget, GL.GL_TEXTURE_WRAP_T, wrapMode); - if (this.target == GL2.GL_TEXTURE_CUBE_MAP) { - gl.glTexParameteri(texParamTarget, GL2.GL_TEXTURE_WRAP_R, wrapMode); - } - } - - // Don't overwrite target if we're loading e.g. faces of a cube - // map - if ((this.target == 0) || - (this.target == GL.GL_TEXTURE_2D) || - (this.target == GL2.GL_TEXTURE_RECTANGLE_ARB)) { - this.target = texTarget; - } - - // This estimate will be wrong for cube maps - estimatedMemorySize = data.getEstimatedMemorySize(); - } - - /** - * Updates a subregion of the content area of this texture using the - * given data. If automatic mipmap generation is in use (see {@link - * #isUsingAutoMipmapGeneration isUsingAutoMipmapGeneration}), - * updates to the base (level 0) mipmap will cause the lower-level - * mipmaps to be regenerated, and updates to other mipmap levels - * will be ignored. Otherwise, if automatic mipmap generation is not - * in use, only updates the specified mipmap level and does not - * re-generate mipmaps if they were originally produced or loaded. - * - * @param data the image data to be uploaded to this texture - * @param mipmapLevel the mipmap level of the texture to set. If - * this is non-zero and the TextureData contains mipmap data, the - * appropriate mipmap level will be selected. - * @param x the x offset (in pixels) relative to the lower-left corner - * of this texture - * @param y the y offset (in pixels) relative to the lower-left corner - * of this texture - * - * @throws GLException if no OpenGL context was current or if any - * OpenGL-related errors occurred - */ - public void updateSubImage(TextureData data, int mipmapLevel, int x, int y) throws GLException { - if (usingAutoMipmapGeneration && mipmapLevel != 0) { - // When we're using mipmap generation via GL_GENERATE_MIPMAP, we - // don't need to update other mipmap levels - return; - } - bind(); - updateSubImageImpl(data, target, mipmapLevel, x, y, 0, 0, data.getWidth(), data.getHeight()); - } - - /** - * Updates a subregion of the content area of this texture using the - * specified sub-region of the given data. If automatic mipmap - * generation is in use (see {@link #isUsingAutoMipmapGeneration - * isUsingAutoMipmapGeneration}), updates to the base (level 0) - * mipmap will cause the lower-level mipmaps to be regenerated, and - * updates to other mipmap levels will be ignored. Otherwise, if - * automatic mipmap generation is not in use, only updates the - * specified mipmap level and does not re-generate mipmaps if they - * were originally produced or loaded. This method is only supported - * for uncompressed TextureData sources. - * - * @param data the image data to be uploaded to this texture - * @param mipmapLevel the mipmap level of the texture to set. If - * this is non-zero and the TextureData contains mipmap data, the - * appropriate mipmap level will be selected. - * @param dstx the x offset (in pixels) relative to the lower-left corner - * of this texture where the update will be applied - * @param dsty the y offset (in pixels) relative to the lower-left corner - * of this texture where the update will be applied - * @param srcx the x offset (in pixels) relative to the lower-left corner - * of the supplied TextureData from which to fetch the update rectangle - * @param srcy the y offset (in pixels) relative to the lower-left corner - * of the supplied TextureData from which to fetch the update rectangle - * @param width the width (in pixels) of the rectangle to be updated - * @param height the height (in pixels) of the rectangle to be updated - * - * @throws GLException if no OpenGL context was current or if any - * OpenGL-related errors occurred - */ - public void updateSubImage(TextureData data, int mipmapLevel, - int dstx, int dsty, - int srcx, int srcy, - int width, int height) throws GLException { - if (data.isDataCompressed()) { - throw new GLException("updateSubImage specifying a sub-rectangle is not supported for compressed TextureData"); - } - if (usingAutoMipmapGeneration && mipmapLevel != 0) { - // When we're using mipmap generation via GL_GENERATE_MIPMAP, we - // don't need to update other mipmap levels - return; - } - bind(); - updateSubImageImpl(data, target, mipmapLevel, dstx, dsty, srcx, srcy, width, height); - } - - /** - * Sets the OpenGL floating-point texture parameter for the - * texture's target. This gives control over parameters such as - * GL_TEXTURE_MAX_ANISOTROPY_EXT. Causes this texture to be bound to - * the current texture state. - * - * @throws GLException if no OpenGL context was current or if any - * OpenGL-related errors occurred - */ - public void setTexParameterf(int parameterName, - float value) { - bind(); - GL gl = GLContext.getCurrentGL(); - gl.glTexParameterf(target, parameterName, value); - } - - /** - * Sets the OpenGL multi-floating-point texture parameter for the - * texture's target. Causes this texture to be bound to the current - * texture state. - * - * @throws GLException if no OpenGL context was current or if any - * OpenGL-related errors occurred - */ - public void setTexParameterfv(int parameterName, - FloatBuffer params) { - bind(); - GL gl = GLContext.getCurrentGL(); - gl.glTexParameterfv(target, parameterName, params); - } - - /** - * Sets the OpenGL multi-floating-point texture parameter for the - * texture's target. Causes this texture to be bound to the current - * texture state. - * - * @throws GLException if no OpenGL context was current or if any - * OpenGL-related errors occurred - */ - public void setTexParameterfv(int parameterName, - float[] params, int params_offset) { - bind(); - GL gl = GLContext.getCurrentGL(); - gl.glTexParameterfv(target, parameterName, params, params_offset); - } - - /** - * Sets the OpenGL integer texture parameter for the texture's - * target. This gives control over parameters such as - * GL_TEXTURE_WRAP_S and GL_TEXTURE_WRAP_T, which by default are set - * to GL_CLAMP_TO_EDGE if OpenGL 1.2 is supported on the current - * platform and GL_CLAMP if not. Causes this texture to be bound to - * the current texture state. - * - * @throws GLException if no OpenGL context was current or if any - * OpenGL-related errors occurred - */ - public void setTexParameteri(int parameterName, - int value) { - bind(); - GL gl = GLContext.getCurrentGL(); - gl.glTexParameteri(target, parameterName, value); - } - - /** - * Sets the OpenGL multi-integer texture parameter for the texture's - * target. Causes this texture to be bound to the current texture - * state. - * - * @throws GLException if no OpenGL context was current or if any - * OpenGL-related errors occurred - */ - public void setTexParameteriv(int parameterName, - IntBuffer params) { - bind(); - GL gl = GLContext.getCurrentGL(); - gl.glTexParameteriv(target, parameterName, params); - } - - /** - * Sets the OpenGL multi-integer texture parameter for the texture's - * target. Causes this texture to be bound to the current texture - * state. - * - * @throws GLException if no OpenGL context was current or if any - * OpenGL-related errors occurred - */ - public void setTexParameteriv(int parameterName, - int[] params, int params_offset) { - bind(); - GL gl = GLContext.getCurrentGL(); - gl.glTexParameteriv(target, parameterName, params, params_offset); - } - - /** - * Returns the underlying OpenGL texture object for this texture. - * Most applications will not need to access this, since it is - * handled automatically by the bind() and dispose() APIs. - */ - public int getTextureObject() { - validateTexID(null, false); - return texID; - } - - /** Returns an estimate of the amount of texture memory in bytes - this Texture consumes. It should only be treated as an estimate; - most applications should not need to query this but instead let - the OpenGL implementation page textures in and out as - necessary. */ - public int getEstimatedMemorySize() { - return estimatedMemorySize; - } - - /** Indicates whether this Texture is using automatic mipmap - generation (via the OpenGL texture parameter - GL_GENERATE_MIPMAP). This will automatically be used when - mipmapping is requested via the TextureData and either OpenGL - 1.4 or the GL_SGIS_generate_mipmap extension is available. If - so, updates to the base image (mipmap level 0) will - automatically propagate down to the lower mipmap levels. Manual - updates of the mipmap data at these lower levels will be - ignored. */ - public boolean isUsingAutoMipmapGeneration() { - return usingAutoMipmapGeneration; - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - /** - * Returns true if the given value is a power of two. - * - * @return true if the given value is a power of two, false otherwise - */ - private static boolean isPowerOfTwo(int val) { - return ((val & (val - 1)) == 0); - } - - /** - * Returns the nearest power of two that is larger than the given value. - * If the given value is already a power of two, this method will simply - * return that value. - * - * @param val the value - * @return the next power of two - */ - private static int nextPowerOfTwo(int val) { - int ret = 1; - while (ret < val) { - ret <<= 1; - } - return ret; - } - - /** - * Updates the actual image dimensions; usually only called from - * <code>updateImage</code>. - */ - private void setImageSize(int width, int height, int target) { - imgWidth = width; - imgHeight = height; - if (target == GL2.GL_TEXTURE_RECTANGLE_ARB) { - if (mustFlipVertically) { - coords = new TextureCoords(0, imgHeight, imgWidth, 0); - } else { - coords = new TextureCoords(0, 0, imgWidth, imgHeight); - } - } else { - if (mustFlipVertically) { - coords = new TextureCoords(0, (float) imgHeight / (float) texHeight, - (float) imgWidth / (float) texWidth, 0); - } else { - coords = new TextureCoords(0, 0, - (float) imgWidth / (float) texWidth, - (float) imgHeight / (float) texHeight); - } - } - } - - private void updateSubImageImpl(TextureData data, int newTarget, int mipmapLevel, - int dstx, int dsty, - int srcx, int srcy, int width, int height) throws GLException { - GL gl = GLContext.getCurrentGL(); - data.setHaveEXTABGR(gl.isExtensionAvailable("GL_EXT_abgr")); - data.setHaveGL12(gl.isExtensionAvailable("GL_VERSION_1_2")); - - Buffer buffer = data.getBuffer(); - if (buffer == null && data.getMipmapData() == null) { - // Assume user just wanted to get the Texture object allocated - return; - } - - int rowlen = data.getRowLength(); - int dataWidth = data.getWidth(); - int dataHeight = data.getHeight(); - if (data.getMipmapData() != null) { - // Compute the width, height and row length at the specified mipmap level - // Note we do not support specification of the row length for - // mipmapped textures at this point - for (int i = 0; i < mipmapLevel; i++) { - width = Math.max(width / 2, 1); - height = Math.max(height / 2, 1); - - dataWidth = Math.max(dataWidth / 2, 1); - dataHeight = Math.max(dataHeight / 2, 1); - } - rowlen = 0; - buffer = data.getMipmapData()[mipmapLevel]; - } - - // Clip incoming rectangles to what is available both on this - // texture and in the incoming TextureData - if (srcx < 0) { - width += srcx; - srcx = 0; - } - if (srcy < 0) { - height += srcy; - srcy = 0; - } - // NOTE: not sure whether the following two are the correct thing to do - if (dstx < 0) { - width += dstx; - dstx = 0; - } - if (dsty < 0) { - height += dsty; - dsty = 0; - } - - if (srcx + width > dataWidth) { - width = dataWidth - srcx; - } - if (srcy + height > dataHeight) { - height = dataHeight - srcy; - } - if (dstx + width > texWidth) { - width = texWidth - dstx; - } - if (dsty + height > texHeight) { - height = texHeight - dsty; - } - - checkCompressedTextureExtensions(data); - - if (data.isDataCompressed()) { - gl.glCompressedTexSubImage2D(newTarget, mipmapLevel, - dstx, dsty, width, height, - data.getInternalFormat(), - buffer.remaining(), buffer); - } else { - int[] align = { 0 }; - int[] rowLength = { 0 }; - int[] skipRows = { 0 }; - int[] skipPixels = { 0 }; - gl.glGetIntegerv(GL.GL_UNPACK_ALIGNMENT, align, 0); // save alignment - if(gl.isGL2()) { - gl.glGetIntegerv(GL2.GL_UNPACK_ROW_LENGTH, rowLength, 0); // save row length - gl.glGetIntegerv(GL2.GL_UNPACK_SKIP_ROWS, skipRows, 0); // save skipped rows - gl.glGetIntegerv(GL2.GL_UNPACK_SKIP_PIXELS, skipPixels, 0); // save skipped pixels - } - gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, data.getAlignment()); - if (DEBUG && VERBOSE) { - System.out.println("Row length = " + rowlen); - System.out.println("skip pixels = " + srcx); - System.out.println("skip rows = " + srcy); - System.out.println("dstx = " + dstx); - System.out.println("dsty = " + dsty); - System.out.println("width = " + width); - System.out.println("height = " + height); - } - if(gl.isGL2()) { - gl.glPixelStorei(GL2.GL_UNPACK_ROW_LENGTH, rowlen); - gl.glPixelStorei(GL2.GL_UNPACK_SKIP_ROWS, srcy); - gl.glPixelStorei(GL2.GL_UNPACK_SKIP_PIXELS, srcx); - } else { - if ( rowlen!=0 && rowlen!=width && - srcy!=0 && srcx!=0 ) { - throw new GLException("rowlen and/or x/y offset only available for GL2"); - } - } - - gl.glTexSubImage2D(newTarget, mipmapLevel, - dstx, dsty, width, height, - data.getPixelFormat(), data.getPixelType(), - buffer); - gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, align[0]); // restore alignment - if(gl.isGL2()) { - gl.glPixelStorei(GL2.GL_UNPACK_ROW_LENGTH, rowLength[0]); // restore row length - gl.glPixelStorei(GL2.GL_UNPACK_SKIP_ROWS, skipRows[0]); // restore skipped rows - gl.glPixelStorei(GL2.GL_UNPACK_SKIP_PIXELS, skipPixels[0]); // restore skipped pixels - } - } - } - - private void checkCompressedTextureExtensions(TextureData data) { - GL gl = GLContext.getCurrentGL(); - if (data.isDataCompressed()) { - switch (data.getInternalFormat()) { - case GL.GL_COMPRESSED_RGB_S3TC_DXT1_EXT: - case GL.GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: - case GL.GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: - case GL.GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: - if (!gl.isExtensionAvailable("GL_EXT_texture_compression_s3tc") && - !gl.isExtensionAvailable("GL_NV_texture_compression_vtc")) { - throw new GLException("DXTn compressed textures not supported by this graphics card"); - } - break; - default: - // FI1027GXME: should test availability of more texture - // compression extensions here - break; - } - } - } - - private void validateTexID(GL gl, boolean throwException) { - if( 0 < texID ) return; - if(null==gl) { - GLContext ctx = GLContext.getCurrent(); - if(null!=ctx) { - gl = ctx.getGL(); - } else if(throwException) { - throw new GLException("No context current, can't create texture ID"); - } - } - - if(null!=gl) { - int[] tmp = new int[1]; - gl.glGenTextures(1, tmp, 0); - texID = tmp[0]; - } - } - - // Helper routines for disabling certain codepaths - private static boolean haveNPOT(GL gl) { - return (!disableNPOT && - ( gl.isGLES2() || - gl.isExtensionAvailable("GL_ARB_texture_non_power_of_two") ) ); - } - - private static boolean haveTexRect(GL gl) { - return (!disableTexRect && - TextureIO.isTexRectEnabled() && - gl.isExtensionAvailable("GL_ARB_texture_rectangle")); - } - - private static boolean preferTexRect(GL gl) { - // Prefer GL_ARB_texture_rectangle on ATI hardware on Mac OS X - // due to software fallbacks - - if (NativeWindowFactory.TYPE_MACOSX.equals(NativeWindowFactory.getNativeWindowType(false))) { - String vendor = gl.glGetString(GL.GL_VENDOR); - if (vendor != null && vendor.startsWith("ATI")) { - return true; - } - } - - return false; - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/texture/TextureCoords.java b/src/jogl/classes/com/sun/opengl/util/texture/TextureCoords.java deleted file mode 100755 index 51710e077..000000000 --- a/src/jogl/classes/com/sun/opengl/util/texture/TextureCoords.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - */ - -package com.sun.opengl.util.texture; - -/** Specifies texture coordinates for a rectangular area of a - texture. Note that some textures are inherently flipped vertically - from OpenGL's standard coordinate system. This class takes care of - this vertical flip so that the "bottom" and "top" coordinates may - sometimes be reversed. From the point of view of code rendering - textured polygons, it can always map the bottom and left texture - coordinates from the TextureCoords to the lower left point of the - textured polygon and achieve correct results. */ - -public class TextureCoords { - // These represent the lower-left point - private float left; - private float bottom; - // These represent the upper-right point - private float right; - private float top; - - public TextureCoords(float left, float bottom, - float right, float top) { - this.left = left; - this.bottom = bottom; - this.right = right; - this.top = top; - } - - /** Returns the leftmost (x) texture coordinate of this - rectangle. */ - public float left() { return left; } - - /** Returns the rightmost (x) texture coordinate of this - rectangle. */ - public float right() { return right; } - - /** Returns the bottommost (y) texture coordinate of this - rectangle. */ - public float bottom() { return bottom; } - - /** Returns the topmost (y) texture coordinate of this - rectangle. */ - public float top() { return top; } -} diff --git a/src/jogl/classes/com/sun/opengl/util/texture/TextureData.java b/src/jogl/classes/com/sun/opengl/util/texture/TextureData.java deleted file mode 100755 index 7899a2395..000000000 --- a/src/jogl/classes/com/sun/opengl/util/texture/TextureData.java +++ /dev/null @@ -1,370 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - */ - -package com.sun.opengl.util.texture; - -import java.nio.*; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; - -/** - * Represents the data for an OpenGL texture. This is separated from - * the notion of a Texture to support things like streaming in of - * textures in a background thread without requiring an OpenGL context - * to be current on that thread. - * - * @author Chris Campbell - * @author Kenneth Russell - * @author Sven Gothel - */ - -public class TextureData { - protected int width; - protected int height; - private int border; - protected int pixelFormat; - protected int pixelType; - protected int internalFormat; // perhaps inferred from pixelFormat? - protected boolean mipmap; // indicates whether mipmaps should be generated - // (ignored if mipmaps are supplied from the file) - private boolean dataIsCompressed; - protected boolean mustFlipVertically; // Must flip texture coordinates - // vertically to get OpenGL output - // to look correct - protected Buffer buffer; // the actual data... - private Buffer[] mipmapData; // ...or a series of mipmaps - private Flusher flusher; - protected int rowLength; - protected int alignment; // 1, 2, or 4 bytes - protected int estimatedMemorySize; - - // These booleans are a concession to the AWTTextureData subclass - protected boolean haveEXTABGR; - protected boolean haveGL12; - protected GLProfile glProfile; - - /** - * Constructs a new TextureData object with the specified parameters - * and data contained in the given Buffer. The optional Flusher can - * be used to clean up native resources associated with this - * TextureData when processing is complete; for example, closing of - * memory-mapped files that might otherwise require a garbage - * collection to reclaim and close. - * - * @param glp the OpenGL Profile this texture data should be - * created for. - * @param internalFormat the OpenGL internal format for the - * resulting texture; must be specified, may - * not be 0 - * @param width the width in pixels of the texture - * @param height the height in pixels of the texture - * @param border the number of pixels of border this texture - * data has (0 or 1) - * @param pixelFormat the OpenGL pixel format for the - * resulting texture; must be specified, may - * not be 0 - * @param pixelType the OpenGL type of the pixels of the texture - * @param mipmap indicates whether mipmaps should be - * autogenerated (using GLU) for the resulting - * texture. Currently if mipmap is true then - * dataIsCompressed may not be true. - * @param dataIsCompressed indicates whether the texture data is in - * compressed form - * (e.g. GL_COMPRESSED_RGB_S3TC_DXT1_EXT) - * @param mustFlipVertically indicates whether the texture - * coordinates must be flipped vertically - * in order to properly display the - * texture - * @param buffer the buffer containing the texture data - * @param flusher optional flusher to perform cleanup tasks - * upon call to flush() - * - * @throws IllegalArgumentException if any parameters of the texture - * data were invalid, such as requesting mipmap generation for a - * compressed texture - */ - public TextureData(GLProfile glp, - int internalFormat, - int width, - int height, - int border, - int pixelFormat, - int pixelType, - boolean mipmap, - boolean dataIsCompressed, - boolean mustFlipVertically, - Buffer buffer, - Flusher flusher) throws IllegalArgumentException { - if (mipmap && dataIsCompressed) { - throw new IllegalArgumentException("Can not generate mipmaps for compressed textures"); - } - - this.glProfile = glp; - this.width = width; - this.height = height; - this.border = border; - this.pixelFormat = pixelFormat; - this.pixelType = pixelType; - this.internalFormat = internalFormat; - this.mipmap = mipmap; - this.dataIsCompressed = dataIsCompressed; - this.mustFlipVertically = mustFlipVertically; - this.buffer = buffer; - this.flusher = flusher; - alignment = 1; // FIXME: is this correct enough in all situations? - estimatedMemorySize = estimatedMemorySize(buffer); - } - - /** - * Constructs a new TextureData object with the specified parameters - * and data for multiple mipmap levels contained in the given array - * of Buffers. The optional Flusher can be used to clean up native - * resources associated with this TextureData when processing is - * complete; for example, closing of memory-mapped files that might - * otherwise require a garbage collection to reclaim and close. - * - * @param glp the OpenGL Profile this texture data should be - * created for. - * @param internalFormat the OpenGL internal format for the - * resulting texture; must be specified, may - * not be 0 - * @param width the width in pixels of the topmost mipmap - * level of the texture - * @param height the height in pixels of the topmost mipmap - * level of the texture - * @param border the number of pixels of border this texture - * data has (0 or 1) - * @param pixelFormat the OpenGL pixel format for the - * resulting texture; must be specified, may - * not be 0 - * @param pixelType the OpenGL type of the pixels of the texture - * @param dataIsCompressed indicates whether the texture data is in - * compressed form - * (e.g. GL_COMPRESSED_RGB_S3TC_DXT1_EXT) - * @param mustFlipVertically indicates whether the texture - * coordinates must be flipped vertically - * in order to properly display the - * texture - * @param mipmapData the buffers containing all mipmap levels - * of the texture's data - * @param flusher optional flusher to perform cleanup tasks - * upon call to flush() - * - * @throws IllegalArgumentException if any parameters of the texture - * data were invalid, such as requesting mipmap generation for a - * compressed texture - */ - public TextureData(GLProfile glp, - int internalFormat, - int width, - int height, - int border, - int pixelFormat, - int pixelType, - boolean dataIsCompressed, - boolean mustFlipVertically, - Buffer[] mipmapData, - Flusher flusher) throws IllegalArgumentException { - this.glProfile = glp; - this.width = width; - this.height = height; - this.border = border; - this.pixelFormat = pixelFormat; - this.pixelType = pixelType; - this.internalFormat = internalFormat; - this.dataIsCompressed = dataIsCompressed; - this.mustFlipVertically = mustFlipVertically; - this.mipmapData = (Buffer[]) mipmapData.clone(); - this.flusher = flusher; - alignment = 1; // FIXME: is this correct enough in all situations? - for (int i = 0; i < mipmapData.length; i++) { - estimatedMemorySize += estimatedMemorySize(mipmapData[i]); - } - } - - /** Used only by subclasses */ - protected TextureData(GLProfile glp) { this.glProfile = glp; } - - /** Returns the width in pixels of the texture data. */ - public int getWidth() { return width; } - /** Returns the height in pixels of the texture data. */ - public int getHeight() { return height; } - /** Returns the border in pixels of the texture data. */ - public int getBorder() { - return border; - } - /** Returns the intended OpenGL pixel format of the texture data. */ - public int getPixelFormat() { - return pixelFormat; - } - /** Returns the intended OpenGL pixel type of the texture data. */ - public int getPixelType() { - return pixelType; - } - /** Returns the intended OpenGL internal format of the texture data. */ - public int getInternalFormat() { - return internalFormat; - } - /** Returns whether mipmaps should be generated for the texture data. */ - public boolean getMipmap() { - return mipmap; - } - /** Indicates whether the texture data is in compressed form. */ - public boolean isDataCompressed() { - return dataIsCompressed; - } - /** Indicates whether the texture coordinates must be flipped - vertically for proper display. */ - public boolean getMustFlipVertically() { - return mustFlipVertically; - } - /** Returns the texture data, or null if it is specified as a set of mipmaps. */ - public Buffer getBuffer() { - return buffer; - } - /** Returns all mipmap levels for the texture data, or null if it is - specified as a single image. */ - public Buffer[] getMipmapData() { - return mipmapData; - } - /** Returns the required byte alignment for the texture data. */ - public int getAlignment() { - return alignment; - } - /** Returns the row length needed for correct GL_UNPACK_ROW_LENGTH - specification. This is currently only supported for - non-mipmapped, non-compressed textures. */ - public int getRowLength() { - return rowLength; - } - - /** Sets the width in pixels of the texture data. */ - public void setWidth(int width) { this.width = width; } - /** Sets the height in pixels of the texture data. */ - public void setHeight(int height) { this.height = height; } - /** Sets the border in pixels of the texture data. */ - public void setBorder(int border) { this.border = border; } - /** Sets the intended OpenGL pixel format of the texture data. */ - public void setPixelFormat(int pixelFormat) { this.pixelFormat = pixelFormat; } - /** Sets the intended OpenGL pixel type of the texture data. */ - public void setPixelType(int pixelType) { this.pixelType = pixelType; } - /** Sets the intended OpenGL internal format of the texture data. */ - public void setInternalFormat(int internalFormat) { this.internalFormat = internalFormat; } - /** Sets whether mipmaps should be generated for the texture data. */ - public void setMipmap(boolean mipmap) { this.mipmap = mipmap; } - /** Sets whether the texture data is in compressed form. */ - public void setIsDataCompressed(boolean compressed) { this.dataIsCompressed = compressed; } - /** Sets whether the texture coordinates must be flipped vertically - for proper display. */ - public void setMustFlipVertically(boolean mustFlipVertically) { this.mustFlipVertically = mustFlipVertically; } - /** Sets the texture data. */ - public void setBuffer(Buffer buffer) { - this.buffer = buffer; - estimatedMemorySize = estimatedMemorySize(buffer); - } - /** Sets the required byte alignment for the texture data. */ - public void setAlignment(int alignment) { this.alignment = alignment; } - /** Sets the row length needed for correct GL_UNPACK_ROW_LENGTH - specification. This is currently only supported for - non-mipmapped, non-compressed textures. */ - public void setRowLength(int rowLength) { this.rowLength = rowLength; } - /** Indicates to this TextureData whether the GL_EXT_abgr extension - is available. Used for optimization along some code paths to - avoid data copies. */ - public void setHaveEXTABGR(boolean haveEXTABGR) { - this.haveEXTABGR = haveEXTABGR; - } - /** Indicates to this TextureData whether OpenGL version 1.2 is - available. If not, falls back to relatively inefficient code - paths for several input data types (several kinds of packed - pixel formats, in particular). */ - public void setHaveGL12(boolean haveGL12) { - this.haveGL12 = haveGL12; - } - - /** Returns the GLProfile this texture data is intended and created for. */ - public GLProfile getGLProfile() { return glProfile; } - - /** Returns an estimate of the amount of memory in bytes this - TextureData will consume once uploaded to the graphics card. It - should only be treated as an estimate; most applications should - not need to query this but instead let the OpenGL implementation - page textures in and out as necessary. */ - public int getEstimatedMemorySize() { - return estimatedMemorySize; - } - - /** Flushes resources associated with this TextureData by calling - Flusher.flush(). */ - public void flush() { - if (flusher != null) { - flusher.flush(); - flusher = null; - } - } - - /** Calls flush() - * @see #flush() - */ - public void destroy() { - flush(); - } - - /** Defines a callback mechanism to allow the user to explicitly - deallocate native resources (memory-mapped files, etc.) - associated with a particular TextureData. */ - public static interface Flusher { - /** Flushes any native resources associated with this - TextureData. */ - public void flush(); - } - - public String toString() { - return "TextureData["+width+"x"+height+", internFormat "+internalFormat+", pixelFormat "+pixelFormat+", pixelType "+pixelType+", border "+border+", estSize "+estimatedMemorySize+", alignment "+alignment+", rowlen "+rowLength; - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - protected static int estimatedMemorySize(Buffer buffer) { - if (buffer == null) { - return 0; - } - return buffer.capacity() * BufferUtil.sizeOfBufferElem(buffer); - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/texture/TextureIO.java.javame_cdc_fp b/src/jogl/classes/com/sun/opengl/util/texture/TextureIO.java.javame_cdc_fp deleted file mode 100755 index 5c64806fc..000000000 --- a/src/jogl/classes/com/sun/opengl/util/texture/TextureIO.java.javame_cdc_fp +++ /dev/null @@ -1,1256 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.texture; - -import java.io.*; -import java.net.*; -import java.nio.*; -import java.util.*; - -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import com.sun.opengl.impl.Debug; -import com.sun.opengl.util.*; -import com.sun.opengl.util.texture.spi.*; - -/** <P> Provides input and output facilities for both loading OpenGL - textures from disk and streams as well as writing textures already - in memory back to disk. </P> - - <P> The TextureIO class supports an arbitrary number of plug-in - readers and writers via TextureProviders and TextureWriters. - TextureProviders know how to produce TextureData objects from - files, InputStreams and URLs. TextureWriters know how to write - TextureData objects to disk in various file formats. The - TextureData class represents the raw data of the texture before it - has been converted to an OpenGL texture object. The Texture class - represents the OpenGL texture object and provides easy facilities - for using the texture. </P> - - <P> There are several built-in TextureProviders and TextureWriters - supplied with the TextureIO implementation. The most basic - provider uses the platform's Image I/O facilities to read in a - BufferedImage and convert it to a texture. This is the baseline - provider and is registered so that it is the last one consulted. - All others are asked first to open a given file. </P> - - <P> There are three other providers registered by default as of - the time of this writing. One handles SGI RGB (".sgi", ".rgb") - images from both files and streams. One handles DirectDraw Surface - (".dds") images read from files, though can not read these images - from streams. One handles Targa (".tga") images read from both - files and streams. These providers are executed in an arbitrary - order. Some of these providers require the file's suffix to either - be specified via the newTextureData methods or for the file to be - named with the appropriate suffix. In general a file suffix should - be provided to the newTexture and newTextureData methods if at all - possible. </P> - - <P> Note that additional TextureProviders, if reading images from - InputStreams, must use the mark()/reset() methods on InputStream - when probing for e.g. magic numbers at the head of the file to - make sure not to disturb the state of the InputStream for - downstream TextureProviders. </P> - - <P> There are analogous TextureWriters provided for writing - textures back to disk if desired. As of this writing, there are - four TextureWriters registered by default: one for Targa files, - one for SGI RGB files, one for DirectDraw surface (.dds) files, - and one for ImageIO-supplied formats such as .jpg and .png. Some - of these writers have certain limitations such as only being able - to write out textures stored in GL_RGB or GL_RGBA format. The DDS - writer supports fetching and writing to disk of texture data in - DXTn compressed format. Whether this will occur is dependent on - whether the texture's internal format is one of the DXTn - compressed formats and whether the target file is .dds format. -*/ - -public class TextureIO { - /** Constant which can be used as a file suffix to indicate a - DirectDraw Surface file. */ - public static final String DDS = "dds"; - - /** Constant which can be used as a file suffix to indicate an SGI - RGB file. */ - public static final String SGI = "sgi"; - - /** Constant which can be used as a file suffix to indicate an SGI - RGB file. */ - public static final String SGI_RGB = "rgb"; - - /** Constant which can be used as a file suffix to indicate a GIF - file. */ - public static final String GIF = "gif"; - - /** Constant which can be used as a file suffix to indicate a JPEG - file. */ - public static final String JPG = "jpg"; - - /** Constant which can be used as a file suffix to indicate a PNG - file. */ - public static final String PNG = "png"; - - /** Constant which can be used as a file suffix to indicate a Targa - file. */ - public static final String TGA = "tga"; - - /** Constant which can be used as a file suffix to indicate a TIFF - file. */ - public static final String TIFF = "tiff"; - - private static final boolean DEBUG = Debug.debug("TextureIO"); - - // For manually disabling the use of the texture rectangle - // extensions so you know the texture target is GL_TEXTURE_2D; this - // is useful for shader writers (thanks to Chris Campbell for this - // observation) - private static boolean texRectEnabled = true; - - //---------------------------------------------------------------------- - // methods that *do not* require a current context - // These methods assume RGB or RGBA textures. - // Some texture providers may not recognize the file format unless - // the fileSuffix is specified, so it is strongly recommended to - // specify it wherever it is known. - // Some texture providers may also only support one kind of input, - // i.e., reading from a file as opposed to a stream. - - /** - * Creates a TextureData from the given file. Does no OpenGL work. - * - * @param glp the OpenGL Profile this texture data should be - * created for. - * @param file the file from which to read the texture data - * @param mipmap whether mipmaps should be produced for this - * texture either by autogenerating them or - * reading them from the file. Some file formats - * support multiple mipmaps in a single file in - * which case those mipmaps will be used rather - * than generating them. - * @param fileSuffix the suffix of the file name to be used as a - * hint of the file format to the underlying - * texture provider, or null if none and should be - * auto-detected (some texture providers do not - * support this) - * @return the texture data from the file, or null if none of the - * registered texture providers could read the file - * @throws IOException if an error occurred while reading the file - */ - public static TextureData newTextureData(GLProfile glp, File file, - boolean mipmap, - String fileSuffix) throws IOException { - if (fileSuffix == null) { - fileSuffix = FileUtil.getFileSuffix(file); - } - return newTextureDataImpl(glp, file, 0, 0, mipmap, fileSuffix); - } - - /** - * Creates a TextureData from the given stream. Does no OpenGL work. - * - * @param glp the OpenGL Profile this texture data should be - * created for. - * @param stream the stream from which to read the texture data - * @param mipmap whether mipmaps should be produced for this - * texture either by autogenerating them or - * reading them from the file. Some file formats - * support multiple mipmaps in a single file in - * which case those mipmaps will be used rather - * than generating them. - * @param fileSuffix the suffix of the file name to be used as a - * hint of the file format to the underlying - * texture provider, or null if none and should be - * auto-detected (some texture providers do not - * support this) - * @return the texture data from the stream, or null if none of the - * registered texture providers could read the stream - * @throws IOException if an error occurred while reading the stream - */ - public static TextureData newTextureData(GLProfile glp, InputStream stream, - boolean mipmap, - String fileSuffix) throws IOException { - return newTextureDataImpl(glp, stream, 0, 0, mipmap, fileSuffix); - } - - /** - * Creates a TextureData from the given URL. Does no OpenGL work. - * - * @param glp the OpenGL Profile this texture data should be - * created for. - * @param url the URL from which to read the texture data - * @param mipmap whether mipmaps should be produced for this - * texture either by autogenerating them or - * reading them from the file. Some file formats - * support multiple mipmaps in a single file in - * which case those mipmaps will be used rather - * than generating them. - * @param fileSuffix the suffix of the file name to be used as a - * hint of the file format to the underlying - * texture provider, or null if none and should be - * auto-detected (some texture providers do not - * support this) - * @return the texture data from the URL, or null if none of the - * registered texture providers could read the URL - * @throws IOException if an error occurred while reading the URL - */ - public static TextureData newTextureData(GLProfile glp, URL url, - boolean mipmap, - String fileSuffix) throws IOException { - if (fileSuffix == null) { - fileSuffix = FileUtil.getFileSuffix(url.getPath()); - } - return newTextureDataImpl(glp, url, 0, 0, mipmap, fileSuffix); - } - - //---------------------------------------------------------------------- - // These methods make no assumption about the OpenGL internal format - // or pixel format of the texture; they must be specified by the - // user. It is not allowed to supply 0 (indicating no preference) - // for either the internalFormat or the pixelFormat; - // IllegalArgumentException will be thrown in this case. - - /** - * Creates a TextureData from the given file, using the specified - * OpenGL internal format and pixel format for the texture which - * will eventually result. The internalFormat and pixelFormat must - * be specified and may not be zero; to use default values, use the - * variant of this method which does not take these arguments. Does - * no OpenGL work. - * - * @param glp the OpenGL Profile this texture data should be - * created for. - * @param file the file from which to read the texture data - * @param internalFormat the OpenGL internal format of the texture - * which will eventually result from the TextureData - * @param pixelFormat the OpenGL pixel format of the texture - * which will eventually result from the TextureData - * @param mipmap whether mipmaps should be produced for this - * texture either by autogenerating them or - * reading them from the file. Some file formats - * support multiple mipmaps in a single file in - * which case those mipmaps will be used rather - * than generating them. - * @param fileSuffix the suffix of the file name to be used as a - * hint of the file format to the underlying - * texture provider, or null if none and should be - * auto-detected (some texture providers do not - * support this) - * @return the texture data from the file, or null if none of the - * registered texture providers could read the file - * @throws IllegalArgumentException if either internalFormat or - * pixelFormat was 0 - * @throws IOException if an error occurred while reading the file - */ - public static TextureData newTextureData(GLProfile glp, File file, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException, IllegalArgumentException { - if ((internalFormat == 0) || (pixelFormat == 0)) { - throw new IllegalArgumentException("internalFormat and pixelFormat must be non-zero"); - } - - if (fileSuffix == null) { - fileSuffix = FileUtil.getFileSuffix(file); - } - - return newTextureDataImpl(glp, file, internalFormat, pixelFormat, mipmap, fileSuffix); - } - - /** - * Creates a TextureData from the given stream, using the specified - * OpenGL internal format and pixel format for the texture which - * will eventually result. The internalFormat and pixelFormat must - * be specified and may not be zero; to use default values, use the - * variant of this method which does not take these arguments. Does - * no OpenGL work. - * - * @param glp the OpenGL Profile this texture data should be - * created for. - * @param stream the stream from which to read the texture data - * @param internalFormat the OpenGL internal format of the texture - * which will eventually result from the TextureData - * @param pixelFormat the OpenGL pixel format of the texture - * which will eventually result from the TextureData - * @param mipmap whether mipmaps should be produced for this - * texture either by autogenerating them or - * reading them from the file. Some file formats - * support multiple mipmaps in a single file in - * which case those mipmaps will be used rather - * than generating them. - * @param fileSuffix the suffix of the file name to be used as a - * hint of the file format to the underlying - * texture provider, or null if none and should be - * auto-detected (some texture providers do not - * support this) - * @return the texture data from the stream, or null if none of the - * registered texture providers could read the stream - * @throws IllegalArgumentException if either internalFormat or - * pixelFormat was 0 - * @throws IOException if an error occurred while reading the stream - */ - public static TextureData newTextureData(GLProfile glp, InputStream stream, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException, IllegalArgumentException { - if ((internalFormat == 0) || (pixelFormat == 0)) { - throw new IllegalArgumentException("internalFormat and pixelFormat must be non-zero"); - } - - return newTextureDataImpl(glp, stream, internalFormat, pixelFormat, mipmap, fileSuffix); - } - - /** - * Creates a TextureData from the given URL, using the specified - * OpenGL internal format and pixel format for the texture which - * will eventually result. The internalFormat and pixelFormat must - * be specified and may not be zero; to use default values, use the - * variant of this method which does not take these arguments. Does - * no OpenGL work. - * - * @param glp the OpenGL Profile this texture data should be - * created for. - * @param url the URL from which to read the texture data - * @param internalFormat the OpenGL internal format of the texture - * which will eventually result from the TextureData - * @param pixelFormat the OpenGL pixel format of the texture - * which will eventually result from the TextureData - * @param mipmap whether mipmaps should be produced for this - * texture either by autogenerating them or - * reading them from the file. Some file formats - * support multiple mipmaps in a single file in - * which case those mipmaps will be used rather - * than generating them. - * @param fileSuffix the suffix of the file name to be used as a - * hint of the file format to the underlying - * texture provider, or null if none and should be - * auto-detected (some texture providers do not - * support this) - * @return the texture data from the URL, or null if none of the - * registered texture providers could read the URL - * @throws IllegalArgumentException if either internalFormat or - * pixelFormat was 0 - * @throws IOException if an error occurred while reading the URL - */ - public static TextureData newTextureData(GLProfile glp, URL url, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException, IllegalArgumentException { - if ((internalFormat == 0) || (pixelFormat == 0)) { - throw new IllegalArgumentException("internalFormat and pixelFormat must be non-zero"); - } - - if (fileSuffix == null) { - fileSuffix = FileUtil.getFileSuffix(url.getPath()); - } - - return newTextureDataImpl(glp, url, internalFormat, pixelFormat, mipmap, fileSuffix); - } - - //---------------------------------------------------------------------- - // methods that *do* require a current context - // - - /** - * Creates an OpenGL texture object from the specified TextureData - * using the current OpenGL context. - * - * @param data the texture data to turn into an OpenGL texture - * @throws GLException if no OpenGL context is current or if an - * OpenGL error occurred - * @throws IllegalArgumentException if the passed TextureData was null - */ - public static Texture newTexture(TextureData data) throws GLException, IllegalArgumentException { - if (data == null) { - throw new IllegalArgumentException("Null TextureData"); - } - return new Texture(data); - } - - /** - * Creates an OpenGL texture object from the specified file using - * the current OpenGL context. - * - * @param file the file from which to read the texture data - * @param mipmap whether mipmaps should be produced for this - * texture either by autogenerating them or - * reading them from the file. Some file formats - * support multiple mipmaps in a single file in - * which case those mipmaps will be used rather - * than generating them. - * @throws IOException if an error occurred while reading the file - * @throws GLException if no OpenGL context is current or if an - * OpenGL error occurred - */ - public static Texture newTexture(File file, boolean mipmap) throws IOException, GLException { - GLProfile glp = GLContext.getCurrentGL().getGLProfile(); - TextureData data = newTextureData(glp, file, mipmap, FileUtil.getFileSuffix(file)); - Texture texture = newTexture(data); - data.flush(); - return texture; - } - - /** - * Creates an OpenGL texture object from the specified stream using - * the current OpenGL context. - * - * @param stream the stream from which to read the texture data - * @param mipmap whether mipmaps should be produced for this - * texture either by autogenerating them or - * reading them from the file. Some file formats - * support multiple mipmaps in a single file in - * which case those mipmaps will be used rather - * than generating them. - * @param fileSuffix the suffix of the file name to be used as a - * hint of the file format to the underlying - * texture provider, or null if none and should be - * auto-detected (some texture providers do not - * support this) - * @throws IOException if an error occurred while reading the stream - * @throws GLException if no OpenGL context is current or if an - * OpenGL error occurred - */ - public static Texture newTexture(InputStream stream, boolean mipmap, String fileSuffix) throws IOException, GLException { - GLProfile glp = GLContext.getCurrentGL().getGLProfile(); - TextureData data = newTextureData(glp, stream, mipmap, fileSuffix); - Texture texture = newTexture(data); - data.flush(); - return texture; - } - - /** - * Creates an OpenGL texture object from the specified URL using the - * current OpenGL context. - * - * @param url the URL from which to read the texture data - * @param mipmap whether mipmaps should be produced for this - * texture either by autogenerating them or - * reading them from the file. Some file formats - * support multiple mipmaps in a single file in - * which case those mipmaps will be used rather - * than generating them. - * @param fileSuffix the suffix of the file name to be used as a - * hint of the file format to the underlying - * texture provider, or null if none and should be - * auto-detected (some texture providers do not - * support this) - * @throws IOException if an error occurred while reading the URL - * @throws GLException if no OpenGL context is current or if an - * OpenGL error occurred - */ - public static Texture newTexture(URL url, boolean mipmap, String fileSuffix) throws IOException, GLException { - if (fileSuffix == null) { - fileSuffix = FileUtil.getFileSuffix(url.getPath()); - } - GLProfile glp = GLContext.getCurrentGL().getGLProfile(); - TextureData data = newTextureData(glp, url, mipmap, fileSuffix); - Texture texture = newTexture(data); - data.flush(); - return texture; - } - - /** - * Creates an OpenGL texture object associated with the given OpenGL - * texture target using the current OpenGL context. The texture has - * no initial data. This is used, for example, to construct cube - * maps out of multiple TextureData objects. - * - * @param target the OpenGL target type, eg GL.GL_TEXTURE_2D, - * GL.GL_TEXTURE_RECTANGLE_ARB - * - * @throws GLException if no OpenGL context is current or if an - * OpenGL error occurred - */ - public static Texture newTexture(int target) throws GLException { - return new Texture(target); - } - - /** - * Wraps an OpenGL texture ID from an external library and allows - * some of the base methods from the Texture class, such as - * binding and querying of texture coordinates, to be used with - * it. Attempts to update such textures' contents will yield - * undefined results. - * - * @param textureID the OpenGL texture object to wrap - * @param target the OpenGL texture target, eg GL.GL_TEXTURE_2D, - * GL2.GL_TEXTURE_RECTANGLE - * @param texWidth the width of the texture in pixels - * @param texHeight the height of the texture in pixels - * @param imgWidth the width of the image within the texture in - * pixels (if the content is a sub-rectangle in the upper - * left corner); otherwise, pass in texWidth - * @param imgHeight the height of the image within the texture in - * pixels (if the content is a sub-rectangle in the upper - * left corner); otherwise, pass in texHeight - * @param mustFlipVertically indicates whether the texture - * coordinates must be flipped vertically - * in order to properly display the - * texture - */ - public static Texture newTexture(int textureID, - int target, - int texWidth, - int texHeight, - int imgWidth, - int imgHeight, - boolean mustFlipVertically) { - return new Texture(textureID, - target, - texWidth, - texHeight, - imgWidth, - imgHeight, - mustFlipVertically); - } - - /** - * Writes the given texture to a file. The type of the file is - * inferred from its suffix. An OpenGL context must be current in - * order to fetch the texture data back from the OpenGL pipeline. - * This method causes the specified Texture to be bound to the - * GL_TEXTURE_2D state. If no suitable writer for the requested file - * format was found, throws an IOException. <P> - * - * Reasonable attempts are made to produce good results in the - * resulting images. The Targa, SGI and ImageIO writers produce - * results in the correct vertical orientation for those file - * formats. The DDS writer performs no vertical flip of the data, - * even in uncompressed mode. (It is impossible to perform such a - * vertical flip with compressed data.) Applications should keep - * this in mind when using this routine to save textures to disk for - * later re-loading. <P> - * - * Any mipmaps for the specified texture are currently discarded - * when it is written to disk, regardless of whether the underlying - * file format supports multiple mipmaps in a given file. - * - * @throws IOException if an error occurred during writing or no - * suitable writer was found - * @throws GLException if no OpenGL context was current or an - * OpenGL-related error occurred - */ - public static void write(Texture texture, File file) throws IOException, GLException { - if (texture.getTarget() != GL.GL_TEXTURE_2D) { - throw new GLException("Only GL_TEXTURE_2D textures are supported"); - } - - // First fetch the texture data - GL _gl = GLContext.getCurrentGL(); - if (!_gl.isGL2()) { - throw new GLException("Only GL2 supports fetching compressed images, GL: " + _gl); - } - GL2 gl = _gl.getGL2(); - - texture.bind(); - int internalFormat = glGetTexLevelParameteri(gl, GL.GL_TEXTURE_2D, 0, GL2.GL_TEXTURE_INTERNAL_FORMAT); - int width = glGetTexLevelParameteri(gl, GL.GL_TEXTURE_2D, 0, GL2.GL_TEXTURE_WIDTH); - int height = glGetTexLevelParameteri(gl, GL.GL_TEXTURE_2D, 0, GL2.GL_TEXTURE_HEIGHT); - int border = glGetTexLevelParameteri(gl, GL.GL_TEXTURE_2D, 0, GL2.GL_TEXTURE_BORDER); - TextureData data = null; - if (internalFormat == GL.GL_COMPRESSED_RGB_S3TC_DXT1_EXT || - internalFormat == GL.GL_COMPRESSED_RGBA_S3TC_DXT1_EXT || - internalFormat == GL.GL_COMPRESSED_RGBA_S3TC_DXT3_EXT || - internalFormat == GL.GL_COMPRESSED_RGBA_S3TC_DXT5_EXT) { - // Fetch using glGetCompressedTexImage - int size = glGetTexLevelParameteri(gl, GL.GL_TEXTURE_2D, 0, GL2.GL_TEXTURE_COMPRESSED_IMAGE_SIZE); - ByteBuffer res = ByteBuffer.wrap(new byte[size]); - gl.glGetCompressedTexImage(GL.GL_TEXTURE_2D, 0, res); - data = new TextureData(gl.getGLProfile(), internalFormat, width, height, border, internalFormat, GL.GL_UNSIGNED_BYTE, - false, true, true, res, null); - } else { - int bytesPerPixel = 0; - int fetchedFormat = 0; - switch (internalFormat) { - case GL.GL_RGB: - case GL2.GL_BGR: - case GL.GL_RGB8: - bytesPerPixel = 3; - fetchedFormat = GL.GL_RGB; - break; - case GL.GL_RGBA: - case GL2.GL_BGRA: - case GL2.GL_ABGR_EXT: - case GL.GL_RGBA8: - bytesPerPixel = 4; - fetchedFormat = GL.GL_RGBA; - break; - default: - throw new IOException("Unsupported texture internal format 0x" + Integer.toHexString(internalFormat)); - } - - // Fetch using glGetTexImage - int packAlignment = glGetInteger(GL.GL_PACK_ALIGNMENT); - int packRowLength = glGetInteger(GL2.GL_PACK_ROW_LENGTH); - int packSkipRows = glGetInteger(GL2.GL_PACK_SKIP_ROWS); - int packSkipPixels = glGetInteger(GL2.GL_PACK_SKIP_PIXELS); - int packSwapBytes = glGetInteger(GL2.GL_PACK_SWAP_BYTES); - - gl.glPixelStorei(GL.GL_PACK_ALIGNMENT, 1); - gl.glPixelStorei(GL2.GL_PACK_ROW_LENGTH, 0); - gl.glPixelStorei(GL2.GL_PACK_SKIP_ROWS, 0); - gl.glPixelStorei(GL2.GL_PACK_SKIP_PIXELS, 0); - gl.glPixelStorei(GL2.GL_PACK_SWAP_BYTES, 0); - - ByteBuffer res = ByteBuffer.wrap(new byte[(width + (2 * border)) * - (height + (2 * border)) * - bytesPerPixel]); - if (DEBUG) { - System.out.println("Allocated buffer of size " + res.remaining() + " for fetched image (" + - ((fetchedFormat == GL.GL_RGB) ? "GL_RGB" : "GL_RGBA") + ")"); - } - gl.glGetTexImage(GL.GL_TEXTURE_2D, 0, fetchedFormat, GL.GL_UNSIGNED_BYTE, res); - - gl.glPixelStorei(GL.GL_PACK_ALIGNMENT, packAlignment); - gl.glPixelStorei(GL2.GL_PACK_ROW_LENGTH, packRowLength); - gl.glPixelStorei(GL2.GL_PACK_SKIP_ROWS, packSkipRows); - gl.glPixelStorei(GL2.GL_PACK_SKIP_PIXELS, packSkipPixels); - gl.glPixelStorei(GL2.GL_PACK_SWAP_BYTES, packSwapBytes); - - data = new TextureData(gl.getGLProfile(), internalFormat, width, height, border, fetchedFormat, GL.GL_UNSIGNED_BYTE, - false, false, false, res, null); - - if (DEBUG) { - System.out.println("data.getPixelFormat() = " + - ((data.getPixelFormat() == GL.GL_RGB) ? "GL_RGB" : "GL_RGBA")); - } - } - - write(data, file); - } - - public static void write(TextureData data, File file) throws IOException, GLException { - for (Iterator iter = textureWriters.iterator(); iter.hasNext(); ) { - TextureWriter writer = (TextureWriter) iter.next(); - if (writer.write(file, data)) { - return; - } - } - - throw new IOException("No suitable texture writer found for "+file.getAbsolutePath()); - } - - //---------------------------------------------------------------------- - // SPI support - // - - /** Adds a TextureProvider to support reading of a new file - format. */ - public static void addTextureProvider(TextureProvider provider) { - // Must always add at the front so the ImageIO provider is last, - // so we don't accidentally use it instead of a user's possibly - // more optimal provider - textureProviders.add(0, provider); - } - - /** Adds a TextureWriter to support writing of a new file - format. */ - public static void addTextureWriter(TextureWriter writer) { - // Must always add at the front so the ImageIO writer is last, - // so we don't accidentally use it instead of a user's possibly - // more optimal writer - textureWriters.add(0, writer); - } - - //--------------------------------------------------------------------------- - // Global disabling of texture rectangle extension - // - - /** Toggles the use of the GL_ARB_texture_rectangle extension by the - TextureIO classes. By default, on hardware supporting this - extension, the TextureIO classes may use the - GL_ARB_texture_rectangle extension for non-power-of-two - textures. (If the hardware supports the - GL_ARB_texture_non_power_of_two extension, that one is - preferred.) In some situations, for example when writing - shaders, it is advantageous to force the texture target to - always be GL_TEXTURE_2D in order to have one version of the - shader, even at the expense of texture memory in the case where - NPOT textures are not supported. This method allows the use of - the GL_ARB_texture_rectangle extension to be turned off globally - for this purpose. The default is that the use of the extension - is enabled. */ - public static void setTexRectEnabled(boolean enabled) { - texRectEnabled = enabled; - } - - /** Indicates whether the GL_ARB_texture_rectangle extension is - allowed to be used for non-power-of-two textures; see {@link - #setTexRectEnabled setTexRectEnabled}. */ - public static boolean isTexRectEnabled() { - return texRectEnabled; - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - private static List/*<TextureProvider>*/ textureProviders = new ArrayList/*<TextureProvider>*/(); - private static List/*<TextureWriter>*/ textureWriters = new ArrayList/*<TextureWriter>*/(); - - static { - /* - if(GLProfile.isAWTJOGLAvailable()) { - // ImageIO provider, the fall-back, must be the first one added - try { - // Use reflection to avoid compile-time dependencies on AWT-related classes - TextureProvider provider = (TextureProvider) - Class.forName("com.sun.opengl.util.texture.spi.awt.IIOTextureProvider").newInstance(); - addTextureProvider(provider); - } catch (Exception e) { - if (DEBUG) { - e.printStackTrace(); - } - } - } - */ - - // Other special-case providers - addTextureProvider(new DDSTextureProvider()); - addTextureProvider(new SGITextureProvider()); - addTextureProvider(new TGATextureProvider()); - - /* - // ImageIO writer, the fall-back, must be the first one added - if(GLProfile.isAWTJOGLAvailable()) { - try { - // Use reflection to avoid compile-time dependencies on AWT-related classes - TextureWriter writer = (TextureWriter) - Class.forName("com.sun.opengl.util.texture.spi.awt.IIOTextureWriter").newInstance(); - addTextureWriter(writer); - } catch (Exception e) { - if (DEBUG) { - e.printStackTrace(); - } - } - } - */ - - // Other special-case writers - addTextureWriter(new DDSTextureWriter()); - addTextureWriter(new SGITextureWriter()); - addTextureWriter(new TGATextureWriter()); - addTextureWriter(new NetPbmTextureWriter()); - } - - // Implementation methods - private static TextureData newTextureDataImpl(GLProfile glp, File file, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException { - if (file == null) { - throw new IOException("File was null"); - } - - fileSuffix = toLowerCase(fileSuffix); - - for (Iterator iter = textureProviders.iterator(); iter.hasNext(); ) { - TextureProvider provider = (TextureProvider) iter.next(); - TextureData data = provider.newTextureData(glp, file, - internalFormat, - pixelFormat, - mipmap, - fileSuffix); - if (data != null) { - return data; - } - } - - throw new IOException("No suitable reader for given file "+file.getAbsolutePath()); - } - - private static TextureData newTextureDataImpl(GLProfile glp, InputStream stream, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException { - if (stream == null) { - throw new IOException("Stream was null"); - } - - fileSuffix = toLowerCase(fileSuffix); - - // Note: use of BufferedInputStream works around 4764639/4892246 - if (!(stream instanceof BufferedInputStream)) { - stream = new BufferedInputStream(stream); - } - - for (Iterator iter = textureProviders.iterator(); iter.hasNext(); ) { - TextureProvider provider = (TextureProvider) iter.next(); - TextureData data = provider.newTextureData(glp, stream, - internalFormat, - pixelFormat, - mipmap, - fileSuffix); - if (data != null) { - return data; - } - } - - throw new IOException("No suitable reader for given stream"); - } - - private static TextureData newTextureDataImpl(GLProfile glp, URL url, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException { - if (url == null) { - throw new IOException("URL was null"); - } - - fileSuffix = toLowerCase(fileSuffix); - - for (Iterator iter = textureProviders.iterator(); iter.hasNext(); ) { - TextureProvider provider = (TextureProvider) iter.next(); - TextureData data = provider.newTextureData(glp, url, - internalFormat, - pixelFormat, - mipmap, - fileSuffix); - if (data != null) { - return data; - } - } - - throw new IOException("No suitable reader for given URL "+url); - } - - //---------------------------------------------------------------------- - // DDS provider -- supports files only for now - static class DDSTextureProvider implements TextureProvider { - public TextureData newTextureData(GLProfile glp, File file, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException { - if (DDS.equals(fileSuffix) || - DDS.equals(FileUtil.getFileSuffix(file))) { - DDSImage image = DDSImage.read(file); - return newTextureData(glp, image, internalFormat, pixelFormat, mipmap); - } - - return null; - } - - public TextureData newTextureData(GLProfile glp, InputStream stream, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException { - if (DDS.equals(fileSuffix) || - DDSImage.isDDSImage(stream)) { - DDSImage image = DDSImage.read(stream); - return newTextureData(glp, image, internalFormat, pixelFormat, mipmap); - } - - return null; - } - - public TextureData newTextureData(GLProfile glp, URL url, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException { - InputStream stream = new BufferedInputStream(url.openStream()); - try { - return newTextureData(glp, stream, internalFormat, pixelFormat, mipmap, fileSuffix); - } finally { - stream.close(); - } - } - - private TextureData newTextureData(GLProfile glp, final DDSImage image, - int internalFormat, - int pixelFormat, - boolean mipmap) { - DDSImage.ImageInfo info = image.getMipMap(0); - if (pixelFormat == 0) { - switch (image.getPixelFormat()) { - case DDSImage.D3DFMT_R8G8B8: - pixelFormat = GL.GL_RGB; - break; - default: - pixelFormat = GL.GL_RGBA; - break; - } - } - if (info.isCompressed()) { - switch (info.getCompressionFormat()) { - case DDSImage.D3DFMT_DXT1: - internalFormat = GL.GL_COMPRESSED_RGB_S3TC_DXT1_EXT; - break; - case DDSImage.D3DFMT_DXT3: - internalFormat = GL.GL_COMPRESSED_RGBA_S3TC_DXT3_EXT; - break; - case DDSImage.D3DFMT_DXT5: - internalFormat = GL.GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; - break; - default: - throw new RuntimeException("Unsupported DDS compression format \"" + - DDSImage.getCompressionFormatName(info.getCompressionFormat()) + "\""); - } - } - if (internalFormat == 0) { - switch (image.getPixelFormat()) { - case DDSImage.D3DFMT_R8G8B8: - pixelFormat = GL.GL_RGB; - break; - default: - pixelFormat = GL.GL_RGBA; - break; - } - } - TextureData.Flusher flusher = new TextureData.Flusher() { - public void flush() { - image.close(); - } - }; - TextureData data; - if (mipmap && image.getNumMipMaps() > 0) { - Buffer[] mipmapData = new Buffer[image.getNumMipMaps()]; - for (int i = 0; i < image.getNumMipMaps(); i++) { - mipmapData[i] = image.getMipMap(i).getData(); - } - data = new TextureData(glp, internalFormat, - info.getWidth(), - info.getHeight(), - 0, - pixelFormat, - GL.GL_UNSIGNED_BYTE, - info.isCompressed(), - true, - mipmapData, - flusher); - } else { - // Fix this up for the end user because we can't generate - // mipmaps for compressed textures - mipmap = false; - data = new TextureData(glp, internalFormat, - info.getWidth(), - info.getHeight(), - 0, - pixelFormat, - GL.GL_UNSIGNED_BYTE, - mipmap, - info.isCompressed(), - true, - info.getData(), - flusher); - } - return data; - } - } - - //---------------------------------------------------------------------- - // Base class for SGI RGB and TGA image providers - static abstract class StreamBasedTextureProvider implements TextureProvider { - public TextureData newTextureData(GLProfile glp, File file, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException { - InputStream inStream = new BufferedInputStream(new FileInputStream(file)); - try { - // The SGIImage and TGAImage implementations use InputStreams - // anyway so there isn't much point in having a separate code - // path for files - return newTextureData(glp, inStream, - internalFormat, - pixelFormat, - mipmap, - ((fileSuffix != null) ? fileSuffix : FileUtil.getFileSuffix(file))); - } finally { - inStream.close(); - } - } - - public TextureData newTextureData(GLProfile glp, URL url, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException { - InputStream stream = new BufferedInputStream(url.openStream()); - try { - return newTextureData(glp, stream, internalFormat, pixelFormat, mipmap, fileSuffix); - } finally { - stream.close(); - } - } - } - - //---------------------------------------------------------------------- - // SGI RGB image provider - static class SGITextureProvider extends StreamBasedTextureProvider { - public TextureData newTextureData(GLProfile glp, InputStream stream, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException { - if (SGI.equals(fileSuffix) || - SGI_RGB.equals(fileSuffix) || - SGIImage.isSGIImage(stream)) { - SGIImage image = SGIImage.read(stream); - if (pixelFormat == 0) { - pixelFormat = image.getFormat(); - } - if (internalFormat == 0) { - internalFormat = image.getFormat(); - } - return new TextureData(glp, internalFormat, - image.getWidth(), - image.getHeight(), - 0, - pixelFormat, - GL.GL_UNSIGNED_BYTE, - mipmap, - false, - false, - ByteBuffer.wrap(image.getData()), - null); - } - - return null; - } - } - - //---------------------------------------------------------------------- - // TGA (Targa) image provider - static class TGATextureProvider extends StreamBasedTextureProvider { - public TextureData newTextureData(GLProfile glp, InputStream stream, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException { - if (TGA.equals(fileSuffix)) { - TGAImage image = TGAImage.read(stream); - if (pixelFormat == 0) { - pixelFormat = image.getGLFormat(); - } - if (internalFormat == 0) { - GL gl = GLContext.getCurrentGL(); - if(gl.isGL2()) { - internalFormat = GL.GL_RGBA8; - } else { - internalFormat = (image.getBytesPerPixel()==4)?GL.GL_RGBA:GL.GL_RGB; - } - } - return new TextureData(glp, internalFormat, - image.getWidth(), - image.getHeight(), - 0, - pixelFormat, - GL.GL_UNSIGNED_BYTE, - mipmap, - false, - false, - image.getData(), - null); - } - - return null; - } - } - - //---------------------------------------------------------------------- - // DDS texture writer - // - static class DDSTextureWriter implements TextureWriter { - public boolean write(File file, - TextureData data) throws IOException { - if (DDS.equals(FileUtil.getFileSuffix(file))) { - // See whether the DDS writer can handle this TextureData - int pixelFormat = data.getPixelFormat(); - int pixelType = data.getPixelType(); - if (pixelType != GL.GL_BYTE && - pixelType != GL.GL_UNSIGNED_BYTE) { - throw new IOException("DDS writer only supports byte / unsigned byte textures"); - } - - int d3dFormat = 0; - // FIXME: some of these are probably not completely correct and would require swizzling - switch (pixelFormat) { - case GL.GL_RGB: d3dFormat = DDSImage.D3DFMT_R8G8B8; break; - case GL.GL_RGBA: d3dFormat = DDSImage.D3DFMT_A8R8G8B8; break; - case GL.GL_COMPRESSED_RGB_S3TC_DXT1_EXT: d3dFormat = DDSImage.D3DFMT_DXT1; break; - case GL.GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: throw new IOException("RGBA DXT1 not yet supported"); - case GL.GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: d3dFormat = DDSImage.D3DFMT_DXT3; break; - case GL.GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: d3dFormat = DDSImage.D3DFMT_DXT5; break; - default: throw new IOException("Unsupported pixel format 0x" + Integer.toHexString(pixelFormat) + " by DDS writer"); - } - - ByteBuffer[] mipmaps = null; - if (data.getMipmapData() != null) { - mipmaps = new ByteBuffer[data.getMipmapData().length]; - for (int i = 0; i < mipmaps.length; i++) { - mipmaps[i] = (ByteBuffer) data.getMipmapData()[i]; - } - } else { - mipmaps = new ByteBuffer[] { (ByteBuffer) data.getBuffer() }; - } - - DDSImage image = DDSImage.createFromData(d3dFormat, - data.getWidth(), - data.getHeight(), - mipmaps); - image.write(file); - return true; - } - - return false; - } - } - - //---------------------------------------------------------------------- - // SGI (rgb) texture writer - // - static class SGITextureWriter implements TextureWriter { - public boolean write(File file, - TextureData data) throws IOException { - String fileSuffix = FileUtil.getFileSuffix(file); - if (SGI.equals(fileSuffix) || - SGI_RGB.equals(fileSuffix)) { - // See whether the SGI writer can handle this TextureData - int pixelFormat = data.getPixelFormat(); - int pixelType = data.getPixelType(); - if ((pixelFormat == GL.GL_RGB || - pixelFormat == GL.GL_RGBA) && - (pixelType == GL.GL_BYTE || - pixelType == GL.GL_UNSIGNED_BYTE)) { - ByteBuffer buf = ((data.getBuffer() != null) ? - (ByteBuffer) data.getBuffer() : - (ByteBuffer) data.getMipmapData()[0]); - byte[] bytes; - if (buf.hasArray()) { - bytes = buf.array(); - } else { - buf.rewind(); - bytes = new byte[buf.remaining()]; - buf.get(bytes); - buf.rewind(); - } - - SGIImage image = SGIImage.createFromData(data.getWidth(), - data.getHeight(), - (pixelFormat == GL.GL_RGBA), - bytes); - image.write(file, false); - return true; - } - - throw new IOException("SGI writer doesn't support this pixel format / type (only GL_RGB/A + bytes)"); - } - - return false; - } - } - - //---------------------------------------------------------------------- - // TGA (Targa) texture writer - - static class TGATextureWriter implements TextureWriter { - public boolean write(File file, - TextureData data) throws IOException { - if (TGA.equals(FileUtil.getFileSuffix(file))) { - // See whether the TGA writer can handle this TextureData - int pixelFormat = data.getPixelFormat(); - int pixelType = data.getPixelType(); - if ((pixelFormat == GL.GL_RGB || - pixelFormat == GL.GL_RGBA) && - (pixelType == GL.GL_BYTE || - pixelType == GL.GL_UNSIGNED_BYTE)) { - ByteBuffer buf = ((data.getBuffer() != null) ? - (ByteBuffer) data.getBuffer() : - (ByteBuffer) data.getMipmapData()[0]); - // Must reverse order of red and blue channels to get correct results - int skip = ((pixelFormat == GL.GL_RGB) ? 3 : 4); - for (int i = 0; i < buf.remaining(); i += skip) { - byte red = buf.get(i + 0); - byte blue = buf.get(i + 2); - buf.put(i + 0, blue); - buf.put(i + 2, red); - } - - TGAImage image = TGAImage.createFromData(data.getWidth(), - data.getHeight(), - (pixelFormat == GL.GL_RGBA), - false, - ((data.getBuffer() != null) ? - (ByteBuffer) data.getBuffer() : - (ByteBuffer) data.getMipmapData()[0])); - image.write(file); - return true; - } - - throw new IOException("TGA writer doesn't support this pixel format / type (only GL_RGB/A + bytes)"); - } - - return false; - } - } - - //---------------------------------------------------------------------- - // Helper routines - // - - private static int glGetInteger(int pname) { - int[] tmp = new int[1]; - GL gl = GLContext.getCurrentGL(); - gl.glGetIntegerv(pname, tmp, 0); - return tmp[0]; - } - - private static int glGetTexLevelParameteri(GL2 gl, int target, int level, int pname) { - int[] tmp = new int[1]; - gl.glGetTexLevelParameteriv(target, 0, pname, tmp, 0); - return tmp[0]; - } - - private static String toLowerCase(String arg) { - if (arg == null) { - return null; - } - - return arg.toLowerCase(); - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/texture/TextureIO.java.javase b/src/jogl/classes/com/sun/opengl/util/texture/TextureIO.java.javase deleted file mode 100755 index 034a850bd..000000000 --- a/src/jogl/classes/com/sun/opengl/util/texture/TextureIO.java.javase +++ /dev/null @@ -1,1258 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.texture; - -import java.io.*; -import java.net.*; -import java.nio.*; -import java.util.*; - -import javax.media.opengl.*; -import javax.media.opengl.glu.*; -import com.sun.opengl.impl.Debug; -import com.sun.opengl.util.*; -import com.sun.opengl.util.texture.spi.*; - -/** <P> Provides input and output facilities for both loading OpenGL - textures from disk and streams as well as writing textures already - in memory back to disk. </P> - - <P> The TextureIO class supports an arbitrary number of plug-in - readers and writers via TextureProviders and TextureWriters. - TextureProviders know how to produce TextureData objects from - files, InputStreams and URLs. TextureWriters know how to write - TextureData objects to disk in various file formats. The - TextureData class represents the raw data of the texture before it - has been converted to an OpenGL texture object. The Texture class - represents the OpenGL texture object and provides easy facilities - for using the texture. </P> - - <P> There are several built-in TextureProviders and TextureWriters - supplied with the TextureIO implementation. The most basic - provider uses the platform's Image I/O facilities to read in a - BufferedImage and convert it to a texture. This is the baseline - provider and is registered so that it is the last one consulted. - All others are asked first to open a given file. </P> - - <P> There are three other providers registered by default as of - the time of this writing. One handles SGI RGB (".sgi", ".rgb") - images from both files and streams. One handles DirectDraw Surface - (".dds") images read from files, though can not read these images - from streams. One handles Targa (".tga") images read from both - files and streams. These providers are executed in an arbitrary - order. Some of these providers require the file's suffix to either - be specified via the newTextureData methods or for the file to be - named with the appropriate suffix. In general a file suffix should - be provided to the newTexture and newTextureData methods if at all - possible. </P> - - <P> Note that additional TextureProviders, if reading images from - InputStreams, must use the mark()/reset() methods on InputStream - when probing for e.g. magic numbers at the head of the file to - make sure not to disturb the state of the InputStream for - downstream TextureProviders. </P> - - <P> There are analogous TextureWriters provided for writing - textures back to disk if desired. As of this writing, there are - four TextureWriters registered by default: one for Targa files, - one for SGI RGB files, one for DirectDraw surface (.dds) files, - and one for ImageIO-supplied formats such as .jpg and .png. Some - of these writers have certain limitations such as only being able - to write out textures stored in GL_RGB or GL_RGBA format. The DDS - writer supports fetching and writing to disk of texture data in - DXTn compressed format. Whether this will occur is dependent on - whether the texture's internal format is one of the DXTn - compressed formats and whether the target file is .dds format. -*/ - -public class TextureIO { - /** Constant which can be used as a file suffix to indicate a - DirectDraw Surface file. */ - public static final String DDS = "dds"; - - /** Constant which can be used as a file suffix to indicate an SGI - RGB file. */ - public static final String SGI = "sgi"; - - /** Constant which can be used as a file suffix to indicate an SGI - RGB file. */ - public static final String SGI_RGB = "rgb"; - - /** Constant which can be used as a file suffix to indicate a GIF - file. */ - public static final String GIF = "gif"; - - /** Constant which can be used as a file suffix to indicate a JPEG - file. */ - public static final String JPG = "jpg"; - - /** Constant which can be used as a file suffix to indicate a PNG - file. */ - public static final String PNG = "png"; - - /** Constant which can be used as a file suffix to indicate a Targa - file. */ - public static final String TGA = "tga"; - - /** Constant which can be used as a file suffix to indicate a TIFF - file. */ - public static final String TIFF = "tiff"; - - private static final boolean DEBUG = Debug.debug("TextureIO"); - - // For manually disabling the use of the texture rectangle - // extensions so you know the texture target is GL_TEXTURE_2D; this - // is useful for shader writers (thanks to Chris Campbell for this - // observation) - private static boolean texRectEnabled = true; - - //---------------------------------------------------------------------- - // methods that *do not* require a current context - // These methods assume RGB or RGBA textures. - // Some texture providers may not recognize the file format unless - // the fileSuffix is specified, so it is strongly recommended to - // specify it wherever it is known. - // Some texture providers may also only support one kind of input, - // i.e., reading from a file as opposed to a stream. - - /** - * Creates a TextureData from the given file. Does no OpenGL work. - * - * @param glp the OpenGL Profile this texture data should be - * created for. - * @param file the file from which to read the texture data - * @param mipmap whether mipmaps should be produced for this - * texture either by autogenerating them or - * reading them from the file. Some file formats - * support multiple mipmaps in a single file in - * which case those mipmaps will be used rather - * than generating them. - * @param fileSuffix the suffix of the file name to be used as a - * hint of the file format to the underlying - * texture provider, or null if none and should be - * auto-detected (some texture providers do not - * support this) - * @return the texture data from the file, or null if none of the - * registered texture providers could read the file - * @throws IOException if an error occurred while reading the file - */ - public static TextureData newTextureData(GLProfile glp, File file, - boolean mipmap, - String fileSuffix) throws IOException { - if (fileSuffix == null) { - fileSuffix = FileUtil.getFileSuffix(file); - } - return newTextureDataImpl(glp, file, 0, 0, mipmap, fileSuffix); - } - - /** - * Creates a TextureData from the given stream. Does no OpenGL work. - * - * @param glp the OpenGL Profile this texture data should be - * created for. - * @param stream the stream from which to read the texture data - * @param mipmap whether mipmaps should be produced for this - * texture either by autogenerating them or - * reading them from the file. Some file formats - * support multiple mipmaps in a single file in - * which case those mipmaps will be used rather - * than generating them. - * @param fileSuffix the suffix of the file name to be used as a - * hint of the file format to the underlying - * texture provider, or null if none and should be - * auto-detected (some texture providers do not - * support this) - * @return the texture data from the stream, or null if none of the - * registered texture providers could read the stream - * @throws IOException if an error occurred while reading the stream - */ - public static TextureData newTextureData(GLProfile glp, InputStream stream, - boolean mipmap, - String fileSuffix) throws IOException { - return newTextureDataImpl(glp, stream, 0, 0, mipmap, fileSuffix); - } - - /** - * Creates a TextureData from the given URL. Does no OpenGL work. - * - * @param glp the OpenGL Profile this texture data should be - * created for. - * @param url the URL from which to read the texture data - * @param mipmap whether mipmaps should be produced for this - * texture either by autogenerating them or - * reading them from the file. Some file formats - * support multiple mipmaps in a single file in - * which case those mipmaps will be used rather - * than generating them. - * @param fileSuffix the suffix of the file name to be used as a - * hint of the file format to the underlying - * texture provider, or null if none and should be - * auto-detected (some texture providers do not - * support this) - * @return the texture data from the URL, or null if none of the - * registered texture providers could read the URL - * @throws IOException if an error occurred while reading the URL - */ - public static TextureData newTextureData(GLProfile glp, URL url, - boolean mipmap, - String fileSuffix) throws IOException { - if (fileSuffix == null) { - fileSuffix = FileUtil.getFileSuffix(url.getPath()); - } - return newTextureDataImpl(glp, url, 0, 0, mipmap, fileSuffix); - } - - //---------------------------------------------------------------------- - // These methods make no assumption about the OpenGL internal format - // or pixel format of the texture; they must be specified by the - // user. It is not allowed to supply 0 (indicating no preference) - // for either the internalFormat or the pixelFormat; - // IllegalArgumentException will be thrown in this case. - - /** - * Creates a TextureData from the given file, using the specified - * OpenGL internal format and pixel format for the texture which - * will eventually result. The internalFormat and pixelFormat must - * be specified and may not be zero; to use default values, use the - * variant of this method which does not take these arguments. Does - * no OpenGL work. - * - * @param glp the OpenGL Profile this texture data should be - * created for. - * @param file the file from which to read the texture data - * @param internalFormat the OpenGL internal format of the texture - * which will eventually result from the TextureData - * @param pixelFormat the OpenGL pixel format of the texture - * which will eventually result from the TextureData - * @param mipmap whether mipmaps should be produced for this - * texture either by autogenerating them or - * reading them from the file. Some file formats - * support multiple mipmaps in a single file in - * which case those mipmaps will be used rather - * than generating them. - * @param fileSuffix the suffix of the file name to be used as a - * hint of the file format to the underlying - * texture provider, or null if none and should be - * auto-detected (some texture providers do not - * support this) - * @return the texture data from the file, or null if none of the - * registered texture providers could read the file - * @throws IllegalArgumentException if either internalFormat or - * pixelFormat was 0 - * @throws IOException if an error occurred while reading the file - */ - public static TextureData newTextureData(GLProfile glp, File file, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException, IllegalArgumentException { - if ((internalFormat == 0) || (pixelFormat == 0)) { - throw new IllegalArgumentException("internalFormat and pixelFormat must be non-zero"); - } - - if (fileSuffix == null) { - fileSuffix = FileUtil.getFileSuffix(file); - } - - return newTextureDataImpl(glp, file, internalFormat, pixelFormat, mipmap, fileSuffix); - } - - /** - * Creates a TextureData from the given stream, using the specified - * OpenGL internal format and pixel format for the texture which - * will eventually result. The internalFormat and pixelFormat must - * be specified and may not be zero; to use default values, use the - * variant of this method which does not take these arguments. Does - * no OpenGL work. - * - * @param glp the OpenGL Profile this texture data should be - * created for. - * @param stream the stream from which to read the texture data - * @param internalFormat the OpenGL internal format of the texture - * which will eventually result from the TextureData - * @param pixelFormat the OpenGL pixel format of the texture - * which will eventually result from the TextureData - * @param mipmap whether mipmaps should be produced for this - * texture either by autogenerating them or - * reading them from the file. Some file formats - * support multiple mipmaps in a single file in - * which case those mipmaps will be used rather - * than generating them. - * @param fileSuffix the suffix of the file name to be used as a - * hint of the file format to the underlying - * texture provider, or null if none and should be - * auto-detected (some texture providers do not - * support this) - * @return the texture data from the stream, or null if none of the - * registered texture providers could read the stream - * @throws IllegalArgumentException if either internalFormat or - * pixelFormat was 0 - * @throws IOException if an error occurred while reading the stream - */ - public static TextureData newTextureData(GLProfile glp, InputStream stream, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException, IllegalArgumentException { - if ((internalFormat == 0) || (pixelFormat == 0)) { - throw new IllegalArgumentException("internalFormat and pixelFormat must be non-zero"); - } - - return newTextureDataImpl(glp, stream, internalFormat, pixelFormat, mipmap, fileSuffix); - } - - /** - * Creates a TextureData from the given URL, using the specified - * OpenGL internal format and pixel format for the texture which - * will eventually result. The internalFormat and pixelFormat must - * be specified and may not be zero; to use default values, use the - * variant of this method which does not take these arguments. Does - * no OpenGL work. - * - * @param glp the OpenGL Profile this texture data should be - * created for. - * @param url the URL from which to read the texture data - * @param internalFormat the OpenGL internal format of the texture - * which will eventually result from the TextureData - * @param pixelFormat the OpenGL pixel format of the texture - * which will eventually result from the TextureData - * @param mipmap whether mipmaps should be produced for this - * texture either by autogenerating them or - * reading them from the file. Some file formats - * support multiple mipmaps in a single file in - * which case those mipmaps will be used rather - * than generating them. - * @param fileSuffix the suffix of the file name to be used as a - * hint of the file format to the underlying - * texture provider, or null if none and should be - * auto-detected (some texture providers do not - * support this) - * @return the texture data from the URL, or null if none of the - * registered texture providers could read the URL - * @throws IllegalArgumentException if either internalFormat or - * pixelFormat was 0 - * @throws IOException if an error occurred while reading the URL - */ - public static TextureData newTextureData(GLProfile glp, URL url, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException, IllegalArgumentException { - if ((internalFormat == 0) || (pixelFormat == 0)) { - throw new IllegalArgumentException("internalFormat and pixelFormat must be non-zero"); - } - - if (fileSuffix == null) { - fileSuffix = FileUtil.getFileSuffix(url.getPath()); - } - - return newTextureDataImpl(glp, url, internalFormat, pixelFormat, mipmap, fileSuffix); - } - - //---------------------------------------------------------------------- - // methods that *do* require a current context - // - - /** - * Creates an OpenGL texture object from the specified TextureData - * using the current OpenGL context. - * - * @param data the texture data to turn into an OpenGL texture - * @throws GLException if no OpenGL context is current or if an - * OpenGL error occurred - * @throws IllegalArgumentException if the passed TextureData was null - */ - public static Texture newTexture(TextureData data) throws GLException, IllegalArgumentException { - if (data == null) { - throw new IllegalArgumentException("Null TextureData"); - } - return new Texture(data); - } - - /** - * Creates an OpenGL texture object from the specified file using - * the current OpenGL context. - * - * @param file the file from which to read the texture data - * @param mipmap whether mipmaps should be produced for this - * texture either by autogenerating them or - * reading them from the file. Some file formats - * support multiple mipmaps in a single file in - * which case those mipmaps will be used rather - * than generating them. - * @throws IOException if an error occurred while reading the file - * @throws GLException if no OpenGL context is current or if an - * OpenGL error occurred - */ - public static Texture newTexture(File file, boolean mipmap) throws IOException, GLException { - GLProfile glp = GLContext.getCurrentGL().getGLProfile(); - TextureData data = newTextureData(glp, file, mipmap, FileUtil.getFileSuffix(file)); - Texture texture = newTexture(data); - data.flush(); - return texture; - } - - /** - * Creates an OpenGL texture object from the specified stream using - * the current OpenGL context. - * - * @param stream the stream from which to read the texture data - * @param mipmap whether mipmaps should be produced for this - * texture either by autogenerating them or - * reading them from the file. Some file formats - * support multiple mipmaps in a single file in - * which case those mipmaps will be used rather - * than generating them. - * @param fileSuffix the suffix of the file name to be used as a - * hint of the file format to the underlying - * texture provider, or null if none and should be - * auto-detected (some texture providers do not - * support this) - * @throws IOException if an error occurred while reading the stream - * @throws GLException if no OpenGL context is current or if an - * OpenGL error occurred - */ - public static Texture newTexture(InputStream stream, boolean mipmap, String fileSuffix) throws IOException, GLException { - GLProfile glp = GLContext.getCurrentGL().getGLProfile(); - TextureData data = newTextureData(glp, stream, mipmap, fileSuffix); - Texture texture = newTexture(data); - data.flush(); - return texture; - } - - /** - * Creates an OpenGL texture object from the specified URL using the - * current OpenGL context. - * - * @param url the URL from which to read the texture data - * @param mipmap whether mipmaps should be produced for this - * texture either by autogenerating them or - * reading them from the file. Some file formats - * support multiple mipmaps in a single file in - * which case those mipmaps will be used rather - * than generating them. - * @param fileSuffix the suffix of the file name to be used as a - * hint of the file format to the underlying - * texture provider, or null if none and should be - * auto-detected (some texture providers do not - * support this) - * @throws IOException if an error occurred while reading the URL - * @throws GLException if no OpenGL context is current or if an - * OpenGL error occurred - */ - public static Texture newTexture(URL url, boolean mipmap, String fileSuffix) throws IOException, GLException { - if (fileSuffix == null) { - fileSuffix = FileUtil.getFileSuffix(url.getPath()); - } - GLProfile glp = GLContext.getCurrentGL().getGLProfile(); - TextureData data = newTextureData(glp, url, mipmap, fileSuffix); - Texture texture = newTexture(data); - data.flush(); - return texture; - } - - /** - * Creates an OpenGL texture object associated with the given OpenGL - * texture target using the current OpenGL context. The texture has - * no initial data. This is used, for example, to construct cube - * maps out of multiple TextureData objects. - * - * @param target the OpenGL target type, eg GL.GL_TEXTURE_2D, - * GL.GL_TEXTURE_RECTANGLE_ARB - * - * @throws GLException if no OpenGL context is current or if an - * OpenGL error occurred - */ - public static Texture newTexture(int target) throws GLException { - return new Texture(target); - } - - /** - * Wraps an OpenGL texture ID from an external library and allows - * some of the base methods from the Texture class, such as - * binding and querying of texture coordinates, to be used with - * it. Attempts to update such textures' contents will yield - * undefined results. - * - * @param textureID the OpenGL texture object to wrap - * @param target the OpenGL texture target, eg GL.GL_TEXTURE_2D, - * GL2.GL_TEXTURE_RECTANGLE - * @param texWidth the width of the texture in pixels - * @param texHeight the height of the texture in pixels - * @param imgWidth the width of the image within the texture in - * pixels (if the content is a sub-rectangle in the upper - * left corner); otherwise, pass in texWidth - * @param imgHeight the height of the image within the texture in - * pixels (if the content is a sub-rectangle in the upper - * left corner); otherwise, pass in texHeight - * @param mustFlipVertically indicates whether the texture - * coordinates must be flipped vertically - * in order to properly display the - * texture - */ - public static Texture newTexture(int textureID, - int target, - int texWidth, - int texHeight, - int imgWidth, - int imgHeight, - boolean mustFlipVertically) { - return new Texture(textureID, - target, - texWidth, - texHeight, - imgWidth, - imgHeight, - mustFlipVertically); - } - - /** - * Writes the given texture to a file. The type of the file is - * inferred from its suffix. An OpenGL context must be current in - * order to fetch the texture data back from the OpenGL pipeline. - * This method causes the specified Texture to be bound to the - * GL_TEXTURE_2D state. If no suitable writer for the requested file - * format was found, throws an IOException. <P> - * - * Reasonable attempts are made to produce good results in the - * resulting images. The Targa, SGI and ImageIO writers produce - * results in the correct vertical orientation for those file - * formats. The DDS writer performs no vertical flip of the data, - * even in uncompressed mode. (It is impossible to perform such a - * vertical flip with compressed data.) Applications should keep - * this in mind when using this routine to save textures to disk for - * later re-loading. <P> - * - * Any mipmaps for the specified texture are currently discarded - * when it is written to disk, regardless of whether the underlying - * file format supports multiple mipmaps in a given file. - * - * @throws IOException if an error occurred during writing or no - * suitable writer was found - * @throws GLException if no OpenGL context was current or an - * OpenGL-related error occurred - */ - public static void write(Texture texture, File file) throws IOException, GLException { - if (texture.getTarget() != GL.GL_TEXTURE_2D) { - throw new GLException("Only GL_TEXTURE_2D textures are supported"); - } - - // First fetch the texture data - GL _gl = GLContext.getCurrentGL(); - if (!_gl.isGL2()) { - throw new GLException("Only GL2 supports fetching compressed images, GL: " + _gl); - } - GL2 gl = _gl.getGL2(); - - texture.bind(); - int internalFormat = glGetTexLevelParameteri(gl, GL.GL_TEXTURE_2D, 0, GL2.GL_TEXTURE_INTERNAL_FORMAT); - int width = glGetTexLevelParameteri(gl, GL.GL_TEXTURE_2D, 0, GL2.GL_TEXTURE_WIDTH); - int height = glGetTexLevelParameteri(gl, GL.GL_TEXTURE_2D, 0, GL2.GL_TEXTURE_HEIGHT); - int border = glGetTexLevelParameteri(gl, GL.GL_TEXTURE_2D, 0, GL2.GL_TEXTURE_BORDER); - TextureData data = null; - if (internalFormat == GL.GL_COMPRESSED_RGB_S3TC_DXT1_EXT || - internalFormat == GL.GL_COMPRESSED_RGBA_S3TC_DXT1_EXT || - internalFormat == GL.GL_COMPRESSED_RGBA_S3TC_DXT3_EXT || - internalFormat == GL.GL_COMPRESSED_RGBA_S3TC_DXT5_EXT) { - // Fetch using glGetCompressedTexImage - int size = glGetTexLevelParameteri(gl, GL.GL_TEXTURE_2D, 0, GL2.GL_TEXTURE_COMPRESSED_IMAGE_SIZE); - ByteBuffer res = ByteBuffer.allocate(size); - gl.glGetCompressedTexImage(GL.GL_TEXTURE_2D, 0, res); - data = new TextureData(gl.getGLProfile(), internalFormat, width, height, border, internalFormat, GL.GL_UNSIGNED_BYTE, - false, true, true, res, null); - } else { - int bytesPerPixel = 0; - int fetchedFormat = 0; - switch (internalFormat) { - case GL.GL_RGB: - case GL2.GL_BGR: - case GL.GL_RGB8: - bytesPerPixel = 3; - fetchedFormat = GL.GL_RGB; - break; - case GL.GL_RGBA: - case GL2.GL_BGRA: - case GL2.GL_ABGR_EXT: - case GL.GL_RGBA8: - bytesPerPixel = 4; - fetchedFormat = GL.GL_RGBA; - break; - default: - throw new IOException("Unsupported texture internal format 0x" + Integer.toHexString(internalFormat)); - } - - // Fetch using glGetTexImage - int packAlignment = glGetInteger(GL.GL_PACK_ALIGNMENT); - int packRowLength = glGetInteger(GL2.GL_PACK_ROW_LENGTH); - int packSkipRows = glGetInteger(GL2.GL_PACK_SKIP_ROWS); - int packSkipPixels = glGetInteger(GL2.GL_PACK_SKIP_PIXELS); - int packSwapBytes = glGetInteger(GL2.GL_PACK_SWAP_BYTES); - - gl.glPixelStorei(GL.GL_PACK_ALIGNMENT, 1); - gl.glPixelStorei(GL2.GL_PACK_ROW_LENGTH, 0); - gl.glPixelStorei(GL2.GL_PACK_SKIP_ROWS, 0); - gl.glPixelStorei(GL2.GL_PACK_SKIP_PIXELS, 0); - gl.glPixelStorei(GL2.GL_PACK_SWAP_BYTES, 0); - - ByteBuffer res = ByteBuffer.allocate((width + (2 * border)) * - (height + (2 * border)) * - bytesPerPixel); - if (DEBUG) { - System.out.println("Allocated buffer of size " + res.remaining() + " for fetched image (" + - ((fetchedFormat == GL.GL_RGB) ? "GL_RGB" : "GL_RGBA") + ")"); - } - gl.glGetTexImage(GL.GL_TEXTURE_2D, 0, fetchedFormat, GL.GL_UNSIGNED_BYTE, res); - - gl.glPixelStorei(GL.GL_PACK_ALIGNMENT, packAlignment); - gl.glPixelStorei(GL2.GL_PACK_ROW_LENGTH, packRowLength); - gl.glPixelStorei(GL2.GL_PACK_SKIP_ROWS, packSkipRows); - gl.glPixelStorei(GL2.GL_PACK_SKIP_PIXELS, packSkipPixels); - gl.glPixelStorei(GL2.GL_PACK_SWAP_BYTES, packSwapBytes); - - data = new TextureData(gl.getGLProfile(), internalFormat, width, height, border, fetchedFormat, GL.GL_UNSIGNED_BYTE, - false, false, false, res, null); - - if (DEBUG) { - System.out.println("data.getPixelFormat() = " + - ((data.getPixelFormat() == GL.GL_RGB) ? "GL_RGB" : "GL_RGBA")); - } - } - - write(data, file); - } - - public static void write(TextureData data, File file) throws IOException, GLException { - for (Iterator iter = textureWriters.iterator(); iter.hasNext(); ) { - TextureWriter writer = (TextureWriter) iter.next(); - if (writer.write(file, data)) { - return; - } - } - - throw new IOException("No suitable texture writer found for "+file.getAbsolutePath()); - } - - //---------------------------------------------------------------------- - // SPI support - // - - /** Adds a TextureProvider to support reading of a new file - format. */ - public static void addTextureProvider(TextureProvider provider) { - // Must always add at the front so the ImageIO provider is last, - // so we don't accidentally use it instead of a user's possibly - // more optimal provider - textureProviders.add(0, provider); - } - - /** Adds a TextureWriter to support writing of a new file - format. */ - public static void addTextureWriter(TextureWriter writer) { - // Must always add at the front so the ImageIO writer is last, - // so we don't accidentally use it instead of a user's possibly - // more optimal writer - textureWriters.add(0, writer); - } - - //--------------------------------------------------------------------------- - // Global disabling of texture rectangle extension - // - - /** Toggles the use of the GL_ARB_texture_rectangle extension by the - TextureIO classes. By default, on hardware supporting this - extension, the TextureIO classes may use the - GL_ARB_texture_rectangle extension for non-power-of-two - textures. (If the hardware supports the - GL_ARB_texture_non_power_of_two extension, that one is - preferred.) In some situations, for example when writing - shaders, it is advantageous to force the texture target to - always be GL_TEXTURE_2D in order to have one version of the - shader, even at the expense of texture memory in the case where - NPOT textures are not supported. This method allows the use of - the GL_ARB_texture_rectangle extension to be turned off globally - for this purpose. The default is that the use of the extension - is enabled. */ - public static void setTexRectEnabled(boolean enabled) { - texRectEnabled = enabled; - } - - /** Indicates whether the GL_ARB_texture_rectangle extension is - allowed to be used for non-power-of-two textures; see {@link - #setTexRectEnabled setTexRectEnabled}. */ - public static boolean isTexRectEnabled() { - return texRectEnabled; - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - private static List/*<TextureProvider>*/ textureProviders = new ArrayList/*<TextureProvider>*/(); - private static List/*<TextureWriter>*/ textureWriters = new ArrayList/*<TextureWriter>*/(); - - static { - // ImageIO provider, the fall-back, must be the first one added - if(GLProfile.isAWTJOGLAvailable()) { - try { - // Use reflection to avoid compile-time dependencies on AWT-related classes - TextureProvider provider = (TextureProvider) - Class.forName("com.sun.opengl.util.texture.spi.awt.IIOTextureProvider").newInstance(); - addTextureProvider(provider); - } catch (Exception e) { - if (DEBUG) { - e.printStackTrace(); - } - } - } - - // Other special-case providers - addTextureProvider(new DDSTextureProvider()); - addTextureProvider(new SGITextureProvider()); - addTextureProvider(new TGATextureProvider()); - - // ImageIO writer, the fall-back, must be the first one added - if(GLProfile.isAWTJOGLAvailable()) { - try { - // Use reflection to avoid compile-time dependencies on AWT-related classes - TextureWriter writer = (TextureWriter) - Class.forName("com.sun.opengl.util.texture.spi.awt.IIOTextureWriter").newInstance(); - addTextureWriter(writer); - } catch (Exception e) { - if (DEBUG) { - e.printStackTrace(); - } - } catch (Error e) { - if (DEBUG) { - e.printStackTrace(); - } - } - } - - // Other special-case writers - addTextureWriter(new DDSTextureWriter()); - addTextureWriter(new SGITextureWriter()); - addTextureWriter(new TGATextureWriter()); - addTextureWriter(new NetPbmTextureWriter()); - } - - // Implementation methods - private static TextureData newTextureDataImpl(GLProfile glp, File file, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException { - if (file == null) { - throw new IOException("File was null"); - } - - fileSuffix = toLowerCase(fileSuffix); - - for (Iterator iter = textureProviders.iterator(); iter.hasNext(); ) { - TextureProvider provider = (TextureProvider) iter.next(); - TextureData data = provider.newTextureData(glp, file, - internalFormat, - pixelFormat, - mipmap, - fileSuffix); - if (data != null) { - return data; - } - } - - throw new IOException("No suitable reader for given file "+file.getAbsolutePath()); - } - - private static TextureData newTextureDataImpl(GLProfile glp, InputStream stream, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException { - if (stream == null) { - throw new IOException("Stream was null"); - } - - fileSuffix = toLowerCase(fileSuffix); - - // Note: use of BufferedInputStream works around 4764639/4892246 - if (!(stream instanceof BufferedInputStream)) { - stream = new BufferedInputStream(stream); - } - - for (Iterator iter = textureProviders.iterator(); iter.hasNext(); ) { - TextureProvider provider = (TextureProvider) iter.next(); - TextureData data = provider.newTextureData(glp, stream, - internalFormat, - pixelFormat, - mipmap, - fileSuffix); - if (data != null) { - return data; - } - } - - throw new IOException("No suitable reader for given stream"); - } - - private static TextureData newTextureDataImpl(GLProfile glp, URL url, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException { - if (url == null) { - throw new IOException("URL was null"); - } - - fileSuffix = toLowerCase(fileSuffix); - - for (Iterator iter = textureProviders.iterator(); iter.hasNext(); ) { - TextureProvider provider = (TextureProvider) iter.next(); - TextureData data = provider.newTextureData(glp, url, - internalFormat, - pixelFormat, - mipmap, - fileSuffix); - if (data != null) { - return data; - } - } - - throw new IOException("No suitable reader for given URL "+url); - } - - //---------------------------------------------------------------------- - // DDS provider -- supports files only for now - static class DDSTextureProvider implements TextureProvider { - public TextureData newTextureData(GLProfile glp, File file, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException { - if (DDS.equals(fileSuffix) || - DDS.equals(FileUtil.getFileSuffix(file))) { - DDSImage image = DDSImage.read(file); - return newTextureData(glp, image, internalFormat, pixelFormat, mipmap); - } - - return null; - } - - public TextureData newTextureData(GLProfile glp, InputStream stream, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException { - if (DDS.equals(fileSuffix) || - DDSImage.isDDSImage(stream)) { - byte[] data = StreamUtil.readAll2Array(stream); - ByteBuffer buf = ByteBuffer.wrap(data); - DDSImage image = DDSImage.read(buf); - return newTextureData(glp, image, internalFormat, pixelFormat, mipmap); - } - - return null; - } - - public TextureData newTextureData(GLProfile glp, URL url, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException { - InputStream stream = new BufferedInputStream(url.openStream()); - try { - return newTextureData(glp, stream, internalFormat, pixelFormat, mipmap, fileSuffix); - } finally { - stream.close(); - } - } - - private TextureData newTextureData(GLProfile glp, final DDSImage image, - int internalFormat, - int pixelFormat, - boolean mipmap) { - DDSImage.ImageInfo info = image.getMipMap(0); - if (pixelFormat == 0) { - switch (image.getPixelFormat()) { - case DDSImage.D3DFMT_R8G8B8: - pixelFormat = GL.GL_RGB; - break; - default: - pixelFormat = GL.GL_RGBA; - break; - } - } - if (info.isCompressed()) { - switch (info.getCompressionFormat()) { - case DDSImage.D3DFMT_DXT1: - internalFormat = GL.GL_COMPRESSED_RGB_S3TC_DXT1_EXT; - break; - case DDSImage.D3DFMT_DXT3: - internalFormat = GL.GL_COMPRESSED_RGBA_S3TC_DXT3_EXT; - break; - case DDSImage.D3DFMT_DXT5: - internalFormat = GL.GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; - break; - default: - throw new RuntimeException("Unsupported DDS compression format \"" + - DDSImage.getCompressionFormatName(info.getCompressionFormat()) + "\""); - } - } - if (internalFormat == 0) { - switch (image.getPixelFormat()) { - case DDSImage.D3DFMT_R8G8B8: - pixelFormat = GL.GL_RGB; - break; - default: - pixelFormat = GL.GL_RGBA; - break; - } - } - TextureData.Flusher flusher = new TextureData.Flusher() { - public void flush() { - image.close(); - } - }; - TextureData data; - if (mipmap && image.getNumMipMaps() > 0) { - Buffer[] mipmapData = new Buffer[image.getNumMipMaps()]; - for (int i = 0; i < image.getNumMipMaps(); i++) { - mipmapData[i] = image.getMipMap(i).getData(); - } - data = new TextureData(glp, internalFormat, - info.getWidth(), - info.getHeight(), - 0, - pixelFormat, - GL.GL_UNSIGNED_BYTE, - info.isCompressed(), - true, - mipmapData, - flusher); - } else { - // Fix this up for the end user because we can't generate - // mipmaps for compressed textures - mipmap = false; - data = new TextureData(glp, internalFormat, - info.getWidth(), - info.getHeight(), - 0, - pixelFormat, - GL.GL_UNSIGNED_BYTE, - mipmap, - info.isCompressed(), - true, - info.getData(), - flusher); - } - return data; - } - } - - //---------------------------------------------------------------------- - // Base class for SGI RGB and TGA image providers - static abstract class StreamBasedTextureProvider implements TextureProvider { - public TextureData newTextureData(GLProfile glp, File file, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException { - InputStream inStream = new BufferedInputStream(new FileInputStream(file)); - try { - // The SGIImage and TGAImage implementations use InputStreams - // anyway so there isn't much point in having a separate code - // path for files - return newTextureData(glp, inStream, - internalFormat, - pixelFormat, - mipmap, - ((fileSuffix != null) ? fileSuffix : FileUtil.getFileSuffix(file))); - } finally { - inStream.close(); - } - } - - public TextureData newTextureData(GLProfile glp, URL url, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException { - InputStream stream = new BufferedInputStream(url.openStream()); - try { - return newTextureData(glp, stream, internalFormat, pixelFormat, mipmap, fileSuffix); - } finally { - stream.close(); - } - } - } - - //---------------------------------------------------------------------- - // SGI RGB image provider - static class SGITextureProvider extends StreamBasedTextureProvider { - public TextureData newTextureData(GLProfile glp, InputStream stream, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException { - if (SGI.equals(fileSuffix) || - SGI_RGB.equals(fileSuffix) || - SGIImage.isSGIImage(stream)) { - SGIImage image = SGIImage.read(stream); - if (pixelFormat == 0) { - pixelFormat = image.getFormat(); - } - if (internalFormat == 0) { - internalFormat = image.getFormat(); - } - return new TextureData(glp, internalFormat, - image.getWidth(), - image.getHeight(), - 0, - pixelFormat, - GL.GL_UNSIGNED_BYTE, - mipmap, - false, - false, - ByteBuffer.wrap(image.getData()), - null); - } - - return null; - } - } - - //---------------------------------------------------------------------- - // TGA (Targa) image provider - static class TGATextureProvider extends StreamBasedTextureProvider { - public TextureData newTextureData(GLProfile glp, InputStream stream, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException { - if (TGA.equals(fileSuffix)) { - TGAImage image = TGAImage.read(stream); - if (pixelFormat == 0) { - pixelFormat = image.getGLFormat(); - } - if (internalFormat == 0) { - GL gl = GLContext.getCurrentGL(); - if(gl.isGL2()) { - internalFormat = GL.GL_RGBA8; - } else { - internalFormat = (image.getBytesPerPixel()==4)?GL.GL_RGBA:GL.GL_RGB; - } - } - return new TextureData(glp, internalFormat, - image.getWidth(), - image.getHeight(), - 0, - pixelFormat, - GL.GL_UNSIGNED_BYTE, - mipmap, - false, - false, - image.getData(), - null); - } - - return null; - } - } - - //---------------------------------------------------------------------- - // DDS texture writer - // - static class DDSTextureWriter implements TextureWriter { - public boolean write(File file, - TextureData data) throws IOException { - if (DDS.equals(FileUtil.getFileSuffix(file))) { - // See whether the DDS writer can handle this TextureData - int pixelFormat = data.getPixelFormat(); - int pixelType = data.getPixelType(); - if (pixelType != GL.GL_BYTE && - pixelType != GL.GL_UNSIGNED_BYTE) { - throw new IOException("DDS writer only supports byte / unsigned byte textures"); - } - - int d3dFormat = 0; - // FIXME: some of these are probably not completely correct and would require swizzling - switch (pixelFormat) { - case GL.GL_RGB: d3dFormat = DDSImage.D3DFMT_R8G8B8; break; - case GL.GL_RGBA: d3dFormat = DDSImage.D3DFMT_A8R8G8B8; break; - case GL.GL_COMPRESSED_RGB_S3TC_DXT1_EXT: d3dFormat = DDSImage.D3DFMT_DXT1; break; - case GL.GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: throw new IOException("RGBA DXT1 not yet supported"); - case GL.GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: d3dFormat = DDSImage.D3DFMT_DXT3; break; - case GL.GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: d3dFormat = DDSImage.D3DFMT_DXT5; break; - default: throw new IOException("Unsupported pixel format 0x" + Integer.toHexString(pixelFormat) + " by DDS writer"); - } - - ByteBuffer[] mipmaps = null; - if (data.getMipmapData() != null) { - mipmaps = new ByteBuffer[data.getMipmapData().length]; - for (int i = 0; i < mipmaps.length; i++) { - mipmaps[i] = (ByteBuffer) data.getMipmapData()[i]; - } - } else { - mipmaps = new ByteBuffer[] { (ByteBuffer) data.getBuffer() }; - } - - DDSImage image = DDSImage.createFromData(d3dFormat, - data.getWidth(), - data.getHeight(), - mipmaps); - image.write(file); - return true; - } - - return false; - } - } - - //---------------------------------------------------------------------- - // SGI (rgb) texture writer - // - static class SGITextureWriter implements TextureWriter { - public boolean write(File file, - TextureData data) throws IOException { - String fileSuffix = FileUtil.getFileSuffix(file); - if (SGI.equals(fileSuffix) || - SGI_RGB.equals(fileSuffix)) { - // See whether the SGI writer can handle this TextureData - int pixelFormat = data.getPixelFormat(); - int pixelType = data.getPixelType(); - if ((pixelFormat == GL.GL_RGB || - pixelFormat == GL.GL_RGBA) && - (pixelType == GL.GL_BYTE || - pixelType == GL.GL_UNSIGNED_BYTE)) { - ByteBuffer buf = ((data.getBuffer() != null) ? - (ByteBuffer) data.getBuffer() : - (ByteBuffer) data.getMipmapData()[0]); - byte[] bytes; - if (buf.hasArray()) { - bytes = buf.array(); - } else { - buf.rewind(); - bytes = new byte[buf.remaining()]; - buf.get(bytes); - buf.rewind(); - } - - SGIImage image = SGIImage.createFromData(data.getWidth(), - data.getHeight(), - (pixelFormat == GL.GL_RGBA), - bytes); - image.write(file, false); - return true; - } - - throw new IOException("SGI writer doesn't support this pixel format / type (only GL_RGB/A + bytes)"); - } - - return false; - } - } - - //---------------------------------------------------------------------- - // TGA (Targa) texture writer - - static class TGATextureWriter implements TextureWriter { - public boolean write(File file, - TextureData data) throws IOException { - if (TGA.equals(FileUtil.getFileSuffix(file))) { - // See whether the TGA writer can handle this TextureData - int pixelFormat = data.getPixelFormat(); - int pixelType = data.getPixelType(); - if ((pixelFormat == GL.GL_RGB || - pixelFormat == GL.GL_RGBA) && - (pixelType == GL.GL_BYTE || - pixelType == GL.GL_UNSIGNED_BYTE)) { - ByteBuffer buf = ((data.getBuffer() != null) ? - (ByteBuffer) data.getBuffer() : - (ByteBuffer) data.getMipmapData()[0]); - // Must reverse order of red and blue channels to get correct results - int skip = ((pixelFormat == GL.GL_RGB) ? 3 : 4); - for (int i = 0; i < buf.remaining(); i += skip) { - byte red = buf.get(i + 0); - byte blue = buf.get(i + 2); - buf.put(i + 0, blue); - buf.put(i + 2, red); - } - - TGAImage image = TGAImage.createFromData(data.getWidth(), - data.getHeight(), - (pixelFormat == GL.GL_RGBA), - false, - ((data.getBuffer() != null) ? - (ByteBuffer) data.getBuffer() : - (ByteBuffer) data.getMipmapData()[0])); - image.write(file); - return true; - } - - throw new IOException("TGA writer doesn't support this pixel format / type (only GL_RGB/A + bytes)"); - } - - return false; - } - } - - //---------------------------------------------------------------------- - // Helper routines - // - - private static int glGetInteger(int pname) { - int[] tmp = new int[1]; - GL gl = GLContext.getCurrentGL(); - gl.glGetIntegerv(pname, tmp, 0); - return tmp[0]; - } - - private static int glGetTexLevelParameteri(GL2 gl, int target, int level, int pname) { - int[] tmp = new int[1]; - gl.glGetTexLevelParameteriv(target, 0, pname, tmp, 0); - return tmp[0]; - } - - private static String toLowerCase(String arg) { - if (arg == null) { - return null; - } - - return arg.toLowerCase(); - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/texture/awt/AWTTextureData.java b/src/jogl/classes/com/sun/opengl/util/texture/awt/AWTTextureData.java deleted file mode 100755 index f98feb8e9..000000000 --- a/src/jogl/classes/com/sun/opengl/util/texture/awt/AWTTextureData.java +++ /dev/null @@ -1,498 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - */ - -package com.sun.opengl.util.texture.awt; - -import java.awt.AlphaComposite; -import java.awt.Color; -import java.awt.Graphics2D; -import java.awt.Transparency; -import java.awt.color.*; -import java.awt.image.*; -import java.nio.*; - -import javax.media.opengl.*; -import com.sun.opengl.util.texture.*; - -public class AWTTextureData extends TextureData { - // Mechanism for lazily converting input BufferedImages with custom - // ColorModels to standard ones for uploading to OpenGL, as well as - // backing off from the optimizations of hoping that either - // GL_EXT_abgr or OpenGL 1.2 are present - private BufferedImage imageForLazyCustomConversion; - private boolean expectingEXTABGR; - private boolean expectingGL12; - - private static final ColorModel rgbaColorModel = - new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB), - new int[] {8, 8, 8, 8}, true, true, - Transparency.TRANSLUCENT, - DataBuffer.TYPE_BYTE); - private static final ColorModel rgbColorModel = - new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB), - new int[] {8, 8, 8, 0}, false, false, - Transparency.OPAQUE, - DataBuffer.TYPE_BYTE); - - - /** - * Constructs a new TextureData object with the specified parameters - * and data contained in the given BufferedImage. The resulting - * TextureData "wraps" the contents of the BufferedImage, so if a - * modification is made to the BufferedImage between the time the - * TextureData is constructed and when a Texture is made from the - * TextureData, that modification will be visible in the resulting - * Texture. - * - * @param glp the OpenGL Profile this texture data should be - * created for. - * @param internalFormat the OpenGL internal format for the - * resulting texture; may be 0, in which case - * it is inferred from the image's type - * @param pixelFormat the OpenGL internal format for the - * resulting texture; may be 0, in which case - * it is inferred from the image's type (note: - * this argument is currently always ignored) - * @param mipmap indicates whether mipmaps should be - * autogenerated (using GLU) for the resulting - * texture - * @param image the image containing the texture data - */ - public AWTTextureData(GLProfile glp, - int internalFormat, - int pixelFormat, - boolean mipmap, - BufferedImage image) { - super(glp); - if (internalFormat == 0) { - this.internalFormat = image.getColorModel().hasAlpha() ? GL.GL_RGBA : GL.GL_RGB; - } else { - this.internalFormat = internalFormat; - } - createFromImage(glp, image); - this.mipmap = mipmap; - if (buffer != null) { - estimatedMemorySize = estimatedMemorySize(buffer); - } else { - // In the lazy custom conversion case we don't yet have a buffer - if (imageForLazyCustomConversion != null) { - estimatedMemorySize = estimatedMemorySize(wrapImageDataBuffer(imageForLazyCustomConversion)); - } - } - } - - /** Returns the intended OpenGL pixel format of the texture data. */ - public int getPixelFormat() { - if (imageForLazyCustomConversion != null) { - if (!((expectingEXTABGR && haveEXTABGR) || - (expectingGL12 && haveGL12))) { - revertPixelFormatAndType(); - } - } - return pixelFormat; - } - /** Returns the intended OpenGL pixel type of the texture data. */ - public int getPixelType() { - if (imageForLazyCustomConversion != null) { - if (!((expectingEXTABGR && haveEXTABGR) || - (expectingGL12 && haveGL12))) { - revertPixelFormatAndType(); - } - } - return pixelType; - } - - /** Returns the texture data, or null if it is specified as a set of mipmaps. */ - public Buffer getBuffer() { - if (imageForLazyCustomConversion != null) { - if (!((expectingEXTABGR && haveEXTABGR) || - (expectingGL12 && haveGL12))) { - revertPixelFormatAndType(); - // Must present the illusion to the end user that we are simply - // wrapping the input BufferedImage - createFromCustom(imageForLazyCustomConversion); - } - } - return buffer; - } - - private void createFromImage(GLProfile glp, BufferedImage image) { - pixelType = 0; // Determine from image - mustFlipVertically = true; - - width = image.getWidth(); - height = image.getHeight(); - - int scanlineStride; - - SampleModel sm = image.getRaster().getSampleModel(); - if (sm instanceof SinglePixelPackedSampleModel) { - scanlineStride = - ((SinglePixelPackedSampleModel)sm).getScanlineStride(); - } else if (sm instanceof MultiPixelPackedSampleModel) { - scanlineStride = - ((MultiPixelPackedSampleModel)sm).getScanlineStride(); - } else if (sm instanceof ComponentSampleModel) { - scanlineStride = - ((ComponentSampleModel)sm).getScanlineStride(); - } else { - // This will only happen for TYPE_CUSTOM anyway - setupLazyCustomConversion(image); - return; - } - - width = image.getWidth(); - height = image.getHeight(); - - if (glp.isGL2GL3()) { - switch (image.getType()) { - case BufferedImage.TYPE_INT_RGB: - pixelFormat = GL2GL3.GL_BGRA; - pixelType = GL2GL3.GL_UNSIGNED_INT_8_8_8_8_REV; - rowLength = scanlineStride; - alignment = 4; - expectingGL12 = true; - setupLazyCustomConversion(image); - break; - case BufferedImage.TYPE_INT_ARGB_PRE: - pixelFormat = GL2GL3.GL_BGRA; - pixelType = GL2GL3.GL_UNSIGNED_INT_8_8_8_8_REV; - rowLength = scanlineStride; - alignment = 4; - expectingGL12 = true; - setupLazyCustomConversion(image); - break; - case BufferedImage.TYPE_INT_BGR: - pixelFormat = GL.GL_RGBA; - pixelType = GL2GL3.GL_UNSIGNED_INT_8_8_8_8_REV; - rowLength = scanlineStride; - alignment = 4; - expectingGL12 = true; - setupLazyCustomConversion(image); - break; - case BufferedImage.TYPE_3BYTE_BGR: - { - // we can pass the image data directly to OpenGL only if - // we have an integral number of pixels in each scanline - if ((scanlineStride % 3) == 0) { - pixelFormat = GL2GL3.GL_BGR; - pixelType = GL.GL_UNSIGNED_BYTE; - rowLength = scanlineStride / 3; - alignment = 1; - } else { - setupLazyCustomConversion(image); - return; - } - } - break; - case BufferedImage.TYPE_4BYTE_ABGR_PRE: - { - // we can pass the image data directly to OpenGL only if - // we have an integral number of pixels in each scanline - // and only if the GL_EXT_abgr extension is present - - // NOTE: disabling this code path for now as it appears it's - // buggy at least on some NVidia drivers and doesn't perform - // the necessary byte swapping (FIXME: needs more - // investigation) - if ((scanlineStride % 4) == 0 && glp.isGL2() && false) { - pixelFormat = GL2.GL_ABGR_EXT; - pixelType = GL.GL_UNSIGNED_BYTE; - rowLength = scanlineStride / 4; - alignment = 4; - - // Store a reference to the original image for later in - // case it turns out that we don't have GL_EXT_abgr at the - // time we're going to do the texture upload to OpenGL - setupLazyCustomConversion(image); - expectingEXTABGR = true; - break; - } else { - setupLazyCustomConversion(image); - return; - } - } - case BufferedImage.TYPE_USHORT_565_RGB: - pixelFormat = GL.GL_RGB; - pixelType = GL.GL_UNSIGNED_SHORT_5_6_5; - rowLength = scanlineStride; - alignment = 2; - expectingGL12 = true; - setupLazyCustomConversion(image); - break; - case BufferedImage.TYPE_USHORT_555_RGB: - pixelFormat = GL2GL3.GL_BGRA; - pixelType = GL2GL3.GL_UNSIGNED_SHORT_1_5_5_5_REV; - rowLength = scanlineStride; - alignment = 2; - expectingGL12 = true; - setupLazyCustomConversion(image); - break; - case BufferedImage.TYPE_BYTE_GRAY: - pixelFormat = GL.GL_LUMINANCE; - pixelType = GL.GL_UNSIGNED_BYTE; - rowLength = scanlineStride; - alignment = 1; - break; - case BufferedImage.TYPE_USHORT_GRAY: - pixelFormat = GL.GL_LUMINANCE; - pixelType = GL.GL_UNSIGNED_SHORT; - rowLength = scanlineStride; - alignment = 2; - break; - // Note: TYPE_INT_ARGB and TYPE_4BYTE_ABGR images go down the - // custom code path to satisfy the invariant that images with an - // alpha channel always go down with premultiplied alpha. - case BufferedImage.TYPE_INT_ARGB: - case BufferedImage.TYPE_4BYTE_ABGR: - case BufferedImage.TYPE_BYTE_BINARY: - case BufferedImage.TYPE_BYTE_INDEXED: - case BufferedImage.TYPE_CUSTOM: - default: - ColorModel cm = image.getColorModel(); - if (cm.equals(rgbColorModel)) { - pixelFormat = GL.GL_RGB; - pixelType = GL.GL_UNSIGNED_BYTE; - rowLength = scanlineStride / 3; - alignment = 1; - } else if (cm.equals(rgbaColorModel)) { - pixelFormat = GL.GL_RGBA; - pixelType = GL.GL_UNSIGNED_BYTE; - rowLength = scanlineStride / 4; // FIXME: correct? - alignment = 4; - } else { - setupLazyCustomConversion(image); - return; - } - break; - } - } else { - switch (image.getType()) { - case BufferedImage.TYPE_INT_RGB: - pixelFormat = GL.GL_RGB; - pixelType = GL.GL_UNSIGNED_BYTE; - rowLength = scanlineStride; - alignment = 3; - expectingGL12 = true; - setupLazyCustomConversion(image); - break; - case BufferedImage.TYPE_INT_ARGB_PRE: - throw new GLException("INT_ARGB_PRE n.a."); - case BufferedImage.TYPE_INT_BGR: - throw new GLException("INT_BGR n.a."); - case BufferedImage.TYPE_3BYTE_BGR: - throw new GLException("INT_BGR n.a."); - case BufferedImage.TYPE_4BYTE_ABGR_PRE: - throw new GLException("INT_BGR n.a."); - case BufferedImage.TYPE_USHORT_565_RGB: - pixelFormat = GL.GL_RGB; - pixelType = GL.GL_UNSIGNED_SHORT_5_6_5; - rowLength = scanlineStride; - alignment = 2; - expectingGL12 = true; - setupLazyCustomConversion(image); - break; - case BufferedImage.TYPE_USHORT_555_RGB: - pixelFormat = GL.GL_RGBA; - pixelType = GL.GL_UNSIGNED_SHORT_5_5_5_1; - rowLength = scanlineStride; - alignment = 2; - expectingGL12 = true; - setupLazyCustomConversion(image); - break; - case BufferedImage.TYPE_BYTE_GRAY: - pixelFormat = GL.GL_LUMINANCE; - pixelType = GL.GL_UNSIGNED_BYTE; - rowLength = scanlineStride; - alignment = 1; - break; - case BufferedImage.TYPE_USHORT_GRAY: - throw new GLException("USHORT_GRAY n.a."); - // Note: TYPE_INT_ARGB and TYPE_4BYTE_ABGR images go down the - // custom code path to satisfy the invariant that images with an - // alpha channel always go down with premultiplied alpha. - case BufferedImage.TYPE_INT_ARGB: - case BufferedImage.TYPE_4BYTE_ABGR: - case BufferedImage.TYPE_BYTE_BINARY: - case BufferedImage.TYPE_BYTE_INDEXED: - case BufferedImage.TYPE_CUSTOM: - default: - ColorModel cm = image.getColorModel(); - if (cm.equals(rgbColorModel)) { - pixelFormat = GL.GL_RGB; - pixelType = GL.GL_UNSIGNED_BYTE; - rowLength = scanlineStride / 3; - alignment = 1; - } else if (cm.equals(rgbaColorModel)) { - pixelFormat = GL.GL_RGBA; - pixelType = GL.GL_UNSIGNED_BYTE; - rowLength = scanlineStride / 4; // FIXME: correct? - alignment = 4; - } else { - setupLazyCustomConversion(image); - return; - } - break; - } - } - - createNIOBufferFromImage(image); - } - - private void setupLazyCustomConversion(BufferedImage image) { - imageForLazyCustomConversion = image; - boolean hasAlpha = image.getColorModel().hasAlpha(); - if (pixelFormat == 0) { - pixelFormat = hasAlpha ? GL.GL_RGBA : GL.GL_RGB; - } - alignment = 1; // FIXME: do we need better? - rowLength = width; // FIXME: correct in all cases? - - // Allow previously-selected pixelType (if any) to override that - // we can infer from the DataBuffer - DataBuffer data = image.getRaster().getDataBuffer(); - if (data instanceof DataBufferByte || isPackedInt(image)) { - // Don't use GL_UNSIGNED_INT for BufferedImage packed int images - if (pixelType == 0) pixelType = GL.GL_UNSIGNED_BYTE; - } else if (data instanceof DataBufferDouble) { - throw new RuntimeException("DataBufferDouble rasters not supported by OpenGL"); - } else if (data instanceof DataBufferFloat) { - if (pixelType == 0) pixelType = GL.GL_FLOAT; - } else if (data instanceof DataBufferInt) { - // FIXME: should we support signed ints? - if (pixelType == 0) pixelType = GL2GL3.GL_UNSIGNED_INT; - } else if (data instanceof DataBufferShort) { - if (pixelType == 0) pixelType = GL.GL_SHORT; - } else if (data instanceof DataBufferUShort) { - if (pixelType == 0) pixelType = GL.GL_UNSIGNED_SHORT; - } else { - throw new RuntimeException("Unexpected DataBuffer type?"); - } - } - - private void createFromCustom(BufferedImage image) { - int width = image.getWidth(); - int height = image.getHeight(); - - // create a temporary image that is compatible with OpenGL - boolean hasAlpha = image.getColorModel().hasAlpha(); - ColorModel cm = null; - int dataBufferType = image.getRaster().getDataBuffer().getDataType(); - // Don't use integer components for packed int images - if (isPackedInt(image)) { - dataBufferType = DataBuffer.TYPE_BYTE; - } - if (dataBufferType == DataBuffer.TYPE_BYTE) { - cm = hasAlpha ? rgbaColorModel : rgbColorModel; - } else { - if (hasAlpha) { - cm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB), - null, true, true, - Transparency.TRANSLUCENT, - dataBufferType); - } else { - cm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB), - null, false, false, - Transparency.OPAQUE, - dataBufferType); - } - } - - boolean premult = cm.isAlphaPremultiplied(); - WritableRaster raster = - cm.createCompatibleWritableRaster(width, height); - BufferedImage texImage = new BufferedImage(cm, raster, premult, null); - - // copy the source image into the temporary image - Graphics2D g = texImage.createGraphics(); - g.setComposite(AlphaComposite.Src); - g.drawImage(image, 0, 0, null); - g.dispose(); - - // Wrap the buffer from the temporary image - createNIOBufferFromImage(texImage); - } - - private boolean isPackedInt(BufferedImage image) { - int imgType = image.getType(); - return (imgType == BufferedImage.TYPE_INT_RGB || - imgType == BufferedImage.TYPE_INT_BGR || - imgType == BufferedImage.TYPE_INT_ARGB || - imgType == BufferedImage.TYPE_INT_ARGB_PRE); - } - - private void revertPixelFormatAndType() { - // Knowing we don't have e.g. OpenGL 1.2 functionality available, - // and knowing we're in the process of doing the fallback code - // path, re-infer a vanilla pixel format and type compatible with - // OpenGL 1.1 - pixelFormat = 0; - pixelType = 0; - setupLazyCustomConversion(imageForLazyCustomConversion); - } - - private void createNIOBufferFromImage(BufferedImage image) { - buffer = wrapImageDataBuffer(image); - } - - private Buffer wrapImageDataBuffer(BufferedImage image) { - // - // Note: Grabbing the DataBuffer will defeat Java2D's image - // management mechanism (as of JDK 5/6, at least). This shouldn't - // be a problem for most JOGL apps, but those that try to upload - // the image into an OpenGL texture and then use the same image in - // Java2D rendering might find the 2D rendering is not as fast as - // it could be. - // - - DataBuffer data = image.getRaster().getDataBuffer(); - if (data instanceof DataBufferByte) { - return ByteBuffer.wrap(((DataBufferByte) data).getData()); - } else if (data instanceof DataBufferDouble) { - throw new RuntimeException("DataBufferDouble rasters not supported by OpenGL"); - } else if (data instanceof DataBufferFloat) { - return FloatBuffer.wrap(((DataBufferFloat) data).getData()); - } else if (data instanceof DataBufferInt) { - return IntBuffer.wrap(((DataBufferInt) data).getData()); - } else if (data instanceof DataBufferShort) { - return ShortBuffer.wrap(((DataBufferShort) data).getData()); - } else if (data instanceof DataBufferUShort) { - return ShortBuffer.wrap(((DataBufferUShort) data).getData()); - } else { - throw new RuntimeException("Unexpected DataBuffer type?"); - } - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/texture/awt/AWTTextureIO.java b/src/jogl/classes/com/sun/opengl/util/texture/awt/AWTTextureIO.java deleted file mode 100644 index 182810174..000000000 --- a/src/jogl/classes/com/sun/opengl/util/texture/awt/AWTTextureIO.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.texture.awt; - -import java.awt.image.*; - -import javax.media.opengl.*; -import com.sun.opengl.util.texture.*; - -public class AWTTextureIO extends TextureIO { - /** - * Creates a TextureData from the given BufferedImage. Does no - * OpenGL work. - * We assume a desktop GLProfile GL2GL3, otherwise use the other factory. - * - * @param glp the OpenGL Profile this texture data should be - * created for. - * @param image the BufferedImage containing the texture data - * @param mipmap whether mipmaps should be produced for this - * texture by autogenerating them - * @return the texture data from the image - * - * @see #newTextureData(GLProfile, BufferedImage, boolean) - */ - public static TextureData newTextureData(GLProfile glp, BufferedImage image, - boolean mipmap) { - return newTextureDataImpl(glp, image, 0, 0, mipmap); - } - - /** - * Creates a TextureData from the given BufferedImage, using the - * specified OpenGL internal format and pixel format for the texture - * which will eventually result. The internalFormat and pixelFormat - * must be specified and may not be zero; to use default values, use - * the variant of this method which does not take these - * arguments. Does no OpenGL work. - * - * @param glp the OpenGL Profile this texture data should be - * created for. - * @param image the BufferedImage containing the texture data - * @param internalFormat the OpenGL internal format of the texture - * which will eventually result from the TextureData - * @param pixelFormat the OpenGL pixel format of the texture - * which will eventually result from the TextureData - * @param mipmap whether mipmaps should be produced for this - * texture either by autogenerating them or - * reading them from the file. Some file formats - * support multiple mipmaps in a single file in - * which case those mipmaps will be used rather - * than generating them. - * @return the texture data from the image - * @throws IllegalArgumentException if either internalFormat or - * pixelFormat was 0 - */ - public static TextureData newTextureData(GLProfile glp, BufferedImage image, - int internalFormat, - int pixelFormat, - boolean mipmap) throws IllegalArgumentException { - if ((internalFormat == 0) || (pixelFormat == 0)) { - throw new IllegalArgumentException("internalFormat and pixelFormat must be non-zero"); - } - - return newTextureDataImpl(glp, image, internalFormat, pixelFormat, mipmap); - } - - /** - * Creates an OpenGL texture object from the specified BufferedImage - * using the current OpenGL context. - * - * @param glp the OpenGL Profile this texture data should be - * created for. - * @param image the BufferedImage from which to read the texture data - * @param mipmap whether mipmaps should be produced for this - * texture by autogenerating them - * @throws GLException if no OpenGL context is current or if an - * OpenGL error occurred - */ - public static Texture newTexture(GLProfile glp, BufferedImage image, boolean mipmap) throws GLException { - TextureData data = newTextureData(glp, image, mipmap); - Texture texture = newTexture(data); - data.flush(); - return texture; - } - - private static TextureData newTextureDataImpl(GLProfile glp, - BufferedImage image, - int internalFormat, - int pixelFormat, - boolean mipmap) { - return new AWTTextureData(glp, internalFormat, pixelFormat, mipmap, image); - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/texture/spi/DDSImage.java.javame_cdc_fp b/src/jogl/classes/com/sun/opengl/util/texture/spi/DDSImage.java.javame_cdc_fp deleted file mode 100755 index ce3d97733..000000000 --- a/src/jogl/classes/com/sun/opengl/util/texture/spi/DDSImage.java.javame_cdc_fp +++ /dev/null @@ -1,889 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.texture.spi; - -import java.io.*; -import java.nio.*; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import com.sun.opengl.util.texture.*; - -/** A reader and writer for DirectDraw Surface (.dds) files, which are - used to describe textures. These files can contain multiple mipmap - levels in one file. This class is currently minimal and does not - support all of the possible file formats. */ - -public class DDSImage { - - /** Simple class describing images and data; does not encapsulate - image format information. User is responsible for transmitting - that information in another way. */ - - public static class ImageInfo { - private ByteBuffer data; - private int width; - private int height; - private boolean isCompressed; - private int compressionFormat; - - public ImageInfo(ByteBuffer data, int width, int height, boolean compressed, int compressionFormat) { - this.data = data; this.width = width; this.height = height; - this.isCompressed = compressed; this.compressionFormat = compressionFormat; - } - public int getWidth() { return width; } - public int getHeight() { return height; } - public ByteBuffer getData() { return data; } - public boolean isCompressed() { return isCompressed; } - public int getCompressionFormat() { - if (!isCompressed()) - throw new RuntimeException("Should not call unless compressed"); - return compressionFormat; - } - } - - private ByteBuffer buf; - private Header header; - - // - // Selected bits in header flags - // - - public static final int DDSD_CAPS = 0x00000001; // Capacities are valid - public static final int DDSD_HEIGHT = 0x00000002; // Height is valid - public static final int DDSD_WIDTH = 0x00000004; // Width is valid - public static final int DDSD_PITCH = 0x00000008; // Pitch is valid - public static final int DDSD_BACKBUFFERCOUNT = 0x00000020; // Back buffer count is valid - public static final int DDSD_ZBUFFERBITDEPTH = 0x00000040; // Z-buffer bit depth is valid (shouldn't be used in DDSURFACEDESC2) - public static final int DDSD_ALPHABITDEPTH = 0x00000080; // Alpha bit depth is valid - public static final int DDSD_LPSURFACE = 0x00000800; // lpSurface is valid - public static final int DDSD_PIXELFORMAT = 0x00001000; // ddpfPixelFormat is valid - public static final int DDSD_MIPMAPCOUNT = 0x00020000; // Mip map count is valid - public static final int DDSD_LINEARSIZE = 0x00080000; // dwLinearSize is valid - public static final int DDSD_DEPTH = 0x00800000; // dwDepth is valid - - public static final int DDPF_ALPHAPIXELS = 0x00000001; // Alpha channel is present - public static final int DDPF_ALPHA = 0x00000002; // Only contains alpha information - public static final int DDPF_FOURCC = 0x00000004; // FourCC code is valid - public static final int DDPF_PALETTEINDEXED4 = 0x00000008; // Surface is 4-bit color indexed - public static final int DDPF_PALETTEINDEXEDTO8 = 0x00000010; // Surface is indexed into a palette which stores indices - // into the destination surface's 8-bit palette - public static final int DDPF_PALETTEINDEXED8 = 0x00000020; // Surface is 8-bit color indexed - public static final int DDPF_RGB = 0x00000040; // RGB data is present - public static final int DDPF_COMPRESSED = 0x00000080; // Surface will accept pixel data in the format specified - // and compress it during the write - public static final int DDPF_RGBTOYUV = 0x00000100; // Surface will accept RGB data and translate it during - // the write to YUV data. The format of the data to be written - // will be contained in the pixel format structure. The DDPF_RGB - // flag will be set. - public static final int DDPF_YUV = 0x00000200; // Pixel format is YUV - YUV data in pixel format struct is valid - public static final int DDPF_ZBUFFER = 0x00000400; // Pixel format is a z buffer only surface - public static final int DDPF_PALETTEINDEXED1 = 0x00000800; // Surface is 1-bit color indexed - public static final int DDPF_PALETTEINDEXED2 = 0x00001000; // Surface is 2-bit color indexed - public static final int DDPF_ZPIXELS = 0x00002000; // Surface contains Z information in the pixels - - // Selected bits in DDS capabilities flags - public static final int DDSCAPS_TEXTURE = 0x00001000; // Can be used as a texture - public static final int DDSCAPS_MIPMAP = 0x00400000; // Is one level of a mip-map - public static final int DDSCAPS_COMPLEX = 0x00000008; // Complex surface structure, such as a cube map - - // Selected bits in DDS extended capabilities flags - public static final int DDSCAPS2_CUBEMAP = 0x00000200; - public static final int DDSCAPS2_CUBEMAP_POSITIVEX = 0x00000400; - public static final int DDSCAPS2_CUBEMAP_NEGATIVEX = 0x00000800; - public static final int DDSCAPS2_CUBEMAP_POSITIVEY = 0x00001000; - public static final int DDSCAPS2_CUBEMAP_NEGATIVEY = 0x00002000; - public static final int DDSCAPS2_CUBEMAP_POSITIVEZ = 0x00004000; - public static final int DDSCAPS2_CUBEMAP_NEGATIVEZ = 0x00008000; - - // Known pixel formats - public static final int D3DFMT_UNKNOWN = 0; - public static final int D3DFMT_R8G8B8 = 20; - public static final int D3DFMT_A8R8G8B8 = 21; - public static final int D3DFMT_X8R8G8B8 = 22; - // The following are also valid FourCC codes - public static final int D3DFMT_DXT1 = 0x31545844; - public static final int D3DFMT_DXT2 = 0x32545844; - public static final int D3DFMT_DXT3 = 0x33545844; - public static final int D3DFMT_DXT4 = 0x34545844; - public static final int D3DFMT_DXT5 = 0x35545844; - - /** Reads a DirectDraw surface from the specified file name, - returning the resulting DDSImage. - - @param filename File name - @return DDS image object - @throws java.io.IOException if an I/O exception occurred - */ - public static DDSImage read(String filename) throws IOException { - return read(new File(filename)); - } - - /** Reads a DirectDraw surface from the specified file, returning - the resulting DDSImage. - - @param file File object - @return DDS image object - @throws java.io.IOException if an I/O exception occurred - */ - public static DDSImage read(File file) throws IOException { - DDSImage image = new DDSImage(); - image.readFromFile(file); - return image; - } - - /** Reads a DirectDraw surface from the specified InputStream, returning - the resulting DDSImage. - - @param input Input stream - @return DDS image object - @throws java.io.IOException if an I/O exception occurred - */ - public static DDSImage read(InputStream input) throws IOException { - DDSImage image = new DDSImage(); - image.readFromStream(input); - return image; - } - - /** Closes open files and resources associated with the open - DDSImage. No other methods may be called on this object once - this is called. */ - public void close() { - } - - /** - * Creates a new DDSImage from data supplied by the user. The - * resulting DDSImage can be written to disk using the write() - * method. - * - * @param d3dFormat the D3DFMT_ constant describing the data; it is - * assumed that it is packed tightly - * @param width the width in pixels of the topmost mipmap image - * @param height the height in pixels of the topmost mipmap image - * @param mipmapData the data for each mipmap level of the resulting - * DDSImage; either only one mipmap level should - * be specified, or they all must be - * @throws IllegalArgumentException if the data does not match the - * specified arguments - * @return DDS image object - */ - public static DDSImage createFromData(int d3dFormat, - int width, - int height, - ByteBuffer[] mipmapData) throws IllegalArgumentException { - DDSImage image = new DDSImage(); - image.initFromData(d3dFormat, width, height, mipmapData); - return image; - } - - /** Determines from the magic number whether the given InputStream - points to a DDS image. The given InputStream must return true - from markSupported() and support a minimum of four bytes of - read-ahead. - - @param in Stream to check - @return true if input stream is DDS image or false otherwise - @throws java.io.IOException if an I/O exception occurred - */ - public static boolean isDDSImage(InputStream in) throws IOException { - if (!(in instanceof BufferedInputStream)) { - in = new BufferedInputStream(in); - } - if (!in.markSupported()) { - throw new IOException("Can not test non-destructively whether given InputStream is a DDS image"); - } - in.mark(4); - int magic = 0; - for (int i = 0; i < 4; i++) { - int tmp = in.read(); - if (tmp < 0) { - in.reset(); - return false; - } - magic = ((magic >>> 8) | (tmp << 24)); - } - in.reset(); - return (magic == MAGIC); - } - - /** - * Writes this DDSImage to the specified file name. - * @param filename File name to write to - * @throws java.io.IOException if an I/O exception occurred - */ - public void write(String filename) throws IOException { - write(new File(filename)); - } - - /** - * Writes this DDSImage to the specified file name. - * @param file File object to write to - * @throws java.io.IOException if an I/O exception occurred - */ - public void write(File file) throws IOException { - LEDataOutputStream output = - new LEDataOutputStream(new DataOutputStream(new BufferedOutputStream(new FileOutputStream(file)))); - header.write(output); - output.write(buf.array()); - output.close(); - } - - /** Test for presence/absence of surface description flags (DDSD_*) - * @param flag DDSD_* flags set to test - * @return true if flag present or false otherwise - */ - public boolean isSurfaceDescFlagSet(int flag) { - return ((header.flags & flag) != 0); - } - - /** Test for presence/absence of pixel format flags (DDPF_*) */ - public boolean isPixelFormatFlagSet(int flag) { - return ((header.pfFlags & flag) != 0); - } - - /** Gets the pixel format of this texture (D3DFMT_*) based on some - heuristics. Returns D3DFMT_UNKNOWN if could not recognize the - pixel format. */ - public int getPixelFormat() { - if (isCompressed()) { - return getCompressionFormat(); - } else if (isPixelFormatFlagSet(DDPF_RGB)) { - if (isPixelFormatFlagSet(DDPF_ALPHAPIXELS)) { - if (getDepth() == 32 && - header.pfRBitMask == 0x00FF0000 && - header.pfGBitMask == 0x0000FF00 && - header.pfBBitMask == 0x000000FF && - header.pfABitMask == 0xFF000000) { - return D3DFMT_A8R8G8B8; - } - } else { - if (getDepth() == 24 && - header.pfRBitMask == 0x00FF0000 && - header.pfGBitMask == 0x0000FF00 && - header.pfBBitMask == 0x000000FF) { - return D3DFMT_R8G8B8; - } else if (getDepth() == 32 && - header.pfRBitMask == 0x00FF0000 && - header.pfGBitMask == 0x0000FF00 && - header.pfBBitMask == 0x000000FF) { - return D3DFMT_X8R8G8B8; - } - } - } - - return D3DFMT_UNKNOWN; - } - - /** - * Indicates whether this texture is cubemap - * @return true if cubemap or false otherwise - */ - public boolean isCubemap() { - return ((header.ddsCaps1 & DDSCAPS_COMPLEX) != 0) && ((header.ddsCaps2 & DDSCAPS2_CUBEMAP) != 0); - } - - /** - * Indicates whethe this cubemap side present - * @param side Side to test - * @return true if side present or false otherwise - */ - public boolean isCubemapSidePresent(int side) { - return isCubemap() && (header.ddsCaps2 & side) != 0; - } - - /** Indicates whether this texture is compressed. */ - public boolean isCompressed() { - return (isPixelFormatFlagSet(DDPF_FOURCC)); - } - - /** If this surface is compressed, returns the kind of compression - used (DXT1..DXT5). */ - public int getCompressionFormat() { - return header.pfFourCC; - } - - /** Width of the texture (or the top-most mipmap if mipmaps are - present) */ - public int getWidth() { - return header.width; - } - - /** Height of the texture (or the top-most mipmap if mipmaps are - present) */ - public int getHeight() { - return header.height; - } - - /** Total number of bits per pixel. Only valid if DDPF_RGB is - present. For A8R8G8B8, would be 32. */ - public int getDepth() { - return header.pfRGBBitCount; - } - - /** Number of mip maps in the texture */ - public int getNumMipMaps() { - if (!isSurfaceDescFlagSet(DDSD_MIPMAPCOUNT)) { - return 0; - } - return header.mipMapCountOrAux; - } - - /** Gets the <i>i</i>th mipmap data (0..getNumMipMaps() - 1) - * @param map Mipmap index - * @return Image object - */ - public ImageInfo getMipMap(int map) { - return getMipMap( 0, map ); - } - - /** - * Gets the <i>i</i>th mipmap data (0..getNumMipMaps() - 1) - * @param side Cubemap side or 0 for 2D texture - * @param map Mipmap index - * @return Image object - */ - public ImageInfo getMipMap(int side, int map) { - if (!isCubemap() && (side != 0)) { - throw new RuntimeException( "Illegal side for 2D texture: " + side ); - } - if (isCubemap() && !isCubemapSidePresent(side)) { - throw new RuntimeException( "Illegal side, side not present: " + side ); - } - if (getNumMipMaps() > 0 && - ((map < 0) || (map >= getNumMipMaps()))) { - throw new RuntimeException("Illegal mipmap number " + map + " (0.." + (getNumMipMaps() - 1) + ")"); - } - - // Figure out how far to seek - int seek = 0; - if (isCubemap()) { - seek += sideShiftInBytes(side); - } - for (int i = 0; i < map; i++) { - seek += mipMapSizeInBytes(i); - } - buf.limit(seek + mipMapSizeInBytes(map)); - buf.position(seek); - ByteBuffer next = buf.slice(); - buf.position(0); - buf.limit(buf.capacity()); - return new ImageInfo(next, mipMapWidth(map), mipMapHeight(map), isCompressed(), getCompressionFormat()); - } - - /** Returns an array of ImageInfos corresponding to all mipmap - levels of this DDS file. - @return Mipmap image objects set - */ - public ImageInfo[] getAllMipMaps() { - return getAllMipMaps(0); - } - - /** - * Returns an array of ImageInfos corresponding to all mipmap - * levels of this DDS file. - * @param side Cubemap side or 0 for 2D texture - * @return Mipmap image objects set - */ - public ImageInfo[] getAllMipMaps( int side ) { - int numLevels = getNumMipMaps(); - if (numLevels == 0) { - numLevels = 1; - } - ImageInfo[] result = new ImageInfo[numLevels]; - for (int i = 0; i < numLevels; i++) { - result[i] = getMipMap(side, i); - } - return result; - } - - /** Converts e.g. DXT1 compression format constant (see {@link - #getCompressionFormat}) into "DXT1". - @param compressionFormat Compression format constant - @return String format code - */ - public static String getCompressionFormatName(int compressionFormat) { - StringBuffer buf = new StringBuffer(); - for (int i = 0; i < 4; i++) { - char c = (char) (compressionFormat & 0xFF); - buf.append(c); - compressionFormat = compressionFormat >> 8; - } - return buf.toString(); - } - - /** Allocates a temporary, empty ByteBuffer suitable for use in a - call to glCompressedTexImage2D. This is used by the Texture - class to expand non-power-of-two DDS compressed textures to - power-of-two sizes on hardware not supporting OpenGL 2.0 and the - NPOT texture extension. The specified OpenGL internal format - must be one of GL_COMPRESSED_RGB_S3TC_DXT1_EXT, - GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, - GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, or - GL_COMPRESSED_RGBA_S3TC_DXT5_EXT. - */ - public static ByteBuffer allocateBlankBuffer(int width, - int height, - int openGLInternalFormat) { - int size = width * height; - switch (openGLInternalFormat) { - case GL.GL_COMPRESSED_RGB_S3TC_DXT1_EXT: - case GL.GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: - size /= 2; - break; - - case GL.GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: - case GL.GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: - break; - - default: - throw new IllegalArgumentException("Illegal OpenGL texture internal format " + - openGLInternalFormat); - } - if (size == 0) - size = 1; - return BufferUtil.newByteBuffer(size); - } - - public void debugPrint() { - PrintStream tty = System.err; - tty.println("Compressed texture: " + isCompressed()); - if (isCompressed()) { - int fmt = getCompressionFormat(); - String name = getCompressionFormatName(fmt); - tty.println("Compression format: 0x" + Integer.toHexString(fmt) + " (" + name + ")"); - } - tty.println("Width: " + header.width + " Height: " + header.height); - tty.println("header.pitchOrLinearSize: " + header.pitchOrLinearSize); - tty.println("header.pfRBitMask: 0x" + Integer.toHexString(header.pfRBitMask)); - tty.println("header.pfGBitMask: 0x" + Integer.toHexString(header.pfGBitMask)); - tty.println("header.pfBBitMask: 0x" + Integer.toHexString(header.pfBBitMask)); - tty.println("SurfaceDesc flags:"); - boolean recognizedAny = false; - recognizedAny |= printIfRecognized(tty, header.flags, DDSD_CAPS, "DDSD_CAPS"); - recognizedAny |= printIfRecognized(tty, header.flags, DDSD_HEIGHT, "DDSD_HEIGHT"); - recognizedAny |= printIfRecognized(tty, header.flags, DDSD_WIDTH, "DDSD_WIDTH"); - recognizedAny |= printIfRecognized(tty, header.flags, DDSD_PITCH, "DDSD_PITCH"); - recognizedAny |= printIfRecognized(tty, header.flags, DDSD_BACKBUFFERCOUNT, "DDSD_BACKBUFFERCOUNT"); - recognizedAny |= printIfRecognized(tty, header.flags, DDSD_ZBUFFERBITDEPTH, "DDSD_ZBUFFERBITDEPTH"); - recognizedAny |= printIfRecognized(tty, header.flags, DDSD_ALPHABITDEPTH, "DDSD_ALPHABITDEPTH"); - recognizedAny |= printIfRecognized(tty, header.flags, DDSD_LPSURFACE, "DDSD_LPSURFACE"); - recognizedAny |= printIfRecognized(tty, header.flags, DDSD_PIXELFORMAT, "DDSD_PIXELFORMAT"); - recognizedAny |= printIfRecognized(tty, header.flags, DDSD_MIPMAPCOUNT, "DDSD_MIPMAPCOUNT"); - recognizedAny |= printIfRecognized(tty, header.flags, DDSD_LINEARSIZE, "DDSD_LINEARSIZE"); - recognizedAny |= printIfRecognized(tty, header.flags, DDSD_DEPTH, "DDSD_DEPTH"); - if (!recognizedAny) { - tty.println("(none)"); - } - tty.println("Raw SurfaceDesc flags: 0x" + Integer.toHexString(header.flags)); - tty.println("Pixel format flags:"); - recognizedAny = false; - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_ALPHAPIXELS, "DDPF_ALPHAPIXELS"); - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_ALPHA, "DDPF_ALPHA"); - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_FOURCC, "DDPF_FOURCC"); - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_PALETTEINDEXED4, "DDPF_PALETTEINDEXED4"); - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_PALETTEINDEXEDTO8, "DDPF_PALETTEINDEXEDTO8"); - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_PALETTEINDEXED8, "DDPF_PALETTEINDEXED8"); - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_RGB, "DDPF_RGB"); - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_COMPRESSED, "DDPF_COMPRESSED"); - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_RGBTOYUV, "DDPF_RGBTOYUV"); - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_YUV, "DDPF_YUV"); - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_ZBUFFER, "DDPF_ZBUFFER"); - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_PALETTEINDEXED1, "DDPF_PALETTEINDEXED1"); - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_PALETTEINDEXED2, "DDPF_PALETTEINDEXED2"); - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_ZPIXELS, "DDPF_ZPIXELS"); - if (!recognizedAny) { - tty.println("(none)"); - } - tty.println("Raw pixel format flags: 0x" + Integer.toHexString(header.pfFlags)); - tty.println("Depth: " + getDepth()); - tty.println("Number of mip maps: " + getNumMipMaps()); - int fmt = getPixelFormat(); - tty.print("Pixel format: "); - switch (fmt) { - case D3DFMT_R8G8B8: tty.println("D3DFMT_R8G8B8"); break; - case D3DFMT_A8R8G8B8: tty.println("D3DFMT_A8R8G8B8"); break; - case D3DFMT_X8R8G8B8: tty.println("D3DFMT_X8R8G8B8"); break; - case D3DFMT_DXT1: tty.println("D3DFMT_DXT1"); break; - case D3DFMT_DXT2: tty.println("D3DFMT_DXT2"); break; - case D3DFMT_DXT3: tty.println("D3DFMT_DXT3"); break; - case D3DFMT_DXT4: tty.println("D3DFMT_DXT4"); break; - case D3DFMT_DXT5: tty.println("D3DFMT_DXT5"); break; - case D3DFMT_UNKNOWN: tty.println("D3DFMT_UNKNOWN"); break; - default: tty.println("(unknown pixel format " + fmt + ")"); break; - } - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - private static final int MAGIC = 0x20534444; - - static class Header { - int size; // size of the DDSURFACEDESC structure - int flags; // determines what fields are valid - int height; // height of surface to be created - int width; // width of input surface - int pitchOrLinearSize; - int backBufferCountOrDepth; - int mipMapCountOrAux; // number of mip-map levels requested (in this context) - int alphaBitDepth; // depth of alpha buffer requested - int reserved1; // reserved - int surface; // pointer to the associated surface memory - // NOTE: following two entries are from DDCOLORKEY data structure - // Are overlaid with color for empty cubemap faces (unused in this reader) - int colorSpaceLowValue; - int colorSpaceHighValue; - int destBltColorSpaceLowValue; - int destBltColorSpaceHighValue; - int srcOverlayColorSpaceLowValue; - int srcOverlayColorSpaceHighValue; - int srcBltColorSpaceLowValue; - int srcBltColorSpaceHighValue; - // NOTE: following entries are from DDPIXELFORMAT data structure - // Are overlaid with flexible vertex format description of vertex - // buffers (unused in this reader) - int pfSize; // size of DDPIXELFORMAT structure - int pfFlags; // pixel format flags - int pfFourCC; // (FOURCC code) - // Following five entries have multiple interpretations, not just - // RGBA (but that's all we support right now) - int pfRGBBitCount; // how many bits per pixel - int pfRBitMask; // mask for red bits - int pfGBitMask; // mask for green bits - int pfBBitMask; // mask for blue bits - int pfABitMask; // mask for alpha channel - int ddsCaps1; // Texture and mip-map flags - int ddsCaps2; // Advanced capabilities including cubemap support - int ddsCapsReserved1; - int ddsCapsReserved2; - int textureStage; // stage in multitexture cascade - - void read(LEDataInputStream input) throws IOException { - int magic = input.readInt(); - if (magic != MAGIC) { - throw new IOException("Incorrect magic number 0x" + - Integer.toHexString(magic) + - " (expected " + MAGIC + ")"); - } - - size = input.readInt(); - flags = input.readInt(); - height = input.readInt(); - width = input.readInt(); - pitchOrLinearSize = input.readInt(); - backBufferCountOrDepth = input.readInt(); - mipMapCountOrAux = input.readInt(); - alphaBitDepth = input.readInt(); - reserved1 = input.readInt(); - surface = input.readInt(); - colorSpaceLowValue = input.readInt(); - colorSpaceHighValue = input.readInt(); - destBltColorSpaceLowValue = input.readInt(); - destBltColorSpaceHighValue = input.readInt(); - srcOverlayColorSpaceLowValue = input.readInt(); - srcOverlayColorSpaceHighValue = input.readInt(); - srcBltColorSpaceLowValue = input.readInt(); - srcBltColorSpaceHighValue = input.readInt(); - pfSize = input.readInt(); - pfFlags = input.readInt(); - pfFourCC = input.readInt(); - pfRGBBitCount = input.readInt(); - pfRBitMask = input.readInt(); - pfGBitMask = input.readInt(); - pfBBitMask = input.readInt(); - pfABitMask = input.readInt(); - ddsCaps1 = input.readInt(); - ddsCaps2 = input.readInt(); - ddsCapsReserved1 = input.readInt(); - ddsCapsReserved2 = input.readInt(); - textureStage = input.readInt(); - } - - // buf must be in little-endian byte order - void write(LEDataOutputStream output) throws IOException { - output.writeInt(MAGIC); - output.writeInt(size); - output.writeInt(flags); - output.writeInt(height); - output.writeInt(width); - output.writeInt(pitchOrLinearSize); - output.writeInt(backBufferCountOrDepth); - output.writeInt(mipMapCountOrAux); - output.writeInt(alphaBitDepth); - output.writeInt(reserved1); - output.writeInt(surface); - output.writeInt(colorSpaceLowValue); - output.writeInt(colorSpaceHighValue); - output.writeInt(destBltColorSpaceLowValue); - output.writeInt(destBltColorSpaceHighValue); - output.writeInt(srcOverlayColorSpaceLowValue); - output.writeInt(srcOverlayColorSpaceHighValue); - output.writeInt(srcBltColorSpaceLowValue); - output.writeInt(srcBltColorSpaceHighValue); - output.writeInt(pfSize); - output.writeInt(pfFlags); - output.writeInt(pfFourCC); - output.writeInt(pfRGBBitCount); - output.writeInt(pfRBitMask); - output.writeInt(pfGBitMask); - output.writeInt(pfBBitMask); - output.writeInt(pfABitMask); - output.writeInt(ddsCaps1); - output.writeInt(ddsCaps2); - output.writeInt(ddsCapsReserved1); - output.writeInt(ddsCapsReserved2); - output.writeInt(textureStage); - } - - private static int size() { - return 124; - } - - private static int pfSize() { - return 32; - } - - private static int writtenSize() { - return 128; - } - } - - private DDSImage() { - } - - private void readFromFile(File file) throws IOException { - readFromStream(new BufferedInputStream(new FileInputStream(file))); - } - - private void readFromStream(InputStream input) throws IOException { - LEDataInputStream leInput = new LEDataInputStream(input); - header = new Header(); - header.read(leInput); - fixupHeader(); - buf = StreamUtil.readAll2Buffer(input); - } - - private void initFromData(int d3dFormat, - int width, - int height, - ByteBuffer[] mipmapData) throws IllegalArgumentException { - // Check size of mipmap data compared against format, width and - // height - int topmostMipmapSize = width * height; - int pitchOrLinearSize = width; - boolean isCompressed = false; - switch (d3dFormat) { - case D3DFMT_R8G8B8: topmostMipmapSize *= 3; pitchOrLinearSize *= 3; break; - case D3DFMT_A8R8G8B8: topmostMipmapSize *= 4; pitchOrLinearSize *= 4; break; - case D3DFMT_X8R8G8B8: topmostMipmapSize *= 4; pitchOrLinearSize *= 4; break; - case D3DFMT_DXT1: - case D3DFMT_DXT2: - case D3DFMT_DXT3: - case D3DFMT_DXT4: - case D3DFMT_DXT5: - topmostMipmapSize = computeCompressedBlockSize(width, height, 1, d3dFormat); - pitchOrLinearSize = topmostMipmapSize; - isCompressed = true; - break; - default: - throw new IllegalArgumentException("d3dFormat must be one of the known formats"); - } - - // Now check the mipmaps against this size - int curSize = topmostMipmapSize; - int totalSize = 0; - for (int i = 0; i < mipmapData.length; i++) { - if (mipmapData[i].remaining() != curSize) { - throw new IllegalArgumentException("Mipmap level " + i + - " didn't match expected data size (expected " + curSize + ", got " + - mipmapData[i].remaining() + ")"); - } - curSize /= 4; - totalSize += mipmapData[i].remaining(); - } - - // OK, create one large byte array to hold all of the mipmap data - byte[] data = new byte[totalSize]; - ByteBuffer buf = ByteBuffer.wrap(data); - for (int i = 0; i < mipmapData.length; i++) { - buf.put(mipmapData[i]); - } - this.buf = buf; - - // Allocate and initialize a Header - header = new Header(); - header.size = Header.size(); - header.flags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH | DDSD_PIXELFORMAT; - if (mipmapData.length > 1) { - header.flags |= DDSD_MIPMAPCOUNT; - header.mipMapCountOrAux = mipmapData.length; - } - header.width = width; - header.height = height; - if (isCompressed) { - header.flags |= DDSD_LINEARSIZE; - header.pfFlags |= DDPF_FOURCC; - header.pfFourCC = d3dFormat; - } else { - header.flags |= DDSD_PITCH; - // Figure out the various settings from the pixel format - header.pfFlags |= DDPF_RGB; - switch (d3dFormat) { - case D3DFMT_R8G8B8: header.pfRGBBitCount = 24; break; - case D3DFMT_A8R8G8B8: header.pfRGBBitCount = 32; header.pfFlags |= DDPF_ALPHAPIXELS; break; - case D3DFMT_X8R8G8B8: header.pfRGBBitCount = 32; break; - } - header.pfRBitMask = 0x00FF0000; - header.pfGBitMask = 0x0000FF00; - header.pfBBitMask = 0x000000FF; - if (d3dFormat == D3DFMT_A8R8G8B8) { - header.pfABitMask = 0xFF000000; - } - } - header.pitchOrLinearSize = pitchOrLinearSize; - header.pfSize = Header.pfSize(); - // Not sure whether we can get away with leaving the rest of the - // header blank - } - - // Microsoft doesn't follow their own specifications and the - // simplest conversion using the DxTex tool to e.g. a DXT3 texture - // results in an illegal .dds file without either DDSD_PITCH or - // DDSD_LINEARSIZE set in the header's flags. This code, adapted - // from the DevIL library, fixes up the header in these situations. - private void fixupHeader() { - if (isCompressed() && !isSurfaceDescFlagSet(DDSD_LINEARSIZE)) { - // Figure out how big the linear size should be - int depth = header.backBufferCountOrDepth; - if (depth == 0) { - depth = 1; - } - - header.pitchOrLinearSize = computeCompressedBlockSize(getWidth(), getHeight(), depth, getCompressionFormat()); - header.flags |= DDSD_LINEARSIZE; - } - } - - private static int computeCompressedBlockSize(int width, - int height, - int depth, - int compressionFormat) { - int blockSize = ((width + 3)/4) * ((height + 3)/4) * ((depth + 3)/4); - switch (compressionFormat) { - case D3DFMT_DXT1: blockSize *= 8; break; - default: blockSize *= 16; break; - } - return blockSize; - } - - private int mipMapWidth(int map) { - int width = getWidth(); - for (int i = 0; i < map; i++) { - width >>= 1; - } - return Math.max(width, 1); - } - - private int mipMapHeight(int map) { - int height = getHeight(); - for (int i = 0; i < map; i++) { - height >>= 1; - } - return Math.max(height, 1); - } - - private int mipMapSizeInBytes(int map) { - int width = mipMapWidth(map); - int height = mipMapHeight(map); - if (isCompressed()) { - int blockSize = (getCompressionFormat() == D3DFMT_DXT1 ? 8 : 16); - return ((width+3)/4)*((height+3)/4)*blockSize; - } else { - return width * height * (getDepth() / 8); - } - } - - private int sideSizeInBytes() { - int numLevels = getNumMipMaps(); - if (numLevels == 0) { - numLevels = 1; - } - - int size = 0; - for (int i = 0; i < numLevels; i++) { - size += mipMapSizeInBytes(i); - } - - return size; - } - - private int sideShiftInBytes(int side) { - int[] sides = { - DDSCAPS2_CUBEMAP_POSITIVEX, - DDSCAPS2_CUBEMAP_NEGATIVEX, - DDSCAPS2_CUBEMAP_POSITIVEY, - DDSCAPS2_CUBEMAP_NEGATIVEY, - DDSCAPS2_CUBEMAP_POSITIVEZ, - DDSCAPS2_CUBEMAP_NEGATIVEZ - }; - - int shift = 0; - int sideSize = sideSizeInBytes(); - for (int i = 0; i < sides.length; i++) { - int temp = sides[i]; - if ((temp & side) != 0) { - return shift; - } - - shift += sideSize; - } - - throw new RuntimeException("Illegal side: " + side); - } - - private boolean printIfRecognized(PrintStream tty, int flags, int flag, String what) { - if ((flags & flag) != 0) { - tty.println(what); - return true; - } - return false; - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/texture/spi/DDSImage.java.javase b/src/jogl/classes/com/sun/opengl/util/texture/spi/DDSImage.java.javase deleted file mode 100755 index 8a3e1c4be..000000000 --- a/src/jogl/classes/com/sun/opengl/util/texture/spi/DDSImage.java.javase +++ /dev/null @@ -1,919 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.texture.spi; - -import java.io.*; -import java.nio.*; -import java.nio.channels.*; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import com.sun.opengl.util.texture.*; - -/** A reader and writer for DirectDraw Surface (.dds) files, which are - used to describe textures. These files can contain multiple mipmap - levels in one file. This class is currently minimal and does not - support all of the possible file formats. */ - -public class DDSImage { - - /** Simple class describing images and data; does not encapsulate - image format information. User is responsible for transmitting - that information in another way. */ - - public static class ImageInfo { - private ByteBuffer data; - private int width; - private int height; - private boolean isCompressed; - private int compressionFormat; - - public ImageInfo(ByteBuffer data, int width, int height, boolean compressed, int compressionFormat) { - this.data = data; this.width = width; this.height = height; - this.isCompressed = compressed; this.compressionFormat = compressionFormat; - } - public int getWidth() { return width; } - public int getHeight() { return height; } - public ByteBuffer getData() { return data; } - public boolean isCompressed() { return isCompressed; } - public int getCompressionFormat() { - if (!isCompressed()) - throw new RuntimeException("Should not call unless compressed"); - return compressionFormat; - } - } - - private FileInputStream fis; - private FileChannel chan; - private ByteBuffer buf; - private Header header; - - // - // Selected bits in header flags - // - - public static final int DDSD_CAPS = 0x00000001; // Capacities are valid - public static final int DDSD_HEIGHT = 0x00000002; // Height is valid - public static final int DDSD_WIDTH = 0x00000004; // Width is valid - public static final int DDSD_PITCH = 0x00000008; // Pitch is valid - public static final int DDSD_BACKBUFFERCOUNT = 0x00000020; // Back buffer count is valid - public static final int DDSD_ZBUFFERBITDEPTH = 0x00000040; // Z-buffer bit depth is valid (shouldn't be used in DDSURFACEDESC2) - public static final int DDSD_ALPHABITDEPTH = 0x00000080; // Alpha bit depth is valid - public static final int DDSD_LPSURFACE = 0x00000800; // lpSurface is valid - public static final int DDSD_PIXELFORMAT = 0x00001000; // ddpfPixelFormat is valid - public static final int DDSD_MIPMAPCOUNT = 0x00020000; // Mip map count is valid - public static final int DDSD_LINEARSIZE = 0x00080000; // dwLinearSize is valid - public static final int DDSD_DEPTH = 0x00800000; // dwDepth is valid - - public static final int DDPF_ALPHAPIXELS = 0x00000001; // Alpha channel is present - public static final int DDPF_ALPHA = 0x00000002; // Only contains alpha information - public static final int DDPF_FOURCC = 0x00000004; // FourCC code is valid - public static final int DDPF_PALETTEINDEXED4 = 0x00000008; // Surface is 4-bit color indexed - public static final int DDPF_PALETTEINDEXEDTO8 = 0x00000010; // Surface is indexed into a palette which stores indices - // into the destination surface's 8-bit palette - public static final int DDPF_PALETTEINDEXED8 = 0x00000020; // Surface is 8-bit color indexed - public static final int DDPF_RGB = 0x00000040; // RGB data is present - public static final int DDPF_COMPRESSED = 0x00000080; // Surface will accept pixel data in the format specified - // and compress it during the write - public static final int DDPF_RGBTOYUV = 0x00000100; // Surface will accept RGB data and translate it during - // the write to YUV data. The format of the data to be written - // will be contained in the pixel format structure. The DDPF_RGB - // flag will be set. - public static final int DDPF_YUV = 0x00000200; // Pixel format is YUV - YUV data in pixel format struct is valid - public static final int DDPF_ZBUFFER = 0x00000400; // Pixel format is a z buffer only surface - public static final int DDPF_PALETTEINDEXED1 = 0x00000800; // Surface is 1-bit color indexed - public static final int DDPF_PALETTEINDEXED2 = 0x00001000; // Surface is 2-bit color indexed - public static final int DDPF_ZPIXELS = 0x00002000; // Surface contains Z information in the pixels - - // Selected bits in DDS capabilities flags - public static final int DDSCAPS_TEXTURE = 0x00001000; // Can be used as a texture - public static final int DDSCAPS_MIPMAP = 0x00400000; // Is one level of a mip-map - public static final int DDSCAPS_COMPLEX = 0x00000008; // Complex surface structure, such as a cube map - - // Selected bits in DDS extended capabilities flags - public static final int DDSCAPS2_CUBEMAP = 0x00000200; - public static final int DDSCAPS2_CUBEMAP_POSITIVEX = 0x00000400; - public static final int DDSCAPS2_CUBEMAP_NEGATIVEX = 0x00000800; - public static final int DDSCAPS2_CUBEMAP_POSITIVEY = 0x00001000; - public static final int DDSCAPS2_CUBEMAP_NEGATIVEY = 0x00002000; - public static final int DDSCAPS2_CUBEMAP_POSITIVEZ = 0x00004000; - public static final int DDSCAPS2_CUBEMAP_NEGATIVEZ = 0x00008000; - - // Known pixel formats - public static final int D3DFMT_UNKNOWN = 0; - public static final int D3DFMT_R8G8B8 = 20; - public static final int D3DFMT_A8R8G8B8 = 21; - public static final int D3DFMT_X8R8G8B8 = 22; - // The following are also valid FourCC codes - public static final int D3DFMT_DXT1 = 0x31545844; - public static final int D3DFMT_DXT2 = 0x32545844; - public static final int D3DFMT_DXT3 = 0x33545844; - public static final int D3DFMT_DXT4 = 0x34545844; - public static final int D3DFMT_DXT5 = 0x35545844; - - /** Reads a DirectDraw surface from the specified file name, - returning the resulting DDSImage. - - @param filename File name - @return DDS image object - @throws java.io.IOException if an I/O exception occurred - */ - public static DDSImage read(String filename) throws IOException { - return read(new File(filename)); - } - - /** Reads a DirectDraw surface from the specified file, returning - the resulting DDSImage. - - @param file File object - @return DDS image object - @throws java.io.IOException if an I/O exception occurred - */ - public static DDSImage read(File file) throws IOException { - DDSImage image = new DDSImage(); - image.readFromFile(file); - return image; - } - - /** Reads a DirectDraw surface from the specified ByteBuffer, returning - the resulting DDSImage. - - @param buf Input data - @return DDS image object - @throws java.io.IOException if an I/O exception occurred - */ - public static DDSImage read(ByteBuffer buf) throws IOException { - DDSImage image = new DDSImage(); - image.readFromBuffer(buf); - return image; - } - - /** Closes open files and resources associated with the open - DDSImage. No other methods may be called on this object once - this is called. */ - public void close() { - try { - if (chan != null) { - chan.close(); - chan = null; - } - if (fis != null) { - fis.close(); - fis = null; - } - buf = null; - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Creates a new DDSImage from data supplied by the user. The - * resulting DDSImage can be written to disk using the write() - * method. - * - * @param d3dFormat the D3DFMT_ constant describing the data; it is - * assumed that it is packed tightly - * @param width the width in pixels of the topmost mipmap image - * @param height the height in pixels of the topmost mipmap image - * @param mipmapData the data for each mipmap level of the resulting - * DDSImage; either only one mipmap level should - * be specified, or they all must be - * @throws IllegalArgumentException if the data does not match the - * specified arguments - * @return DDS image object - */ - public static DDSImage createFromData(int d3dFormat, - int width, - int height, - ByteBuffer[] mipmapData) throws IllegalArgumentException { - DDSImage image = new DDSImage(); - image.initFromData(d3dFormat, width, height, mipmapData); - return image; - } - - /** Determines from the magic number whether the given InputStream - points to a DDS image. The given InputStream must return true - from markSupported() and support a minimum of four bytes of - read-ahead. - - @param in Stream to check - @return true if input stream is DDS image or false otherwise - @throws java.io.IOException if an I/O exception occurred - */ - public static boolean isDDSImage(InputStream in) throws IOException { - if (!(in instanceof BufferedInputStream)) { - in = new BufferedInputStream(in); - } - if (!in.markSupported()) { - throw new IOException("Can not test non-destructively whether given InputStream is a DDS image"); - } - in.mark(4); - int magic = 0; - for (int i = 0; i < 4; i++) { - int tmp = in.read(); - if (tmp < 0) { - in.reset(); - return false; - } - magic = ((magic >>> 8) | (tmp << 24)); - } - in.reset(); - return (magic == MAGIC); - } - - /** - * Writes this DDSImage to the specified file name. - * @param filename File name to write to - * @throws java.io.IOException if an I/O exception occurred - */ - public void write(String filename) throws IOException { - write(new File(filename)); - } - - /** - * Writes this DDSImage to the specified file name. - * @param file File object to write to - * @throws java.io.IOException if an I/O exception occurred - */ - public void write(File file) throws IOException { - FileOutputStream stream = new FileOutputStream(file); - FileChannel chan = stream.getChannel(); - // Create ByteBuffer for header in case the start of our - // ByteBuffer isn't actually memory-mapped - ByteBuffer hdr = ByteBuffer.allocate(Header.writtenSize()); - hdr.order(ByteOrder.LITTLE_ENDIAN); - header.write(hdr); - hdr.rewind(); - chan.write(hdr); - buf.position(Header.writtenSize()); - chan.write(buf); - chan.force(true); - chan.close(); - stream.close(); - } - - /** Test for presence/absence of surface description flags (DDSD_*) - * @param flag DDSD_* flags set to test - * @return true if flag present or false otherwise - */ - public boolean isSurfaceDescFlagSet(int flag) { - return ((header.flags & flag) != 0); - } - - /** Test for presence/absence of pixel format flags (DDPF_*) */ - public boolean isPixelFormatFlagSet(int flag) { - return ((header.pfFlags & flag) != 0); - } - - /** Gets the pixel format of this texture (D3DFMT_*) based on some - heuristics. Returns D3DFMT_UNKNOWN if could not recognize the - pixel format. */ - public int getPixelFormat() { - if (isCompressed()) { - return getCompressionFormat(); - } else if (isPixelFormatFlagSet(DDPF_RGB)) { - if (isPixelFormatFlagSet(DDPF_ALPHAPIXELS)) { - if (getDepth() == 32 && - header.pfRBitMask == 0x00FF0000 && - header.pfGBitMask == 0x0000FF00 && - header.pfBBitMask == 0x000000FF && - header.pfABitMask == 0xFF000000) { - return D3DFMT_A8R8G8B8; - } - } else { - if (getDepth() == 24 && - header.pfRBitMask == 0x00FF0000 && - header.pfGBitMask == 0x0000FF00 && - header.pfBBitMask == 0x000000FF) { - return D3DFMT_R8G8B8; - } else if (getDepth() == 32 && - header.pfRBitMask == 0x00FF0000 && - header.pfGBitMask == 0x0000FF00 && - header.pfBBitMask == 0x000000FF) { - return D3DFMT_X8R8G8B8; - } - } - } - - return D3DFMT_UNKNOWN; - } - - /** - * Indicates whether this texture is cubemap - * @return true if cubemap or false otherwise - */ - public boolean isCubemap() { - return ((header.ddsCaps1 & DDSCAPS_COMPLEX) != 0) && ((header.ddsCaps2 & DDSCAPS2_CUBEMAP) != 0); - } - - /** - * Indicates whethe this cubemap side present - * @param side Side to test - * @return true if side present or false otherwise - */ - public boolean isCubemapSidePresent(int side) { - return isCubemap() && (header.ddsCaps2 & side) != 0; - } - - /** Indicates whether this texture is compressed. */ - public boolean isCompressed() { - return (isPixelFormatFlagSet(DDPF_FOURCC)); - } - - /** If this surface is compressed, returns the kind of compression - used (DXT1..DXT5). */ - public int getCompressionFormat() { - return header.pfFourCC; - } - - /** Width of the texture (or the top-most mipmap if mipmaps are - present) */ - public int getWidth() { - return header.width; - } - - /** Height of the texture (or the top-most mipmap if mipmaps are - present) */ - public int getHeight() { - return header.height; - } - - /** Total number of bits per pixel. Only valid if DDPF_RGB is - present. For A8R8G8B8, would be 32. */ - public int getDepth() { - return header.pfRGBBitCount; - } - - /** Number of mip maps in the texture */ - public int getNumMipMaps() { - if (!isSurfaceDescFlagSet(DDSD_MIPMAPCOUNT)) { - return 0; - } - return header.mipMapCountOrAux; - } - - /** Gets the <i>i</i>th mipmap data (0..getNumMipMaps() - 1) - * @param map Mipmap index - * @return Image object - */ - public ImageInfo getMipMap(int map) { - return getMipMap( 0, map ); - } - - /** - * Gets the <i>i</i>th mipmap data (0..getNumMipMaps() - 1) - * @param side Cubemap side or 0 for 2D texture - * @param map Mipmap index - * @return Image object - */ - public ImageInfo getMipMap(int side, int map) { - if (!isCubemap() && (side != 0)) { - throw new RuntimeException( "Illegal side for 2D texture: " + side ); - } - if (isCubemap() && !isCubemapSidePresent(side)) { - throw new RuntimeException( "Illegal side, side not present: " + side ); - } - if (getNumMipMaps() > 0 && - ((map < 0) || (map >= getNumMipMaps()))) { - throw new RuntimeException("Illegal mipmap number " + map + " (0.." + (getNumMipMaps() - 1) + ")"); - } - - // Figure out how far to seek - int seek = Header.writtenSize(); - if (isCubemap()) { - seek += sideShiftInBytes(side); - } - for (int i = 0; i < map; i++) { - seek += mipMapSizeInBytes(i); - } - buf.limit(seek + mipMapSizeInBytes(map)); - buf.position(seek); - ByteBuffer next = buf.slice(); - buf.position(0); - buf.limit(buf.capacity()); - return new ImageInfo(next, mipMapWidth(map), mipMapHeight(map), isCompressed(), getCompressionFormat()); - } - - /** Returns an array of ImageInfos corresponding to all mipmap - levels of this DDS file. - @return Mipmap image objects set - */ - public ImageInfo[] getAllMipMaps() { - return getAllMipMaps(0); - } - - /** - * Returns an array of ImageInfos corresponding to all mipmap - * levels of this DDS file. - * @param side Cubemap side or 0 for 2D texture - * @return Mipmap image objects set - */ - public ImageInfo[] getAllMipMaps( int side ) { - int numLevels = getNumMipMaps(); - if (numLevels == 0) { - numLevels = 1; - } - ImageInfo[] result = new ImageInfo[numLevels]; - for (int i = 0; i < numLevels; i++) { - result[i] = getMipMap(side, i); - } - return result; - } - - /** Converts e.g. DXT1 compression format constant (see {@link - #getCompressionFormat}) into "DXT1". - @param compressionFormat Compression format constant - @return String format code - */ - public static String getCompressionFormatName(int compressionFormat) { - StringBuffer buf = new StringBuffer(); - for (int i = 0; i < 4; i++) { - char c = (char) (compressionFormat & 0xFF); - buf.append(c); - compressionFormat = compressionFormat >> 8; - } - return buf.toString(); - } - - /** Allocates a temporary, empty ByteBuffer suitable for use in a - call to glCompressedTexImage2D. This is used by the Texture - class to expand non-power-of-two DDS compressed textures to - power-of-two sizes on hardware not supporting OpenGL 2.0 and the - NPOT texture extension. The specified OpenGL internal format - must be one of GL_COMPRESSED_RGB_S3TC_DXT1_EXT, - GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, - GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, or - GL_COMPRESSED_RGBA_S3TC_DXT5_EXT. - */ - public static ByteBuffer allocateBlankBuffer(int width, - int height, - int openGLInternalFormat) { - int size = width * height; - switch (openGLInternalFormat) { - case GL.GL_COMPRESSED_RGB_S3TC_DXT1_EXT: - case GL.GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: - size /= 2; - break; - - case GL.GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: - case GL.GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: - break; - - default: - throw new IllegalArgumentException("Illegal OpenGL texture internal format " + - openGLInternalFormat); - } - if (size == 0) - size = 1; - return BufferUtil.newByteBuffer(size); - } - - public void debugPrint() { - PrintStream tty = System.err; - tty.println("Compressed texture: " + isCompressed()); - if (isCompressed()) { - int fmt = getCompressionFormat(); - String name = getCompressionFormatName(fmt); - tty.println("Compression format: 0x" + Integer.toHexString(fmt) + " (" + name + ")"); - } - tty.println("Width: " + header.width + " Height: " + header.height); - tty.println("header.pitchOrLinearSize: " + header.pitchOrLinearSize); - tty.println("header.pfRBitMask: 0x" + Integer.toHexString(header.pfRBitMask)); - tty.println("header.pfGBitMask: 0x" + Integer.toHexString(header.pfGBitMask)); - tty.println("header.pfBBitMask: 0x" + Integer.toHexString(header.pfBBitMask)); - tty.println("SurfaceDesc flags:"); - boolean recognizedAny = false; - recognizedAny |= printIfRecognized(tty, header.flags, DDSD_CAPS, "DDSD_CAPS"); - recognizedAny |= printIfRecognized(tty, header.flags, DDSD_HEIGHT, "DDSD_HEIGHT"); - recognizedAny |= printIfRecognized(tty, header.flags, DDSD_WIDTH, "DDSD_WIDTH"); - recognizedAny |= printIfRecognized(tty, header.flags, DDSD_PITCH, "DDSD_PITCH"); - recognizedAny |= printIfRecognized(tty, header.flags, DDSD_BACKBUFFERCOUNT, "DDSD_BACKBUFFERCOUNT"); - recognizedAny |= printIfRecognized(tty, header.flags, DDSD_ZBUFFERBITDEPTH, "DDSD_ZBUFFERBITDEPTH"); - recognizedAny |= printIfRecognized(tty, header.flags, DDSD_ALPHABITDEPTH, "DDSD_ALPHABITDEPTH"); - recognizedAny |= printIfRecognized(tty, header.flags, DDSD_LPSURFACE, "DDSD_LPSURFACE"); - recognizedAny |= printIfRecognized(tty, header.flags, DDSD_PIXELFORMAT, "DDSD_PIXELFORMAT"); - recognizedAny |= printIfRecognized(tty, header.flags, DDSD_MIPMAPCOUNT, "DDSD_MIPMAPCOUNT"); - recognizedAny |= printIfRecognized(tty, header.flags, DDSD_LINEARSIZE, "DDSD_LINEARSIZE"); - recognizedAny |= printIfRecognized(tty, header.flags, DDSD_DEPTH, "DDSD_DEPTH"); - if (!recognizedAny) { - tty.println("(none)"); - } - tty.println("Raw SurfaceDesc flags: 0x" + Integer.toHexString(header.flags)); - tty.println("Pixel format flags:"); - recognizedAny = false; - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_ALPHAPIXELS, "DDPF_ALPHAPIXELS"); - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_ALPHA, "DDPF_ALPHA"); - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_FOURCC, "DDPF_FOURCC"); - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_PALETTEINDEXED4, "DDPF_PALETTEINDEXED4"); - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_PALETTEINDEXEDTO8, "DDPF_PALETTEINDEXEDTO8"); - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_PALETTEINDEXED8, "DDPF_PALETTEINDEXED8"); - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_RGB, "DDPF_RGB"); - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_COMPRESSED, "DDPF_COMPRESSED"); - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_RGBTOYUV, "DDPF_RGBTOYUV"); - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_YUV, "DDPF_YUV"); - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_ZBUFFER, "DDPF_ZBUFFER"); - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_PALETTEINDEXED1, "DDPF_PALETTEINDEXED1"); - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_PALETTEINDEXED2, "DDPF_PALETTEINDEXED2"); - recognizedAny |= printIfRecognized(tty, header.pfFlags, DDPF_ZPIXELS, "DDPF_ZPIXELS"); - if (!recognizedAny) { - tty.println("(none)"); - } - tty.println("Raw pixel format flags: 0x" + Integer.toHexString(header.pfFlags)); - tty.println("Depth: " + getDepth()); - tty.println("Number of mip maps: " + getNumMipMaps()); - int fmt = getPixelFormat(); - tty.print("Pixel format: "); - switch (fmt) { - case D3DFMT_R8G8B8: tty.println("D3DFMT_R8G8B8"); break; - case D3DFMT_A8R8G8B8: tty.println("D3DFMT_A8R8G8B8"); break; - case D3DFMT_X8R8G8B8: tty.println("D3DFMT_X8R8G8B8"); break; - case D3DFMT_DXT1: tty.println("D3DFMT_DXT1"); break; - case D3DFMT_DXT2: tty.println("D3DFMT_DXT2"); break; - case D3DFMT_DXT3: tty.println("D3DFMT_DXT3"); break; - case D3DFMT_DXT4: tty.println("D3DFMT_DXT4"); break; - case D3DFMT_DXT5: tty.println("D3DFMT_DXT5"); break; - case D3DFMT_UNKNOWN: tty.println("D3DFMT_UNKNOWN"); break; - default: tty.println("(unknown pixel format " + fmt + ")"); break; - } - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - private static final int MAGIC = 0x20534444; - - static class Header { - int size; // size of the DDSURFACEDESC structure - int flags; // determines what fields are valid - int height; // height of surface to be created - int width; // width of input surface - int pitchOrLinearSize; - int backBufferCountOrDepth; - int mipMapCountOrAux; // number of mip-map levels requested (in this context) - int alphaBitDepth; // depth of alpha buffer requested - int reserved1; // reserved - int surface; // pointer to the associated surface memory - // NOTE: following two entries are from DDCOLORKEY data structure - // Are overlaid with color for empty cubemap faces (unused in this reader) - int colorSpaceLowValue; - int colorSpaceHighValue; - int destBltColorSpaceLowValue; - int destBltColorSpaceHighValue; - int srcOverlayColorSpaceLowValue; - int srcOverlayColorSpaceHighValue; - int srcBltColorSpaceLowValue; - int srcBltColorSpaceHighValue; - // NOTE: following entries are from DDPIXELFORMAT data structure - // Are overlaid with flexible vertex format description of vertex - // buffers (unused in this reader) - int pfSize; // size of DDPIXELFORMAT structure - int pfFlags; // pixel format flags - int pfFourCC; // (FOURCC code) - // Following five entries have multiple interpretations, not just - // RGBA (but that's all we support right now) - int pfRGBBitCount; // how many bits per pixel - int pfRBitMask; // mask for red bits - int pfGBitMask; // mask for green bits - int pfBBitMask; // mask for blue bits - int pfABitMask; // mask for alpha channel - int ddsCaps1; // Texture and mip-map flags - int ddsCaps2; // Advanced capabilities including cubemap support - int ddsCapsReserved1; - int ddsCapsReserved2; - int textureStage; // stage in multitexture cascade - - void read(ByteBuffer buf) throws IOException { - int magic = buf.getInt(); - if (magic != MAGIC) { - throw new IOException("Incorrect magic number 0x" + - Integer.toHexString(magic) + - " (expected " + MAGIC + ")"); - } - - size = buf.getInt(); - flags = buf.getInt(); - height = buf.getInt(); - width = buf.getInt(); - pitchOrLinearSize = buf.getInt(); - backBufferCountOrDepth = buf.getInt(); - mipMapCountOrAux = buf.getInt(); - alphaBitDepth = buf.getInt(); - reserved1 = buf.getInt(); - surface = buf.getInt(); - colorSpaceLowValue = buf.getInt(); - colorSpaceHighValue = buf.getInt(); - destBltColorSpaceLowValue = buf.getInt(); - destBltColorSpaceHighValue = buf.getInt(); - srcOverlayColorSpaceLowValue = buf.getInt(); - srcOverlayColorSpaceHighValue = buf.getInt(); - srcBltColorSpaceLowValue = buf.getInt(); - srcBltColorSpaceHighValue = buf.getInt(); - pfSize = buf.getInt(); - pfFlags = buf.getInt(); - pfFourCC = buf.getInt(); - pfRGBBitCount = buf.getInt(); - pfRBitMask = buf.getInt(); - pfGBitMask = buf.getInt(); - pfBBitMask = buf.getInt(); - pfABitMask = buf.getInt(); - ddsCaps1 = buf.getInt(); - ddsCaps2 = buf.getInt(); - ddsCapsReserved1 = buf.getInt(); - ddsCapsReserved2 = buf.getInt(); - textureStage = buf.getInt(); - } - - // buf must be in little-endian byte order - void write(ByteBuffer buf) { - buf.putInt(MAGIC); - buf.putInt(size); - buf.putInt(flags); - buf.putInt(height); - buf.putInt(width); - buf.putInt(pitchOrLinearSize); - buf.putInt(backBufferCountOrDepth); - buf.putInt(mipMapCountOrAux); - buf.putInt(alphaBitDepth); - buf.putInt(reserved1); - buf.putInt(surface); - buf.putInt(colorSpaceLowValue); - buf.putInt(colorSpaceHighValue); - buf.putInt(destBltColorSpaceLowValue); - buf.putInt(destBltColorSpaceHighValue); - buf.putInt(srcOverlayColorSpaceLowValue); - buf.putInt(srcOverlayColorSpaceHighValue); - buf.putInt(srcBltColorSpaceLowValue); - buf.putInt(srcBltColorSpaceHighValue); - buf.putInt(pfSize); - buf.putInt(pfFlags); - buf.putInt(pfFourCC); - buf.putInt(pfRGBBitCount); - buf.putInt(pfRBitMask); - buf.putInt(pfGBitMask); - buf.putInt(pfBBitMask); - buf.putInt(pfABitMask); - buf.putInt(ddsCaps1); - buf.putInt(ddsCaps2); - buf.putInt(ddsCapsReserved1); - buf.putInt(ddsCapsReserved2); - buf.putInt(textureStage); - } - - private static int size() { - return 124; - } - - private static int pfSize() { - return 32; - } - - private static int writtenSize() { - return 128; - } - } - - private DDSImage() { - } - - private void readFromFile(File file) throws IOException { - fis = new FileInputStream(file); - chan = fis.getChannel(); - ByteBuffer buf = chan.map(FileChannel.MapMode.READ_ONLY, - 0, (int) file.length()); - readFromBuffer(buf); - } - - private void readFromBuffer(ByteBuffer buf) throws IOException { - this.buf = buf; - buf.order(ByteOrder.LITTLE_ENDIAN); - header = new Header(); - header.read(buf); - fixupHeader(); - } - - private void initFromData(int d3dFormat, - int width, - int height, - ByteBuffer[] mipmapData) throws IllegalArgumentException { - // Check size of mipmap data compared against format, width and - // height - int topmostMipmapSize = width * height; - int pitchOrLinearSize = width; - boolean isCompressed = false; - switch (d3dFormat) { - case D3DFMT_R8G8B8: topmostMipmapSize *= 3; pitchOrLinearSize *= 3; break; - case D3DFMT_A8R8G8B8: topmostMipmapSize *= 4; pitchOrLinearSize *= 4; break; - case D3DFMT_X8R8G8B8: topmostMipmapSize *= 4; pitchOrLinearSize *= 4; break; - case D3DFMT_DXT1: - case D3DFMT_DXT2: - case D3DFMT_DXT3: - case D3DFMT_DXT4: - case D3DFMT_DXT5: - topmostMipmapSize = computeCompressedBlockSize(width, height, 1, d3dFormat); - pitchOrLinearSize = topmostMipmapSize; - isCompressed = true; - break; - default: - throw new IllegalArgumentException("d3dFormat must be one of the known formats"); - } - - // Now check the mipmaps against this size - int curSize = topmostMipmapSize; - int totalSize = 0; - for (int i = 0; i < mipmapData.length; i++) { - if (mipmapData[i].remaining() != curSize) { - throw new IllegalArgumentException("Mipmap level " + i + - " didn't match expected data size (expected " + curSize + ", got " + - mipmapData[i].remaining() + ")"); - } - curSize /= 4; - totalSize += mipmapData[i].remaining(); - } - - // OK, create one large ByteBuffer to hold all of the mipmap data - totalSize += Header.writtenSize(); - ByteBuffer buf = ByteBuffer.allocate(totalSize); - buf.position(Header.writtenSize()); - for (int i = 0; i < mipmapData.length; i++) { - buf.put(mipmapData[i]); - } - this.buf = buf; - - // Allocate and initialize a Header - header = new Header(); - header.size = Header.size(); - header.flags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH | DDSD_PIXELFORMAT; - if (mipmapData.length > 1) { - header.flags |= DDSD_MIPMAPCOUNT; - header.mipMapCountOrAux = mipmapData.length; - } - header.width = width; - header.height = height; - if (isCompressed) { - header.flags |= DDSD_LINEARSIZE; - header.pfFlags |= DDPF_FOURCC; - header.pfFourCC = d3dFormat; - } else { - header.flags |= DDSD_PITCH; - // Figure out the various settings from the pixel format - header.pfFlags |= DDPF_RGB; - switch (d3dFormat) { - case D3DFMT_R8G8B8: header.pfRGBBitCount = 24; break; - case D3DFMT_A8R8G8B8: header.pfRGBBitCount = 32; header.pfFlags |= DDPF_ALPHAPIXELS; break; - case D3DFMT_X8R8G8B8: header.pfRGBBitCount = 32; break; - } - header.pfRBitMask = 0x00FF0000; - header.pfGBitMask = 0x0000FF00; - header.pfBBitMask = 0x000000FF; - if (d3dFormat == D3DFMT_A8R8G8B8) { - header.pfABitMask = 0xFF000000; - } - } - header.pitchOrLinearSize = pitchOrLinearSize; - header.pfSize = Header.pfSize(); - // Not sure whether we can get away with leaving the rest of the - // header blank - } - - // Microsoft doesn't follow their own specifications and the - // simplest conversion using the DxTex tool to e.g. a DXT3 texture - // results in an illegal .dds file without either DDSD_PITCH or - // DDSD_LINEARSIZE set in the header's flags. This code, adapted - // from the DevIL library, fixes up the header in these situations. - private void fixupHeader() { - if (isCompressed() && !isSurfaceDescFlagSet(DDSD_LINEARSIZE)) { - // Figure out how big the linear size should be - int depth = header.backBufferCountOrDepth; - if (depth == 0) { - depth = 1; - } - - header.pitchOrLinearSize = computeCompressedBlockSize(getWidth(), getHeight(), depth, getCompressionFormat()); - header.flags |= DDSD_LINEARSIZE; - } - } - - private static int computeCompressedBlockSize(int width, - int height, - int depth, - int compressionFormat) { - int blockSize = ((width + 3)/4) * ((height + 3)/4) * ((depth + 3)/4); - switch (compressionFormat) { - case D3DFMT_DXT1: blockSize *= 8; break; - default: blockSize *= 16; break; - } - return blockSize; - } - - private int mipMapWidth(int map) { - int width = getWidth(); - for (int i = 0; i < map; i++) { - width >>= 1; - } - return Math.max(width, 1); - } - - private int mipMapHeight(int map) { - int height = getHeight(); - for (int i = 0; i < map; i++) { - height >>= 1; - } - return Math.max(height, 1); - } - - private int mipMapSizeInBytes(int map) { - int width = mipMapWidth(map); - int height = mipMapHeight(map); - if (isCompressed()) { - int blockSize = (getCompressionFormat() == D3DFMT_DXT1 ? 8 : 16); - return ((width+3)/4)*((height+3)/4)*blockSize; - } else { - return width * height * (getDepth() / 8); - } - } - - private int sideSizeInBytes() { - int numLevels = getNumMipMaps(); - if (numLevels == 0) { - numLevels = 1; - } - - int size = 0; - for (int i = 0; i < numLevels; i++) { - size += mipMapSizeInBytes(i); - } - - return size; - } - - private int sideShiftInBytes(int side) { - int[] sides = { - DDSCAPS2_CUBEMAP_POSITIVEX, - DDSCAPS2_CUBEMAP_NEGATIVEX, - DDSCAPS2_CUBEMAP_POSITIVEY, - DDSCAPS2_CUBEMAP_NEGATIVEY, - DDSCAPS2_CUBEMAP_POSITIVEZ, - DDSCAPS2_CUBEMAP_NEGATIVEZ - }; - - int shift = 0; - int sideSize = sideSizeInBytes(); - for (int i = 0; i < sides.length; i++) { - int temp = sides[i]; - if ((temp & side) != 0) { - return shift; - } - - shift += sideSize; - } - - throw new RuntimeException("Illegal side: " + side); - } - - private boolean printIfRecognized(PrintStream tty, int flags, int flag, String what) { - if ((flags & flag) != 0) { - tty.println(what); - return true; - } - return false; - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/texture/spi/LEDataInputStream.java b/src/jogl/classes/com/sun/opengl/util/texture/spi/LEDataInputStream.java deleted file mode 100755 index b2b1226bd..000000000 --- a/src/jogl/classes/com/sun/opengl/util/texture/spi/LEDataInputStream.java +++ /dev/null @@ -1,223 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.texture.spi; - -import java.io.DataInput; -import java.io.DataInputStream; -import java.io.FilterInputStream; -import java.io.InputStream; -import java.io.FileInputStream; -import java.io.EOFException; -import java.io.IOException; - -/** - * Little Endian Data Input Stream. - * - * This class implements an input stream filter to allow reading - * of java native datatypes from an input stream which has those - * native datatypes stored in a little endian byte order.<p> - * - * This is the sister class of the DataInputStream which allows - * for reading of java native datatypes from an input stream with - * the datatypes stored in big endian byte order.<p> - * - * This class implements the minimum required and calls DataInputStream - * for some of the required methods for DataInput.<p> - * - * Not all methods are implemented due to lack of immediatte requirement - * for that functionality. It is not clear if it is ever going to be - * functionally required to be able to read UTF data in a LittleEndianManner<p> - * - * @author Robin Luiten - * @version 1.1 15/Dec/1997 - */ -public class LEDataInputStream extends FilterInputStream implements DataInput -{ - /** - * To reuse some of the non endian dependent methods from - * DataInputStreams methods. - */ - DataInputStream dataIn; - - public LEDataInputStream(InputStream in) - { - super(in); - dataIn = new DataInputStream(in); - } - - public void close() throws IOException - { - dataIn.close(); // better close as we create it. - // this will close underlying as well. - } - - public synchronized final int read(byte b[]) throws IOException - { - return dataIn.read(b, 0, b.length); - } - - public synchronized final int read(byte b[], int off, int len) throws IOException - { - int rl = dataIn.read(b, off, len); - return rl; - } - - public final void readFully(byte b[]) throws IOException - { - dataIn.readFully(b, 0, b.length); - } - - public final void readFully(byte b[], int off, int len) throws IOException - { - dataIn.readFully(b, off, len); - } - - public final int skipBytes(int n) throws IOException - { - return dataIn.skipBytes(n); - } - - public final boolean readBoolean() throws IOException - { - int ch = dataIn.read(); - if (ch < 0) - throw new EOFException(); - return (ch != 0); - } - - public final byte readByte() throws IOException - { - int ch = dataIn.read(); - if (ch < 0) - throw new EOFException(); - return (byte)(ch); - } - - public final int readUnsignedByte() throws IOException - { - int ch = dataIn.read(); - if (ch < 0) - throw new EOFException(); - return ch; - } - - public final short readShort() throws IOException - { - int ch1 = dataIn.read(); - int ch2 = dataIn.read(); - if ((ch1 | ch2) < 0) - throw new EOFException(); - return (short)((ch1 << 0) + (ch2 << 8)); - } - - public final int readUnsignedShort() throws IOException - { - int ch1 = dataIn.read(); - int ch2 = dataIn.read(); - if ((ch1 | ch2) < 0) - throw new EOFException(); - return (ch1 << 0) + (ch2 << 8); - } - - public final char readChar() throws IOException - { - int ch1 = dataIn.read(); - int ch2 = dataIn.read(); - if ((ch1 | ch2) < 0) - throw new EOFException(); - return (char)((ch1 << 0) + (ch2 << 8)); - } - - public final int readInt() throws IOException - { - int ch1 = dataIn.read(); - int ch2 = dataIn.read(); - int ch3 = dataIn.read(); - int ch4 = dataIn.read(); - if ((ch1 | ch2 | ch3 | ch4) < 0) - throw new EOFException(); - return ((ch1 << 0) + (ch2 << 8) + (ch3 << 16) + (ch4 << 24)); - } - - public final long readLong() throws IOException - { - int i1 = readInt(); - int i2 = readInt(); - return ((long)(i1) & 0xFFFFFFFFL) + (i2 << 32); - } - - public final float readFloat() throws IOException - { - return Float.intBitsToFloat(readInt()); - } - - public final double readDouble() throws IOException - { - return Double.longBitsToDouble(readLong()); - } - - /** - * dont call this it is not implemented. - * @return empty new string - **/ - public final String readLine() throws IOException - { - return new String(); - } - - /** - * dont call this it is not implemented - * @return empty new string - **/ - public final String readUTF() throws IOException - { - return new String(); - } - - /** - * dont call this it is not implemented - * @return empty new string - **/ - public final static String readUTF(DataInput in) throws IOException - { - return new String(); - } -} - diff --git a/src/jogl/classes/com/sun/opengl/util/texture/spi/LEDataOutputStream.java b/src/jogl/classes/com/sun/opengl/util/texture/spi/LEDataOutputStream.java deleted file mode 100755 index 730ec0dbd..000000000 --- a/src/jogl/classes/com/sun/opengl/util/texture/spi/LEDataOutputStream.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.texture.spi; - -import java.io.DataOutput; -import java.io.DataOutputStream; -import java.io.FilterOutputStream; -import java.io.OutputStream; -import java.io.IOException; - -/** - * Little Endian Data Output Stream. - * - * This class implements an output stream filter to allow writing - * of java native datatypes to an output stream which has those - * native datatypes stored in a little endian byte order.<p> - * - * This is the sister class of the DataOutputStream which allows - * for writing of java native datatypes to an output stream with - * the datatypes stored in big endian byte order.<p> - * - * This class implements the minimum required and calls DataOutputStream - * for some of the required methods for DataOutput.<p> - * - * Not all methods are implemented due to lack of immediate requirement - * for that functionality. It is not clear if it is ever going to be - * functionally required to be able to read UTF data in a LittleEndianManner<p> - * - */ -public class LEDataOutputStream extends FilterOutputStream implements DataOutput -{ - /** - * To reuse some of the non endian dependent methods from - * DataOutputStream's methods. - */ - DataOutputStream dataOut; - - public LEDataOutputStream(OutputStream out) - { - super(out); - dataOut = new DataOutputStream(out); - } - - public void close() throws IOException - { - dataOut.close(); // better close as we create it. - // this will close underlying as well. - } - - public synchronized final void write(byte b[]) throws IOException - { - dataOut.write(b, 0, b.length); - } - - public synchronized final void write(byte b[], int off, int len) throws IOException - { - dataOut.write(b, off, len); - } - - public final void write(int b) throws IOException - { - dataOut.write(b); - } - - public final void writeBoolean(boolean v) throws IOException - { - dataOut.writeBoolean(v); - } - - public final void writeByte(int v) throws IOException - { - dataOut.writeByte(v); - } - - /** Don't call this -- not implemented */ - public final void writeBytes(String s) throws IOException - { - throw new UnsupportedOperationException(); - } - - public final void writeChar(int v) throws IOException - { - dataOut.writeChar(((v >> 8) & 0xff) | - ((v & 0xff) << 8)); - } - - /** Don't call this -- not implemented */ - public final void writeChars(String s) throws IOException - { - throw new UnsupportedOperationException(); - } - - public final void writeDouble(double v) throws IOException - { - writeLong(Double.doubleToRawLongBits(v)); - } - - public final void writeFloat(float v) throws IOException - { - writeInt(Float.floatToRawIntBits(v)); - } - - public final void writeInt(int v) throws IOException - { - dataOut.writeInt((v >>> 24) | - ((v >>> 8) & 0xff00) | - ((v << 8) & 0x00ff00) | - (v << 24)); - } - - public final void writeLong(long v) throws IOException - { - writeInt((int) v); - writeInt((int) (v >>> 32)); - } - - public final void writeShort(int v) throws IOException - { - dataOut.writeShort(((v >> 8) & 0xff) | - ((v & 0xff) << 8)); - } - - /** Don't call this -- not implemented */ - public final void writeUTF(String s) throws IOException - { - throw new UnsupportedOperationException(); - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/texture/spi/NetPbmTextureWriter.java b/src/jogl/classes/com/sun/opengl/util/texture/spi/NetPbmTextureWriter.java deleted file mode 100644 index 18df1dc55..000000000 --- a/src/jogl/classes/com/sun/opengl/util/texture/spi/NetPbmTextureWriter.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.texture.spi; - -import java.io.*; -import java.net.*; -import java.nio.*; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import com.sun.opengl.util.texture.*; -import com.sun.opengl.util.texture.spi.*; - -public class NetPbmTextureWriter implements TextureWriter { - int magic; - - public NetPbmTextureWriter() { - this(0); // auto - } - - /** - * supported magic values are:<br> - * <pre> - * magic 0 - detect by file suffix (TextureIO compliant) - * magic 6 - PPM binary RGB - * magic 7 - PAM binary RGB or RGBA - * </pre> - */ - public NetPbmTextureWriter(int magic) { - switch(magic) { - case 0: - case 6: - case 7: - break; - default: - throw new GLException("Unsupported magic: "+magic+", should be 0 (auto), 6 (PPM) or 7 (PAM)"); - } - this.magic = magic; - } - - public int getMagic() { return magic; } - - public static final String PPM = "ppm"; - public static final String PAM = "pam"; - - public String getSuffix() { return (magic==6)?PPM:PAM; } - - public boolean write(File file, - TextureData data) throws IOException { - - // file suffix selection - if (0==magic) { - if (PPM.equals(FileUtil.getFileSuffix(file))) { - magic = 6; - } else if (PAM.equals(FileUtil.getFileSuffix(file))) { - magic = 7; - } else { - return false; - } - } - - int pixelFormat = data.getPixelFormat(); - int pixelType = data.getPixelType(); - if ((pixelFormat == GL.GL_RGB || - pixelFormat == GL.GL_RGBA) && - (pixelType == GL.GL_BYTE || - pixelType == GL.GL_UNSIGNED_BYTE)) { - - int comps = ( pixelFormat == GL.GL_RGBA ) ? 4 : 3 ; - - if(magic==6 && comps==4) { - throw new IOException("NetPbmTextureWriter magic 6 (PPM) doesn't RGBA pixel format, use magic 7 (PAM)"); - } - - FileOutputStream fos = new FileOutputStream(file); - - StringBuffer header = new StringBuffer(); - header.append("P"); - header.append(magic); - header.append("\n"); - if(7==magic) { - header.append("WIDTH "); - } - header.append(data.getWidth()); - if(7==magic) { - header.append("\nHEIGHT "); - } else { - header.append(" "); - } - header.append(data.getHeight()); - if(7==magic) { - header.append("\nDEPTH "); - header.append(comps); - header.append("\nMAXVAL 255\nTUPLTYPE "); - if(pixelFormat == GL.GL_RGBA) { - header.append("RGB_ALPHA"); - } else { - header.append("RGB"); - } - header.append("\nENDHDR\n"); - } else { - header.append("\n255\n"); - } - - fos.write(header.toString().getBytes()); - - ByteBuffer buf = (ByteBuffer) data.getBuffer(); - if (buf == null) { - buf = (ByteBuffer) data.getMipmapData()[0]; - } - buf.rewind(); - - byte[] bufArray = null; - - try { - bufArray = buf.array(); - } catch (Throwable t) {} - if(null==bufArray) { - bufArray = new byte[data.getWidth()*data.getHeight()*comps]; - buf.get(bufArray); - buf.rewind(); - } - - fos.write(bufArray); - fos.close(); - - return true; - } - - throw new IOException("NetPbmTextureWriter writer doesn't support this pixel format / type (only GL_RGB/A + bytes)"); - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/texture/spi/SGIImage.java b/src/jogl/classes/com/sun/opengl/util/texture/spi/SGIImage.java deleted file mode 100755 index 284fa64bd..000000000 --- a/src/jogl/classes/com/sun/opengl/util/texture/spi/SGIImage.java +++ /dev/null @@ -1,670 +0,0 @@ -/* - * Portions Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.texture.spi; - -import java.io.*; -import javax.media.opengl.*; -import com.sun.opengl.util.*; - -/** <p> Reads and writes SGI RGB/RGBA images. </p> - - <p> Written from <a href = - "http://astronomy.swin.edu.au/~pbourke/dataformats/sgirgb/">Paul - Bourke's adaptation</a> of the <a href = - "http://astronomy.swin.edu.au/~pbourke/dataformats/sgirgb/sgiversion.html">SGI - specification</a>. </p> -*/ - -public class SGIImage { - private Header header; - private int format; - private byte[] data; - // Used for decoding RLE-compressed images - private int[] rowStart; - private int[] rowSize; - private int rleEnd; - private byte[] tmpData; - private byte[] tmpRead; - - private static final int MAGIC = 474; - - static class Header { - short magic; // IRIS image file magic number - // This should be decimal 474 - byte storage; // Storage format - // 0 for uncompressed - // 1 for RLE compression - byte bpc; // Number of bytes per pixel channel - // Legally 1 or 2 - short dimension; // Number of dimensions - // Legally 1, 2, or 3 - // 1 means a single row, XSIZE long - // 2 means a single 2D image - // 3 means multiple 2D images - short xsize; // X size in pixels - short ysize; // Y size in pixels - short zsize; // Number of channels - // 1 indicates greyscale - // 3 indicates RGB - // 4 indicates RGB and Alpha - int pixmin; // Minimum pixel value - // This is the lowest pixel value in the image - int pixmax; // Maximum pixel value - // This is the highest pixel value in the image - int dummy; // Ignored - // Normally set to 0 - String imagename; // Image name; 80 bytes long - // Must be null terminated, therefore at most 79 bytes - int colormap; // Colormap ID - // 0 - normal mode - // 1 - dithered, 3 mits for red and green, 2 for blue, obsolete - // 2 - index colour, obsolete - // 3 - not an image but a colourmap - // 404 bytes char DUMMY Ignored - // Should be set to 0, makes the header 512 bytes. - - Header() { - magic = MAGIC; - } - - Header(DataInputStream in) throws IOException { - magic = in.readShort(); - storage = in.readByte(); - bpc = in.readByte(); - dimension = in.readShort(); - xsize = in.readShort(); - ysize = in.readShort(); - zsize = in.readShort(); - pixmin = in.readInt(); - pixmax = in.readInt(); - dummy = in.readInt(); - byte[] tmpname = new byte[80]; - in.read(tmpname); - int numChars = 0; - while (tmpname[numChars++] != 0); - imagename = new String(tmpname, 0, numChars); - colormap = in.readInt(); - byte[] tmp = new byte[404]; - in.read(tmp); - } - - public String toString() { - return ("magic: " + magic + - " storage: " + (int) storage + - " bpc: " + (int) bpc + - " dimension: " + dimension + - " xsize: " + xsize + - " ysize: " + ysize + - " zsize: " + zsize + - " pixmin: " + pixmin + - " pixmax: " + pixmax + - " imagename: " + imagename + - " colormap: " + colormap); - } - } - - private SGIImage(Header header) { - this.header = header; - } - - /** Reads an SGI image from the specified file. */ - public static SGIImage read(String filename) throws IOException { - return read(new FileInputStream(filename)); - } - - /** Reads an SGI image from the specified InputStream. */ - public static SGIImage read(InputStream in) throws IOException { - DataInputStream dIn = new DataInputStream(new BufferedInputStream(in)); - - Header header = new Header(dIn); - SGIImage res = new SGIImage(header); - res.decodeImage(dIn); - return res; - } - - /** Writes this SGIImage to the specified file name. If - flipVertically is set, outputs the scanlines from top to bottom - rather than the default bottom to top order. */ - public void write(String filename, boolean flipVertically) throws IOException { - write(new File(filename), flipVertically); - } - - /** Writes this SGIImage to the specified file. If flipVertically is - set, outputs the scanlines from top to bottom rather than the - default bottom to top order. */ - public void write(File file, boolean flipVertically) throws IOException { - writeImage(file, data, header.xsize, header.ysize, header.zsize, flipVertically); - } - - /** Creates an SGIImage from the specified data in either RGB or - RGBA format. */ - public static SGIImage createFromData(int width, - int height, - boolean hasAlpha, - byte[] data) { - Header header = new Header(); - header.xsize = (short) width; - header.ysize = (short) height; - header.zsize = (short) (hasAlpha ? 4 : 3); - SGIImage image = new SGIImage(header); - image.data = data; - return image; - } - - /** Determines from the magic number whether the given InputStream - points to an SGI RGB image. The given InputStream must return - true from markSupported() and support a minimum of two bytes - of read-ahead. */ - public static boolean isSGIImage(InputStream in) throws IOException { - if (!(in instanceof BufferedInputStream)) { - in = new BufferedInputStream(in); - } - if (!in.markSupported()) { - throw new IOException("Can not test non-destructively whether given InputStream is an SGI RGB image"); - } - DataInputStream dIn = new DataInputStream(in); - dIn.mark(4); - short magic = dIn.readShort(); - dIn.reset(); - return (magic == MAGIC); - } - - /** Returns the width of the image. */ - public int getWidth() { - return header.xsize; - } - - /** Returns the height of the image. */ - public int getHeight() { - return header.ysize; - } - - /** Returns the OpenGL format for this texture; e.g. GL.GL_RGB or GL.GL_RGBA. */ - public int getFormat() { - return format; - } - - /** Returns the raw data for this texture in the correct - (bottom-to-top) order for calls to glTexImage2D. */ - public byte[] getData() { return data; } - - public String toString() { - return header.toString(); - } - - //---------------------------------------------------------------------- - // Internals only below this point - // - - private void decodeImage(DataInputStream in) throws IOException { - if (header.storage == 1) { - // Read RLE compression data; row starts and sizes - int x = header.ysize * header.zsize; - rowStart = new int[x]; - rowSize = new int[x]; - rleEnd = 4 * 2 * x + 512; - for (int i = 0; i < x; i++) { - rowStart[i] = in.readInt(); - } - for (int i = 0; i < x; i++) { - rowSize[i] = in.readInt(); - } - tmpRead = new byte[header.xsize * 256]; - } - tmpData = readAll(in); - - int xsize = header.xsize; - int ysize = header.ysize; - int zsize = header.zsize; - int lptr = 0; - - data = new byte[xsize * ysize * 4]; - byte[] rbuf = new byte[xsize]; - byte[] gbuf = new byte[xsize]; - byte[] bbuf = new byte[xsize]; - byte[] abuf = new byte[xsize]; - for (int y = 0; y < ysize; y++) { - if (zsize >= 4) { - getRow(rbuf, y, 0); - getRow(gbuf, y, 1); - getRow(bbuf, y, 2); - getRow(abuf, y, 3); - rgbatorgba(rbuf, gbuf, bbuf, abuf, data, lptr); - } else if (zsize == 3) { - getRow(rbuf, y, 0); - getRow(gbuf, y, 1); - getRow(bbuf, y, 2); - rgbtorgba(rbuf, gbuf, bbuf, data, lptr); - } else if (zsize == 2) { - getRow(rbuf, y, 0); - getRow(abuf, y, 1); - latorgba(rbuf, abuf, data, lptr); - } else { - getRow(rbuf, y, 0); - bwtorgba(rbuf, data, lptr); - } - lptr += 4 * xsize; - } - rowStart = null; - rowSize = null; - tmpData = null; - tmpRead = null; - format = GL.GL_RGBA; - header.zsize = 4; - } - - private void getRow(byte[] buf, int y, int z) { - if (header.storage == 1) { - int offs = rowStart[y + z * header.ysize] - rleEnd; - System.arraycopy(tmpData, offs, tmpRead, 0, rowSize[y + z * header.ysize]); - int iPtr = 0; - int oPtr = 0; - for (;;) { - byte pixel = tmpRead[iPtr++]; - int count = (int) (pixel & 0x7F); - if (count == 0) { - return; - } - if ((pixel & 0x80) != 0) { - while ((count--) > 0) { - buf[oPtr++] = tmpRead[iPtr++]; - } - } else { - pixel = tmpRead[iPtr++]; - while ((count--) > 0) { - buf[oPtr++] = pixel; - } - } - } - } else { - int offs = (y * header.xsize) + (z * header.xsize * header.ysize); - System.arraycopy(tmpData, offs, buf, 0, header.xsize); - } - } - - private void bwtorgba(byte[] b, byte[] dest, int lptr) { - for (int i = 0; i < b.length; i++) { - dest[4 * i + lptr + 0] = b[i]; - dest[4 * i + lptr + 1] = b[i]; - dest[4 * i + lptr + 2] = b[i]; - dest[4 * i + lptr + 3] = (byte) 0xFF; - } - } - - private void latorgba(byte[] b, byte[] a, byte[] dest, int lptr) { - for (int i = 0; i < b.length; i++) { - dest[4 * i + lptr + 0] = b[i]; - dest[4 * i + lptr + 1] = b[i]; - dest[4 * i + lptr + 2] = b[i]; - dest[4 * i + lptr + 3] = a[i]; - } - } - - private void rgbtorgba(byte[] r, byte[] g, byte[] b, byte[] dest, int lptr) { - for (int i = 0; i < b.length; i++) { - dest[4 * i + lptr + 0] = r[i]; - dest[4 * i + lptr + 1] = g[i]; - dest[4 * i + lptr + 2] = b[i]; - dest[4 * i + lptr + 3] = (byte) 0xFF; - } - } - - private void rgbatorgba(byte[] r, byte[] g, byte[] b, byte[] a, byte[] dest, int lptr) { - for (int i = 0; i < b.length; i++) { - dest[4 * i + lptr + 0] = r[i]; - dest[4 * i + lptr + 1] = g[i]; - dest[4 * i + lptr + 2] = b[i]; - dest[4 * i + lptr + 3] = a[i]; - } - } - - private static byte imgref(byte[] i, - int x, - int y, - int z, - int xs, - int ys, - int zs) { - return i[(xs*ys*z)+(xs*y)+x]; - } - - - private void writeHeader(DataOutputStream stream, - int xsize, int ysize, int zsize, boolean rle) throws IOException { - // effects: outputs the 512-byte IRIS RGB header to STREAM, using xsize, - // ysize, and depth as the dimensions of the image. NOTE that - // the following defaults are used: - // STORAGE = 1 (storage format = RLE) - // BPC = 1 (# bytes/channel) - // DIMENSION = 3 - // PIXMIN = 0 - // PIXMAX = 255 - // IMAGENAME = <80 nulls> - // COLORMAP = 0 - // See ftp://ftp.sgi.com/pub/sgi/SGIIMAGESPEC for more details. - - // write out MAGIC, STORAGE, BPC - stream.writeShort(474); - stream.write((rle ? 1 : 0)); - stream.write(1); - - // write out DIMENSION - stream.writeShort(3); - - // write XSIZE, YSIZE, ZSIZE - stream.writeShort(xsize); - stream.writeShort(ysize); - stream.writeShort(zsize); - - // write PIXMIN, PIXMAX - stream.writeInt(0); - stream.writeInt(255); - - // write DUMMY - stream.writeInt(0); - - // write IMAGENAME - for (int i = 0; i < 80; i++) - stream.write(0); - - // write COLORMAP - stream.writeInt(0); - - // write DUMMY (404 bytes) - for (int i = 0; i < 404; i++) - stream.write(0); - } - - private void writeImage(File file, - byte[] data, - int xsize, - int ysize, - int zsize, - boolean yflip) throws IOException { - // Input data is in RGBRGBRGB or RGBARGBARGBA format; first unswizzle it - byte[] tmpData = new byte[xsize * ysize * zsize]; - int dest = 0; - for (int i = 0; i < zsize; i++) { - for (int j = i; j < (xsize * ysize * zsize); j += zsize) { - tmpData[dest++] = data[j]; - } - } - data = tmpData; - - // requires: DATA must be an array of size XSIZE * YSIZE * ZSIZE, - // indexed in the following manner: - // data[0] ...data[xsize-1] == first row of first channel - // data[xsize]...data[2*xsize-1] == second row of first channel - // ... data[(ysize - 1) * xsize]...data[(ysize * xsize) - 1] == - // last row of first channel - // Later channels follow the same format. - // *** NOTE that "first row" is defined by the BOTTOM ROW of - // the image. That is, the origin is in the lower left corner. - // effects: writes out an SGI image to FILE, RLE-compressed, INCLUDING - // header, of dimensions (xsize, ysize, zsize), and containing - // the data in DATA. If YFLIP is set, outputs the data in DATA - // in reverse order vertically (equivalent to a flip about the - // x axis). - - // Build the offset tables - int[] starttab = new int[ysize * zsize]; - int[] lengthtab = new int[ysize * zsize]; - - // Temporary buffer for holding RLE data. - // Note that this makes the assumption that RLE-compressed data will - // never exceed twice the size of the input data. - // There are surely formal proofs about how big the RLE buffer should - // be, as well as what the optimal look-ahead size is (i.e. don't switch - // copy/repeat modes for less than N repeats). However, I'm going from - // empirical evidence here; the break-even point seems to be a look- - // ahead of 3. (That is, if the three values following this one are all - // the same as the current value, switch to repeat mode.) - int lookahead = 3; - byte[] rlebuf = new byte[2 * xsize * ysize * zsize]; - - int cur_loc = 0; // current offset location. - int ptr = 0; - int total_size = 0; - int ystart = 0; - int yincr = 1; - int yend = ysize; - - if (yflip) { - ystart = ysize - 1; - yend = -1; - yincr = -1; - } - - boolean DEBUG = false; - - for (int z = 0; z < zsize; z++) { - for (int y = ystart; y != yend; y += yincr) { - // RLE-compress each row. - - int x = 0; - byte count = 0; - boolean repeat_mode = false; - boolean should_switch = false; - int start_ptr = ptr; - int num_ptr = ptr++; - byte repeat_val = 0; - - while (x < xsize) { - // see if we should switch modes - should_switch = false; - if (repeat_mode) { - if (imgref(data, x, y, z, xsize, ysize, zsize) != repeat_val) { - should_switch = true; - } - } else { - // look ahead to see if we should switch to repeat mode. - // stay within the scanline for the lookahead - if ((x + lookahead) < xsize) { - should_switch = true; - for (int i = 1; i <= lookahead; i++) { - if (DEBUG) - System.err.println("left side was " + ((int) imgref(data, x, y, z, xsize, ysize, zsize)) + - ", right side was " + (int)imgref(data, x+i, y, z, xsize, ysize, zsize)); - - if (imgref(data, x, y, z, xsize, ysize, zsize) != - imgref(data, x+i, y, z, xsize, ysize, zsize)) - should_switch = false; - } - } - } - - if (should_switch || (count == 127)) { - // update the number of elements we repeated/copied - if (x > 0) { - if (repeat_mode) - rlebuf[num_ptr] = count; - else - rlebuf[num_ptr] = (byte) (count | 0x80); - } - // perform mode switch if necessary; output repeat_val if - // switching FROM repeat mode, and set it if switching - // TO repeat mode. - if (repeat_mode) { - if (should_switch) - repeat_mode = false; - rlebuf[ptr++] = repeat_val; - } else { - if (should_switch) - repeat_mode = true; - repeat_val = imgref(data, x, y, z, xsize, ysize, zsize); - } - - if (x > 0) { - // reset the number pointer - num_ptr = ptr++; - // reset number of bytes copied - count = 0; - } - } - - // if not in repeat mode, copy element to ptr - if (!repeat_mode) { - rlebuf[ptr++] = imgref(data, x, y, z, xsize, ysize, zsize); - } - count++; - - if (x == xsize - 1) { - // Need to store the number of pixels we copied/repeated. - if (repeat_mode) { - rlebuf[num_ptr] = count; - // If we ended the row in repeat mode, store the - // repeated value - rlebuf[ptr++] = repeat_val; - } - else - rlebuf[num_ptr] = (byte) (count | 0x80); - - // output zero counter for the last value in the row - rlebuf[ptr++] = 0; - } - - x++; - } - // output this row's length into the length table - int rowlen = ptr - start_ptr; - if (yflip) - lengthtab[ysize*z+(ysize-y-1)] = rowlen; - else - lengthtab[ysize*z+y] = rowlen; - // add to the start table, and update the current offset - if (yflip) - starttab[ysize*z+(ysize-y-1)] = cur_loc; - else - starttab[ysize*z+y] = cur_loc; - cur_loc += rowlen; - } - } - - // Now we have the offset tables computed, as well as the RLE data. - // Output this information to the file. - total_size = ptr; - - if (DEBUG) - System.err.println("total_size was " + total_size); - - DataOutputStream stream = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(file))); - - writeHeader(stream, xsize, ysize, zsize, true); - - int SIZEOF_INT = 4; - for (int i = 0; i < (ysize * zsize); i++) - stream.writeInt(starttab[i] + 512 + (2 * ysize * zsize * SIZEOF_INT)); - for (int i = 0; i < (ysize * zsize); i++) - stream.writeInt(lengthtab[i]); - for (int i = 0; i < total_size; i++) - stream.write(rlebuf[i]); - - stream.close(); - } - - private byte[] readAll(DataInputStream in) throws IOException { - byte[] dest = new byte[16384]; - int pos = 0; - int numRead = 0; - - boolean done = false; - - do { - numRead = in.read(dest, pos, dest.length - pos); - if (pos == dest.length) { - // Resize destination buffer - byte[] newDest = new byte[2 * dest.length]; - System.arraycopy(dest, 0, newDest, 0, pos); - dest = newDest; - } - if (numRead > 0) { - pos += numRead; - } - - done = ((numRead == -1) || (in.available() == 0)); - } while (!done); - - // Trim destination buffer - if (pos != dest.length) { - byte[] finalDest = new byte[pos]; - System.arraycopy(dest, 0, finalDest, 0, pos); - dest = finalDest; - } - - return dest; - } - - // Test case - /* - import java.awt.image.*; - import javax.swing.*; - - public static void main(String[] args) { - for (int i = 0; i < args.length; i++) { - try { - System.out.println(args[i] + ":"); - SGIImage image = SGIImage.read(args[i]); - System.out.println(image); - BufferedImage img = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_4BYTE_ABGR); - WritableRaster raster = img.getRaster(); - DataBufferByte db = (DataBufferByte) raster.getDataBuffer(); - byte[] src = image.getData(); - byte[] dest = db.getData(); - for (int j = 0; j < src.length; j += 4) { - dest[j + 0] = src[j + 3]; - dest[j + 1] = src[j + 2]; - dest[j + 2] = src[j + 1]; - dest[j + 3] = src[j + 0]; - } - // System.arraycopy(src, 0, dest, 0, src.length); - ImageIcon icon = new ImageIcon(img); - JLabel label = new JLabel(); - label.setIcon(icon); - JFrame frame = new JFrame(args[i]); - frame.getContentPane().add(label); - frame.pack(); - frame.show(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - */ -} diff --git a/src/jogl/classes/com/sun/opengl/util/texture/spi/TGAImage.java.javame_cdc_fp b/src/jogl/classes/com/sun/opengl/util/texture/spi/TGAImage.java.javame_cdc_fp deleted file mode 100755 index c54713a5e..000000000 --- a/src/jogl/classes/com/sun/opengl/util/texture/spi/TGAImage.java.javame_cdc_fp +++ /dev/null @@ -1,417 +0,0 @@ -/* - * Copyright (c) 2003-2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.texture.spi; - -import java.io.*; -import java.nio.*; -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import com.sun.opengl.util.texture.spi.*; -import com.sun.opengl.util.texture.*; - -/** - * Targa image reader and writer adapted from sources of the <a href = - * "http://java.sun.com/products/jimi/">Jimi</a> image I/O class library. - * - * <P> - * - * Image decoder for image data stored in TGA file format. - * Currently only the original TGA file format is supported. This is - * because the new TGA format has data at the end of the file, getting - * to the end of a file in an InputStream orient environment presents - * several difficulties which are avoided at the moment. - * - * <P> - * - * This is a simple decoder and is only setup to load a single image - * from the input stream - * - * <P> - * - * @author Robin Luiten - * @author Kenneth Russell - * @version $Revision: 1768 $ - */ - -public class TGAImage { - private Header header; - private int format; - private int bpp; - private ByteBuffer data; - - private TGAImage(Header header) { - this.header = header; - } - - /** - * This class reads in all of the TGA image header in addition it also - * reads in the imageID field as it is convenient to handle that here. - * - * @author Robin Luiten - * @version 1.1 - */ - public static class Header { - /** Set of possible file format TGA types */ - public final static int TYPE_NEW = 0; - public final static int TYPE_OLD = 1; - public final static int TYPE_UNK = 2; // cant rewind stream so unknown for now. - - /** Set of possible image types in TGA file */ - public final static int NO_IMAGE = 0; // no image data - public final static int UCOLORMAPPED = 1; // uncompressed color mapped image - public final static int UTRUECOLOR = 2; // uncompressed true color image - public final static int UBLACKWHITE = 3; // uncompressed black and white image - public final static int COLORMAPPED = 9; // compressed color mapped image - public final static int TRUECOLOR = 10; // compressed true color image - public final static int BLACKWHITE = 11; // compressed black and white image - - /** Field image descriptor bitfield values definitions */ - public final static int ID_ATTRIBPERPIXEL = 0xF; - public final static int ID_RIGHTTOLEFT = 0x10; - public final static int ID_TOPTOBOTTOM = 0x20; - public final static int ID_INTERLEAVE = 0xC0; - - /** Field image descriptor / interleave values */ - public final static int I_NOTINTERLEAVED = 0; - public final static int I_TWOWAY = 1; - public final static int I_FOURWAY = 2; - - /** Type of this TGA file format */ - private int tgaType; - - /** initial TGA image data fields */ - private int idLength; // byte value - private int colorMapType; // byte value - private int imageType; // byte value - - /** TGA image colour map fields */ - private int firstEntryIndex; - private int colorMapLength; - private byte colorMapEntrySize; - - /** TGA image specification fields */ - private int xOrigin; - private int yOrigin; - private int width; - private int height; - private byte pixelDepth; - private byte imageDescriptor; - - private byte[] imageIDbuf; - private String imageID; - - // For construction from user data - Header() { - tgaType = TYPE_OLD; // dont try and get footer. - } - - Header(LEDataInputStream in) throws IOException { - int ret; - - tgaType = TYPE_OLD; // dont try and get footer. - - // initial header fields - idLength = in.readUnsignedByte(); - colorMapType = in.readUnsignedByte(); - imageType = in.readUnsignedByte(); - - // color map header fields - firstEntryIndex = in.readUnsignedShort(); - colorMapLength = in.readUnsignedShort(); - colorMapEntrySize = in.readByte(); - - // TGA image specification fields - xOrigin = in.readUnsignedShort(); - yOrigin = in.readUnsignedShort(); - width = in.readUnsignedShort(); - height = in.readUnsignedShort(); - pixelDepth = in.readByte(); - imageDescriptor = in.readByte(); - - if (idLength > 0) { - imageIDbuf = new byte[idLength]; - in.read(imageIDbuf, 0, idLength); - imageID = new String(imageIDbuf, "US-ASCII"); - } - } - - public int tgaType() { return tgaType; } - - /** initial TGA image data fields */ - public int idLength() { return idLength; } - public int colorMapType() { return colorMapType; } - public int imageType() { return imageType; } - - /** TGA image colour map fields */ - public int firstEntryIndex() { return firstEntryIndex; } - public int colorMapLength() { return colorMapLength; } - public byte colorMapEntrySize() { return colorMapEntrySize; } - - /** TGA image specification fields */ - public int xOrigin() { return xOrigin; } - public int yOrigin() { return yOrigin; } - public int width() { return width; } - public int height() { return height; } - public byte pixelDepth() { return pixelDepth; } - public byte imageDescriptor() { return imageDescriptor; } - - /** bitfields in imageDescriptor */ - public byte attribPerPixel() { return (byte)(imageDescriptor & ID_ATTRIBPERPIXEL); } - public boolean rightToLeft() { return ((imageDescriptor & ID_RIGHTTOLEFT) != 0); } - public boolean topToBottom() { return ((imageDescriptor & ID_TOPTOBOTTOM) != 0); } - public byte interleave() { return (byte)((imageDescriptor & ID_INTERLEAVE) >> 6); } - - public byte[] imageIDbuf() { return imageIDbuf; } - public String imageID() { return imageID; } - - public String toString() { - return "TGA Header " + - " id length: " + idLength + - " color map type: "+ colorMapType + - " image type: "+ imageType + - " first entry index: " + firstEntryIndex + - " color map length: " + colorMapLength + - " color map entry size: " + colorMapEntrySize + - " x Origin: " + xOrigin + - " y Origin: " + yOrigin + - " width: "+ width + - " height: "+ height + - " pixel depth: "+ pixelDepth + - " image descriptor: "+ imageDescriptor + - (imageIDbuf == null ? "" : (" ID String: " + imageID)); - } - - public int size() { return 18 + idLength; } - - private void write(LEDataOutputStream output) throws IOException { - output.write(idLength); - output.write(colorMapType); - output.write(imageType); - output.writeShort(firstEntryIndex); - output.writeShort(colorMapLength); - output.write(colorMapEntrySize); - output.writeShort(xOrigin); - output.writeShort(yOrigin); - output.writeShort(width); - output.writeShort(height); - output.write(pixelDepth); - output.write(imageDescriptor); - if (idLength > 0) { - try { - byte[] chars = imageID.getBytes("US-ASCII"); - output.write(chars); - } catch (UnsupportedEncodingException e) { - throw new RuntimeException(e); - } - } - } - } - - - /** - * Identifies the image type of the tga image data and loads - * it into the JimiImage structure. This was taken from the - * prototype and modified for the new Jimi structure - */ - private void decodeImage(LEDataInputStream dIn) throws IOException { - switch (header.imageType()) { - case Header.UCOLORMAPPED: - throw new IOException("TGADecoder Uncompressed Colormapped images not supported"); - - case Header.UTRUECOLOR: // pixelDepth 15, 16, 24 and 32 - switch (header.pixelDepth) { - case 16: - throw new IOException("TGADecoder Compressed 16-bit True Color images not supported"); - - case 24: - case 32: - decodeRGBImageU24_32(dIn); - break; - } - break; - - case Header.UBLACKWHITE: - throw new IOException("TGADecoder Uncompressed Grayscale images not supported"); - - case Header.COLORMAPPED: - throw new IOException("TGADecoder Compressed Colormapped images not supported"); - - case Header.TRUECOLOR: - throw new IOException("TGADecoder Compressed True Color images not supported"); - - case Header.BLACKWHITE: - throw new IOException("TGADecoder Compressed Grayscale images not supported"); - } - } - - /** - * This assumes that the body is for a 24 bit or 32 bit for a - * RGB or ARGB image respectively. - */ - private void decodeRGBImageU24_32(LEDataInputStream dIn) throws IOException { - int i; // row index - int j; // column index - int y; // output row index - int raw; // index through the raw input buffer - int rawWidth = header.width() * (header.pixelDepth() / 8); - byte[] rawBuf = new byte[rawWidth]; - byte[] tmpData = new byte[rawWidth * header.height()]; - - for (i = 0; i < header.height(); ++i) { - dIn.readFully(rawBuf, 0, rawWidth); - - if (header.topToBottom()) - y = header.height - i - 1; // range 0 to (header.height - 1) - else - y = i; - - System.arraycopy(rawBuf, 0, tmpData, y * rawWidth, rawBuf.length); - } - - GL gl = GLContext.getCurrentGL(); - if (header.pixelDepth() == 24) { - bpp=3; - if(gl.isGL2()) { - format = GL2.GL_BGR; - } else { - format = GL.GL_RGB; - swapBGR(tmpData, rawWidth, header.height(), bpp); - } - } else { - assert header.pixelDepth() == 32; - bpp=4; - - if(gl.isGL2()) { - format = GL2.GL_BGRA; - } else { - format = GL.GL_RGBA; - swapBGR(tmpData, rawWidth, header.height(), bpp); - } - } - - data = ByteBuffer.wrap(tmpData); - } - - private static void swapBGR(byte[] data, int bWidth, int height, int bpp) { - byte r,b; - int k; - for(int i=0; i<height; ++i) { - for(int j=0; j<bWidth; j+=bpp) { - k=i*bWidth+j; - b=data[k+0]; - r=data[k+2]; - data[k+0]=r; - data[k+2]=b; - } - } - } - - /** Returns the width of the image. */ - public int getWidth() { return header.width(); } - - /** Returns the height of the image. */ - public int getHeight() { return header.height(); } - - /** Returns the OpenGL format for this texture; e.g. GL.GL_BGR or GL.GL_BGRA. */ - public int getGLFormat() { return format; } - - /** Returns the bytes per pixel */ - public int getBytesPerPixel() { return bpp; } - - /** Returns the raw data for this texture in the correct - (bottom-to-top) order for calls to glTexImage2D. */ - public ByteBuffer getData() { return data; } - - /** Reads a Targa image from the specified file. */ - public static TGAImage read(String filename) throws IOException { - return read(new FileInputStream(filename)); - } - - /** Reads a Targa image from the specified InputStream. */ - public static TGAImage read(InputStream in) throws IOException { - LEDataInputStream dIn = new LEDataInputStream(new BufferedInputStream(in)); - - Header header = new Header(dIn); - TGAImage res = new TGAImage(header); - res.decodeImage(dIn); - return res; - } - - /** Writes the image in Targa format to the specified file name. */ - public void write(String filename) throws IOException { - write(new File(filename)); - } - - /** Writes the image in Targa format to the specified file. */ - public void write(File file) throws IOException { - LEDataOutputStream output = - new LEDataOutputStream(new DataOutputStream(new BufferedOutputStream(new FileOutputStream(file)))); - header.write(output); - if (!data.isDirect()) { - output.write(data.array()); - } else { - for (int i = 0; i < data.limit(); i++) { - output.write(data.get(i)); - } - } - output.close(); - } - - /** Creates a TGAImage from data supplied by the end user. Shares - data with the passed ByteBuffer. Assumes the data is already in - the correct byte order for writing to disk, i.e., BGR or - BGRA. */ - public static TGAImage createFromData(int width, - int height, - boolean hasAlpha, - boolean topToBottom, - ByteBuffer data) { - Header header = new Header(); - header.imageType = Header.UTRUECOLOR; - header.width = width; - header.height = height; - header.pixelDepth = (byte) (hasAlpha ? 32 : 24); - header.imageDescriptor = (byte) (topToBottom ? Header.ID_TOPTOBOTTOM : 0); - // Note ID not supported - TGAImage ret = new TGAImage(header); - ret.data = data; - return ret; - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/texture/spi/TGAImage.java.javase b/src/jogl/classes/com/sun/opengl/util/texture/spi/TGAImage.java.javase deleted file mode 100755 index 1e78ef20d..000000000 --- a/src/jogl/classes/com/sun/opengl/util/texture/spi/TGAImage.java.javase +++ /dev/null @@ -1,420 +0,0 @@ -/* - * Copyright (c) 2003-2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.texture.spi; - -import java.io.*; -import java.nio.*; -import java.nio.channels.*; -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import com.sun.opengl.util.texture.spi.*; -import com.sun.opengl.util.texture.*; - -/** - * Targa image reader and writer adapted from sources of the <a href = - * "http://java.sun.com/products/jimi/">Jimi</a> image I/O class library. - * - * <P> - * - * Image decoder for image data stored in TGA file format. - * Currently only the original TGA file format is supported. This is - * because the new TGA format has data at the end of the file, getting - * to the end of a file in an InputStream orient environment presents - * several difficulties which are avoided at the moment. - * - * <P> - * - * This is a simple decoder and is only setup to load a single image - * from the input stream - * - * <P> - * - * @author Robin Luiten - * @author Kenneth Russell - * @version $Revision: 1768 $ - */ - -public class TGAImage { - private Header header; - private int format; - private int bpp; - private ByteBuffer data; - - private TGAImage(Header header) { - this.header = header; - } - - /** - * This class reads in all of the TGA image header in addition it also - * reads in the imageID field as it is convenient to handle that here. - * - * @author Robin Luiten - * @version 1.1 - */ - public static class Header { - /** Set of possible file format TGA types */ - public final static int TYPE_NEW = 0; - public final static int TYPE_OLD = 1; - public final static int TYPE_UNK = 2; // cant rewind stream so unknown for now. - - /** Set of possible image types in TGA file */ - public final static int NO_IMAGE = 0; // no image data - public final static int UCOLORMAPPED = 1; // uncompressed color mapped image - public final static int UTRUECOLOR = 2; // uncompressed true color image - public final static int UBLACKWHITE = 3; // uncompressed black and white image - public final static int COLORMAPPED = 9; // compressed color mapped image - public final static int TRUECOLOR = 10; // compressed true color image - public final static int BLACKWHITE = 11; // compressed black and white image - - /** Field image descriptor bitfield values definitions */ - public final static int ID_ATTRIBPERPIXEL = 0xF; - public final static int ID_RIGHTTOLEFT = 0x10; - public final static int ID_TOPTOBOTTOM = 0x20; - public final static int ID_INTERLEAVE = 0xC0; - - /** Field image descriptor / interleave values */ - public final static int I_NOTINTERLEAVED = 0; - public final static int I_TWOWAY = 1; - public final static int I_FOURWAY = 2; - - /** Type of this TGA file format */ - private int tgaType; - - /** initial TGA image data fields */ - private int idLength; // byte value - private int colorMapType; // byte value - private int imageType; // byte value - - /** TGA image colour map fields */ - private int firstEntryIndex; - private int colorMapLength; - private byte colorMapEntrySize; - - /** TGA image specification fields */ - private int xOrigin; - private int yOrigin; - private int width; - private int height; - private byte pixelDepth; - private byte imageDescriptor; - - private byte[] imageIDbuf; - private String imageID; - - // For construction from user data - Header() { - tgaType = TYPE_OLD; // dont try and get footer. - } - - Header(LEDataInputStream in) throws IOException { - int ret; - - tgaType = TYPE_OLD; // dont try and get footer. - - // initial header fields - idLength = in.readUnsignedByte(); - colorMapType = in.readUnsignedByte(); - imageType = in.readUnsignedByte(); - - // color map header fields - firstEntryIndex = in.readUnsignedShort(); - colorMapLength = in.readUnsignedShort(); - colorMapEntrySize = in.readByte(); - - // TGA image specification fields - xOrigin = in.readUnsignedShort(); - yOrigin = in.readUnsignedShort(); - width = in.readUnsignedShort(); - height = in.readUnsignedShort(); - pixelDepth = in.readByte(); - imageDescriptor = in.readByte(); - - if (idLength > 0) { - imageIDbuf = new byte[idLength]; - in.read(imageIDbuf, 0, idLength); - imageID = new String(imageIDbuf, "US-ASCII"); - } - } - - public int tgaType() { return tgaType; } - - /** initial TGA image data fields */ - public int idLength() { return idLength; } - public int colorMapType() { return colorMapType; } - public int imageType() { return imageType; } - - /** TGA image colour map fields */ - public int firstEntryIndex() { return firstEntryIndex; } - public int colorMapLength() { return colorMapLength; } - public byte colorMapEntrySize() { return colorMapEntrySize; } - - /** TGA image specification fields */ - public int xOrigin() { return xOrigin; } - public int yOrigin() { return yOrigin; } - public int width() { return width; } - public int height() { return height; } - public byte pixelDepth() { return pixelDepth; } - public byte imageDescriptor() { return imageDescriptor; } - - /** bitfields in imageDescriptor */ - public byte attribPerPixel() { return (byte)(imageDescriptor & ID_ATTRIBPERPIXEL); } - public boolean rightToLeft() { return ((imageDescriptor & ID_RIGHTTOLEFT) != 0); } - public boolean topToBottom() { return ((imageDescriptor & ID_TOPTOBOTTOM) != 0); } - public byte interleave() { return (byte)((imageDescriptor & ID_INTERLEAVE) >> 6); } - - public byte[] imageIDbuf() { return imageIDbuf; } - public String imageID() { return imageID; } - - public String toString() { - return "TGA Header " + - " id length: " + idLength + - " color map type: "+ colorMapType + - " image type: "+ imageType + - " first entry index: " + firstEntryIndex + - " color map length: " + colorMapLength + - " color map entry size: " + colorMapEntrySize + - " x Origin: " + xOrigin + - " y Origin: " + yOrigin + - " width: "+ width + - " height: "+ height + - " pixel depth: "+ pixelDepth + - " image descriptor: "+ imageDescriptor + - (imageIDbuf == null ? "" : (" ID String: " + imageID)); - } - - public int size() { return 18 + idLength; } - - // buf must be in little-endian byte order - private void write(ByteBuffer buf) { - buf.put((byte) idLength); - buf.put((byte) colorMapType); - buf.put((byte) imageType); - buf.putShort((short) firstEntryIndex); - buf.putShort((short) colorMapLength); - buf.put((byte) colorMapEntrySize); - buf.putShort((short) xOrigin); - buf.putShort((short) yOrigin); - buf.putShort((short) width); - buf.putShort((short) height); - buf.put((byte) pixelDepth); - buf.put((byte) imageDescriptor); - if (idLength > 0) { - try { - byte[] chars = imageID.getBytes("US-ASCII"); - buf.put(chars); - } catch (UnsupportedEncodingException e) { - throw new RuntimeException(e); - } - } - } - } - - - /** - * Identifies the image type of the tga image data and loads - * it into the JimiImage structure. This was taken from the - * prototype and modified for the new Jimi structure - */ - private void decodeImage(LEDataInputStream dIn) throws IOException { - switch (header.imageType()) { - case Header.UCOLORMAPPED: - throw new IOException("TGADecoder Uncompressed Colormapped images not supported"); - - case Header.UTRUECOLOR: // pixelDepth 15, 16, 24 and 32 - switch (header.pixelDepth) { - case 16: - throw new IOException("TGADecoder Compressed 16-bit True Color images not supported"); - - case 24: - case 32: - decodeRGBImageU24_32(dIn); - break; - } - break; - - case Header.UBLACKWHITE: - throw new IOException("TGADecoder Uncompressed Grayscale images not supported"); - - case Header.COLORMAPPED: - throw new IOException("TGADecoder Compressed Colormapped images not supported"); - - case Header.TRUECOLOR: - throw new IOException("TGADecoder Compressed True Color images not supported"); - - case Header.BLACKWHITE: - throw new IOException("TGADecoder Compressed Grayscale images not supported"); - } - } - - /** - * This assumes that the body is for a 24 bit or 32 bit for a - * RGB or ARGB image respectively. - */ - private void decodeRGBImageU24_32(LEDataInputStream dIn) throws IOException { - int i; // row index - int j; // column index - int y; // output row index - int raw; // index through the raw input buffer - int rawWidth = header.width() * (header.pixelDepth() / 8); - byte[] rawBuf = new byte[rawWidth]; - byte[] tmpData = new byte[rawWidth * header.height()]; - - for (i = 0; i < header.height(); ++i) { - dIn.readFully(rawBuf, 0, rawWidth); - - if (header.topToBottom()) - y = header.height - i - 1; // range 0 to (header.height - 1) - else - y = i; - - System.arraycopy(rawBuf, 0, tmpData, y * rawWidth, rawBuf.length); - } - - GL gl = GLContext.getCurrentGL(); - if (header.pixelDepth() == 24) { - bpp=3; - if(gl.isGL2()) { - format = GL2.GL_BGR; - } else { - format = GL.GL_RGB; - swapBGR(tmpData, rawWidth, header.height(), bpp); - } - } else { - assert header.pixelDepth() == 32; - bpp=4; - - if(gl.isGL2()) { - format = GL2.GL_BGRA; - } else { - format = GL.GL_RGBA; - swapBGR(tmpData, rawWidth, header.height(), bpp); - } - } - - data = ByteBuffer.wrap(tmpData); - } - - private static void swapBGR(byte[] data, int bWidth, int height, int bpp) { - byte r,b; - int k; - for(int i=0; i<height; ++i) { - for(int j=0; j<bWidth; j+=bpp) { - k=i*bWidth+j; - b=data[k+0]; - r=data[k+2]; - data[k+0]=r; - data[k+2]=b; - } - } - } - - /** Returns the width of the image. */ - public int getWidth() { return header.width(); } - - /** Returns the height of the image. */ - public int getHeight() { return header.height(); } - - /** Returns the OpenGL format for this texture; e.g. GL.GL_BGR or GL.GL_BGRA. */ - public int getGLFormat() { return format; } - - /** Returns the bytes per pixel */ - public int getBytesPerPixel() { return bpp; } - - /** Returns the raw data for this texture in the correct - (bottom-to-top) order for calls to glTexImage2D. */ - public ByteBuffer getData() { return data; } - - /** Reads a Targa image from the specified file. */ - public static TGAImage read(String filename) throws IOException { - return read(new FileInputStream(filename)); - } - - /** Reads a Targa image from the specified InputStream. */ - public static TGAImage read(InputStream in) throws IOException { - LEDataInputStream dIn = new LEDataInputStream(new BufferedInputStream(in)); - - Header header = new Header(dIn); - TGAImage res = new TGAImage(header); - res.decodeImage(dIn); - return res; - } - - /** Writes the image in Targa format to the specified file name. */ - public void write(String filename) throws IOException { - write(new File(filename)); - } - - /** Writes the image in Targa format to the specified file. */ - public void write(File file) throws IOException { - FileOutputStream stream = new FileOutputStream(file); - FileChannel chan = stream.getChannel(); - ByteBuffer buf = ByteBuffer.allocate(header.size()); - buf.order(ByteOrder.LITTLE_ENDIAN); - header.write(buf); - buf.rewind(); - chan.write(buf); - chan.write(data); - data.rewind(); - chan.force(true); - chan.close(); - stream.close(); - } - - /** Creates a TGAImage from data supplied by the end user. Shares - data with the passed ByteBuffer. Assumes the data is already in - the correct byte order for writing to disk, i.e., BGR or - BGRA. */ - public static TGAImage createFromData(int width, - int height, - boolean hasAlpha, - boolean topToBottom, - ByteBuffer data) { - Header header = new Header(); - header.imageType = Header.UTRUECOLOR; - header.width = width; - header.height = height; - header.pixelDepth = (byte) (hasAlpha ? 32 : 24); - header.imageDescriptor = (byte) (topToBottom ? Header.ID_TOPTOBOTTOM : 0); - // Note ID not supported - TGAImage ret = new TGAImage(header); - ret.data = data; - return ret; - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/texture/spi/TextureProvider.java b/src/jogl/classes/com/sun/opengl/util/texture/spi/TextureProvider.java deleted file mode 100755 index afc6a998e..000000000 --- a/src/jogl/classes/com/sun/opengl/util/texture/spi/TextureProvider.java +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.texture.spi; - -import java.io.*; -import java.net.*; -import javax.media.opengl.GLProfile; - -import com.sun.opengl.util.texture.*; - -/** Plug-in interface to TextureIO to support reading OpenGL textures - from new file formats. For all methods, either internalFormat or - pixelFormat may be 0 in which case they must be inferred as - e.g. RGB or RGBA depending on the file contents. -*/ - -public interface TextureProvider { - - /** - * Produces a TextureData object from a file, or returns null if the - * file format was not supported by this TextureProvider. Does not - * do any OpenGL-related work. The resulting TextureData can be - * converted into an OpenGL texture in a later step. - * - * @param glp the OpenGL Profile this texture data should be - * created for. - * @param file the file from which to read the texture data - * - * @param internalFormat the OpenGL internal format to be used for - * the texture, or 0 if it should be inferred - * from the file's contents - * - * @param pixelFormat the OpenGL pixel format to be used for - * the texture, or 0 if it should be inferred - * from the file's contents - * - * @param mipmap whether mipmaps should be produced for this - * texture either by autogenerating them or - * reading them from the file. Some file formats - * support multiple mipmaps in a single file in - * which case those mipmaps will be used rather - * than generating them. - * - * @param fileSuffix the file suffix to be used as a hint to the - * provider to more quickly decide whether it - * can handle the file, or null if the - * provider should infer the type from the - * file's contents - * - * @throws IOException if an error occurred while reading the file - */ - public TextureData newTextureData(GLProfile glp, File file, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException; - - /** - * Produces a TextureData object from a stream, or returns null if - * the file format was not supported by this TextureProvider. Does - * not do any OpenGL-related work. The resulting TextureData can be - * converted into an OpenGL texture in a later step. - * - * @param glp the OpenGL Profile this texture data should be - * created for. - * @param stream the stream from which to read the texture data - * - * @param internalFormat the OpenGL internal format to be used for - * the texture, or 0 if it should be inferred - * from the file's contents - * - * @param pixelFormat the OpenGL pixel format to be used for - * the texture, or 0 if it should be inferred - * from the file's contents - * - * @param mipmap whether mipmaps should be produced for this - * texture either by autogenerating them or - * reading them from the file. Some file formats - * support multiple mipmaps in a single file in - * which case those mipmaps will be used rather - * than generating them. - * - * @param fileSuffix the file suffix to be used as a hint to the - * provider to more quickly decide whether it - * can handle the file, or null if the - * provider should infer the type from the - * file's contents - * - * @throws IOException if an error occurred while reading the stream - */ - public TextureData newTextureData(GLProfile glp, InputStream stream, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException; - - /** - * Produces a TextureData object from a URL, or returns null if the - * file format was not supported by this TextureProvider. Does not - * do any OpenGL-related work. The resulting TextureData can be - * converted into an OpenGL texture in a later step. - * - * @param glp the OpenGL Profile this texture data should be - * created for. - * @param url the URL from which to read the texture data - * - * @param internalFormat the OpenGL internal format to be used for - * the texture, or 0 if it should be inferred - * from the file's contents - * - * @param pixelFormat the OpenGL pixel format to be used for - * the texture, or 0 if it should be inferred - * from the file's contents - * - * @param mipmap whether mipmaps should be produced for this - * texture either by autogenerating them or - * reading them from the file. Some file formats - * support multiple mipmaps in a single file in - * which case those mipmaps will be used rather - * than generating them. - * - * @param fileSuffix the file suffix to be used as a hint to the - * provider to more quickly decide whether it - * can handle the file, or null if the - * provider should infer the type from the - * file's contents - * - * @throws IOException if an error occurred while reading the URL - */ - public TextureData newTextureData(GLProfile glp, URL url, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException; -} diff --git a/src/jogl/classes/com/sun/opengl/util/texture/spi/TextureWriter.java b/src/jogl/classes/com/sun/opengl/util/texture/spi/TextureWriter.java deleted file mode 100755 index cdad15bb2..000000000 --- a/src/jogl/classes/com/sun/opengl/util/texture/spi/TextureWriter.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.texture.spi; - -import java.io.*; - -import com.sun.opengl.util.texture.*; - -/** Plug-in interface to TextureIO to support writing OpenGL textures - to new file formats. */ - -public interface TextureWriter { - /** Writes the given TextureData to the passed file. Returns true if - this TextureWriter successfully handled the writing of the file, - otherwise false. May throw IOException if either this writer did - not support certain parameters of the TextureData or if an I/O - error occurred. */ - public boolean write(File file, - TextureData data) throws IOException; -} diff --git a/src/jogl/classes/com/sun/opengl/util/texture/spi/awt/IIOTextureProvider.java b/src/jogl/classes/com/sun/opengl/util/texture/spi/awt/IIOTextureProvider.java deleted file mode 100644 index f025ba591..000000000 --- a/src/jogl/classes/com/sun/opengl/util/texture/spi/awt/IIOTextureProvider.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.texture.spi.awt; - -import java.awt.Graphics; -import java.awt.image.*; -import java.io.*; -import java.net.*; -import javax.imageio.*; -import javax.media.opengl.GLProfile; - -import com.sun.opengl.impl.Debug; -import com.sun.opengl.util.texture.*; -import com.sun.opengl.util.texture.awt.*; -import com.sun.opengl.util.texture.spi.*; - -public class IIOTextureProvider implements TextureProvider { - private static final boolean DEBUG = Debug.debug("TextureIO"); - - public TextureData newTextureData(GLProfile glp, File file, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException { - BufferedImage img = ImageIO.read(file); - if (img == null) { - return null; - } - if (DEBUG) { - System.out.println("TextureIO.newTextureData(): BufferedImage type for " + file + " = " + - img.getType()); - } - return new AWTTextureData(glp, internalFormat, pixelFormat, mipmap, img); - } - - public TextureData newTextureData(GLProfile glp, InputStream stream, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException { - BufferedImage img = ImageIO.read(stream); - if (img == null) { - return null; - } - if (DEBUG) { - System.out.println("TextureIO.newTextureData(): BufferedImage type for stream = " + - img.getType()); - } - return new AWTTextureData(glp, internalFormat, pixelFormat, mipmap, img); - } - - public TextureData newTextureData(GLProfile glp, URL url, - int internalFormat, - int pixelFormat, - boolean mipmap, - String fileSuffix) throws IOException { - InputStream stream = url.openStream(); - try { - return newTextureData(glp, stream, internalFormat, pixelFormat, mipmap, fileSuffix); - } finally { - stream.close(); - } - } -} diff --git a/src/jogl/classes/com/sun/opengl/util/texture/spi/awt/IIOTextureWriter.java b/src/jogl/classes/com/sun/opengl/util/texture/spi/awt/IIOTextureWriter.java deleted file mode 100644 index db77572bf..000000000 --- a/src/jogl/classes/com/sun/opengl/util/texture/spi/awt/IIOTextureWriter.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any kind. ALL - * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, - * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN - * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR - * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR - * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR - * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR - * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE - * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, - * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF - * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed or intended for use - * in the design, construction, operation or maintenance of any nuclear - * facility. - * - * Sun gratefully acknowledges that this software was originally authored - * and developed by Kenneth Bradley Russell and Christopher John Kline. - */ - -package com.sun.opengl.util.texture.spi.awt; - -import java.awt.Graphics; -import java.awt.image.*; -import java.io.*; -import java.net.*; -import java.nio.*; -import javax.imageio.*; - -import javax.media.opengl.*; -import com.sun.opengl.util.*; -import com.sun.opengl.util.awt.*; -import com.sun.opengl.util.texture.*; -import com.sun.opengl.util.texture.spi.*; - -public class IIOTextureWriter implements TextureWriter { - public boolean write(File file, - TextureData data) throws IOException { - int pixelFormat = data.getPixelFormat(); - int pixelType = data.getPixelType(); - if ((pixelFormat == GL.GL_RGB || - pixelFormat == GL.GL_RGBA) && - (pixelType == GL.GL_BYTE || - pixelType == GL.GL_UNSIGNED_BYTE)) { - // Convert TextureData to appropriate BufferedImage - // FIXME: almost certainly not obeying correct pixel order - BufferedImage image = new BufferedImage(data.getWidth(), data.getHeight(), - (pixelFormat == GL.GL_RGB) ? - BufferedImage.TYPE_3BYTE_BGR : - BufferedImage.TYPE_4BYTE_ABGR); - byte[] imageData = ((DataBufferByte) image.getRaster().getDataBuffer()).getData(); - ByteBuffer buf = (ByteBuffer) data.getBuffer(); - if (buf == null) { - buf = (ByteBuffer) data.getMipmapData()[0]; - } - buf.rewind(); - buf.get(imageData); - buf.rewind(); - - // Swizzle image components to be correct - if (pixelFormat == GL.GL_RGB) { - for (int i = 0; i < imageData.length; i += 3) { - byte red = imageData[i + 0]; - byte blue = imageData[i + 2]; - imageData[i + 0] = blue; - imageData[i + 2] = red; - } - } else { - for (int i = 0; i < imageData.length; i += 4) { - byte red = imageData[i + 0]; - byte green = imageData[i + 1]; - byte blue = imageData[i + 2]; - byte alpha = imageData[i + 3]; - imageData[i + 0] = alpha; - imageData[i + 1] = blue; - imageData[i + 2] = green; - imageData[i + 3] = red; - } - } - - // Flip image vertically for the user's convenience - ImageUtil.flipImageVertically(image); - - // Happened to notice that writing RGBA images to JPEGS is broken - if (TextureIO.JPG.equals(FileUtil.getFileSuffix(file)) && - image.getType() == BufferedImage.TYPE_4BYTE_ABGR) { - BufferedImage tmpImage = new BufferedImage(image.getWidth(), image.getHeight(), - BufferedImage.TYPE_3BYTE_BGR); - Graphics g = tmpImage.getGraphics(); - g.drawImage(image, 0, 0, null); - g.dispose(); - image = tmpImage; - } - - return ImageIO.write(image, FileUtil.getFileSuffix(file), file); - } - - throw new IOException("ImageIO writer doesn't support this pixel format / type (only GL_RGB/A + bytes)"); - } -} |