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>
50 static void update_pattern_transform (struct cairographics2d *gr);
53 * Allocates the cairographics2d structure.
55 JNIEXPORT jlong JNICALL
56 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_init
57 (JNIEnv *env __attribute__ ((unused)),
58 jobject obj __attribute__ ((unused)),
59 jlong cairo_t_pointer)
61 struct cairographics2d *g = NULL;
62 cairo_t *cr = JLONG_TO_PTR(cairo_t, cairo_t_pointer);
65 g = (struct cairographics2d *) g_malloc (sizeof (struct cairographics2d));
68 memset (g, 0, sizeof(struct cairographics2d));
71 return PTR_TO_JLONG(g);
75 * Disposes of the cairographics2d structure.
77 JNIEXPORT void JNICALL
78 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_disposeNative
79 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
82 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
90 cairo_destroy (gr->cr);
95 cairo_pattern_destroy (gr->pattern);
98 if (gr->pattern_surface)
99 cairo_surface_destroy (gr->pattern_surface);
100 gr->pattern_surface = NULL;
102 if (gr->pattern_pixels)
103 g_free(gr->pattern_pixels);
104 gr->pattern_pixels = NULL;
112 JNIEXPORT void JNICALL
113 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_setGradient
114 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
116 jdouble x1, jdouble y1,
117 jdouble x2, jdouble y2,
118 jint r1, jint g1, jint b1, jint a1,
119 jint r2, jint g2, jint b2, jint a2,
122 struct cairographics2d *gr = NULL;
123 cairo_pattern_t* pattern;
124 cairo_extend_t extend;
126 gr = JLONG_TO_PTR(struct cairographics2d, pointer);
127 g_assert( gr != NULL );
129 pattern = cairo_pattern_create_linear(x1, y1, x2, y2);
130 g_assert( pattern != NULL );
132 cairo_pattern_add_color_stop_rgba(pattern, 0.0, r1 / 255.0, g1 / 255.0,
133 b1 / 255.0, a1 / 255.0);
135 cairo_pattern_add_color_stop_rgba(pattern, 1.0, r2 / 255.0, g2 / 255.0,
136 b2 / 255.0, a2 / 255.0);
138 #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 2, 0)
139 extend = (cyclic == JNI_TRUE) ? CAIRO_EXTEND_REFLECT : CAIRO_EXTEND_PAD;
141 extend = (cyclic == JNI_TRUE) ? CAIRO_EXTEND_REFLECT : CAIRO_EXTEND_NONE;
144 cairo_pattern_set_extend( pattern, extend );
146 gr->pattern = pattern;
147 cairo_set_source(gr->cr, gr->pattern);
150 JNIEXPORT void JNICALL
151 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_setPaintPixels
152 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
153 jlong pointer, jintArray jarr, jint w, jint h, jint stride, jboolean repeat,
156 struct cairographics2d *gr = NULL;
157 jint *jpixels = NULL;
159 gr = JLONG_TO_PTR(struct cairographics2d, pointer);
160 g_assert (gr != NULL);
163 cairo_pattern_destroy (gr->pattern);
165 if (gr->pattern_surface)
166 cairo_surface_destroy (gr->pattern_surface);
168 if (gr->pattern_pixels)
169 g_free (gr->pattern_pixels);
172 gr->pattern_surface = NULL;
173 gr->pattern_pixels = NULL;
175 gr->pattern_pixels = (char *) g_malloc (h * stride * 4);
176 g_assert (gr->pattern_pixels != NULL);
178 jpixels = (*env)->GetIntArrayElements (env, jarr, NULL);
179 g_assert (jpixels != NULL);
180 memcpy (gr->pattern_pixels, jpixels, h * stride * 4);
181 (*env)->ReleaseIntArrayElements (env, jarr, jpixels, 0);
183 gr->pattern_surface = cairo_image_surface_create_for_data ((unsigned char *)gr->pattern_pixels,
186 g_assert (gr->pattern_surface != NULL);
187 gr->pattern = cairo_pattern_create_for_surface (gr->pattern_surface);
188 g_assert (gr->pattern != NULL);
190 cairo_set_source_surface(gr->cr, gr->pattern_surface, x, y);
193 cairo_pattern_set_extend(cairo_get_source(gr->cr), CAIRO_EXTEND_REPEAT);
195 cairo_pattern_set_extend(cairo_get_source(gr->cr), CAIRO_EXTEND_NONE);
198 JNIEXPORT void JNICALL
199 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_drawPixels
200 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
201 jlong pointer, jintArray java_pixels,
202 jint w, jint h, jint stride, jdoubleArray java_matrix, jdouble alpha,
205 jint *native_pixels = NULL;
206 jdouble *native_matrix = NULL;
207 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
208 g_assert (gr != NULL);
210 native_pixels = (*env)->GetIntArrayElements (env, java_pixels, NULL);
211 native_matrix = (*env)->GetDoubleArrayElements (env, java_matrix, NULL);
212 g_assert (native_pixels != NULL);
213 g_assert (native_matrix != NULL);
214 g_assert ((*env)->GetArrayLength (env, java_matrix) == 6);
219 cairo_surface_t *surf = cairo_image_surface_create_for_data ((unsigned char *)native_pixels,
222 cairo_matrix_init_identity (&mat);
223 cairo_matrix_init (&mat,
224 native_matrix[0], native_matrix[1],
225 native_matrix[2], native_matrix[3],
226 native_matrix[4], native_matrix[5]);
228 p = cairo_pattern_create_for_surface (surf);
229 cairo_pattern_set_matrix (p, &mat);
230 switch ((enum java_awt_rendering_hints_filter) interpolation)
232 case java_awt_rendering_hints_VALUE_INTERPOLATION_NEAREST_NEIGHBOR:
233 cairo_pattern_set_filter (p, CAIRO_FILTER_NEAREST);
235 case java_awt_rendering_hints_VALUE_INTERPOLATION_BILINEAR:
236 cairo_pattern_set_filter (p, CAIRO_FILTER_BILINEAR);
238 case java_awt_rendering_hints_VALUE_INTERPOLATION_BICUBIC:
239 cairo_pattern_set_filter (p, CAIRO_FILTER_GAUSSIAN);
241 case java_awt_rendering_hints_VALUE_ALPHA_INTERPOLATION_SPEED:
242 cairo_pattern_set_filter (p, CAIRO_FILTER_FAST);
244 case java_awt_rendering_hints_VALUE_ALPHA_INTERPOLATION_DEFAULT:
245 cairo_pattern_set_filter (p, CAIRO_FILTER_NEAREST);
247 case java_awt_rendering_hints_VALUE_ALPHA_INTERPOLATION_QUALITY:
248 cairo_pattern_set_filter (p, CAIRO_FILTER_BEST);
252 cairo_set_source (gr->cr, p);
254 cairo_paint (gr->cr);
256 cairo_paint_with_alpha(gr->cr, alpha);
258 cairo_pattern_destroy (p);
259 cairo_surface_destroy (surf);
262 (*env)->ReleaseIntArrayElements (env, java_pixels, native_pixels, 0);
263 (*env)->ReleaseDoubleArrayElements (env, java_matrix, native_matrix, 0);
267 JNIEXPORT void JNICALL
268 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetMatrix
269 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
270 jlong pointer, jdoubleArray java_matrix)
272 jdouble *native_matrix = NULL;
273 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
274 g_assert (gr != NULL);
276 native_matrix = (*env)->GetDoubleArrayElements (env, java_matrix, NULL);
277 g_assert (native_matrix != NULL);
278 g_assert ((*env)->GetArrayLength (env, java_matrix) == 6);
283 cairo_matrix_init_identity (&mat);
284 cairo_matrix_init (&mat,
285 native_matrix[0], native_matrix[1],
286 native_matrix[2], native_matrix[3],
287 native_matrix[4], native_matrix[5]);
288 g_assert (gr != NULL);
289 cairo_set_matrix (gr->cr, &mat);
292 (*env)->ReleaseDoubleArrayElements (env, java_matrix, native_matrix, 0);
293 update_pattern_transform (gr);
296 JNIEXPORT void JNICALL
297 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoScale
298 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
299 jlong pointer, jdouble x, jdouble y)
301 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
302 g_assert (gr != NULL);
304 cairo_scale (gr->cr, x, y);
307 JNIEXPORT void JNICALL
308 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawGlyphVector
309 (JNIEnv *env, jobject obj __attribute__((unused)), jlong pointer,
311 jfloat x, jfloat y, jint n,
312 jintArray java_codes,
313 jfloatArray java_positions, jlongArray java_fontset)
315 struct cairographics2d *gr = NULL;
316 struct peerfont *pfont = NULL;
317 cairo_glyph_t *glyphs = NULL;
319 float *native_positions;
322 g_assert (java_codes != NULL);
323 g_assert (java_positions != NULL);
325 gr = JLONG_TO_PTR(struct cairographics2d, pointer);
326 g_assert (gr != NULL);
328 pfont = (struct peerfont *) gtkpeer_get_font(env, font);
329 g_assert (pfont != NULL);
331 glyphs = g_malloc( sizeof(cairo_glyph_t) * n);
332 g_assert (glyphs != NULL);
334 native_codes = (*env)->GetIntArrayElements (env, java_codes, NULL);
335 native_positions = (*env)->GetFloatArrayElements (env, java_positions, NULL);
337 /* Set up glyphs and layout */
338 for (i = 0; i < n; ++i)
340 glyphs[i].index = native_codes[i];
341 glyphs[i].x = x + native_positions[ 2*i ];
342 glyphs[i].y = y + native_positions[ 2*i + 1];
345 (*env)->ReleaseFloatArrayElements (env, java_positions, native_positions, 0);
346 (*env)->ReleaseIntArrayElements (env, java_codes, native_codes, 0);
348 /* Iterate through glyphs and draw */
349 jlong* fonts = (*env)->GetLongArrayElements (env, java_fontset, NULL);
351 for (i = 0; i < n; i++)
353 PangoFcFont *font = JLONG_TO_PTR(PangoFcFont, fonts[i]);
354 gdk_threads_leave ();
356 /* Draw as many glyphs as possible with the current font */
358 while (i < n-1 && fonts[i] == fonts[i+1])
364 FT_Face face = pango_fc_font_lock_face( font );
365 cairo_font_face_t *ft = cairo_ft_font_face_create_for_ft_face (face, 0);
366 g_assert (ft != NULL);
368 cairo_set_font_face (gr->cr, ft);
369 cairo_show_glyphs (gr->cr, &glyphs[i-length], length+1);
371 cairo_font_face_destroy (ft);
372 pango_fc_font_unlock_face(font);
380 JNIEXPORT void JNICALL
381 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetFont
382 (JNIEnv *env __attribute__ ((unused)), jobject obj __attribute__ ((unused)),
383 jlong pointer, jobject font)
385 struct cairographics2d *gr = NULL;
386 struct peerfont *pfont = NULL;
388 cairo_font_face_t *ft = NULL;
390 gr = JLONG_TO_PTR(struct cairographics2d, pointer);
391 g_assert (gr != NULL);
393 pfont = (struct peerfont *) gtkpeer_get_font(env, font);
394 g_assert (pfont != NULL);
397 face = pango_fc_font_lock_face( (PangoFcFont *)pfont->font );
398 g_assert (face != NULL);
400 ft = cairo_ft_font_face_create_for_ft_face (face, 0);
401 g_assert (ft != NULL);
403 cairo_set_font_face (gr->cr, ft);
404 cairo_set_font_size (gr->cr,
405 (pango_font_description_get_size (pfont->desc) /
406 (double)PANGO_SCALE));
408 cairo_font_face_destroy (ft);
409 pango_fc_font_unlock_face((PangoFcFont *)pfont->font);
413 JNIEXPORT void JNICALL
414 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetOperator
415 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
416 jlong pointer, jint op)
418 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
419 g_assert (gr != NULL);
421 switch ((enum java_awt_alpha_composite_rule) op)
423 case java_awt_alpha_composite_CLEAR:
424 cairo_set_operator (gr->cr, CAIRO_OPERATOR_CLEAR);
427 case java_awt_alpha_composite_SRC:
428 cairo_set_operator (gr->cr, CAIRO_OPERATOR_SOURCE);
431 case java_awt_alpha_composite_SRC_OVER:
432 cairo_set_operator (gr->cr, CAIRO_OPERATOR_OVER);
435 case java_awt_alpha_composite_DST_OVER:
436 cairo_set_operator (gr->cr, CAIRO_OPERATOR_DEST_OVER);
439 case java_awt_alpha_composite_SRC_IN:
440 cairo_set_operator (gr->cr, CAIRO_OPERATOR_IN);
443 case java_awt_alpha_composite_DST_IN:
444 cairo_set_operator (gr->cr, CAIRO_OPERATOR_DEST_IN);
447 case java_awt_alpha_composite_SRC_OUT:
448 cairo_set_operator (gr->cr, CAIRO_OPERATOR_OUT);
451 case java_awt_alpha_composite_DST_OUT:
452 cairo_set_operator (gr->cr, CAIRO_OPERATOR_DEST_OUT);
455 case java_awt_alpha_composite_DST:
456 cairo_set_operator (gr->cr, CAIRO_OPERATOR_DEST);
459 case java_awt_alpha_composite_SRC_ATOP:
460 cairo_set_operator (gr->cr, CAIRO_OPERATOR_ATOP);
463 case java_awt_alpha_composite_DST_ATOP:
464 cairo_set_operator (gr->cr, CAIRO_OPERATOR_DEST_ATOP);
467 case java_awt_alpha_composite_XOR:
468 cairo_set_operator (gr->cr, CAIRO_OPERATOR_XOR);
473 JNIEXPORT void JNICALL
474 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetRGBAColor
475 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
476 jlong pointer, jdouble r, jdouble g, jdouble b, jdouble a)
478 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
479 g_assert (gr != NULL);
481 cairo_set_source_rgba (gr->cr, r, g, b, a);
484 JNIEXPORT void JNICALL
485 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetFillRule
486 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
487 jlong pointer, jint rule)
489 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
490 g_assert (gr != NULL);
492 switch ((enum java_awt_geom_path_iterator_winding_rule) rule)
494 case java_awt_geom_path_iterator_WIND_NON_ZERO:
495 cairo_set_fill_rule (gr->cr, CAIRO_FILL_RULE_WINDING);
497 case java_awt_geom_path_iterator_WIND_EVEN_ODD:
498 cairo_set_fill_rule (gr->cr, CAIRO_FILL_RULE_EVEN_ODD);
504 * Set the line style, except for dashes.
506 JNIEXPORT void JNICALL
507 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetLine
508 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
509 jlong pointer, jdouble width, jint cap, jint join, jdouble miterLimit)
511 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
512 g_assert (gr != NULL);
515 cairo_set_line_width (gr->cr, width);
518 switch ((enum java_awt_basic_stroke_cap_rule) cap)
520 case java_awt_basic_stroke_CAP_BUTT:
521 cairo_set_line_cap (gr->cr, CAIRO_LINE_CAP_BUTT);
524 case java_awt_basic_stroke_CAP_ROUND:
525 cairo_set_line_cap (gr->cr, CAIRO_LINE_CAP_ROUND);
528 case java_awt_basic_stroke_CAP_SQUARE:
529 cairo_set_line_cap (gr->cr, CAIRO_LINE_CAP_SQUARE);
534 switch ((enum java_awt_basic_stroke_join_rule) join)
536 case java_awt_basic_stroke_JOIN_MITER:
537 cairo_set_line_join (gr->cr, CAIRO_LINE_JOIN_MITER);
540 case java_awt_basic_stroke_JOIN_ROUND:
541 cairo_set_line_join (gr->cr, CAIRO_LINE_JOIN_ROUND);
544 case java_awt_basic_stroke_JOIN_BEVEL:
545 cairo_set_line_join (gr->cr, CAIRO_LINE_JOIN_BEVEL);
550 cairo_set_miter_limit (gr->cr, miterLimit);
554 * Set the line dashes
556 JNIEXPORT void JNICALL
557 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetDash
558 (JNIEnv *env, jobject obj __attribute__((unused)),
559 jlong pointer, jdoubleArray dashes, jint ndash, jdouble offset)
561 jdouble *dasharr = NULL;
562 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
563 g_assert (gr != NULL);
565 dasharr = (*env)->GetDoubleArrayElements (env, dashes, NULL);
566 g_assert (dasharr != NULL);
568 cairo_set_dash (gr->cr, dasharr, ndash, offset);
570 (*env)->ReleaseDoubleArrayElements (env, dashes, dasharr, 0);
573 JNIEXPORT void JNICALL
574 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSave
575 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
578 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
579 g_assert (gr != NULL);
584 JNIEXPORT void JNICALL
585 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRestore
586 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
589 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
590 g_assert (gr != NULL);
592 cairo_restore (gr->cr);
595 JNIEXPORT void JNICALL
596 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoNewPath
597 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
600 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
601 g_assert (gr != NULL);
603 cairo_new_path (gr->cr);
606 JNIEXPORT void JNICALL
607 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoMoveTo
608 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
609 jlong pointer, jdouble x, jdouble y)
611 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
612 g_assert (gr != NULL);
614 cairo_move_to (gr->cr, x, y);
617 JNIEXPORT void JNICALL
618 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoLineTo
619 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
620 jlong pointer, jdouble x, jdouble y)
622 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
623 g_assert (gr != NULL);
625 cairo_line_to (gr->cr, x, y);
628 JNIEXPORT void JNICALL
629 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoCurveTo
630 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
631 jlong pointer, jdouble x1, jdouble y1,
632 jdouble x2, jdouble y2, jdouble x3, jdouble y3)
634 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
635 g_assert (gr != NULL);
636 cairo_curve_to (gr->cr, x1, y1, x2, y2, x3, y3);
639 JNIEXPORT void JNICALL
640 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRectangle
641 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
642 jlong pointer, jdouble x, jdouble y, jdouble width, jdouble height)
644 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
646 cairo_rectangle (gr->cr, x, y, width, height);
649 JNIEXPORT void JNICALL
650 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoArc
651 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
652 jlong pointer, jdouble x, jdouble y, jdouble radius, jdouble angle1,
655 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
657 cairo_arc (gr->cr, x, y, radius, angle1, angle2);
660 JNIEXPORT void JNICALL
661 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoClosePath
662 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
665 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
666 g_assert (gr != NULL);
668 cairo_close_path (gr->cr);
671 JNIEXPORT void JNICALL
672 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoStroke
673 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
676 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
677 g_assert (gr != NULL);
679 cairo_stroke (gr->cr);
682 JNIEXPORT void JNICALL
683 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoFill
684 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
685 jlong pointer, jdouble alpha)
687 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
688 g_assert (gr != NULL);
696 cairo_paint_with_alpha(gr->cr, alpha);
697 cairo_restore(gr->cr);
701 JNIEXPORT void JNICALL
702 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoClip
703 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
706 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
707 g_assert( gr != NULL );
709 cairo_clip( gr->cr );
712 JNIEXPORT void JNICALL
713 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoResetClip
714 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
717 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
718 g_assert (gr != NULL);
720 cairo_reset_clip( gr->cr );
723 JNIEXPORT void JNICALL
724 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetAntialias
725 (JNIEnv *env __attribute__ ((unused)), jobject obj __attribute__ ((unused)),
726 jlong pointer, jboolean aa)
728 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
729 g_assert (gr != NULL);
732 cairo_set_antialias(gr->cr, CAIRO_ANTIALIAS_GRAY);
734 cairo_set_antialias(gr->cr, CAIRO_ANTIALIAS_NONE);
738 update_pattern_transform (struct cairographics2d *gr)
742 g_assert (gr != NULL);
743 if (gr->pattern == NULL)
746 cairo_get_matrix (gr->cr, &mat);
747 cairo_pattern_set_matrix (gr->pattern, &mat);