Implements the FRC hashcode and tweaks the AffineTransform one
to be Sun-compatible. (Unnecessary, but since the old version
claimed to be, we might as well make it so.)

2006-08-02  Sven de Marothy  <[EMAIL PROTECTED]>

        * java/awt/geom/AffineTransform.java:
        (hashCode): Tweak impl. 
        * java/awt/font/FontRenderContext.java:
        (hashCode): Implement. 


Index: java/awt/font/FontRenderContext.java
===================================================================
RCS file: /sources/classpath/classpath/java/awt/font/FontRenderContext.java,v
retrieving revision 1.4
diff -U3 -r1.4 FontRenderContext.java
--- java/awt/font/FontRenderContext.java	21 Jun 2006 13:50:58 -0000	1.4
+++ java/awt/font/FontRenderContext.java	2 Aug 2006 17:13:40 -0000
@@ -117,8 +117,12 @@
    */
   public int hashCode ()
   {
-    // FIXME: check what SUN does here.
-    return affineTransform == null ? 0 : affineTransform.hashCode ();
+    int code = ( isAntiAliased ? 1 : 0 ) + ( usesFractionalMetrics ? 2 : 0 );
+
+    if( affineTransform != null && !affineTransform.isIdentity() )
+      code ^= affineTransform.hashCode();
+
+    return code;
   }
 
   public boolean isAntiAliased ()
Index: java/awt/geom/AffineTransform.java
===================================================================
RCS file: /sources/classpath/classpath/java/awt/geom/AffineTransform.java,v
retrieving revision 1.10
diff -U3 -r1.10 AffineTransform.java
--- java/awt/geom/AffineTransform.java	11 Jun 2006 08:29:57 -0000	1.10
+++ java/awt/geom/AffineTransform.java	2 Aug 2006 17:13:40 -0000
@@ -1401,10 +1401,10 @@
    * documented, but appears to be the same as:
    * <pre>
    * long l = Double.doubleToLongBits(getScaleX());
-   * l = l * 31 + Double.doubleToLongBits(getShearY());
    * l = l * 31 + Double.doubleToLongBits(getShearX());
-   * l = l * 31 + Double.doubleToLongBits(getScaleY());
    * l = l * 31 + Double.doubleToLongBits(getTranslateX());
+   * l = l * 31 + Double.doubleToLongBits(getShearY());
+   * l = l * 31 + Double.doubleToLongBits(getScaleY());
    * l = l * 31 + Double.doubleToLongBits(getTranslateY());
    * return (int) ((l >> 32) ^ l);
    * </pre>
@@ -1413,12 +1413,12 @@
    */
   public int hashCode()
   {
-    long l = Double.doubleToLongBits(m00);
-    l = l * 31 + Double.doubleToLongBits(m10);
-    l = l * 31 + Double.doubleToLongBits(m01);
-    l = l * 31 + Double.doubleToLongBits(m11);
-    l = l * 31 + Double.doubleToLongBits(m02);
-    l = l * 31 + Double.doubleToLongBits(m12);
+    long l = Double.doubleToLongBits(m00); 
+    l = l * 31 + Double.doubleToLongBits(m01); 
+    l = l * 31 + Double.doubleToLongBits(m02); 
+    l = l * 31 + Double.doubleToLongBits(m10); 
+    l = l * 31 + Double.doubleToLongBits(m11); 
+    l = l * 31 + Double.doubleToLongBits(m12); 
     return (int) ((l >> 32) ^ l);
   }
 

Reply via email to