diff options
| author | Matthias Klose <doko@gcc.gnu.org> | 2008-06-28 13:29:13 +0000 |
|---|---|---|
| committer | Matthias Klose <doko@gcc.gnu.org> | 2008-06-28 13:29:13 +0000 |
| commit | e0441a5bfb29083a532307ba2b1fd6d6d13944ba (patch) | |
| tree | 602cd7aa7c947386134690d8e0f6b53abcdeacb9 /libjava/classpath/gnu/java/awt/font/GNUGlyphVector.java | |
| parent | 15c151967dd1cde61b79d26374f608f63a29d411 (diff) | |
Import GNU Classpath (classpath-0_97_2-release).
libjava/
2008-06-28 Matthias Klose <doko@ubuntu.com>
Import GNU Classpath (classpath-0_97_2-release).
* Regenerate class and header files.
* Regenerate auto* files.
* gcj/javaprims.h: Define jobjectRefType.
* jni.cc (_Jv_JNI_GetObjectRefType): New (stub only).
(_Jv_JNIFunctions): Initialize GetObjectRefType.
* gnu/classpath/jdwp/VMVirtualMachine.java,
java/security/VMSecureRandom.java: Merge from classpath.
* HACKING: Fix typo.
* ChangeLog-2007: New file.
* configure.ac: Set JAVAC, pass --disable-regen-headers to classpath.
libjava/classpath/
2008-06-28 Matthias Klose <doko@ubuntu.com>
* m4/ac_prog_javac.m4: Disable check for JAVAC, when
not configured with --enable-java-maintainer-mode.
* aclocal.m4, configure: Regenerate.
* native/jni/gstreamer-peer/Makefile.am: Do not link with
libclasspathnative.
* native/jni/gstreamer-peer/Makefile.in: Regenerate.
* tools/Makefile.am, lib/Makefile.am: Use JAVAC for setting
JCOMPILER, drop flags not understood by gcj.
From-SVN: r137223
Diffstat (limited to 'libjava/classpath/gnu/java/awt/font/GNUGlyphVector.java')
| -rw-r--r-- | libjava/classpath/gnu/java/awt/font/GNUGlyphVector.java | 40 |
1 files changed, 31 insertions, 9 deletions
diff --git a/libjava/classpath/gnu/java/awt/font/GNUGlyphVector.java b/libjava/classpath/gnu/java/awt/font/GNUGlyphVector.java index 2f73dce77b0..22f331e15d1 100644 --- a/libjava/classpath/gnu/java/awt/font/GNUGlyphVector.java +++ b/libjava/classpath/gnu/java/awt/font/GNUGlyphVector.java @@ -37,6 +37,8 @@ exception statement from your version. */ package gnu.java.awt.font; +import gnu.java.awt.java2d.ShapeWrapper; + import java.awt.Font; import java.awt.font.FontRenderContext; import java.awt.font.GlyphMetrics; @@ -82,6 +84,10 @@ public class GNUGlyphVector private AffineTransform[] transforms; private int layoutFlags; + /** + * The cached non-transformed outline of this glyph vector. + */ + private Shape cleanOutline; /** * Constructs a new GNUGlyphVector. @@ -257,7 +263,6 @@ public class GNUGlyphVector */ public Shape getOutline() { - validate(); return getOutline(0.0f, 0.0f); } @@ -273,16 +278,33 @@ public class GNUGlyphVector { validate(); - GeneralPath outline = new GeneralPath(); - int len = glyphs.length; - for (int i = 0; i < len; i++) + Shape outline; + if (cleanOutline == null) { - GeneralPath p = new GeneralPath(getGlyphOutline(i)); - outline.append(p, false); + GeneralPath path = new GeneralPath(); + int len = glyphs.length; + for (int i = 0; i < len; i++) + { + GeneralPath p = new GeneralPath(getGlyphOutline(i)); + path.append(p, false); + } + // Protect the cached instance from beeing modified by application + // code. + cleanOutline = new ShapeWrapper(path); + outline = cleanOutline; + } + else + { + outline = cleanOutline; + } + if (x != 0 || y != 0) + { + GeneralPath path = new GeneralPath(outline); + AffineTransform t = new AffineTransform(); + t.translate(x, y); + path.transform(t); + outline = path; } - AffineTransform t = new AffineTransform(); - t.translate(x, y); - outline.transform(t); return outline; } |
