Initial revision

From-SVN: r102074
This commit is contained in:
Tom Tromey
2005-07-16 00:30:23 +00:00
parent 6f4434b39b
commit f911ba985a
4557 changed files with 1000262 additions and 0 deletions
@@ -0,0 +1,126 @@
/* FontRenderContext.java
Copyright (C) 2002, 2003 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package java.awt.font;
import java.awt.geom.AffineTransform;
/**
* @author Michael Koch
*/
public class FontRenderContext
{
private AffineTransform affineTransform;
private boolean isAntiAliased;
private boolean usesFractionalMetrics;
/**
* Construct a new <code>FontRenderContext</code>.
*/
protected FontRenderContext()
{
// Do nothing here.
}
/**
* Construct a new <code>FontRenderContext</code>.
*/
public FontRenderContext (AffineTransform tx, boolean isAntiAliased,
boolean usesFractionalMetrics)
{
if (tx != null
&& !tx.isIdentity ())
{
this.affineTransform = new AffineTransform (tx);
}
this.isAntiAliased = isAntiAliased;
this.usesFractionalMetrics = usesFractionalMetrics;
}
public boolean equals (Object obj)
{
if (! (obj instanceof FontRenderContext))
return false;
return equals ((FontRenderContext) obj);
}
public boolean equals (FontRenderContext rhs)
{
return (affineTransform.equals (rhs.getTransform ())
&& isAntiAliased == rhs.isAntiAliased ()
&& usesFractionalMetrics == rhs.usesFractionalMetrics ());
}
/**
* Retrieves the affine transform for scaling typographical points
* to raster pixels.
*
* @return a clone of the transform object.
*/
public AffineTransform getTransform ()
{
if (affineTransform == null)
return new AffineTransform ();
else
return new AffineTransform (affineTransform);
}
/**
* Returns the hash code of the font render context.
*/
public int hashCode ()
{
// FIXME: check what SUN does here.
return affineTransform == null ? 0 : affineTransform.hashCode ();
}
public boolean isAntiAliased ()
{
return isAntiAliased;
}
public boolean usesFractionalMetrics ()
{
return usesFractionalMetrics;
}
}
@@ -0,0 +1,77 @@
/* GlyphJustificationInfo.java
Copyright (C) 2003 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package java.awt.font;
/**
* @author Michael Koch
*/
public final class GlyphJustificationInfo
{
public static final int PRIORITY_KASHIDA = 0;
public static final int PRIORITY_WHITESPACE = 1;
public static final int PRIORITY_INTERCHAR = 2;
public static final int PRIORITY_NONE = 3;
public final float weight;
public final int growPriority;
public final boolean growAbsorb;
public final float growLeftLimit;
public final float growRightLimit;
public final int shrinkPriority;
public final boolean shrinkAbsorb;
public final float shrinkLeftLimit;
public final float shrinkRightLimit;
public GlyphJustificationInfo (float weight, boolean growAbsorb,
int growPriority, float growLeftLimit,
float growRightLimit, boolean shrinkAbsorb,
int shrinkPriority, float shrinkLeftLimit,
float shrinkRightLimit)
{
this.weight = weight;
this.growAbsorb = growAbsorb;
this.growPriority = growPriority;
this.growLeftLimit = growLeftLimit;
this.growRightLimit = growRightLimit;
this.shrinkAbsorb = shrinkAbsorb;
this.shrinkPriority = shrinkPriority;
this.shrinkLeftLimit = shrinkLeftLimit;
this.shrinkRightLimit = shrinkRightLimit;
}
}
@@ -0,0 +1,134 @@
/* GlyphMetrics.java
Copyright (C) 2003 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package java.awt.font;
import java.awt.geom.Rectangle2D;
/**
* @author Michael Koch
*/
public final class GlyphMetrics
{
public static final byte COMBINING = 2;
public static final byte COMPONENT = 3;
public static final byte LIGATURE = 1;
public static final byte STANDARD = 0;
public static final byte WHITESPACE = 4;
private boolean horizontal;
private float advanceX;
private float advanceY;
private Rectangle2D bounds;
private byte glyphType;
public GlyphMetrics (boolean horizontal, float advanceX, float advanceY,
Rectangle2D bounds, byte glyphType)
{
this.horizontal = horizontal;
this.advanceX = advanceX;
this.advanceY = advanceY;
this.bounds = bounds;
this.glyphType = glyphType;
}
public GlyphMetrics (float advance, Rectangle2D bounds, byte glyphType)
{
this (true, advance, advance, bounds, glyphType);
}
public float getAdvance ()
{
return horizontal ? advanceX : advanceY;
}
public float getAdvanceX ()
{
return advanceX;
}
public float getAdvanceY ()
{
return advanceY;
}
public Rectangle2D getBounds2D ()
{
return bounds;
}
public float getLSB ()
{
throw new Error ("not implemented");
}
public float getRSB ()
{
throw new Error ("not implemented");
}
public int getType ()
{
return glyphType;
}
public boolean isCombining ()
{
return (glyphType == COMBINING);
}
public boolean isComponent ()
{
return (glyphType == COMPONENT);
}
public boolean isLigature()
{
return (glyphType == LIGATURE);
}
public boolean isStandard()
{
return (glyphType == STANDARD);
}
public boolean isWhitespace()
{
return (glyphType == WHITESPACE);
}
}
@@ -0,0 +1,145 @@
/* GlyphVector.java
Copyright (C) 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package java.awt.font;
import java.awt.Font;
import java.awt.Rectangle;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
/**
* @author Michael Koch
*/
public abstract class GlyphVector implements Cloneable
{
public static final int FLAG_COMPLEX_GLYPHS = 8;
public static final int FLAG_HAS_POSITION_ADJUSTMENTS = 2;
public static final int FLAG_HAS_TRANSFORMS = 1;
public static final int FLAG_MASK = 15;
public static final int FLAG_RUN_RTL = 4;
/**
* Constructs a <code>GlyphVector</code> object.
*/
public GlyphVector ()
{
}
public abstract boolean equals (GlyphVector set);
public abstract Font getFont ();
public abstract FontRenderContext getFontRenderContext ();
public int getGlyphCharIndex (int glyphIndex)
{
throw new Error ("not implemented");
}
public int[] getGlyphCharIndices (int beginGlyphIndex, int numEntries,
int[] codeReturn)
{
throw new Error ("not implemented");
}
public abstract int getGlyphCode (int glyphIndex);
public abstract int[] getGlyphCodes (int beginGlyphIndex, int numEntries,
int[] codeReturn);
public abstract GlyphJustificationInfo getGlyphJustificationInfo
(int glyphIndex);
public abstract Shape getGlyphLogicalBounds (int glyphIndex);
public abstract GlyphMetrics getGlyphMetrics (int glyphIndex);
public abstract Shape getGlyphOutline (int glyphIndex);
public Shape getGlyphOutline (int glyphIndex, float x, float y)
{
throw new Error ("not implemented");
}
public Rectangle getGlyphPixelBounds (int index, FontRenderContext renderFRC,
float x, float y)
{
throw new Error ("not implemented");
}
public abstract Point2D getGlyphPosition (int glyphIndex);
public abstract float[] getGlyphPositions (int beginGlyphIndex,
int numEntries,
float[] positionReturn);
public abstract AffineTransform getGlyphTransform (int glyphIndex);
public abstract Shape getGlyphVisualBounds (int glyphIndex);
public int getLayoutFlags ()
{
throw new Error ("not implemented");
}
public abstract Rectangle2D getLogicalBounds ();
public abstract int getNumGlyphs ();
public abstract Shape getOutline ();
public abstract Shape getOutline (float x, float y);
public Rectangle getPixelBounds (FontRenderContext renderFRC,
float x, float y)
{
throw new Error ("not implemented");
}
public abstract Rectangle2D getVisualBounds ();
public abstract void performDefaultLayout ();
public abstract void setGlyphPosition (int glyphIndex, Point2D newPos);
public abstract void setGlyphTransform (int glyphIndex,
AffineTransform newTX);
}
@@ -0,0 +1,84 @@
/* GraphicAttribute.java
Copyright (C) 2003 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package java.awt.font;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
/**
* @author Michael Koch
*/
public abstract class GraphicAttribute
{
public static final int BOTTOM_ALIGNMENT = -2;
public static final int CENTER_BASELINE = 1;
public static final int HANGING_BASELINE = 2;
public static final int ROMAN_BASELINE = 0;
public static final int TOP_ALIGNMENT = -1;
private int alignment;
protected GraphicAttribute (int alignment)
{
this.alignment = alignment;
}
public abstract void draw (Graphics2D graphics, float x, float y);
public abstract float getAdvance ();
public final int getAlignment ()
{
return alignment;
}
public abstract float getAscent ();
public Rectangle2D getBounds ()
{
throw new Error ("not implemented");
}
public abstract float getDescent ();
public GlyphJustificationInfo getJustificationInfo ()
{
throw new Error ("not implemented");
}
}
@@ -0,0 +1,109 @@
/* ImageGraphicAttribute.java
Copyright (C) 2003 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package java.awt.font;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.geom.Rectangle2D;
/**
* @author Michael Koch
*/
public final class ImageGraphicAttribute extends GraphicAttribute
{
private Image image;
public ImageGraphicAttribute (Image image, int alignment)
{
super (alignment);
this.image = image;
}
public ImageGraphicAttribute (Image image, int alignment, float originX,
float originY)
{
super (alignment);
this.image = image;
throw new Error ("not implemented");
}
public void draw (Graphics2D graphics, float x, float y)
{
throw new Error ("not implemented");
}
public boolean equals (Object obj)
{
if (! (obj instanceof ImageGraphicAttribute))
return false;
return equals ((ImageGraphicAttribute) obj);
}
public boolean equals (ImageGraphicAttribute rhs)
{
throw new Error ("not implemented");
}
public float getAdvance ()
{
throw new Error ("not implemented");
}
public float getAscent ()
{
throw new Error ("not implemented");
}
public Rectangle2D getBounds ()
{
throw new Error ("not implemented");
}
public float getDescent ()
{
throw new Error ("not implemented");
}
public int hashCode ()
{
throw new Error ("not implemented");
}
}
@@ -0,0 +1,113 @@
/* LineBreakMeasurer.java
Copyright (C) 2003 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package java.awt.font;
import java.text.AttributedCharacterIterator;
import java.text.BreakIterator;
public final class LineBreakMeasurer
{
private AttributedCharacterIterator ci;
private FontRenderContext frc;
private BreakIterator bi;
/**
* Constructs a <code>LineBreakMeasurer</code> object.
*/
public LineBreakMeasurer (AttributedCharacterIterator text,
FontRenderContext frc)
{
this (text, null, frc);
}
/**
* Constructs a <code>LineBreakMeasurer</code> object.
*/
public LineBreakMeasurer (AttributedCharacterIterator text,
BreakIterator breakIter, FontRenderContext frc)
{
this.ci = text;
this.bi = breakIter;
this.frc = frc;
}
public void deleteChar (AttributedCharacterIterator newParagraph,
int deletePos)
{
throw new Error ("not implemented");
}
public int getPosition ()
{
return ci.getIndex ();
}
public void insertChar (AttributedCharacterIterator newParagraph,
int insertPos)
{
throw new Error ("not implemented");
}
public TextLayout nextLayout (float wrappingWidth)
{
throw new Error ("not implemented");
}
public TextLayout nextLayout (float wrappingWidth, int offsetLimit,
boolean requireNextWord)
{
throw new Error ("not implemented");
}
public int nextOffset (float wrappingWidth)
{
throw new Error ("not implemented");
}
public int nextOffset (float wrappingWidth, int offsetLimit,
boolean requireNextWord)
{
throw new Error ("not implemented");
}
public void setPosition (int newPosition)
{
ci.setIndex (newPosition);
}
}
@@ -0,0 +1,67 @@
/* LineMetrics.java -- Information about about a line display characteristics
Copyright (C) 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package java.awt.font;
/**
* @author Michael Koch
*/
public abstract class LineMetrics
{
public abstract float getAscent();
public abstract int getBaselineIndex();
public abstract float[] getBaselineOffsets();
public abstract float getDescent();
public abstract float getHeight();
public abstract float getLeading();
public abstract int getNumChars();
public abstract float getStrikethroughOffset();
public abstract float getStrikethroughThickness();
public abstract float getUnderlineOffset();
public abstract float getUnderlineThickness();
}
@@ -0,0 +1,61 @@
/* MultipleMaster.java
Copyright (C) 2003 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package java.awt.font;
import java.awt.Font;
/**
* @author Michael Koch
*/
public interface MultipleMaster
{
Font deriveMMFont (float[] axes);
Font deriveMMFont (float[] glyphWidths, float avgStemWidth,
float typicalCapHeight, float typicalXHeight,
float italicAngle);
float[] getDesignAxisDefaults();
String[] getDesignAxisNames();
float[] getDesignAxisRanges();
int getNumDesignAxes();
}
@@ -0,0 +1,137 @@
/* NumericShaper.java
Copyright (C) 2003 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package java.awt.font;
import java.io.Serializable;
/**
* @author Michael Koch
* @since 1.4
*/
public final class NumericShaper implements Serializable
{
private static final long serialVersionUID = -8022764705923730308L;
public static final int ALL_RANGES = 524287;
public static final int ARABIC = 2;
public static final int BENGALI = 16;
public static final int DEVANAGARI = 8;
public static final int EASTERN_ARABIC = 4;
public static final int ETHIOPIC = 65536;
public static final int EUROPEAN = 1;
public static final int GUJARATI = 64;
public static final int GURMUKHI = 32;
public static final int KANNADA = 1024;
public static final int KHMER = 131072;
public static final int LAO = 8192;
public static final int MALAYALAM = 2048;
public static final int MONGOLIAN = 262144;
public static final int MYANMAR = 32768;
public static final int ORIYA = 128;
public static final int TAMIL = 256;
public static final int TELUGU = 512;
public static final int THAI = 4096;
public static final int TIBETAN = 16384;
private int ranges;
private int context;
private NumericShaper (int ranges, int context)
{
this.ranges = ranges;
this.context = context;
}
public boolean equals (Object obj)
{
if (! (obj instanceof NumericShaper))
return false;
NumericShaper tmp = (NumericShaper) obj;
return (ranges == tmp.ranges
&& context == tmp.context);
}
public static NumericShaper getContextualShaper (int ranges)
{
throw new Error ("not implemented");
}
public static NumericShaper getContextualShaper (int ranges,
int defaultContext)
{
throw new Error ("not implemented");
}
public int getRanges ()
{
return ranges;
}
public static NumericShaper getShaper (int singleRange)
{
throw new Error ("not implemented");
}
public int hashCode ()
{
throw new Error ("not implemented");
}
public boolean isContextual ()
{
throw new Error ("not implemented");
}
public void shape (char[] text, int start, int count)
{
shape (text, start, count, context);
}
public void shape (char[] text, int start, int count, int context)
{
throw new Error ("not implemented");
}
public String toString ()
{
throw new Error ("not implemented");
}
}
@@ -0,0 +1,111 @@
/* OpenType.java
Copyright (C) 2003 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package java.awt.font;
/**
* @author Michael Koch
*/
public interface OpenType
{
int TAG_ACNT = 1633906292;
int TAG_AVAR = 1635148146;
int TAG_BASE = 1111577413;
int TAG_BDAT = 1650745716;
int TAG_BLOC = 1651273571;
int TAG_BSLN = 1651731566;
int TAG_CFF = 1128678944;
int TAG_CMAP = 1668112752;
int TAG_CVAR = 1668702578;
int TAG_CVT = 1668707360;
int TAG_DSIG = 1146308935;
int TAG_EBDT = 1161970772;
int TAG_EBLC = 1161972803;
int TAG_EBSC = 1161974595;
int TAG_FDSC = 1717859171;
int TAG_FEAT = 1717920116;
int TAG_FMTX = 1718449272;
int TAG_FPGM = 1718642541;
int TAG_FVAR = 1719034226;
int TAG_GASP = 1734439792;
int TAG_GDEF = 1195656518;
int TAG_GLYF = 1735162214;
int TAG_GPOS = 1196445523;
int TAG_GSUB = 1196643650;
int TAG_GVAR = 1735811442;
int TAG_HDMX = 1751412088;
int TAG_HEAD = 1751474532;
int TAG_HHEA = 1751672161;
int TAG_HMTX = 1752003704;
int TAG_JSTF = 1246975046;
int TAG_JUST = 1786082164;
int TAG_KERN = 1801810542;
int TAG_LCAR = 1818452338;
int TAG_LOCA = 1819239265;
int TAG_LTSH = 1280594760;
int TAG_MAXP = 1835104368;
int TAG_MMFX = 1296909912;
int TAG_MMSD = 1296913220;
int TAG_MORT = 1836020340;
int TAG_NAME = 1851878757;
int TAG_OPBD = 1836020340;
int TAG_OS2 = 1330851634;
int TAG_PCLT = 1346587732;
int TAG_POST = 1886352244;
int TAG_PREP = 1886545264;
int TAG_PROP = 1886547824;
int TAG_TRAK = 1953653099;
int TAG_TYP1 = 1954115633;
int TAG_VDMX = 1447316824;
int TAG_VHEA = 1986553185;
int TAG_VMTX = 1986884728;
byte[] getFontTable (int sfntTag);
byte[] getFontTable (int sfntTag, int offset, int count);
byte[] getFontTable (String strSfntTag);
byte[] getFontTable (String strSfntTag, int offset, int count);
int getFontTableSize (int sfntTag);
int getFontTableSize (String strSfntTag);
int getVersion ();
}
@@ -0,0 +1,105 @@
/* ShapeGraphicAttribute.java
Copyright (C) 2003 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package java.awt.font;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.Rectangle2D;
public final class ShapeGraphicAttribute extends GraphicAttribute
{
public static final boolean FILL = false;
public static final boolean STROKE = true;
private Shape shape;
private boolean stroke;
public ShapeGraphicAttribute (Shape shape, int alignment, boolean stroke)
{
super (alignment);
this.shape = shape;
this.stroke = stroke;
}
public void draw (Graphics2D graphics, float x, float y)
{
throw new Error ("not implemented");
}
public boolean equals (Object obj)
{
if (! (obj instanceof ShapeGraphicAttribute))
return false;
return equals ((ShapeGraphicAttribute) obj);
}
public boolean equals (ShapeGraphicAttribute rhs)
{
return (shape.equals (rhs.shape)
&& getAlignment () == rhs.getAlignment ()
&& stroke == rhs.stroke);
}
public float getAdvance ()
{
throw new Error ("not implemented");
}
public float getAscent ()
{
throw new Error ("not implemented");
}
public Rectangle2D getBounds ()
{
return shape.getBounds2D ();
}
public float getDescent ()
{
throw new Error ("not implemented");
}
public int hashCode ()
{
// FIXME: Check what SUN does here
return shape.hashCode ();
}
}
@@ -0,0 +1,309 @@
/* TextAttribute.java --
Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package java.awt.font;
import java.io.InvalidObjectException;
import java.text.AttributedCharacterIterator;
/**
* Attributes (and associated values) that can be used to define an
* {@link java.text.AttributedString}.
*/
public final class TextAttribute extends AttributedCharacterIterator.Attribute
{
private static final long serialVersionUID = 7744112784117861702L;
/** A key for the background paint attribute. */
public static final TextAttribute BACKGROUND =
new TextAttribute("background");
/** A key for the BIDI_EMBEDDING attribute. */
public static final TextAttribute BIDI_EMBEDDING =
new TextAttribute("bidi_embedding");
/** A key for the CHAR_REPLACEMENT attribute. */
public static final TextAttribute CHAR_REPLACEMENT =
new TextAttribute("char_replacement");
/** A key for the FAMILY attribute. */
public static final TextAttribute FAMILY = new TextAttribute("family");
/** A key for the font attribute. */
public static final TextAttribute FONT = new TextAttribute("font");
/** A key for the foreground paint attribute. */
public static final TextAttribute FOREGROUND =
new TextAttribute("foreground");
/** A key for the INPUT_METHOD_HIGHLIGHT attribute. */
public static final TextAttribute INPUT_METHOD_HIGHLIGHT =
new TextAttribute("input method highlight");
/** A key for the INPUT_METHOD_UNDERLINE attribute. */
public static final TextAttribute INPUT_METHOD_UNDERLINE =
new TextAttribute("input method underline");
/** A key for the text justification attribute. */
public static final TextAttribute JUSTIFICATION =
new TextAttribute("justification");
/**
* A value that can be used with the {@link #JUSTIFICATION} attribute to
* indicate full justification of the text.
*/
public static final Float JUSTIFICATION_FULL = new Float(1.0);
/**
* A value that can be used with the {@link #JUSTIFICATION} attribute to
* indicate no justification of the text.
*/
public static final Float JUSTIFICATION_NONE = new Float(0.0);
/** A key for the NUMERIC_SHAPING attribute. */
public static final TextAttribute NUMERIC_SHAPING =
new TextAttribute("numeric_shaping");
/** A key for the POSTURE attribute. */
public static final TextAttribute POSTURE = new TextAttribute("posture");
/** A value that can be used with the {@link #POSTURE} attribute. */
public static final Float POSTURE_OBLIQUE = new Float(0.2);
/** A value that can be used with the {@link #POSTURE} attribute. */
public static final Float POSTURE_REGULAR = new Float(0.0);
/** A key for the RUN_DIRECTION attribute. */
public static final TextAttribute RUN_DIRECTION =
new TextAttribute("run_direction");
/** A value that can be used with the {@link #RUN_DIRECTION} attribute. */
public static final Boolean RUN_DIRECTION_LTR = Boolean.FALSE;
/** A value that can be used with the {@link #RUN_DIRECTION} attribute. */
public static final Boolean RUN_DIRECTION_RTL = Boolean.TRUE;
/** A key for the text size attribute. */
public static final TextAttribute SIZE = new TextAttribute("size");
/** A key for the STRIKETHROUGH attribute. */
public static final TextAttribute STRIKETHROUGH =
new TextAttribute("strikethrough");
/** A value that can be used with the {@link #STRIKETHROUGH} attribute. */
public static final Boolean STRIKETHROUGH_ON = Boolean.TRUE;
/** A key for the SUPERSCRIPT attribute. */
public static final TextAttribute SUPERSCRIPT =
new TextAttribute("superscript");
/** A value that can be used with the {@link #SUPERSCRIPT} attribute. */
public static final Integer SUPERSCRIPT_SUB = new Integer(-1);
/** A value that can be used with the {@link #SUPERSCRIPT} attribute. */
public static final Integer SUPERSCRIPT_SUPER = new Integer(1);
/** A key for the SWAP_COLORS attribute. */
public static final TextAttribute SWAP_COLORS =
new TextAttribute("swap_colors");
/** A value that can be used with the {@link #SWAP_COLORS} attribute. */
public static final Boolean SWAP_COLORS_ON = Boolean.TRUE;
/** A key for the TRANFORM attribute. */
public static final TextAttribute TRANSFORM = new TextAttribute("transform");
/** A key for the UNDERLINE attribute. */
public static final TextAttribute UNDERLINE = new TextAttribute("underline");
/** A value that can be used with the {@link #UNDERLINE} attribute. */
public static final Integer UNDERLINE_LOW_DASHED = new Integer(5);
/** A value that can be used with the {@link #UNDERLINE} attribute. */
public static final Integer UNDERLINE_LOW_DOTTED = new Integer(3);
/** A value that can be used with the {@link #UNDERLINE} attribute. */
public static final Integer UNDERLINE_LOW_GRAY = new Integer(4);
/** A value that can be used with the {@link #UNDERLINE} attribute. */
public static final Integer UNDERLINE_LOW_ONE_PIXEL = new Integer(1);
/** A value that can be used with the {@link #UNDERLINE} attribute. */
public static final Integer UNDERLINE_LOW_TWO_PIXEL = new Integer(2);
/** A value that can be used with the {@link #UNDERLINE} attribute. */
public static final Integer UNDERLINE_ON = new Integer(0);
/** A key for the WEIGHT attribute. */
public static final TextAttribute WEIGHT = new TextAttribute("weight");
/** A value that can be used with the {@link #WEIGHT} attribute. */
public static final Float WEIGHT_BOLD = new Float(2.0);
/** A value that can be used with the {@link #WEIGHT} attribute. */
public static final Float WEIGHT_DEMIBOLD = new Float(1.75);
/** A value that can be used with the {@link #WEIGHT} attribute. */
public static final Float WEIGHT_DEMILIGHT = new Float(0.875);
/** A value that can be used with the {@link #WEIGHT} attribute. */
public static final Float WEIGHT_EXTRA_LIGHT = new Float(0.5);
/** A value that can be used with the {@link #WEIGHT} attribute. */
public static final Float WEIGHT_EXTRABOLD = new Float(2.5);
/** A value that can be used with the {@link #WEIGHT} attribute. */
public static final Float WEIGHT_HEAVY = new Float(2.25);
/** A value that can be used with the {@link #WEIGHT} attribute. */
public static final Float WEIGHT_LIGHT = new Float(0.75);
/** A value that can be used with the {@link #WEIGHT} attribute. */
public static final Float WEIGHT_MEDIUM = new Float(1.5);
/** A value that can be used with the {@link #WEIGHT} attribute. */
public static final Float WEIGHT_REGULAR = new Float(1.0);
/** A value that can be used with the {@link #WEIGHT} attribute. */
public static final Float WEIGHT_SEMIBOLD = new Float(1.25);
/** A value that can be used with the {@link #WEIGHT} attribute. */
public static final Float WEIGHT_ULTRABOLD = new Float(2.75);
/** A key for the WIDTH attribute. */
public static final TextAttribute WIDTH = new TextAttribute("width");
/** A value that can be used with the {@link #WIDTH} attribute. */
public static final Float WIDTH_CONDENSED = new Float(0.75);
/** A value that can be used with the {@link #WIDTH} attribute. */
public static final Float WIDTH_EXTENDED = new Float(1.5);
/** A value that can be used with the {@link #WIDTH} attribute. */
public static final Float WIDTH_REGULAR = new Float(1.0);
/** A value that can be used with the {@link #WIDTH} attribute. */
public static final Float WIDTH_SEMI_CONDENSED = new Float(0.875);
/** A value that can be used with the {@link #WIDTH} attribute. */
public static final Float WIDTH_SEMI_EXTENDED = new Float(1.25);
/**
* Creates a new attribute.
*
* @param name the name.
*/
protected TextAttribute(String name)
{
super(name);
}
/**
* After deserialization, this method ensures that only one instance of
* each attribute is used.
*
* @return The (single) attribute instance.
*
* @throws InvalidObjectException if the attribute is not recognised.
*/
protected Object readResolve()
throws InvalidObjectException
{
if (this.getName().equals("background"))
return BACKGROUND;
if (this.getName().equals("bidi_embedding"))
return BIDI_EMBEDDING;
if (this.getName().equals("char_replacement"))
return CHAR_REPLACEMENT;
if (this.getName().equals("family"))
return FAMILY;
if (this.getName().equals("font"))
return FONT;
if (this.getName().equals("foreground"))
return FOREGROUND;
if (this.getName().equals("input method highlight"))
return INPUT_METHOD_HIGHLIGHT;
if (this.getName().equals("input method underline"))
return INPUT_METHOD_UNDERLINE;
if (this.getName().equals("justification"))
return JUSTIFICATION;
if (this.getName().equals("numeric_shaping"))
return NUMERIC_SHAPING;
if (this.getName().equals("posture"))
return POSTURE;
if (this.getName().equals("run_direction"))
return RUN_DIRECTION;
if (this.getName().equals("size"))
return SIZE;
if (this.getName().equals("strikethrough"))
return STRIKETHROUGH;
if (this.getName().equals("superscript"))
return SUPERSCRIPT;
if (this.getName().equals("swap_colors"))
return SWAP_COLORS;
if (this.getName().equals("transform"))
return TRANSFORM;
if (this.getName().equals("underline"))
return UNDERLINE;
if (this.getName().equals("weight"))
return WEIGHT;
if (this.getName().equals("width"))
return WIDTH;
throw new InvalidObjectException("Can't resolve Attribute: " + getName());
}
}
@@ -0,0 +1,125 @@
/* TextHitInfo.java --
Copyright (C) 2002, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package java.awt.font;
/**
* @author John Leuner (jewel@debian.org)
*/
public final class TextHitInfo
{
private int charIndex;
private boolean leadingEdge;
TextHitInfo (int charIndex, boolean leadingEdge)
{
this.charIndex = charIndex;
this.leadingEdge = leadingEdge;
}
public int getCharIndex()
{
return charIndex;
}
public boolean isLeadingEdge()
{
return leadingEdge;
}
public int getInsertionIndex()
{
return (leadingEdge ? charIndex : charIndex + 1);
}
public int hashCode()
{
return charIndex;
}
public boolean equals(Object obj)
{
if(obj instanceof TextHitInfo)
return this.equals((TextHitInfo) obj);
return false;
}
public boolean equals(TextHitInfo hitInfo)
{
return (charIndex == hitInfo.getCharIndex ())
&& (leadingEdge == hitInfo.isLeadingEdge ());
}
public static TextHitInfo leading(int charIndex)
{
return new TextHitInfo (charIndex, true);
}
public static TextHitInfo trailing(int charIndex)
{
return new TextHitInfo (charIndex, false);
}
public static TextHitInfo beforeOffset(int offset)
{
return new TextHitInfo (offset, false);
}
public static TextHitInfo afterOffset(int offset)
{
return new TextHitInfo (offset, true);
}
public TextHitInfo getOtherHit()
{
return (leadingEdge ? trailing (charIndex - 1) : leading (charIndex + 1));
}
public TextHitInfo getOffsetHit(int offset)
{
return new TextHitInfo (charIndex + offset, leadingEdge);
}
public String toString()
{
return "TextHitInfo["
+ charIndex
+ (leadingEdge ? "L" : "T" )
+ "]";
}
}
@@ -0,0 +1,332 @@
/* TextLayout.java --
Copyright (C) 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package java.awt.font;
import gnu.java.awt.ClasspathToolkit;
import gnu.java.awt.peer.ClasspathTextLayoutPeer;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.Toolkit;
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
import java.text.AttributedCharacterIterator;
import java.text.AttributedString;
import java.util.Map;
/**
* @author Michael Koch
*/
public final class TextLayout implements Cloneable
{
public static final CaretPolicy DEFAULT_CARET_POLICY = new CaretPolicy ();
ClasspathTextLayoutPeer peer;
public static class CaretPolicy
{
public CaretPolicy ()
{
// Do nothing here.
}
public TextHitInfo getStrongCaret (TextHitInfo hit1, TextHitInfo hit2,
TextLayout layout)
{
return layout.peer.getStrongCaret(hit1, hit2);
}
}
public TextLayout (AttributedCharacterIterator text, FontRenderContext frc)
{
AttributedString as = new AttributedString (text);
ClasspathToolkit tk = (ClasspathToolkit)(Toolkit.getDefaultToolkit ());
peer = tk.getClasspathTextLayoutPeer(as, frc);
}
public TextLayout (String string, Font font, FontRenderContext frc)
{
AttributedString as = new AttributedString (string);
as.addAttribute (TextAttribute.FONT, font);
ClasspathToolkit tk = (ClasspathToolkit)(Toolkit.getDefaultToolkit ());
peer = tk.getClasspathTextLayoutPeer(as, frc);
}
public TextLayout (String string, Map attributes, FontRenderContext frc)
{
AttributedString as = new AttributedString (string, attributes);
ClasspathToolkit tk = (ClasspathToolkit)(Toolkit.getDefaultToolkit ());
peer = tk.getClasspathTextLayoutPeer(as, frc);
}
protected Object clone ()
{
try
{
TextLayout tl = (TextLayout) super.clone ();
tl.peer = (ClasspathTextLayoutPeer) this.peer.clone();
return tl;
}
catch (CloneNotSupportedException e)
{
// This should never occur
throw new InternalError ();
}
}
public void draw (Graphics2D g2, float x, float y)
{
peer.draw(g2, x, y);
}
public boolean equals (Object obj)
{
if (! (obj instanceof TextLayout))
return false;
return equals ((TextLayout) obj);
}
public boolean equals (TextLayout tl)
{
return this.peer.equals(tl.peer);
}
public float getAdvance ()
{
return peer.getAdvance();
}
public float getAscent ()
{
return peer.getAscent();
}
public byte getBaseline ()
{
return peer.getBaseline();
}
public float[] getBaselineOffsets ()
{
return peer.getBaselineOffsets();
}
public Shape getBlackBoxBounds (int firstEndpoint, int secondEndpoint)
{
return peer.getBlackBoxBounds(firstEndpoint, secondEndpoint);
}
public Rectangle2D getBounds()
{
return peer.getBounds();
}
public float[] getCaretInfo (TextHitInfo hit)
{
return getCaretInfo(hit, getBounds());
}
public float[] getCaretInfo (TextHitInfo hit, Rectangle2D bounds)
{
return peer.getCaretInfo(hit, bounds);
}
public Shape getCaretShape (TextHitInfo hit)
{
return getCaretShape(hit, getBounds());
}
public Shape getCaretShape (TextHitInfo hit, Rectangle2D bounds)
{
return peer.getCaretShape(hit, bounds);
}
public Shape[] getCaretShapes (int offset)
{
return getCaretShapes(offset, getBounds());
}
public Shape[] getCaretShapes (int offset, Rectangle2D bounds)
{
return getCaretShapes(offset, getBounds(), DEFAULT_CARET_POLICY);
}
public Shape[] getCaretShapes (int offset, Rectangle2D bounds,
TextLayout.CaretPolicy policy)
{
return peer.getCaretShapes(offset, bounds, policy);
}
public int getCharacterCount ()
{
return peer.getCharacterCount();
}
public byte getCharacterLevel (int index)
{
return peer.getCharacterLevel(index);
}
public float getDescent ()
{
return peer.getDescent();
}
public TextLayout getJustifiedLayout (float justificationWidth)
{
return peer.getJustifiedLayout(justificationWidth);
}
public float getLeading ()
{
return peer.getLeading();
}
public Shape getLogicalHighlightShape (int firstEndpoint, int secondEndpoint)
{
return getLogicalHighlightShape (firstEndpoint, secondEndpoint, getBounds());
}
public Shape getLogicalHighlightShape (int firstEndpoint, int secondEndpoint,
Rectangle2D bounds)
{
return peer.getLogicalHighlightShape(firstEndpoint, secondEndpoint, bounds);
}
public int[] getLogicalRangesForVisualSelection (TextHitInfo firstEndpoint,
TextHitInfo secondEndpoint)
{
return peer.getLogicalRangesForVisualSelection(firstEndpoint, secondEndpoint);
}
public TextHitInfo getNextLeftHit (int offset)
{
return getNextLeftHit(offset, DEFAULT_CARET_POLICY);
}
public TextHitInfo getNextLeftHit (int offset, TextLayout.CaretPolicy policy)
{
return peer.getNextLeftHit(offset, policy);
}
public TextHitInfo getNextLeftHit (TextHitInfo hit)
{
return getNextLeftHit(hit.getCharIndex());
}
public TextHitInfo getNextRightHit (int offset)
{
return getNextRightHit(offset, DEFAULT_CARET_POLICY);
}
public TextHitInfo getNextRightHit (int offset, TextLayout.CaretPolicy policy)
{
return peer.getNextRightHit(offset, policy);
}
public TextHitInfo getNextRightHit (TextHitInfo hit)
{
return getNextRightHit(hit.getCharIndex());
}
public Shape getOutline (AffineTransform tx)
{
return peer.getOutline(tx);
}
public float getVisibleAdvance ()
{
return peer.getVisibleAdvance();
}
public Shape getVisualHighlightShape (TextHitInfo firstEndpoint,
TextHitInfo secondEndpoint)
{
return getVisualHighlightShape(firstEndpoint, secondEndpoint, getBounds());
}
public Shape getVisualHighlightShape (TextHitInfo firstEndpoint,
TextHitInfo secondEndpoint,
Rectangle2D bounds)
{
return peer.getVisualHighlightShape(firstEndpoint, secondEndpoint, bounds);
}
public TextHitInfo getVisualOtherHit (TextHitInfo hit)
{
return peer.getVisualOtherHit(hit);
}
protected void handleJustify (float justificationWidth)
{
peer.handleJustify(justificationWidth);
}
public int hashCode ()
{
return peer.hashCode();
}
public TextHitInfo hitTestChar (float x, float y)
{
return hitTestChar(x, y, getBounds());
}
public TextHitInfo hitTestChar (float x, float y, Rectangle2D bounds)
{
return peer.hitTestChar(x, y, bounds);
}
public boolean isLeftToRight ()
{
return peer.isLeftToRight();
}
public boolean isVertical ()
{
return peer.isVertical();
}
public String toString ()
{
return peer.toString();
}
}
@@ -0,0 +1,97 @@
/* TextMeasurer.java
Copyright (C) 2003 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package java.awt.font;
import java.text.AttributedCharacterIterator;
/**
* @author Michael Koch
* @since 1.3
*/
public final class TextMeasurer implements Cloneable
{
private AttributedCharacterIterator ci;
private FontRenderContext frc;
public TextMeasurer (AttributedCharacterIterator text, FontRenderContext frc)
{
this.ci = text;
this.frc = frc;
}
protected Object clone ()
{
try
{
return super.clone ();
}
catch (CloneNotSupportedException e)
{
// This may never occur
throw new InternalError ();
}
}
public void deleteChar (AttributedCharacterIterator newParagraph,
int deletePos)
{
throw new Error ("not implemented");
}
public float getAdvanceBetween (int start, int limit)
{
throw new Error ("not implemented");
}
public TextLayout getLayout (int start, int limit)
{
throw new Error ("not implemented");
}
public int getLineBreakIndex (int start, float maxAdvance)
{
throw new Error ("not implemented");
}
public void insertChar (AttributedCharacterIterator newParagraph,
int insertPos)
{
throw new Error ("not implemented");
}
}
@@ -0,0 +1,100 @@
/* TransformAttribute.java --
Copyright (C) 2003, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package java.awt.font;
import java.awt.geom.AffineTransform;
import java.io.Serializable;
/**
* This class provides a mechanism for using an {@link AffineTransform} as
* an <i>immutable</i> attribute (for example, in the
* {@link java.text.AttributedString} class). Any transform passed to
* this class is copied before being stored, and any transform handed out
* by this class is a copy of the stored transform. In this way, it is
* not possible to modify the stored transform.
*
* @author Michael Koch
*/
public final class TransformAttribute implements Serializable
{
private static final long serialVersionUID = 3356247357827709530L;
private AffineTransform affineTransform;
/**
* Creates a new attribute that contains a copy of the given transform.
*
* @param transform the transform (<code>null</code> not permitted).
*
* @throws IllegalArgumentException if <code>transform</code> is
* <code>null</code>.
*/
public TransformAttribute (AffineTransform transform)
{
if (transform == null)
{
throw new IllegalArgumentException("Null 'transform' not permitted.");
}
this.affineTransform = new AffineTransform (transform);
}
/**
* Returns a copy of the transform contained by this attribute.
*
* @return A copy of the transform.
*/
public AffineTransform getTransform ()
{
return (AffineTransform) affineTransform.clone();
}
/**
* Returns <code>true</code> if the transform contained by this attribute is
* an identity transform, and <code>false</code> otherwise.
*
* @return <code>true</code> if the transform contained by this attribute is
* an identity transform, and <code>false</code> otherwise.
*
* @since 1.4
*/
public boolean isIdentity ()
{
return (affineTransform == null ? false : affineTransform.isIdentity ());
}
}
@@ -0,0 +1,46 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!-- package.html - describes classes in java.awt.font package.
Copyright (C) 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. -->
<html>
<head><title>GNU Classpath - java.awt.font</title></head>
<body>
<p>Representations of different kind of characters and fonts.</p>
</body>
</html>