commit-classpath
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[commit-cp] classpath/native/jni/gtk-peer gnu_java_awt_peer...


From: Sven de Marothy
Subject: [commit-cp] classpath/native/jni/gtk-peer gnu_java_awt_peer...
Date: Wed, 07 Jun 2006 13:58:33 +0000

CVSROOT:        /sources/classpath
Module name:    classpath
Changes by:     Sven de Marothy <smarothy>      06/06/07 13:58:33

Modified files:
        native/jni/gtk-peer: gnu_java_awt_peer_gtk_GdkFontPeer.c 

Log message:
        2006-06-05  Sven de Marothy  <address@hidden>
        
                * gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
                * include/gnu_java_awt_peer_gtk_FreetypeGlyphVector.h
                * 
native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c
                New files.
        
                * gnu/java/awt/peer/gtk/GdkFontPeer.java
                (getGlyphVector): Removed native method.
                (createGlyphVector, getStringBounds): Use new GV class.
        
                * include/Makefile.am
                * native/jni/gtk-peer/Makefile.am
                Add new files.
        
                * include/gnu_java_awt_peer_gtk_GdkFontPeer.h
                * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c
                (getGlyphVector): Removed native method.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c?cvsroot=classpath&r1=1.18&r2=1.19

Patches:
Index: gnu_java_awt_peer_gtk_GdkFontPeer.c
===================================================================
RCS file: 
/sources/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- gnu_java_awt_peer_gtk_GdkFontPeer.c 29 May 2006 16:14:59 -0000      1.18
+++ gnu_java_awt_peer_gtk_GdkFontPeer.c 7 Jun 2006 13:58:33 -0000       1.19
@@ -59,8 +59,6 @@
   java_awt_font_HANGING_BASELINE = 2
 };
 
-static jmethodID glyphVector_ctor;
-static jclass glyphVector_class;
 static PangoAttrList *attrs = NULL;
 
 JNIEXPORT void JNICALL
@@ -68,16 +66,6 @@
   (JNIEnv *env, jclass clazz)
 {
   NSA_FONT_INIT (env, clazz);
-
-  glyphVector_class = (*env)->FindClass 
-    (env, "gnu/java/awt/peer/gtk/GdkGlyphVector");
-
-  glyphVector_class = (*env)->NewGlobalRef
-    (env, glyphVector_class);
-
-  glyphVector_ctor = (*env)->GetMethodID 
-    (env, glyphVector_class, "<init>", 
-     "([D[ILjava/awt/Font;Ljava/awt/font/FontRenderContext;)V");
 }
 
 JNIEXPORT void JNICALL
@@ -140,123 +128,6 @@
   gdk_threads_leave();
 }
 
