CVSROOT: /sources/classpath Module name: classpath Changes by: Sven de Marothy <smarothy> 06/06/11 03:09:03
Modified files: . : ChangeLog gnu/java/awt/peer/gtk: FreetypeGlyphVector.java java/awt/font : TextLayout.java Log message: 2006-06-11 Sven de Marothy <[EMAIL PROTECTED]> * java/awt/font/TextLayout.java (getLogicalHighlightShape): Add check. * gnu/java/awt/peer/gtk/FreetypeGlyphVector.java (getLogicalBounds, getGlyphPositions): Cache bounds, positions. CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/classpath/ChangeLog?cvsroot=classpath&r1=1.7764&r2=1.7765 http://cvs.savannah.gnu.org/viewcvs/classpath/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java?cvsroot=classpath&r1=1.4&r2=1.5 http://cvs.savannah.gnu.org/viewcvs/classpath/java/awt/font/TextLayout.java?cvsroot=classpath&r1=1.9&r2=1.10 Patches: Index: ChangeLog =================================================================== RCS file: /sources/classpath/classpath/ChangeLog,v retrieving revision 1.7764 retrieving revision 1.7765 diff -u -b -r1.7764 -r1.7765 --- ChangeLog 11 Jun 2006 00:05:10 -0000 1.7764 +++ ChangeLog 11 Jun 2006 03:09:02 -0000 1.7765 @@ -1,3 +1,10 @@ +2006-06-11 Sven de Marothy <[EMAIL PROTECTED]> + + * java/awt/font/TextLayout.java + (getLogicalHighlightShape): Add check. + * gnu/java/awt/peer/gtk/FreetypeGlyphVector.java + (getLogicalBounds, getGlyphPositions): Cache bounds, positions. + 2006-06-11 Raif S. Naffah <[EMAIL PROTECTED]> * gnu/javax/security/auth/login/ConfigFileParser.java (validateClassName): Index: gnu/java/awt/peer/gtk/FreetypeGlyphVector.java =================================================================== RCS file: /sources/classpath/classpath/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -b -r1.4 -r1.5 --- gnu/java/awt/peer/gtk/FreetypeGlyphVector.java 9 Jun 2006 20:23:55 -0000 1.4 +++ gnu/java/awt/peer/gtk/FreetypeGlyphVector.java 11 Jun 2006 03:09:03 -0000 1.5 @@ -56,6 +56,9 @@ private Font font; private GdkFontPeer peer; // ATTN: Accessed from native code. + private Rectangle2D logicalBounds; + + private float[] glyphPositions; /** * The string represented by this GlyphVector. */ @@ -203,6 +206,9 @@ */ public void performDefaultLayout() { + logicalBounds = null; // invalidate caches. + glyphPositions = null; + whiteSpace = new boolean[ nGlyphs ]; glyphTransforms = new AffineTransform[ nGlyphs ]; double x = 0; @@ -303,6 +309,9 @@ public float[] getGlyphPositions(int beginGlyphIndex, int numEntries, float[] positionReturn) { + if( glyphPositions != null ) + return glyphPositions; + float[] rval; if( positionReturn == null ) @@ -317,6 +326,7 @@ rval[i * 2 + 1] = (float)p.getY(); } + glyphPositions = rval; return rval; } @@ -344,6 +354,8 @@ { if( nGlyphs == 0 ) return new Rectangle2D.Double(0, 0, 0, 0); + if( logicalBounds != null ) + return logicalBounds; Rectangle2D rect = (Rectangle2D)getGlyphLogicalBounds( 0 ); for( int i = 1; i < nGlyphs; i++ ) @@ -354,6 +366,7 @@ rect = rect.createUnion( r2 ); } + logicalBounds = rect; return rect; } @@ -413,6 +426,8 @@ // FIXME: Scaling, etc.? glyphTransforms[ glyphIndex ].setToTranslation( newPos.getX(), newPos.getY() ); + logicalBounds = null; + glyphPositions = null; } /** @@ -421,5 +436,7 @@ public void setGlyphTransform(int glyphIndex, AffineTransform newTX) { glyphTransforms[ glyphIndex ].setTransform( newTX ); + logicalBounds = null; + glyphPositions = null; } } Index: java/awt/font/TextLayout.java =================================================================== RCS file: /sources/classpath/classpath/java/awt/font/TextLayout.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -b -r1.9 -r1.10 --- java/awt/font/TextLayout.java 9 Jun 2006 20:48:02 -0000 1.9 +++ java/awt/font/TextLayout.java 11 Jun 2006 03:09:03 -0000 1.10 @@ -391,6 +391,7 @@ double advance = 0; // go to first run + if( i > 0 ) while( runIndices[i + 1][1] < firstEndpoint ) { advance += runs[i].getLogicalBounds().getWidth();