1 /* gnu_java_awt_peer_gtk_CairoGraphics2d.c
2 Copyright (C) 2006 Free Software Foundation, Inc.
4 This file is part of GNU Classpath.
6 GNU Classpath is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
11 GNU Classpath is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with GNU Classpath; see the file COPYING. If not, write to the
18 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21 Linking this library statically or dynamically with other modules is
22 making a combined work based on this library. Thus, the terms and
23 conditions of the GNU General Public License cover the whole
26 As a special exception, the copyright holders of this library give you
27 permission to link this library with independent modules to produce an
28 executable, regardless of the license terms of these independent
29 modules, and to copy and distribute the resulting executable under
30 terms of your choice, provided that you also meet, for each linked
31 independent module, the terms and conditions of the license of that
32 module. An independent module is a module which is not derived from
33 or based on this library. If you modify this library, you may extend
34 this exception to your version of the library, but you are not
35 obligated to do so. If you do not wish to do so, delete this
36 exception statement from your version. */
40 #include "cairographics2d.h"
41 #include "gnu_java_awt_peer_gtk_CairoGraphics2D.h"
42 #include <gdk/gdktypes.h>
43 #include <gdk/gdkprivate.h>
47 #include <cairo-xlib.h>
52 static void update_pattern_transform (struct cairographics2d *gr);
55 * Allocates the cairographics2d structure.
57 JNIEXPORT jlong JNICALL
58 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_init
59 (JNIEnv *env __attribute__ ((unused)),
60 jobject obj __attribute__ ((unused)),
61 jlong cairo_t_pointer)
63 struct cairographics2d *g = NULL;
64 cairo_t *cr = JLONG_TO_PTR(cairo_t, cairo_t_pointer);
67 g = (struct cairographics2d *) g_malloc (sizeof (struct cairographics2d));
70 memset (g, 0, sizeof(struct cairographics2d));
73 return PTR_TO_JLONG(g);
77 * Disposes of the cairographics2d structure.
79 JNIEXPORT void JNICALL
80 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_disposeNative
81 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
84 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
92 cairo_destroy (gr->cr);
97 cairo_pattern_destroy (gr->pattern);
100 if (gr->pattern_surface)
101 cairo_surface_destroy (gr->pattern_surface);
102 gr->pattern_surface = NULL;
104 if (gr->pattern_pixels)
105 g_free(gr->pattern_pixels);
106 gr->pattern_pixels = NULL;
114 JNIEXPORT void JNICALL
115 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_setGradient
116 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
118 jdouble x1, jdouble y1,
119 jdouble x2, jdouble y2,
120 jint r1, jint g1, jint b1, jint a1,
121 jint r2, jint g2, jint b2, jint a2,
124 struct cairographics2d *gr = NULL;
125 cairo_pattern_t* pattern;
126 cairo_extend_t extend;
128 gr = JLONG_TO_PTR(struct cairographics2d, pointer);
129 g_assert( gr != NULL );
131 pattern = cairo_pattern_create_linear(x1, y1, x2, y2);
132 g_assert( pattern != NULL );
134 cairo_pattern_add_color_stop_rgba(pattern, 0.0, r1 / 255.0, g1 / 255.0,
135 b1 / 255.0, a1 / 255.0);
137 cairo_pattern_add_color_stop_rgba(pattern, 1.0, r2 / 255.0, g2 / 255.0,
138 b2 / 255.0, a2 / 255.0);
140 #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 2, 0)
141 extend = (cyclic == JNI_TRUE) ? CAIRO_EXTEND_REFLECT : CAIRO_EXTEND_PAD;
143 extend = (cyclic == JNI_TRUE) ? CAIRO_EXTEND_REFLECT : CAIRO_EXTEND_NONE;
146 cairo_pattern_set_extend( pattern, extend );
148 gr->pattern = pattern;
149 cairo_set_source(gr->cr, gr->pattern);
152 JNIEXPORT void JNICALL
153 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_setPaintPixels
154 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
155 jlong pointer, jintArray jarr, jint w, jint h, jint stride, jboolean repeat,
158 struct cairographics2d *gr = NULL;
159 jint *jpixels = NULL;
161 gr = JLONG_TO_PTR(struct cairographics2d, pointer);
162 g_assert (gr != NULL);
165 cairo_pattern_destroy (gr->pattern);
167 if (gr->pattern_surface)
168 cairo_surface_destroy (gr->pattern_surface);
170 if (gr->pattern_pixels)
171 g_free (gr->pattern_pixels);
174 gr->pattern_surface = NULL;
175 gr->pattern_pixels = NULL;
177 gr->pattern_pixels = (char *) g_malloc (h * stride * 4);
178 g_assert (gr->pattern_pixels != NULL);
180 jpixels = (*env)->GetIntArrayElements (env, jarr, NULL);
181 g_assert (jpixels != NULL);
182 memcpy (gr->pattern_pixels, jpixels, h * stride * 4);
183 (*env)->ReleaseIntArrayElements (env, jarr, jpixels, 0);
185 gr->pattern_surface = cairo_image_surface_create_for_data ((unsigned char *)gr->pattern_pixels,
188 g_assert (gr->pattern_surface != NULL);
189 gr->pattern = cairo_pattern_create_for_surface (gr->pattern_surface);
190 g_assert (gr->pattern != NULL);
192 cairo_set_source_surface(gr->cr, gr->pattern_surface, x, y);
195 cairo_pattern_set_extend(cairo_get_source(gr->cr), CAIRO_EXTEND_REPEAT);
197 cairo_pattern_set_extend(cairo_get_source(gr->cr), CAIRO_EXTEND_NONE);
200 JNIEXPORT void JNICALL
201 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_drawPixels
202 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
203 jlong pointer, jintArray java_pixels,
204 jint w, jint h, jint stride, jdoubleArray java_matrix, jdouble alpha,
207 jint *native_pixels = NULL;
208 jdouble *native_matrix = NULL;
209 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
210 g_assert (gr != NULL);
212 native_pixels = (*env)->GetIntArrayElements (env, java_pixels, NULL);
213 native_matrix = (*env)->GetDoubleArrayElements (env, java_matrix, NULL);
214 g_assert (native_pixels != NULL);
215 g_assert (native_matrix != NULL);
216 g_assert ((*env)->GetArrayLength (env, java_matrix) == 6);
221 cairo_surface_t *surf = cairo_image_surface_create_for_data ((unsigned char *)native_pixels,
224 cairo_matrix_init_identity (&mat);
225 cairo_matrix_init (&mat,
226 native_matrix[0], native_matrix[1],
227 native_matrix[2], native_matrix[3],
228 native_matrix[4], native_matrix[5]);
230 p = cairo_pattern_create_for_surface (surf);
231 cairo_pattern_set_matrix (p, &mat);
232 switch ((enum java_awt_rendering_hints_filter) interpolation)
234 case java_awt_rendering_hints_VALUE_INTERPOLATION_NEAREST_NEIGHBOR:
235 cairo_pattern_set_filter (p, CAIRO_FILTER_NEAREST);
237 case java_awt_rendering_hints_VALUE_INTERPOLATION_BILINEAR:
238 cairo_pattern_set_filter (p, CAIRO_FILTER_BILINEAR);
240 case java_awt_rendering_hints_VALUE_INTERPOLATION_BICUBIC:
241 cairo_pattern_set_filter (p, CAIRO_FILTER_GAUSSIAN);
243 case java_awt_rendering_hints_VALUE_ALPHA_INTERPOLATION_SPEED:
244 cairo_pattern_set_filter (p, CAIRO_FILTER_FAST);
246 case java_awt_rendering_hints_VALUE_ALPHA_INTERPOLATION_DEFAULT:
247 cairo_pattern_set_filter (p, CAIRO_FILTER_NEAREST);
249 case java_awt_rendering_hints_VALUE_ALPHA_INTERPOLATION_QUALITY:
250 cairo_pattern_set_filter (p, CAIRO_FILTER_BEST);
254 cairo_set_source (gr->cr, p);
256 cairo_paint (gr->cr);
258 cairo_paint_with_alpha(gr->cr, alpha);
260 cairo_pattern_destroy (p);
261 cairo_surface_destroy (surf);
264 (*env)->ReleaseIntArrayElements (env, java_pixels, native_pixels, 0);
265 (*env)->ReleaseDoubleArrayElements (env, java_matrix, native_matrix, 0);
269 JNIEXPORT void JNICALL
270 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetMatrix
271 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
272 jlong pointer, jdoubleArray java_matrix)
274 jdouble *native_matrix = NULL;
275 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
276 g_assert (gr != NULL);
278 native_matrix = (*env)->GetDoubleArrayElements (env, java_matrix, NULL);
279 g_assert (native_matrix != NULL);
280 g_assert ((*env)->GetArrayLength (env, java_matrix) == 6);
285 cairo_matrix_init_identity (&mat);
286 cairo_matrix_init (&mat,
287 native_matrix[0], native_matrix[1],
288 native_matrix[2], native_matrix[3],
289 native_matrix[4], native_matrix[5]);
290 g_assert (gr != NULL);
291 cairo_set_matrix (gr->cr, &mat);
294 (*env)->ReleaseDoubleArrayElements (env, java_matrix, native_matrix, 0);
295 update_pattern_transform (gr);
298 JNIEXPORT void JNICALL
299 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoScale
300 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
301 jlong pointer, jdouble x, jdouble y)
303 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
304 g_assert (gr != NULL);
306 cairo_scale (gr->cr, x, y);
309 JNIEXPORT void JNICALL
310 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawGlyphVector
311 (JNIEnv *env, jobject obj __attribute__((unused)), jlong pointer,
313 jfloat x, jfloat y, jint n,
314 jintArray java_codes,
315 jfloatArray java_positions, jlongArray java_fontset)
317 struct cairographics2d *gr = NULL;
318 struct peerfont *pfont = NULL;
319 cairo_glyph_t *glyphs = NULL;
321 float *native_positions;
324 g_assert (java_codes != NULL);
325 g_assert (java_positions != NULL);
327 gr = JLONG_TO_PTR(struct cairographics2d, pointer);
328 g_assert (gr != NULL);
330 pfont = (struct peerfont *) gtkpeer_get_font(env, font);
331 g_assert (pfont != NULL);
333 glyphs = g_malloc( sizeof(cairo_glyph_t) * n);
334 g_assert (glyphs != NULL);
336 native_codes = (*env)->GetIntArrayElements (env, java_codes, NULL);
337 native_positions = (*env)->GetFloatArrayElements (env, java_positions, NULL);
339 /* Set up glyphs and layout */
340 for (i = 0; i < n; ++i)
342 glyphs[i].index = native_codes[i];
343 glyphs[i].x = x + native_positions[ 2*i ];
344 glyphs[i].y = y + native_positions[ 2*i + 1];
347 (*env)->ReleaseFloatArrayElements (env, java_positions, native_positions, 0);
348 (*env)->ReleaseIntArrayElements (env, java_codes, native_codes, 0);
350 /* Iterate through glyphs and draw */
351 jlong* fonts = (*env)->GetLongArrayElements (env, java_fontset, NULL);
353 for (i = 0; i < n; i++)
355 PangoFcFont *font = JLONG_TO_PTR(PangoFcFont, fonts[i]);
356 gdk_threads_leave ();
358 /* Draw as many glyphs as possible with the current font */
360 while (i < n-1 && fonts[i] == fonts[i+1])
366 FT_Face face = pango_fc_font_lock_face( font );
367 cairo_font_face_t *ft = cairo_ft_font_face_create_for_ft_face (face, 0);
368 g_assert (ft != NULL);
370 cairo_set_font_face (gr->cr, ft);
371 cairo_show_glyphs (gr->cr, &glyphs[i-length], length+1);
373 cairo_font_face_destroy (ft);
374 pango_fc_font_unlock_face(font);
382 JNIEXPORT void JNICALL
383 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetFont
384 (JNIEnv *env __attribute__ ((unused)), jobject obj __attribute__ ((unused)),
385 jlong pointer, jobject font)
387 struct cairographics2d *gr = NULL;
388 struct peerfont *pfont = NULL;
390 cairo_font_face_t *ft = NULL;
392 gr = JLONG_TO_PTR(struct cairographics2d, pointer);
393 g_assert (gr != NULL);
395 pfont = (struct peerfont *) gtkpeer_get_font(env, font);
396 g_assert (pfont != NULL);
399 face = pango_fc_font_lock_face( (PangoFcFont *)pfont->font );
400 g_assert (face != NULL);
402 ft = cairo_ft_font_face_create_for_ft_face (face, 0);
403 g_assert (ft != NULL);
405 cairo_set_font_face (gr->cr, ft);
406 cairo_set_font_size (gr->cr,
407 (pango_font_description_get_size (pfont->desc) /
408 (double)PANGO_SCALE));
410 cairo_font_face_destroy (ft);
411 pango_fc_font_unlock_face((PangoFcFont *)pfont->font);
415 JNIEXPORT void JNICALL
416 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetOperator
417 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
418 jlong pointer, jint op)
420 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
421 g_assert (gr != NULL);
423 switch ((enum java_awt_alpha_composite_rule) op)
425 case java_awt_alpha_composite_CLEAR:
426 cairo_set_operator (gr->cr, CAIRO_OPERATOR_CLEAR);
429 case java_awt_alpha_composite_SRC:
430 cairo_set_operator (gr->cr, CAIRO_OPERATOR_SOURCE);
433 case java_awt_alpha_composite_SRC_OVER:
434 cairo_set_operator (gr->cr, CAIRO_OPERATOR_OVER);
437 case java_awt_alpha_composite_DST_OVER:
438 cairo_set_operator (gr->cr, CAIRO_OPERATOR_DEST_OVER);
441 case java_awt_alpha_composite_SRC_IN:
442 cairo_set_operator (gr->cr, CAIRO_OPERATOR_IN);
445 case java_awt_alpha_composite_DST_IN:
446 cairo_set_operator (gr->cr, CAIRO_OPERATOR_DEST_IN);
449 case java_awt_alpha_composite_SRC_OUT:
450 cairo_set_operator (gr->cr, CAIRO_OPERATOR_OUT);
453 case java_awt_alpha_composite_DST_OUT:
454 cairo_set_operator (gr->cr, CAIRO_OPERATOR_DEST_OUT);
457 case java_awt_alpha_composite_DST:
458 cairo_set_operator (gr->cr, CAIRO_OPERATOR_DEST);
461 case java_awt_alpha_composite_SRC_ATOP:
462 cairo_set_operator (gr->cr, CAIRO_OPERATOR_ATOP);
465 case java_awt_alpha_composite_DST_ATOP:
466 cairo_set_operator (gr->cr, CAIRO_OPERATOR_DEST_ATOP);
469 case java_awt_alpha_composite_XOR:
470 cairo_set_operator (gr->cr, CAIRO_OPERATOR_XOR);
475 JNIEXPORT void JNICALL
476 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetRGBAColor
477 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
478 jlong pointer, jdouble r, jdouble g, jdouble b, jdouble a)
480 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
481 g_assert (gr != NULL);
483 cairo_set_source_rgba (gr->cr, r, g, b, a);
486 JNIEXPORT void JNICALL
487 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetFillRule
488 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
489 jlong pointer, jint rule)
491 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
492 g_assert (gr != NULL);
494 switch ((enum java_awt_geom_path_iterator_winding_rule) rule)
496 case java_awt_geom_path_iterator_WIND_NON_ZERO:
497 cairo_set_fill_rule (gr->cr, CAIRO_FILL_RULE_WINDING);
499 case java_awt_geom_path_iterator_WIND_EVEN_ODD:
500 cairo_set_fill_rule (gr->cr, CAIRO_FILL_RULE_EVEN_ODD);
506 * Set the line style, except for dashes.
508 JNIEXPORT void JNICALL
509 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetLine
510 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
511 jlong pointer, jdouble width, jint cap, jint join, jdouble miterLimit)
513 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
514 g_assert (gr != NULL);
517 cairo_set_line_width (gr->cr, width);
520 switch ((enum java_awt_basic_stroke_cap_rule) cap)
522 case java_awt_basic_stroke_CAP_BUTT:
523 cairo_set_line_cap (gr->cr, CAIRO_LINE_CAP_BUTT);
526 case java_awt_basic_stroke_CAP_ROUND:
527 cairo_set_line_cap (gr->cr, CAIRO_LINE_CAP_ROUND);
530 case java_awt_basic_stroke_CAP_SQUARE:
531 cairo_set_line_cap (gr->cr, CAIRO_LINE_CAP_SQUARE);
536 switch ((enum java_awt_basic_stroke_join_rule) join)
538 case java_awt_basic_stroke_JOIN_MITER:
539 cairo_set_line_join (gr->cr, CAIRO_LINE_JOIN_MITER);
542 case java_awt_basic_stroke_JOIN_ROUND:
543 cairo_set_line_join (gr->cr, CAIRO_LINE_JOIN_ROUND);
546 case java_awt_basic_stroke_JOIN_BEVEL:
547 cairo_set_line_join (gr->cr, CAIRO_LINE_JOIN_BEVEL);
552 cairo_set_miter_limit (gr->cr, miterLimit);
556 * Set the line dashes
558 JNIEXPORT void JNICALL
559 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetDash
560 (JNIEnv *env, jobject obj __attribute__((unused)),
561 jlong pointer, jdoubleArray dashes, jint ndash, jdouble offset)
563 jdouble *dasharr = NULL;
564 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
565 g_assert (gr != NULL);
567 dasharr = (*env)->GetDoubleArrayElements (env, dashes, NULL);
568 g_assert (dasharr != NULL);
570 cairo_set_dash (gr->cr, dasharr, ndash, offset);
572 (*env)->ReleaseDoubleArrayElements (env, dashes, dasharr, 0);
575 JNIEXPORT void JNICALL
576 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSave
577 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
580 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
581 g_assert (gr != NULL);
586 JNIEXPORT void JNICALL
587 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRestore
588 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
591 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
592 g_assert (gr != NULL);
594 cairo_restore (gr->cr);
597 JNIEXPORT void JNICALL
598 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoNewPath
599 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
602 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
603 g_assert (gr != NULL);
605 cairo_new_path (gr->cr);
608 JNIEXPORT void JNICALL
609 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoMoveTo
610 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
611 jlong pointer, jdouble x, jdouble y)
613 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
614 g_assert (gr != NULL);
616 cairo_move_to (gr->cr, x, y);
619 JNIEXPORT void JNICALL
620 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoLineTo
621 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
622 jlong pointer, jdouble x, jdouble y)
624 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
625 g_assert (gr != NULL);
627 cairo_line_to (gr->cr, x, y);
630 JNIEXPORT void JNICALL
631 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoCurveTo
632 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
633 jlong pointer, jdouble x1, jdouble y1,
634 jdouble x2, jdouble y2, jdouble x3, jdouble y3)
636 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
637 g_assert (gr != NULL);
638 cairo_curve_to (gr->cr, x1, y1, x2, y2, x3, y3);
641 JNIEXPORT void JNICALL
642 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRectangle
643 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
644 jlong pointer, jdouble x, jdouble y, jdouble width, jdouble height)
646 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
648 cairo_rectangle (gr->cr, x, y, width, height);
651 JNIEXPORT void JNICALL
652 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoArc
653 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
654 jlong pointer, jdouble x, jdouble y, jdouble radius, jdouble angle1,
657 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
659 cairo_arc (gr->cr, x, y, radius, angle1, angle2);
662 JNIEXPORT void JNICALL
663 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoClosePath
664 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
667 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
668 g_assert (gr != NULL);
670 cairo_close_path (gr->cr);
673 JNIEXPORT void JNICALL
674 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoStroke
675 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
678 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
679 g_assert (gr != NULL);
681 cairo_stroke (gr->cr);
684 JNIEXPORT void JNICALL
685 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoFill
686 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
687 jlong pointer, jdouble alpha)
689 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
690 g_assert (gr != NULL);
698 cairo_paint_with_alpha(gr->cr, alpha);
699 cairo_restore(gr->cr);
703 JNIEXPORT void JNICALL
704 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoClip
705 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
708 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
709 g_assert( gr != NULL );
711 cairo_clip( gr->cr );
714 JNIEXPORT void JNICALL
715 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoResetClip
716 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
719 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
720 g_assert (gr != NULL);
722 cairo_reset_clip( gr->cr );
725 JNIEXPORT void JNICALL
726 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetAntialias
727 (JNIEnv *env __attribute__ ((unused)), jobject obj __attribute__ ((unused)),
728 jlong pointer, jboolean aa)
730 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
731 g_assert (gr != NULL);
734 cairo_set_antialias(gr->cr, CAIRO_ANTIALIAS_GRAY);
736 cairo_set_antialias(gr->cr, CAIRO_ANTIALIAS_NONE);
740 update_pattern_transform (struct cairographics2d *gr)
744 g_assert (gr != NULL);
745 if (gr->pattern == NULL)
748 cairo_get_matrix (gr->cr, &mat);
749 cairo_pattern_set_matrix (gr->pattern, &mat);