-JNIEXPORT jobject JNICALL
-Java_gnu_java_awt_peer_gtk_GdkFontPeer_getGlyphVector
-  (JNIEnv *env, jobject self, 
-   jstring chars,
-   jobject font, 
-   jobject fontRenderContext)
-{
-  struct peerfont *pfont = NULL;
-  GList *items = NULL;
-  GList *i = NULL;
-  gchar *str = NULL;
-  int len = 0;
-  int j = 0;
-  double *native_extents = NULL;
-  int *native_codes = NULL;
-  jintArray java_codes = NULL;
-  jdoubleArray java_extents = NULL;
-
-  gdk_threads_enter ();
-
-  pfont = (struct peerfont *)NSA_GET_FONT_PTR (env, self);
-  g_assert (pfont != NULL);
-
-  len = (*cp_gtk_gdk_env())->GetStringUTFLength (env, chars);  
-  str = (gchar *)(*env)->GetStringUTFChars (env, chars, NULL);
-  g_assert (str != NULL);
-
-  if (attrs == NULL)
-    attrs = pango_attr_list_new ();
-
-  if (len > 0 && str[len-1] == '\0')
-    len--;
-  
-  items = pango_itemize (pfont->ctx, str, 0, len, attrs, NULL);
-
-  i = g_list_first (items);
-
-  if (i == NULL)       
-    {
-      java_extents = (*env)->NewDoubleArray (env, 0);
-      java_codes = (*env)->NewIntArray (env, 0);
-    }
-  else
-    { 
-      PangoGlyphString *glyphs;
-      PangoItem *item = (PangoItem *)i->data;
-
-      pango_context_set_font_description (pfont->ctx, pfont->desc);
-      pango_context_set_language (pfont->ctx, gtk_get_default_language());
-      pango_context_load_font (pfont->ctx, pfont->desc);
-
-      glyphs = pango_glyph_string_new ();
-      g_assert (glyphs != NULL);
-
-      pango_shape (str + item->offset, item->length, 
-                  &(item->analysis), glyphs);
-
-      if (glyphs->num_glyphs > 0)
-       {
-         int x = 0;
-         double scale = ((double) PANGO_SCALE);
-
-         java_extents = (*env)->NewDoubleArray (env, glyphs->num_glyphs * 
NUM_GLYPH_METRICS);
-         java_codes = (*env)->NewIntArray (env, glyphs->num_glyphs);
-
-         native_extents = (*env)->GetDoubleArrayElements (env, java_extents, 
NULL);
-         native_codes = (*env)->GetIntArrayElements (env, java_codes, NULL);
-
-         for (j = 0; j < glyphs->num_glyphs; ++j)
-           {
-             PangoRectangle ink;
-             PangoRectangle logical;
-             PangoGlyphGeometry *geom = &glyphs->glyphs[j].geometry;
-
-             pango_font_get_glyph_extents (pfont->font, 
-                                           glyphs->glyphs[j].glyph,
-                                           &ink, &logical);
-
-             native_codes[j] = glyphs->glyphs[j].glyph;
-
-             native_extents[ GLYPH_LOG_X(j)      ] = (logical.x)      / scale;
-             native_extents[ GLYPH_LOG_Y(j)      ] = (- logical.y)    / scale;
-             native_extents[ GLYPH_LOG_WIDTH(j)  ] = (logical.width)  / scale;
-             native_extents[ GLYPH_LOG_HEIGHT(j) ] = (logical.height) / scale;
-
-             native_extents[ GLYPH_INK_X(j)      ] = (ink.x)       / scale;
-             native_extents[ GLYPH_INK_Y(j)      ] = (- ink.y)     / scale;
-             native_extents[ GLYPH_INK_WIDTH(j)  ] = (ink.width)   / scale;
-             native_extents[ GLYPH_INK_HEIGHT(j) ] = (ink.height)  / scale;
-
-             native_extents[ GLYPH_POS_X(j)      ] = (x + geom->x_offset)  / 
scale;
-             native_extents[ GLYPH_POS_Y(j)      ] = (  - geom->y_offset)  / 
scale;
-
-             x += geom->width;
-           }
-         (*env)->ReleaseDoubleArrayElements (env, java_extents, 
native_extents, 0);
-         (*env)->ReleaseIntArrayElements (env, java_codes, native_codes, 0);
-       }
-
-      pango_glyph_string_free (glyphs);
-    }
-
-  (*env)->ReleaseStringUTFChars (env, chars, str);
-
-  for (i = g_list_first (items); i != NULL; i = g_list_next (i))
-    pango_item_free(i->data);
-
-  g_list_free (items);
-
-  gdk_threads_leave ();
-
-  return (*env)->NewObject (env, 
-                           glyphVector_class, 
-                           glyphVector_ctor, 
-                           java_extents, java_codes,
-                           font, fontRenderContext);
-}
 
 JNIEXPORT void JNICALL
 Java_gnu_java_awt_peer_gtk_GdkFontPeer_getFontMetrics




reply via email to

[Prev in Thread] Current Thread [Next in Thread]