Commit 57d891b4 by Andrew Haley Committed by Andrew Haley

FreetypeGlyphVector.java (getKerning): Return result in a float[], not a Point2D.

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
parent f1581883
2008-11-05 Andrew Haley <aph@redhat.com> 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 * tools/Makefile.am (UPDATE_TOOLS_ZIP, CREATE_TOOLS_ZIP): Exclude
.svn directories. .svn directories.
......
...@@ -247,7 +247,8 @@ public class FreetypeGlyphVector extends GlyphVector ...@@ -247,7 +247,8 @@ public class FreetypeGlyphVector extends GlyphVector
/** /**
* Returns the kerning of a glyph pair * 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); private native double[] getMetricsNative(int glyphCode, long font);
...@@ -301,6 +302,7 @@ public class FreetypeGlyphVector extends GlyphVector ...@@ -301,6 +302,7 @@ public class FreetypeGlyphVector extends GlyphVector
GlyphMetrics gm = null; GlyphMetrics gm = null;
float x = 0; float x = 0;
float y = 0; float y = 0;
float[] p = {0.0f, 0.0f};
for(int i = 0; i < nGlyphs; i++) for(int i = 0; i < nGlyphs; i++)
{ {
gm = getGlyphMetrics( i ); gm = getGlyphMetrics( i );
...@@ -314,9 +316,9 @@ public class FreetypeGlyphVector extends GlyphVector ...@@ -314,9 +316,9 @@ public class FreetypeGlyphVector extends GlyphVector
// using the same font // using the same font
if (i != nGlyphs-1 && fontSet[i] == fontSet[i+1]) if (i != nGlyphs-1 && fontSet[i] == fontSet[i+1])
{ {
Point2D p = getKerning(glyphCodes[i], glyphCodes[i + 1], fontSet[i]); getKerning(glyphCodes[i], glyphCodes[i + 1], fontSet[i], p);
x += p.getX(); x += p[0];
y += p.getY(); y += p[1];
} }
} }
glyphPositions[nGlyphs * 2] = x; glyphPositions[nGlyphs * 2] = x;
......
...@@ -13,7 +13,7 @@ extern "C" ...@@ -13,7 +13,7 @@ extern "C"
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_dispose (JNIEnv *env, jobject, jlongArray); 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 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 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 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); JNIEXPORT jobject JNICALL Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getGlyphOutlineNative (JNIEnv *env, jobject, jint, jlong);
......
...@@ -169,9 +169,10 @@ Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getGlyphs ...@@ -169,9 +169,10 @@ Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getGlyphs
(*env)->ReleaseLongArrayElements (env, fonts, fontArray, 0); (*env)->ReleaseLongArrayElements (env, fonts, fontArray, 0);
} }
JNIEXPORT jobject JNICALL JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getKerning 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_Face ft_face;
FT_Vector kern; FT_Vector kern;
...@@ -187,12 +188,10 @@ Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getKerning ...@@ -187,12 +188,10 @@ Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getKerning
pango_fc_font_unlock_face( font ); pango_fc_font_unlock_face( font );
values[0].d = (jdouble)kern.x/64.0; jfloat *pelements = (*env)->GetPrimitiveArrayCritical(env, p, NULL);
values[1].d = (jdouble)kern.y/64.0; pelements[0] = (jfloat)kern.x/64.0;
pelements[1] = (jfloat)kern.y/64.0;
cls = (*env)->FindClass (env, "java/awt/geom/Point2D$Double"); (*env)->ReleasePrimitiveArrayCritical (env, p, pelements, 0);
method = (*env)->GetMethodID (env, cls, "<init>", "(DD)V");
return (*env)->NewObjectA(env, cls, method, values);
} }
JNIEXPORT jdoubleArray JNICALL JNIEXPORT jdoubleArray JNICALL
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment