65 |
glyphVector_class = (*env)->FindClass |
glyphVector_class = (*env)->FindClass |
66 |
(env, "gnu/java/awt/peer/gtk/GdkGlyphVector"); |
(env, "gnu/java/awt/peer/gtk/GdkGlyphVector"); |
67 |
|
|
68 |
|
glyphVector_class = (*env)->NewGlobalRef |
69 |
|
(env, glyphVector_class); |
70 |
|
|
71 |
glyphVector_ctor = (*env)->GetMethodID |
glyphVector_ctor = (*env)->GetMethodID |
72 |
(env, glyphVector_class, "<init>", |
(env, glyphVector_class, "<init>", |
73 |
"([D[ILjava/awt/Font;Ljava/awt/font/FontRenderContext;)V"); |
"([D[ILjava/awt/Font;Ljava/awt/font/FontRenderContext;)V"); |
291 |
const char *cstr = NULL; |
const char *cstr = NULL; |
292 |
jdouble *native_metrics = NULL; |
jdouble *native_metrics = NULL; |
293 |
PangoRectangle log; |
PangoRectangle log; |
294 |
|
PangoRectangle log2; |
295 |
|
int line_count = 0; |
296 |
|
int i = 0; |
297 |
|
int width = 0; |
298 |
|
|
299 |
gdk_threads_enter(); |
gdk_threads_enter(); |
300 |
|
|
303 |
|
|
304 |
cstr = (*env)->GetStringUTFChars (env, str, NULL); |
cstr = (*env)->GetStringUTFChars (env, str, NULL); |
305 |
g_assert(cstr != NULL); |
g_assert(cstr != NULL); |
306 |
|
|
307 |
pango_layout_set_text (pfont->layout, cstr, -1); |
pango_layout_set_text (pfont->layout, cstr, -1); |
308 |
pango_layout_get_extents (pfont->layout, NULL, &log); |
pango_layout_get_extents (pfont->layout, NULL, &log); |
309 |
|
|
310 |
|
line_count = pango_layout_get_line_count (pfont->layout); |
311 |
|
for (i = 0; i < line_count; i++) |
312 |
|
{ |
313 |
|
pango_layout_line_get_extents (pango_layout_get_line (pfont->layout, i), |
314 |
|
NULL, &log2); |
315 |
|
width += log2.width; |
316 |
|
} |
317 |
|
|
318 |
(*env)->ReleaseStringUTFChars (env, str, cstr); |
(*env)->ReleaseStringUTFChars (env, str, cstr); |
319 |
pango_layout_set_text (pfont->layout, "", -1); |
pango_layout_set_text (pfont->layout, "", -1); |
327 |
native_metrics[TEXT_METRICS_Y_BEARING] |
native_metrics[TEXT_METRICS_Y_BEARING] |
328 |
= PANGO_PIXELS( ((double)log.y) ); |
= PANGO_PIXELS( ((double)log.y) ); |
329 |
|
|
|
native_metrics[TEXT_METRICS_WIDTH] |
|
|
= PANGO_PIXELS( ((double)log.width) ); |
|
|
|
|
330 |
native_metrics[TEXT_METRICS_HEIGHT] |
native_metrics[TEXT_METRICS_HEIGHT] |
331 |
= PANGO_PIXELS( ((double)log.height) ); |
= PANGO_PIXELS( ((double)log.height) ); |
332 |
|
|
333 |
|
native_metrics[TEXT_METRICS_WIDTH] |
334 |
|
= PANGO_PIXELS( ((double)width) ); |
335 |
|
|
336 |
native_metrics[TEXT_METRICS_X_ADVANCE] |
native_metrics[TEXT_METRICS_X_ADVANCE] |
337 |
= PANGO_PIXELS( ((double) (log.x + log.width)) ); |
= PANGO_PIXELS( ((double) (log.x + log.width)) ); |
338 |
|
|