From 57d891b40a8e827735b555d6c178ba7e1e409554 Mon Sep 17 00:00:00 2001 From: Andrew Haley Date: Wed, 5 Nov 2008 14:19:06 +0000 Subject: [PATCH] FreetypeGlyphVector.java (getKerning): Return result in a float[], not a Point2D. 2008-11-05 Andrew Haley * 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 | 8 ++++++++ .../awt/peer/gtk/FreetypeGlyphVector.java | 10 ++++++---- ...nu_java_awt_peer_gtk_FreetypeGlyphVector.h | 2 +- .../awt/peer/gtk/FreetypeGlyphVector.class | Bin 10110 -> 10101 bytes ...nu_java_awt_peer_gtk_FreetypeGlyphVector.c | 15 +++++++-------- 5 files changed, 22 insertions(+), 13 deletions(-) diff --git a/libjava/classpath/ChangeLog b/libjava/classpath/ChangeLog index 8f56d5b0618..78863261d67 100644 --- a/libjava/classpath/ChangeLog +++ b/libjava/classpath/ChangeLog @@ -1,3 +1,11 @@ +2008-11-05 Andrew Haley + + * 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 * tools/Makefile.am (UPDATE_TOOLS_ZIP, CREATE_TOOLS_ZIP): Exclude diff --git a/libjava/classpath/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java b/libjava/classpath/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java index 8d6d01ae317..af975f394ca 100644 --- a/libjava/classpath/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java +++ b/libjava/classpath/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java @@ -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; diff --git a/libjava/classpath/include/gnu_java_awt_peer_gtk_FreetypeGlyphVector.h b/libjava/classpath/include/gnu_java_awt_peer_gtk_FreetypeGlyphVector.h index ac3cda32fdb..cb424f42673 100644 --- a/libjava/classpath/include/gnu_java_awt_peer_gtk_FreetypeGlyphVector.h +++ b/libjava/classpath/include/gnu_java_awt_peer_gtk_FreetypeGlyphVector.h @@ -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); diff --git a/libjava/classpath/lib/gnu/java/awt/peer/gtk/FreetypeGlyphVector.class b/libjava/classpath/lib/gnu/java/awt/peer/gtk/FreetypeGlyphVector.class index e1b64636ebcc2e276e09591c903ed7f3ecf30d92..3ca96423bc2b2b4a4170c1a1484cb7be3e3838d2 100644 GIT binary patch delta 2223 zcmb7FdvH`&8UOw6-n-AcNj9)qZZ{HQ=wgTJpw8gvSgNOscfQy8eczc_{r>7B=Ug6lB9mF(*_P}W)7_Pty9GZp@iJaf+q^Z-GkDE~pR2>( zh~stqLVedeEBpq2?ZU4J|K_fbbv5i99@x^bs%yK6-{7~(=}YlVHQyI^pT+M@`~iPd zy}o(ve>QOrZxNp1p{{K^HVqDKCA^8wwv4=)WQP}f@Q#VU;Jk?R^$xG<8Xg+hMHq?B z)&h6jL?zDKa(^}PF8-!2_%dT_%ov?TCW~33?)RrgSjwp`P9cJM&${j#Zs_YB+}f~a zaA4bTW2?y^%LrWztS20aWUCjuIMs_0S|-c!W5OxCmFt#zMN@^z>DR@xwqS+*iyIkmg^UHa5uNt44%-`LkmPJ29y;DQHWv)Wx=H)6c#%sPDSS>4y3 z)*W+=r}2r}ppnB5R@NTHXwWeFtJ|+r`o?&B^~@YjcHbJ8;V0c~K|^>Q`bVF@QX%FA zjfTRYZ)`Yt7_(|+wmxXgDh&EYo3Mo}{TN=Vwsgnrps2EReRg--!v+i5zI^o|H8&jT zJ^dVBeF4AJZ~|x3hGm?@GD{r$UD|0mMbD^X^7lPsOAdc>z3582ET`ql;qBwtleJvO za3Srs+&Nr43{#}{TJG=Q)6W9X&>;U$A*zmtqa)2sVF{bi#+$K*bFhK)(8KxI%!T+2 z7vm`|!8iFK92L0}Y{5_2iZ{3n# zw%FSQubp?K&?vJ619%UA2X99$i}5}#iCcB_;~zpf&`jVmOz2pMhtY#l7#PP2{1aD% zx`M^{7yb<=gNWfjn1G8j5WrPgbAyC>rXs<+)k{?&A7!sVgBl&`QbkMWW_WoIO1Tw5 z4kF5X^Uf`XQ=F>4=A2N}^ZRVd5K6PTbYiObRtyJSLg@&i_!_0tO^-S_y=CM9(LW;k zM@9c0(ZBcq(qA^Izid*!O_73Ni6bg0Tp)R|z5PmUSdhA^?nf|qq%KEuwJeO#pVkEo zS%;qb$cl+OE>kb%^Ls9uM=qR6Nd8xDG{ygS(~5>pC< zWjN$Da;!Secvi@iW$5x5@@;UW`YgklU+Fu>8Ars?0^XLQM4W#_4((A%(PJ>V4*`A_ z)3_hg<(tjVVG$3Yg9@8u-p|kDUOtXd9>U}N0-oR@m8uNQEF7p4U(Dl2lVd-?TEUhB z)9@%RbEc%L9}8HA3ALlLr!=0ecc$uHsd{&+zQmalpVV8Gb23lD$FHJqDYFP zgcGRHG_@!em3Z!s)mpwAEc+%c`^55-v6v^GEt1DRi&L=`$tiGYQ!zygqFgIOr8W%- z%|g8v#$0VW77Bfv7Qsp_s+LxFGO4~)-5E&1tu?~0H6bKpm3Fi8##dQOZm_CNTGhnr z_IQi`HrcZb0WBkYma7x-P{{5((rP4wcHhyYdz9L_RO9glT&HSlQgayCpT7daM!&vM zDk&^eK98LrG}2N59JEgHWrO74PDHi4)c%@Kec_xS*xDta)Z}#T=f?{*j6(ufhuBTm zorEcscTt_Gxn-aaKCNH$+#`9|g0Qv?b=sihVF-=d4m4}S`RF2ros-d}uVG2F@srX4 dHE7&zmmMFFP6WGqafMvN55mK^T)d<3{1@V{vl##Y delta 2044 zcmaJ?du)?c6#xCce*L<>wsp{TZMU^u*V4|-(G8i~1ciaD@)D5goETv4g@}kn`2)p) z#wZez>kAWOl=yz3)1vVi6HSak5Cq@g8x&9!@eO#s4yG~DroH#vbI(1`-#I-z?dY_P zdu-OyL^^$z3cE`N4%$MRu@&2Fct@S#_E%#&-X-*&uFQFaC6S!qz*g*Z;k^^=b_ZJU zfeRnvBjt0%lb>L>4ZDcof_YcWtDSdcrndXiMVZ=jx|U_eWim_p<}b~3x$r4IQ{9e} zgJ0k)8@?pmIq9XDzJ;|@=Ph>OYwS@^I#T>beddVe?ZrM9_TzxccQzQ`yKoRcsL9SU z#7HsfgP*@QE`&yZU;1GoqH2VwN$&k?5F^mTx-QX5$DVtez5f-NwyJOGEkO3nLMca3VxthbrjZHhSNK6OW_u~y$&|y z0jyJff$B2LX#GL-S9$d;UYk<&4EnvgwYPG{Af;Xjcsq2V+w_a>L8}lAUcGj3)92RS zdKX4j$>}_=e)8a^&ov2CXcIO!Su5B0tyyg8TstwAqjq$zJ@ZV#do$BZB2&X>Nm3Z@dd1E_Zyq= zbCb<)%i`C&;1cQU{I=(C{Zjxm)XKWj%vmt9qK>$|BC)h)xti$9fDWslkdpm`n?G;T^(QT4}(_ zd_-wu9t?)z5%Y$WkaVc~N)yowb7qT0FN8a2Rwz0}uONXgy48Ww7Ed1>T!11jgqMpD z;bJwe%vYbElL9JPAe5=2l7$#9z7@bik5D?iC^$~(EaEWHR;nH>8{xT1G+r$luMv$a zMdP*qqp^5MWATtilOhF|Dp?+yT|BKSn5C~tm-@C_OayGH$uihkon`5oo|)}}j4XBt zE7Uo&-TLqQ>MY(^BNxWsQX(2wcbAvy(H9t3FO`?ANNkk&1|cyXg;J&)B%?P<6szIl zO_JF)DB;a0lix_L#Tecq5Lt(AIrs8bT*lkb&pU8C@5DW_o8=x0L)HyLdEan6?*{J9 z6<&h}>v)oY!U9hTR_BVWqZiGrW}aFQ>MV-4*BGf9TdF26Ra0oBHZh@ghfYb~3nw?A zkoTjU51@h%p`H(;fsf!cK8|sG0u%Wp(%gtydG*bk3Fm z{dL6{&k^aSqsZqm$?Or7YE+}55sA4iS|$C|A2oehAC21M?fLRCYw>z?a40gTp4ahlMRv=F9fVbxgKA#ZN0?C^|4o|b}JtAkJW3awr-HkD)5 z^q6U*C)Uz@rbtYJM{5;{bk6@#(*HnUD9%7`VwiCTauY+7!ChqLQhgO`=1didr`oY) zZEjizt-bnOX@ebde0z|YqIcs652v9L(t>Sp)gvVvn)T8kb ze^qbA$3?o~)OzIo0*U`(1hq?0tu2!HFGHQS1dZC|s%C`GJ%}NoiOa>q86%4Gu~mkH LopJe(>xca>K2Vv9 diff --git a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c index cea06f52d51..951b74558f2 100644 --- a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c +++ b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c @@ -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, "", "(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 -- 2.30.2