diff options
author | graydon <graydon@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-11-20 22:44:01 +0000 |
---|---|---|
committer | graydon <graydon@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-11-20 22:44:01 +0000 |
commit | 4c70a6a79102493da07693e5fe7979a99b851aa9 (patch) | |
tree | 6393cb9c46b692380d17ed826cc98c7cbca141a1 /libjava/gnu/java/awt/peer/gtk/GdkClasspathFontPeer.java | |
parent | a2509aaa1da80c518f26b5fbdcfdb6e53a5d0def (diff) | |
download | ppe42-gcc-4c70a6a79102493da07693e5fe7979a99b851aa9.tar.gz ppe42-gcc-4c70a6a79102493da07693e5fe7979a99b851aa9.zip |
2003-11-17 Graydon Hoare <graydon@redhat.com>
* gnu/java/awt/peer/gtk/GdkClasspathFontPeerMetrics.java: New file.
* gnu/java/awt/peer/gtk/GdkClasspathFontPeer.java
(GdkFontLineMetrics): New inner class.
(getLineMetrics): Return new GdkFontLineMetrics.
(getFontMetrics): Return new GdkClasspathFontPeerMetrics.
(layoutGlyphVector): Create GdkGlyphVector.
* gnu/java/awt/peer/gtk/GdkGraphics2D.java (stateStack): New member.
(GdkGraphics2D): Initialize state via mathod calls.
(cairoSetMatrix, cairoShowGlyphs): Simplify native calls.
(cairoTranslate, cairoScale, cairoRotate): Remove.
(various methods): use setTransform for special transform cases.
(DrawState): New inner class.
(stateSave): New method.
(stateRestore): New method.
(various methods): use stateSave, stateRestore.
(getClipInDevSpace): New method.
(clip, clipRect, setClip, getClip, getClipBounds):
Follow spec more closely.
(getTransform): Return clone of transform.
(setStroke): Set linewidth to passed width / 2.0.
(setPaintMode): Set SrcOver rather than Xor.
(setColor): Set paint to passed color.
(drawRaster, drawImage, PainterThread, drawPixels): Take affine
transform from image to user space.
(drawRenderedImage, drawRenderableImage): Implement.
(getFontRenderContext, getFontMetrics, drawString, getFont):
Implement
(drawArc, drawOval, drawRoundRect, fillArc, fillOval, fillRoundRect):
Implement.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c:
Match changes to java side.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkClasspathFontPeer.c:
Release resources.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGlyphVector.c:
Don't use pango for metrics.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkClasspathFontPeerMetrics.c:
New file.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@73776 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/gnu/java/awt/peer/gtk/GdkClasspathFontPeer.java')
-rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GdkClasspathFontPeer.java | 64 |
1 files changed, 59 insertions, 5 deletions
diff --git a/libjava/gnu/java/awt/peer/gtk/GdkClasspathFontPeer.java b/libjava/gnu/java/awt/peer/gtk/GdkClasspathFontPeer.java index 7e317003d27..ca262890bb5 100644 --- a/libjava/gnu/java/awt/peer/gtk/GdkClasspathFontPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GdkClasspathFontPeer.java @@ -49,6 +49,7 @@ import java.util.Map; import java.util.StringTokenizer; import java.text.CharacterIterator; import java.text.AttributedCharacterIterator; +import java.text.StringCharacterIterator; import java.awt.font.TextAttribute; import gnu.classpath.Configuration; import gnu.java.awt.peer.ClasspathFontPeer; @@ -180,10 +181,56 @@ public class GdkClasspathFontPeer extends ClasspathFontPeer throw new UnsupportedOperationException (); } + protected class GdkFontLineMetrics extends LineMetrics + { + FontMetrics fm; + int nchars; + + public GdkFontLineMetrics (FontMetrics m, int n) + { + fm = m; + nchars = n; + } + + public float getAscent() + { + return (float) fm.getAscent (); + } + + public int getBaselineIndex() + { + return Font.ROMAN_BASELINE; + } + + public float[] getBaselineOffsets() + { + return new float[3]; + } + + public float getDescent() + { + return (float) fm.getDescent (); + } + + public float getHeight() + { + return (float) fm.getHeight (); + } + + public float getLeading() { return 0.f; } + public int getNumChars() { return nchars; } + public float getStrikethroughOffset() { return 0.f; } + public float getStrikethroughThickness() { return 0.f; } + public float getUnderlineOffset() { return 0.f; } + public float getUnderlineThickness() { return 0.f; } + + } + + public LineMetrics getLineMetrics (Font font, CharacterIterator ci, int begin, int limit, FontRenderContext rc) { - throw new UnsupportedOperationException (); + return new GdkFontLineMetrics (getFontMetrics (font), limit - begin); } public Rectangle2D getMaxCharBounds (Font font, FontRenderContext rc) @@ -214,25 +261,32 @@ public class GdkClasspathFontPeer extends ClasspathFontPeer public boolean hasUniformLineMetrics (Font font) { - throw new UnsupportedOperationException (); + return true; } public GlyphVector layoutGlyphVector (Font font, FontRenderContext frc, char[] chars, int start, int limit, int flags) { - throw new UnsupportedOperationException (); + int nchars = (limit - start) + 1; + char[] nc = new char[nchars]; + + for (int i = 0; i < nchars; ++i) + nc[i] = chars[start + i]; + + return createGlyphVector (font, frc, + new StringCharacterIterator (new String (nc))); } public LineMetrics getLineMetrics (Font font, String str, FontRenderContext frc) { - throw new UnsupportedOperationException(); + return new GdkFontLineMetrics (getFontMetrics (font), str.length ()); } public FontMetrics getFontMetrics (Font font) { - throw new UnsupportedOperationException(); + return new GdkClasspathFontPeerMetrics (font); } } |