]> gcc.gnu.org Git - gcc.git/commitdiff
FreetypeGlyphVector.java (getKerning): Return result in a float[], not a Point2D.
authorAndrew Haley <aph@redhat.com>
Wed, 5 Nov 2008 14:19:06 +0000 (14:19 +0000)
committerAndrew Haley <aph@gcc.gnu.org>
Wed, 5 Nov 2008 14:19:06 +0000 (14:19 +0000)
2008-11-05  Andrew Haley  <aph@redhat.com>

        * gnu/java/awt/peer/gtk/FreetypeGlyphVector.java (getKerning):
        Return result in a float[], not a Point2D.
        (performDefaultLayout): Call getKerning with a float[].
        * native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c
        (getKerning): Return result in a float[], not a Point2D.

From-SVN: r141610

libjava/classpath/ChangeLog
libjava/classpath/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
libjava/classpath/include/gnu_java_awt_peer_gtk_FreetypeGlyphVector.h
libjava/classpath/lib/gnu/java/awt/peer/gtk/FreetypeGlyphVector.class
libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c

index 8f56d5b0618915b08accf5d2ac6f30d0d31224eb..78863261d67b43001135425b69197083ab4490a5 100644 (file)
@@ -1,3 +1,11 @@
+2008-11-05  Andrew Haley  <aph@redhat.com>
+
+       * gnu/java/awt/peer/gtk/FreetypeGlyphVector.java (getKerning):
+       Return result in a float[], not a Point2D.
+       (performDefaultLayout): Call getKerning with a float[].
+       * native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c
+       (getKerning): Return result in a float[], not a Point2D.
+       
 2008-11-05  Andrew Haley  <aph@redhat.com>
 
        * tools/Makefile.am (UPDATE_TOOLS_ZIP, CREATE_TOOLS_ZIP): Exclude
index 8d6d01ae3170a9e9787445cb79678287426d8721..af975f394caee708a4227c93bf27cc18b4eb0c35 100644 (file)
@@ -247,7 +247,8 @@ public class FreetypeGlyphVector extends GlyphVector
   /**
    * Returns the kerning of a glyph pair
    */
-  private native Point2D getKerning(int leftGlyph, int rightGlyph, long font);
+  private native void getKerning(int leftGlyph, int rightGlyph, long font, 
+                                float[] p);
 
   private native double[] getMetricsNative(int glyphCode, long font);
 
@@ -301,6 +302,7 @@ public class FreetypeGlyphVector extends GlyphVector
     GlyphMetrics gm = null;
     float x = 0;
     float y = 0;
+    float[] p = {0.0f, 0.0f};
     for(int i = 0; i < nGlyphs; i++)
       {
         gm = getGlyphMetrics( i );
@@ -314,9 +316,9 @@ public class FreetypeGlyphVector extends GlyphVector
         // using the same font
         if (i != nGlyphs-1 && fontSet[i] == fontSet[i+1])
           {
-            Point2D p = getKerning(glyphCodes[i], glyphCodes[i + 1], fontSet[i]);
-            x += p.getX();
-            y += p.getY();
+            getKerning(glyphCodes[i], glyphCodes[i + 1], fontSet[i], p);
+            x += p[0];
+            y += p[1];
           }
       }
     glyphPositions[nGlyphs * 2] = x;
index ac3cda32fdbb430b5958ebbfc06b49ce4eb540d2..cb424f4267309743cc7515ef60e2b2b68244a066 100644 (file)
@@ -13,7 +13,7 @@ extern "C"
 JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_dispose (JNIEnv *env, jobject, jlongArray);
 JNIEXPORT jlong JNICALL Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getNativeFontPointer (JNIEnv *env, jobject, jint);
 JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getGlyphs (JNIEnv *env, jobject, jintArray, jintArray, jlongArray);
-JNIEXPORT jobject JNICALL Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getKerning (JNIEnv *env, jobject, jint, jint, jlong);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getKerning (JNIEnv *env, jobject, jint, jint, jlong, jfloatArray);
 JNIEXPORT jdoubleArray JNICALL Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getMetricsNative (JNIEnv *env, jobject, jint, jlong);
 JNIEXPORT jobject JNICALL Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getGlyphOutlineNative (JNIEnv *env, jobject, jint, jlong);
 
index e1b64636ebcc2e276e09591c903ed7f3ecf30d92..3ca96423bc2b2b4a4170c1a1484cb7be3e3838d2 100644 (file)
Binary files a/libjava/classpath/lib/gnu/java/awt/peer/gtk/FreetypeGlyphVector.class and b/libjava/classpath/lib/gnu/java/awt/peer/gtk/FreetypeGlyphVector.class differ
index cea06f52d512527e7c04c6774f7aeaa1baaf4b11..951b74558f22578770a7928268339ecf856432d7 100644 (file)
@@ -169,9 +169,10 @@ Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getGlyphs
   (*env)->ReleaseLongArrayElements (env, fonts, fontArray, 0);
 }
 
-JNIEXPORT jobject JNICALL 
+JNIEXPORT void JNICALL 
 Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getKerning
-(JNIEnv *env, jobject obj __attribute__((unused)), jint rightGlyph, jint leftGlyph, jlong fnt)
+  (JNIEnv *env, jobject obj __attribute__((unused)), jint rightGlyph,
+   jint leftGlyph, jlong fnt, jfloatArray p)
 {
   FT_Face ft_face;
   FT_Vector kern;
@@ -187,12 +188,10 @@ Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getKerning
 
   pango_fc_font_unlock_face( font );
 
-  values[0].d = (jdouble)kern.x/64.0;
-  values[1].d = (jdouble)kern.y/64.0;
-
-  cls = (*env)->FindClass (env, "java/awt/geom/Point2D$Double");
-  method = (*env)->GetMethodID (env, cls, "<init>", "(DD)V");
-  return (*env)->NewObjectA(env, cls, method, values);
+  jfloat *pelements = (*env)->GetPrimitiveArrayCritical(env, p, NULL);
+  pelements[0] = (jfloat)kern.x/64.0;
+  pelements[1] = (jfloat)kern.y/64.0;
+  (*env)->ReleasePrimitiveArrayCritical (env, p, pelements, 0);
 }
 
 JNIEXPORT jdoubleArray JNICALL 
This page took 0.068142 seconds and 5 git commands to generate.