175 |
return (int) XRenderQueryExtension (GDK_DISPLAY (), &ev, &err); |
return (int) XRenderQueryExtension (GDK_DISPLAY (), &ev, &err); |
176 |
} |
} |
177 |
|
|
|
|
|
178 |
static void |
static void |
179 |
init_graphics2d_as_pixbuf (struct graphics2d *gr) |
init_graphics2d_as_pixbuf (struct graphics2d *gr) |
180 |
{ |
{ |
195 |
g_assert (gdk_pixbuf_get_bits_per_sample (gr->drawbuf) == bits_per_sample); |
g_assert (gdk_pixbuf_get_bits_per_sample (gr->drawbuf) == bits_per_sample); |
196 |
g_assert (gdk_pixbuf_get_n_channels (gr->drawbuf) == total_channels); |
g_assert (gdk_pixbuf_get_n_channels (gr->drawbuf) == total_channels); |
197 |
|
|
198 |
gr->surface = cairo_surface_create_for_image (gdk_pixbuf_get_pixels (gr->drawbuf), |
gr->surface = cairo_surface_create_for_image ((char *) gdk_pixbuf_get_pixels (gr->drawbuf), |
199 |
CAIRO_FORMAT_ARGB32, |
CAIRO_FORMAT_ARGB32, |
200 |
gdk_pixbuf_get_width (gr->drawbuf), |
gdk_pixbuf_get_width (gr->drawbuf), |
201 |
gdk_pixbuf_get_height (gr->drawbuf), |
gdk_pixbuf_get_height (gr->drawbuf), |
202 |
gdk_pixbuf_get_rowstride (gr->drawbuf)); |
gdk_pixbuf_get_rowstride (gr->drawbuf)); |
203 |
g_assert (gr->surface != NULL); |
g_assert (gr->surface != NULL); |
204 |
g_assert (gr->cr != NULL); |
g_assert (gr->cr != NULL); |
205 |
|
gr->mode = MODE_DRAWABLE_NO_RENDER; |
206 |
cairo_set_target_surface (gr->cr, gr->surface); |
cairo_set_target_surface (gr->cr, gr->surface); |
207 |
} |
} |
208 |
|
|
232 |
DefaultColormap (dpy, DefaultScreen (dpy))); |
DefaultColormap (dpy, DefaultScreen (dpy))); |
233 |
g_assert (gr->surface != NULL); |
g_assert (gr->surface != NULL); |
234 |
g_assert (gr->cr != NULL); |
g_assert (gr->cr != NULL); |
235 |
|
gr->mode = MODE_DRAWABLE_WITH_RENDER; |
236 |
cairo_set_target_surface (gr->cr, gr->surface); |
cairo_set_target_surface (gr->cr, gr->surface); |
237 |
} |
} |
238 |
|
|
239 |
static void |
static void |
240 |
begin_drawing_operation (struct graphics2d * gr) |
begin_drawing_operation (JNIEnv *env, struct graphics2d * gr) |
241 |
{ |
{ |
242 |
g_assert(cairo_status (gr->cr) == CAIRO_STATUS_SUCCESS); |
g_assert(cairo_status (gr->cr) == CAIRO_STATUS_SUCCESS); |
243 |
if (gr->drawbuf) |
|
244 |
|
switch (gr->mode) |
245 |
{ |
{ |
246 |
|
case MODE_DRAWABLE_WITH_RENDER: |
247 |
|
break; |
248 |
|
|
249 |
gint drawable_width, drawable_height; |
case MODE_DRAWABLE_NO_RENDER: |
250 |
gint pixbuf_width, pixbuf_height; |
{ |
251 |
gint width, height; |
|
252 |
|
gint drawable_width, drawable_height; |
253 |
gdk_drawable_get_size (gr->drawable, &drawable_width, &drawable_height); |
gint pixbuf_width, pixbuf_height; |
254 |
pixbuf_width = gdk_pixbuf_get_width (gr->drawbuf); |
gint width, height; |
255 |
pixbuf_height = gdk_pixbuf_get_height (gr->drawbuf); |
|
256 |
width = min (drawable_width, pixbuf_width); |
gdk_drawable_get_size (gr->drawable, &drawable_width, &drawable_height); |
257 |
height = min (drawable_height, pixbuf_height); |
pixbuf_width = gdk_pixbuf_get_width (gr->drawbuf); |
258 |
|
pixbuf_height = gdk_pixbuf_get_height (gr->drawbuf); |
259 |
gdk_pixbuf_get_from_drawable (gr->drawbuf, /* destination pixbuf */ |
width = min (drawable_width, pixbuf_width); |
260 |
gr->drawable, |
height = min (drawable_height, pixbuf_height); |
261 |
NULL, /* colormap */ |
|
262 |
0, 0, 0, 0, |
gdk_pixbuf_get_from_drawable (gr->drawbuf, /* destination pixbuf */ |
263 |
width, height); |
gr->drawable, |
264 |
|
NULL, /* colormap */ |
265 |
if (gr->debug) printf ("copied (%d, %d) pixels from GDK drawable to pixbuf\n", |
0, 0, 0, 0, |
266 |
width, height); |
width, height); |
267 |
|
|
268 |
|
if (gr->debug) printf ("copied (%d, %d) pixels from GDK drawable to pixbuf\n", |
269 |
|
width, height); |
270 |
|
} |
271 |
|
break; |
272 |
|
|
273 |
|
case MODE_JAVA_ARRAY: |
274 |
|
gr->javabuf = (*env)->GetIntArrayElements (env, gr->jarray, &gr->isCopy); |
275 |
|
gr->surface = cairo_surface_create_for_image ((char *) gr->javabuf, |
276 |
|
CAIRO_FORMAT_ARGB32, |
277 |
|
gr->width, |
278 |
|
gr->height, |
279 |
|
gr->width * 4); |
280 |
|
g_assert(gr->surface != NULL); |
281 |
|
g_assert(gr->cr != NULL); |
282 |
|
cairo_set_target_surface (gr->cr, gr->surface); |
283 |
|
break; |
284 |
} |
} |
285 |
} |
} |
286 |
|
|
287 |
static void |
static void |
288 |
end_drawing_operation (struct graphics2d * gr) |
end_drawing_operation (JNIEnv *env, struct graphics2d * gr) |
289 |
{ |
{ |
290 |
g_assert(cairo_status (gr->cr) == CAIRO_STATUS_SUCCESS); |
g_assert(cairo_status (gr->cr) == CAIRO_STATUS_SUCCESS); |
|
if (gr->drawbuf) |
|
|
{ |
|
|
gint drawable_width, drawable_height; |
|
|
gint pixbuf_width, pixbuf_height; |
|
|
gint width, height; |
|
|
|
|
|
gdk_drawable_get_size (gr->drawable, &drawable_width, &drawable_height); |
|
|
pixbuf_width = gdk_pixbuf_get_width (gr->drawbuf); |
|
|
pixbuf_height = gdk_pixbuf_get_height (gr->drawbuf); |
|
|
width = min (drawable_width, pixbuf_width); |
|
|
height = min (drawable_height, pixbuf_height); |
|
|
|
|
|
gdk_draw_pixbuf (gr->drawable, NULL, gr->drawbuf, |
|
|
0, 0, 0, 0, |
|
|
width, height, |
|
|
GDK_RGB_DITHER_NORMAL, 0, 0); |
|
291 |
|
|
292 |
if (gr->debug) printf ("copied (%d, %d) pixels from pixbuf to GDK drawable\n", |
switch (gr->mode) |
293 |
width, height); |
{ |
294 |
|
case MODE_DRAWABLE_WITH_RENDER: |
295 |
|
break; |
296 |
|
|
297 |
|
case MODE_DRAWABLE_NO_RENDER: |
298 |
|
{ |
299 |
|
|
300 |
|
gint drawable_width, drawable_height; |
301 |
|
gint pixbuf_width, pixbuf_height; |
302 |
|
gint width, height; |
303 |
|
|
304 |
|
gdk_drawable_get_size (gr->drawable, &drawable_width, &drawable_height); |
305 |
|
pixbuf_width = gdk_pixbuf_get_width (gr->drawbuf); |
306 |
|
pixbuf_height = gdk_pixbuf_get_height (gr->drawbuf); |
307 |
|
width = min (drawable_width, pixbuf_width); |
308 |
|
height = min (drawable_height, pixbuf_height); |
309 |
|
|
310 |
|
gdk_draw_pixbuf (gr->drawable, NULL, gr->drawbuf, |
311 |
|
0, 0, 0, 0, |
312 |
|
width, height, |
313 |
|
GDK_RGB_DITHER_NORMAL, 0, 0); |
314 |
|
|
315 |
|
if (gr->debug) printf ("copied (%d, %d) pixels from pixbuf to GDK drawable\n", |
316 |
|
width, height); |
317 |
|
} |
318 |
|
break; |
319 |
|
|
320 |
|
case MODE_JAVA_ARRAY: |
321 |
|
/* |
322 |
|
* FIXME: Perhaps this should use the isCopy flag to try to avoid |
323 |
|
* tearing down the cairo surface. |
324 |
|
*/ |
325 |
|
cairo_surface_destroy (gr->surface); |
326 |
|
gr->surface = NULL; |
327 |
|
(*env)->ReleaseIntArrayElements (env, gr->jarray, gr->javabuf, JNI_COMMIT); |
328 |
} |
} |
329 |
} |
} |
330 |
|
|
356 |
} |
} |
357 |
|
|
358 |
static void |
static void |
359 |
realize_cb (GtkWidget *widget, jobject peer) |
realize_cb (GtkWidget *widget __attribute__ ((unused)), jobject peer) |
360 |
{ |
{ |
361 |
gdk_threads_leave (); |
gdk_threads_leave (); |
362 |
|
|
381 |
|
|
382 |
if (g_old->debug) printf ("copying state from existing graphics2d\n"); |
if (g_old->debug) printf ("copying state from existing graphics2d\n"); |
383 |
|
|
|
g->drawable = g_old->drawable; |
|
384 |
g->debug = g_old->debug; |
g->debug = g_old->debug; |
385 |
|
g->mode = g_old->mode; |
386 |
|
|
387 |
g_object_ref (g->drawable); |
if (g_old->mode == MODE_JAVA_ARRAY) |
388 |
|
{ |
389 |
|
g->width = g_old->width; |
390 |
|
g->height = g_old->height; |
391 |
|
g->jarray = (*env)->NewGlobalRef(env, g_old->jarray); |
392 |
|
} |
393 |
|
else |
394 |
|
{ |
395 |
|
g->drawable = g_old->drawable; |
396 |
|
|
397 |
|
g_object_ref (g->drawable); |
398 |
|
|
399 |
g->cr = cairo_create(); |
g->cr = cairo_create(); |
400 |
g_assert (g->cr != NULL); |
g_assert (g->cr != NULL); |
401 |
|
|
402 |
if (x_server_has_render_extension ()) |
if (x_server_has_render_extension ()) |
403 |
init_graphics2d_as_renderable (g); |
init_graphics2d_as_renderable (g); |
404 |
else |
else |
405 |
init_graphics2d_as_pixbuf (g); |
init_graphics2d_as_pixbuf (g); |
406 |
|
} |
407 |
|
|
408 |
cairo_surface_set_filter (g->surface, CAIRO_FILTER_FAST); |
cairo_surface_set_filter (g->surface, CAIRO_FILTER_FAST); |
409 |
|
|
413 |
|
|
414 |
|
|
415 |
JNIEXPORT void JNICALL |
JNIEXPORT void JNICALL |
416 |
|
Java_gnu_java_awt_peer_gtk_GdkGraphics2D_initState___3III |
417 |
|
(JNIEnv *env, jobject obj, jintArray jarr, jint width, jint height) |
418 |
|
{ |
419 |
|
struct graphics2d *gr; |
420 |
|
|
421 |
|
gdk_threads_enter(); |
422 |
|
gr = (struct graphics2d *) malloc (sizeof (struct graphics2d)); |
423 |
|
g_assert (gr != NULL); |
424 |
|
memset (gr, 0, sizeof(struct graphics2d)); |
425 |
|
|
426 |
|
check_for_debug (gr); |
427 |
|
|
428 |
|
if (gr->debug) printf ("constructing java-backed image of size (%d,%d)\n", |
429 |
|
width, height); |
430 |
|
|
431 |
|
gr->cr = cairo_create(); |
432 |
|
g_assert (gr->cr != NULL); |
433 |
|
|
434 |
|
gr->width = width; |
435 |
|
gr->height = height; |
436 |
|
gr->jarray = (*env)->NewGlobalRef(env, jarr); |
437 |
|
gr->mode = MODE_JAVA_ARRAY; |
438 |
|
|
439 |
|
if (gr->debug) printf ("constructed java-backed image of size (%d,%d)\n", |
440 |
|
width, height); |
441 |
|
|
442 |
|
NSA_SET_G2D_PTR (env, obj, gr); |
443 |
|
gdk_threads_leave(); |
444 |
|
} |
445 |
|
|
446 |
|
JNIEXPORT void JNICALL |
447 |
Java_gnu_java_awt_peer_gtk_GdkGraphics2D_initState__II |
Java_gnu_java_awt_peer_gtk_GdkGraphics2D_initState__II |
448 |
(JNIEnv *env, jobject obj, jint width, jint height) |
(JNIEnv *env, jobject obj, jint width, jint height) |
449 |
{ |
{ |
495 |
|
|
496 |
if (src->debug) printf ("copying from offscreen drawable\n"); |
if (src->debug) printf ("copying from offscreen drawable\n"); |
497 |
|
|
498 |
begin_drawing_operation(dst); |
begin_drawing_operation(env, dst); |
499 |
|
|
500 |
/* gdk_flush(); */ |
/* gdk_flush(); */ |
501 |
|
|
520 |
|
|
521 |
gdk_flush(); |
gdk_flush(); |
522 |
|
|
523 |
end_drawing_operation(dst); |
end_drawing_operation(env, dst); |
524 |
|
|
525 |
if (src->debug) printf ("copied %d x %d pixels from offscreen drawable\n", width, height); |
if (src->debug) printf ("copied %d x %d pixels from offscreen drawable\n", width, height); |
526 |
gdk_threads_leave(); |
gdk_threads_leave(); |
612 |
if (gr->pattern_pixels) |
if (gr->pattern_pixels) |
613 |
free (gr->pattern_pixels); |
free (gr->pattern_pixels); |
614 |
|
|
615 |
|
if (gr->mode == MODE_JAVA_ARRAY) |
616 |
|
(*env)->DeleteGlobalRef(env, gr->jarray); |
617 |
|
|
618 |
if (gr->debug) printf ("disposed of graphics2d\n"); |
if (gr->debug) printf ("disposed of graphics2d\n"); |
619 |
|
|
620 |
free (gr); |
free (gr); |
818 |
g_assert (native_matrix != NULL); |
g_assert (native_matrix != NULL); |
819 |
g_assert ((*env)->GetArrayLength (env, java_matrix) == 6); |
g_assert ((*env)->GetArrayLength (env, java_matrix) == 6); |
820 |
|
|
821 |
begin_drawing_operation (gr); |
begin_drawing_operation (env, gr); |
822 |
|
|
823 |
{ |
{ |
824 |
cairo_matrix_t *mat = NULL; |
cairo_matrix_t *mat = NULL; |
832 |
native_matrix[4], native_matrix[5]); |
native_matrix[4], native_matrix[5]); |
833 |
cairo_surface_set_matrix (surf, mat); |
cairo_surface_set_matrix (surf, mat); |
834 |
cairo_surface_set_filter (surf, cairo_surface_get_filter(gr->surface)); |
cairo_surface_set_filter (surf, cairo_surface_get_filter(gr->surface)); |
|
|
|
835 |
cairo_show_surface (gr->cr, surf, w, h); |
cairo_show_surface (gr->cr, surf, w, h); |
836 |
cairo_matrix_destroy (mat); |
cairo_matrix_destroy (mat); |
837 |
cairo_surface_destroy (surf); |
cairo_surface_destroy (surf); |
838 |
} |
} |
839 |
|
|
840 |
end_drawing_operation (gr); |
end_drawing_operation (env, gr); |
841 |
|
|
842 |
(*env)->ReleaseIntArrayElements (env, java_pixels, native_pixels, 0); |
(*env)->ReleaseIntArrayElements (env, java_pixels, native_pixels, 0); |
843 |
(*env)->ReleaseDoubleArrayElements (env, java_matrix, native_matrix, 0); |
(*env)->ReleaseDoubleArrayElements (env, java_matrix, native_matrix, 0); |
845 |
gdk_threads_leave(); |
gdk_threads_leave(); |
846 |
} |
} |
847 |
|
|
|
JNIEXPORT jintArray JNICALL |
|
|
Java_gnu_java_awt_peer_gtk_GdkGraphics2D_getImagePixels |
|
|
(JNIEnv *env, jobject obj) |
|
|
{ |
|
|
struct graphics2d *gr = NULL; |
|
|
jintArray java_pixels; |
|
|
jint* native_pixels; |
|
|
GdkPixbuf *buf = NULL; |
|
|
gint width, height; |
|
|
gint bits_per_sample = 8; |
|
|
gboolean has_alpha = TRUE; |
|
|
gint total_channels = 4; |
|
|
jint i; |
|
|
|
|
|
gdk_threads_enter(); |
|
|
if (peer_is_disposed(env, obj)) { gdk_threads_leave(); return NULL; } |
|
|
|
|
|
gr = (struct graphics2d *) NSA_GET_G2D_PTR (env, obj); |
|
|
g_assert (gr != NULL); |
|
|
|
|
|
if (gr->debug) printf ("getImagePixels\n"); |
|
|
|
|
|
gdk_drawable_get_size (gr->drawable, &width, &height); |
|
|
|
|
|
buf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, has_alpha, |
|
|
bits_per_sample, |
|
|
width, height); |
|
|
g_assert (buf != NULL); |
|
|
g_assert (gdk_pixbuf_get_bits_per_sample (buf) == bits_per_sample); |
|
|
g_assert (gdk_pixbuf_get_n_channels (buf) == total_channels); |
|
|
|
|
|
|
|
|
/* copy pixels from drawable to pixbuf */ |
|
|
|
|
|
gdk_pixbuf_get_from_drawable (buf, gr->drawable, |
|
|
NULL, |
|
|
0, 0, 0, 0, |
|
|
width, height); |
|
|
|
|
|
native_pixels= gdk_pixbuf_get_pixels (buf); |
|
|
|
|
|
#ifndef WORDS_BIGENDIAN |
|
|
/* convert pixels from 0xBBGGRRAA to 0xAARRGGBB */ |
|
|
for (i=0; i<width * height; i++) |
|
|
{ |
|
|
native_pixels[i] = SWAPU32 ((unsigned)native_pixels[i]); |
|
|
} |
|
|
#endif |
|
|
|
|
|
java_pixels = (*env) -> NewIntArray (env, width * height); |
|
|
|
|
|
(*env)->SetIntArrayRegion(env, java_pixels, |
|
|
(jsize)0, (jsize) width*height, |
|
|
(jint*) native_pixels); |
|
|
|
|
|
gdk_threads_leave(); |
|
|
return java_pixels; |
|
|
} |
|
|
|
|
848 |
/* passthrough methods to cairo */ |
/* passthrough methods to cairo */ |
849 |
|
|
850 |
JNIEXPORT void JNICALL |
JNIEXPORT void JNICALL |
976 |
|
|
977 |
JNIEXPORT void JNICALL |
JNIEXPORT void JNICALL |
978 |
Java_gnu_java_awt_peer_gtk_GdkGraphics2D_releasePeerGraphicsResource |
Java_gnu_java_awt_peer_gtk_GdkGraphics2D_releasePeerGraphicsResource |
979 |
(JNIEnv *env, jclass clazz, jobject java_font) |
(JNIEnv *env, jclass clazz __attribute__ ((unused)), jobject java_font) |
980 |
{ |
{ |
981 |
struct peerfont *pfont = NULL; |
struct peerfont *pfont = NULL; |
982 |
|
|
995 |
|
|
996 |
JNIEXPORT void JNICALL |
JNIEXPORT void JNICALL |
997 |
Java_gnu_java_awt_peer_gtk_GdkGraphics2D_getPeerTextMetrics |
Java_gnu_java_awt_peer_gtk_GdkGraphics2D_getPeerTextMetrics |
998 |
(JNIEnv *env, jclass clazz, jobject java_font, jstring str, jdoubleArray java_metrics) |
(JNIEnv *env, jclass clazz __attribute__ ((unused)), jobject java_font, jstring str, jdoubleArray java_metrics) |
999 |
{ |
{ |
1000 |
struct peerfont *pfont = NULL; |
struct peerfont *pfont = NULL; |
1001 |
const char *cstr = NULL; |
const char *cstr = NULL; |
1013 |
|
|
1014 |
cstr = (*env)->GetStringUTFChars (env, str, NULL); |
cstr = (*env)->GetStringUTFChars (env, str, NULL); |
1015 |
g_assert(cstr != NULL); |
g_assert(cstr != NULL); |
1016 |
cairo_text_extents (metrics_cairo, cstr, &extents); |
cairo_text_extents (metrics_cairo, (unsigned char *) cstr, &extents); |
1017 |
|
|
1018 |
native_metrics = (*env)->GetDoubleArrayElements (env, java_metrics, NULL); |
native_metrics = (*env)->GetDoubleArrayElements (env, java_metrics, NULL); |
1019 |
g_assert (native_metrics != NULL); |
g_assert (native_metrics != NULL); |
1032 |
|
|
1033 |
JNIEXPORT void JNICALL |
JNIEXPORT void JNICALL |
1034 |
Java_gnu_java_awt_peer_gtk_GdkGraphics2D_getPeerFontMetrics |
Java_gnu_java_awt_peer_gtk_GdkGraphics2D_getPeerFontMetrics |
1035 |
(JNIEnv *env, jclass clazz, jobject java_font, jdoubleArray java_metrics) |
(JNIEnv *env, jclass clazz __attribute__ ((unused)), jobject java_font, jdoubleArray java_metrics) |
1036 |
{ |
{ |
1037 |
struct peerfont *pfont = NULL; |
struct peerfont *pfont = NULL; |
1038 |
jdouble *native_metrics = NULL; |
jdouble *native_metrics = NULL; |
1066 |
} |
} |
1067 |
|
|
1068 |
static void |
static void |
1069 |
paint_glyph_run(struct graphics2d *gr, |
paint_glyph_run(JNIEnv *env, |
1070 |
|
struct graphics2d *gr, |
1071 |
cairo_glyph_t **glyphs, |
cairo_glyph_t **glyphs, |
1072 |
gint *n_glyphs, |
gint *n_glyphs, |
1073 |
PangoLayoutRun *run) |
PangoLayoutRun *run) |
1115 |
} |
} |
1116 |
|
|
1117 |
if (gr->debug) printf("\n"); |
if (gr->debug) printf("\n"); |
1118 |
begin_drawing_operation (gr); |
begin_drawing_operation (env, gr); |
1119 |
cairo_show_glyphs (gr->cr, *glyphs, run->glyphs->num_glyphs); |
cairo_show_glyphs (gr->cr, *glyphs, run->glyphs->num_glyphs); |
1120 |
end_drawing_operation (gr); |
end_drawing_operation (env, gr); |
1121 |
} |
} |
1122 |
} |
} |
1123 |
|
|
1163 |
|
|
1164 |
install_font_peer (gr->cr, pfont, gr->debug); |
install_font_peer (gr->cr, pfont, gr->debug); |
1165 |
cairo_move_to (gr->cr, x, y); |
cairo_move_to (gr->cr, x, y); |
1166 |
cairo_show_text (gr->cr, cstr); |
cairo_show_text (gr->cr, (unsigned char *) cstr); |
1167 |
|
|
1168 |
/* |
/* |
1169 |
|
|
1231 |
/* nb. PangoLayoutRun is a typedef for PangoGlyphItem. */ |
/* nb. PangoLayoutRun is a typedef for PangoGlyphItem. */ |
1232 |
run = (PangoLayoutRun *) gv->glyphitems; |
run = (PangoLayoutRun *) gv->glyphitems; |
1233 |
if (run != NULL) |
if (run != NULL) |
1234 |
paint_glyph_run (gr, &glyphs, &n_glyphs, run); |
paint_glyph_run (env, gr, &glyphs, &n_glyphs, run); |
1235 |
|
|
1236 |
if (glyphs != NULL) |
if (glyphs != NULL) |
1237 |
g_free (glyphs); |
g_free (glyphs); |
1284 |
{ |
{ |
1285 |
run = pango_layout_iter_get_run (i); |
run = pango_layout_iter_get_run (i); |
1286 |
if (run != NULL) |
if (run != NULL) |
1287 |
paint_glyph_run (gr, &glyphs, &n_glyphs, run); |
paint_glyph_run (env, gr, &glyphs, &n_glyphs, run); |
1288 |
} |
} |
1289 |
while (pango_layout_iter_next_run (i)); |
while (pango_layout_iter_next_run (i)); |
1290 |
|
|
1696 |
gr = (struct graphics2d *) NSA_GET_G2D_PTR (env, obj); |
gr = (struct graphics2d *) NSA_GET_G2D_PTR (env, obj); |
1697 |
g_assert (gr != NULL); |
g_assert (gr != NULL); |
1698 |
if (gr->debug) printf ("cairo_stroke\n"); |
if (gr->debug) printf ("cairo_stroke\n"); |
1699 |
begin_drawing_operation (gr); |
begin_drawing_operation (env, gr); |
1700 |
cairo_stroke (gr->cr); |
cairo_stroke (gr->cr); |
1701 |
end_drawing_operation (gr); |
end_drawing_operation (env, gr); |
1702 |
gdk_threads_leave(); |
gdk_threads_leave(); |
1703 |
} |
} |
1704 |
|
|
1714 |
gr = (struct graphics2d *) NSA_GET_G2D_PTR (env, obj); |
gr = (struct graphics2d *) NSA_GET_G2D_PTR (env, obj); |
1715 |
g_assert (gr != NULL); |
g_assert (gr != NULL); |
1716 |
if (gr->debug) printf ("cairo_fill\n"); |
if (gr->debug) printf ("cairo_fill\n"); |
1717 |
begin_drawing_operation (gr); |
begin_drawing_operation (env, gr); |
1718 |
cairo_fill (gr->cr); |
cairo_fill (gr->cr); |
1719 |
end_drawing_operation (gr); |
end_drawing_operation (env, gr); |
1720 |
gdk_threads_leave(); |
gdk_threads_leave(); |
1721 |
} |
} |
1722 |
|
|
1732 |
gr = (struct graphics2d *) NSA_GET_G2D_PTR (env, obj); |
gr = (struct graphics2d *) NSA_GET_G2D_PTR (env, obj); |
1733 |
if (gr == NULL) { gdk_threads_leave (); return; } |
if (gr == NULL) { gdk_threads_leave (); return; } |
1734 |
if (gr->debug) printf ("cairo_clip\n"); |
if (gr->debug) printf ("cairo_clip\n"); |
1735 |
begin_drawing_operation (gr); |
begin_drawing_operation (env, gr); |
1736 |
cairo_init_clip (gr->cr); |
cairo_init_clip (gr->cr); |
1737 |
cairo_clip (gr->cr); |
cairo_clip (gr->cr); |
1738 |
end_drawing_operation (gr); |
end_drawing_operation (env, gr); |
1739 |
gdk_threads_leave(); |
gdk_threads_leave(); |
1740 |
} |
} |
1741 |
|
|