mirror of git://gcc.gnu.org/git/gcc.git
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
This commit is contained in:
parent
f158188388
commit
57d891b40a
|
@ -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>
|
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
|
||||||
|
|
|
@ -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
|
||||||
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
|
||||||
// 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"
|
||||||
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);
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -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
|
||||||
|
|
||||||
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
|
||||||
|
|
Loading…
Reference in New Issue