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);
90 cairo_destroy (gr->cr);
93 cairo_pattern_destroy (gr->pattern);
96 if (gr->pattern_surface)
97 cairo_surface_destroy (gr->pattern_surface);
98 gr->pattern_surface = NULL;
100 if (gr->pattern_pixels)
101 g_free(gr->pattern_pixels);
102 gr->pattern_pixels = NULL;
110 JNIEXPORT void JNICALL
111 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_setGradient
112 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
114 jdouble x1, jdouble y1,
115 jdouble x2, jdouble y2,
116 jint r1, jint g1, jint b1, jint a1,
117 jint r2, jint g2, jint b2, jint a2,
120 struct cairographics2d *gr = NULL;
121 cairo_pattern_t* pattern;
122 cairo_extend_t extend;
124 gr = JLONG_TO_PTR(struct cairographics2d, pointer);
125 g_assert( gr != NULL );
127 pattern = cairo_pattern_create_linear(x1, y1, x2, y2);
128 g_assert( pattern != NULL );
130 cairo_pattern_add_color_stop_rgba(pattern, 0.0, r1 / 255.0, g1 / 255.0,
131 b1 / 255.0, a1 / 255.0);
133 cairo_pattern_add_color_stop_rgba(pattern, 1.0, r2 / 255.0, g2 / 255.0,
134 b2 / 255.0, a2 / 255.0);
136 #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 2, 0)
137 extend = (cyclic == JNI_TRUE) ? CAIRO_EXTEND_REFLECT : CAIRO_EXTEND_PAD;
139 extend = (cyclic == JNI_TRUE) ? CAIRO_EXTEND_REFLECT : CAIRO_EXTEND_NONE;
142 cairo_pattern_set_extend( pattern, extend );
144 gr->pattern = pattern;
145 cairo_set_source(gr->cr, gr->pattern);
148 JNIEXPORT void JNICALL
149 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_setPaintPixels
150 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
151 jlong pointer, jintArray jarr, jint w, jint h, jint stride, jboolean repeat,
154 struct cairographics2d *gr = NULL;
155 jint *jpixels = NULL;
157 gr = JLONG_TO_PTR(struct cairographics2d, pointer);
158 g_assert (gr != NULL);
161 cairo_pattern_destroy (gr->pattern);
163 if (gr->pattern_surface)
164 cairo_surface_destroy (gr->pattern_surface);
166 if (gr->pattern_pixels)
167 g_free (gr->pattern_pixels);
170 gr->pattern_surface = NULL;
171 gr->pattern_pixels = NULL;
173 gr->pattern_pixels = (char *) g_malloc (h * stride * 4);
174 g_assert (gr->pattern_pixels != NULL);
176 jpixels = (*env)->GetIntArrayElements (env, jarr, NULL);
177 g_assert (jpixels != NULL);
178 memcpy (gr->pattern_pixels, jpixels, h * stride * 4);
179 (*env)->ReleaseIntArrayElements (env, jarr, jpixels, 0);
181 gr->pattern_surface = cairo_image_surface_create_for_data ((unsigned char *)gr->pattern_pixels,
184 g_assert (gr->pattern_surface != NULL);
185 gr->pattern = cairo_pattern_create_for_surface (gr->pattern_surface);
186 g_assert (gr->pattern != NULL);
188 cairo_set_source_surface(gr->cr, gr->pattern_surface, x, y);
191 cairo_pattern_set_extend(cairo_get_source(gr->cr), CAIRO_EXTEND_REPEAT);
193 cairo_pattern_set_extend(cairo_get_source(gr->cr), CAIRO_EXTEND_NONE);
196 JNIEXPORT void JNICALL
197 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_drawPixels
198 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
199 jlong pointer, jintArray java_pixels,
200 jint w, jint h, jint stride, jdoubleArray java_matrix, jdouble alpha,
203 jint *native_pixels = NULL;
204 jdouble *native_matrix = NULL;
205 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
206 g_assert (gr != NULL);
208 native_pixels = (*env)->GetIntArrayElements (env, java_pixels, NULL);
209 native_matrix = (*env)->GetDoubleArrayElements (env, java_matrix, NULL);
210 g_assert (native_pixels != NULL);
211 g_assert (native_matrix != NULL);
212 g_assert ((*env)->GetArrayLength (env, java_matrix) == 6);
217 cairo_surface_t *surf = cairo_image_surface_create_for_data ((unsigned char *)native_pixels,
220 cairo_matrix_init_identity (&mat);
221 cairo_matrix_init (&mat,
222 native_matrix[0], native_matrix[1],
223 native_matrix[2], native_matrix[3],
224 native_matrix[4], native_matrix[5]);
226 p = cairo_pattern_create_for_surface (surf);
227 cairo_pattern_set_matrix (p, &mat);
228 switch ((enum java_awt_rendering_hints_filter) interpolation)
230 case java_awt_rendering_hints_VALUE_INTERPOLATION_NEAREST_NEIGHBOR:
231 cairo_pattern_set_filter (p, CAIRO_FILTER_NEAREST);
233 case java_awt_rendering_hints_VALUE_INTERPOLATION_BILINEAR:
234 cairo_pattern_set_filter (p, CAIRO_FILTER_BILINEAR);
236 case java_awt_rendering_hints_VALUE_INTERPOLATION_BICUBIC:
237 cairo_pattern_set_filter (p, CAIRO_FILTER_GAUSSIAN);
239 case java_awt_rendering_hints_VALUE_ALPHA_INTERPOLATION_SPEED:
240 cairo_pattern_set_filter (p, CAIRO_FILTER_FAST);
242 case java_awt_rendering_hints_VALUE_ALPHA_INTERPOLATION_DEFAULT:
243 cairo_pattern_set_filter (p, CAIRO_FILTER_NEAREST);
245 case java_awt_rendering_hints_VALUE_ALPHA_INTERPOLATION_QUALITY:
246 cairo_pattern_set_filter (p, CAIRO_FILTER_BEST);
250 cairo_set_source (gr->cr, p);
252 cairo_paint (gr->cr);
254 cairo_paint_with_alpha(gr->cr, alpha);
256 cairo_pattern_destroy (p);
257 cairo_surface_destroy (surf);
260 (*env)->ReleaseIntArrayElements (env, java_pixels, native_pixels, 0);
261 (*env)->ReleaseDoubleArrayElements (env, java_matrix, native_matrix, 0);
265 JNIEXPORT void JNICALL
266 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetMatrix
267 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
268 jlong pointer, jdoubleArray java_matrix)
270 jdouble *native_matrix = NULL;
271 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
272 g_assert (gr != NULL);
274 native_matrix = (*env)->GetDoubleArrayElements (env, java_matrix, NULL);
275 g_assert (native_matrix != NULL);
276 g_assert ((*env)->GetArrayLength (env, java_matrix) == 6);
281 cairo_matrix_init_identity (&mat);
282 cairo_matrix_init (&mat,
283 native_matrix[0], native_matrix[1],
284 native_matrix[2], native_matrix[3],
285 native_matrix[4], native_matrix[5]);
286 g_assert (gr != NULL);
287 cairo_set_matrix (gr->cr, &mat);
290 (*env)->ReleaseDoubleArrayElements (env, java_matrix, native_matrix, 0);
291 update_pattern_transform (gr);
294 JNIEXPORT void JNICALL
295 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoScale
296 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
297 jlong pointer, jdouble x, jdouble y)
299 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
300 g_assert (gr != NULL);
302 cairo_scale (gr->cr, x, y);
305 JNIEXPORT void JNICALL
306 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawGlyphVector
307 (JNIEnv *env, jobject obj __attribute__((unused)), jlong pointer,
309 jfloat x, jfloat y, jint n,
310 jintArray java_codes,
311 jfloatArray java_positions)
314 struct cairographics2d *gr = NULL;
315 struct peerfont *pfont = NULL;
316 cairo_glyph_t *glyphs = NULL;
318 float *native_positions;
321 g_assert (java_codes != NULL);
322 g_assert (java_positions != NULL);
324 gr = JLONG_TO_PTR(struct cairographics2d, pointer);
325 g_assert (gr != NULL);
327 pfont = (struct peerfont *)NSA_GET_FONT_PTR (env, font);
328 g_assert (pfont != NULL);
330 glyphs = g_malloc( sizeof(cairo_glyph_t) * n);
331 g_assert (glyphs != NULL);
333 native_codes = (*env)->GetIntArrayElements (env, java_codes, NULL);
334 native_positions = (*env)->GetFloatArrayElements (env, java_positions, NULL);
336 for (i = 0; i < n; ++i)
338 glyphs[i].index = native_codes[i];
339 glyphs[i].x = x + native_positions[ 2*i ];
340 glyphs[i].y = y + native_positions[ 2*i + 1];
343 (*env)->ReleaseFloatArrayElements (env, java_positions, native_positions, 0);
344 (*env)->ReleaseIntArrayElements (env, java_codes, native_codes, 0);
346 pango_fc_font_lock_face( (PangoFcFont *)pfont->font );
347 cairo_show_glyphs (gr->cr, glyphs, n);
348 pango_fc_font_unlock_face( (PangoFcFont *)pfont->font );
354 JNIEXPORT void JNICALL
355 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetFont
356 (JNIEnv *env __attribute__ ((unused)), jobject obj __attribute__ ((unused)),
357 jlong pointer, jobject font)
359 struct cairographics2d *gr = NULL;
360 struct peerfont *pfont = NULL;
362 cairo_font_face_t *ft = NULL;
364 gr = JLONG_TO_PTR(struct cairographics2d, pointer);
365 g_assert (gr != NULL);
367 pfont = (struct peerfont *)NSA_GET_FONT_PTR (env, font);
368 g_assert (pfont != NULL);
370 face = pango_fc_font_lock_face( (PangoFcFont *)pfont->font );
371 g_assert (face != NULL);
373 ft = cairo_ft_font_face_create_for_ft_face (face, 0);
374 g_assert (ft != NULL);
376 cairo_set_font_face (gr->cr, ft);
377 cairo_set_font_size (gr->cr,
378 (pango_font_description_get_size (pfont->desc) /
379 (double)PANGO_SCALE));
381 cairo_font_face_destroy (ft);
382 pango_fc_font_unlock_face((PangoFcFont *)pfont->font);
385 JNIEXPORT void JNICALL
386 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetOperator
387 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
388 jlong pointer, jint op)
390 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
391 g_assert (gr != NULL);
393 switch ((enum java_awt_alpha_composite_rule) op)
395 case java_awt_alpha_composite_CLEAR:
396 cairo_set_operator (gr->cr, CAIRO_OPERATOR_CLEAR);
399 case java_awt_alpha_composite_SRC:
400 cairo_set_operator (gr->cr, CAIRO_OPERATOR_SOURCE);
403 case java_awt_alpha_composite_SRC_OVER:
404 cairo_set_operator (gr->cr, CAIRO_OPERATOR_OVER);
407 case java_awt_alpha_composite_DST_OVER:
408 cairo_set_operator (gr->cr, CAIRO_OPERATOR_DEST_OVER);
411 case java_awt_alpha_composite_SRC_IN:
412 cairo_set_operator (gr->cr, CAIRO_OPERATOR_IN);
415 case java_awt_alpha_composite_DST_IN:
416 cairo_set_operator (gr->cr, CAIRO_OPERATOR_DEST_IN);
419 case java_awt_alpha_composite_SRC_OUT:
420 cairo_set_operator (gr->cr, CAIRO_OPERATOR_OUT);
423 case java_awt_alpha_composite_DST_OUT:
424 cairo_set_operator (gr->cr, CAIRO_OPERATOR_DEST_OUT);
427 case java_awt_alpha_composite_DST:
428 cairo_set_operator (gr->cr, CAIRO_OPERATOR_DEST);
431 case java_awt_alpha_composite_SRC_ATOP:
432 cairo_set_operator (gr->cr, CAIRO_OPERATOR_ATOP);
435 case java_awt_alpha_composite_DST_ATOP:
436 cairo_set_operator (gr->cr, CAIRO_OPERATOR_DEST_ATOP);
439 case java_awt_alpha_composite_XOR:
440 cairo_set_operator (gr->cr, CAIRO_OPERATOR_XOR);
445 JNIEXPORT void JNICALL
446 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetRGBAColor
447 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
448 jlong pointer, jdouble r, jdouble g, jdouble b, jdouble a)
450 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
451 g_assert (gr != NULL);
453 cairo_set_source_rgba (gr->cr, r, g, b, a);
456 JNIEXPORT void JNICALL
457 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetFillRule
458 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
459 jlong pointer, jint rule)
461 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
462 g_assert (gr != NULL);
464 switch ((enum java_awt_geom_path_iterator_winding_rule) rule)
466 case java_awt_geom_path_iterator_WIND_NON_ZERO:
467 cairo_set_fill_rule (gr->cr, CAIRO_FILL_RULE_WINDING);
469 case java_awt_geom_path_iterator_WIND_EVEN_ODD:
470 cairo_set_fill_rule (gr->cr, CAIRO_FILL_RULE_EVEN_ODD);
476 * Set the line style, except for dashes.
478 JNIEXPORT void JNICALL
479 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetLine
480 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
481 jlong pointer, jdouble width, int cap, int join, double miterLimit)
483 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
484 g_assert (gr != NULL);
487 cairo_set_line_width (gr->cr, width);
490 switch ((enum java_awt_basic_stroke_cap_rule) cap)
492 case java_awt_basic_stroke_CAP_BUTT:
493 cairo_set_line_cap (gr->cr, CAIRO_LINE_CAP_BUTT);
496 case java_awt_basic_stroke_CAP_ROUND:
497 cairo_set_line_cap (gr->cr, CAIRO_LINE_CAP_ROUND);
500 case java_awt_basic_stroke_CAP_SQUARE:
501 cairo_set_line_cap (gr->cr, CAIRO_LINE_CAP_SQUARE);
506 switch ((enum java_awt_basic_stroke_join_rule) join)
508 case java_awt_basic_stroke_JOIN_MITER:
509 cairo_set_line_join (gr->cr, CAIRO_LINE_JOIN_MITER);
512 case java_awt_basic_stroke_JOIN_ROUND:
513 cairo_set_line_join (gr->cr, CAIRO_LINE_JOIN_ROUND);
516 case java_awt_basic_stroke_JOIN_BEVEL:
517 cairo_set_line_join (gr->cr, CAIRO_LINE_JOIN_BEVEL);
522 cairo_set_miter_limit (gr->cr, miterLimit);
526 * Set the line dashes
528 JNIEXPORT void JNICALL
529 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetDash
530 (JNIEnv *env, jobject obj __attribute__((unused)),
531 jlong pointer, jdoubleArray dashes, jint ndash, jdouble offset)
533 jdouble *dasharr = NULL;
534 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
535 g_assert (gr != NULL);
537 dasharr = (*env)->GetDoubleArrayElements (env, dashes, NULL);
538 g_assert (dasharr != NULL);
540 cairo_set_dash (gr->cr, dasharr, ndash, offset);
542 (*env)->ReleaseDoubleArrayElements (env, dashes, dasharr, 0);
545 JNIEXPORT void JNICALL
546 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSave
547 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
550 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
551 g_assert (gr != NULL);
556 JNIEXPORT void JNICALL
557 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRestore
558 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
561 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
562 g_assert (gr != NULL);
564 cairo_restore (gr->cr);
567 JNIEXPORT void JNICALL
568 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoNewPath
569 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
572 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
573 g_assert (gr != NULL);
575 cairo_new_path (gr->cr);
578 JNIEXPORT void JNICALL
579 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoMoveTo
580 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
581 jlong pointer, jdouble x, jdouble y)
583 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
584 g_assert (gr != NULL);
586 cairo_move_to (gr->cr, x, y);
589 JNIEXPORT void JNICALL
590 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoLineTo
591 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
592 jlong pointer, jdouble x, jdouble y)
594 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
595 g_assert (gr != NULL);
597 cairo_line_to (gr->cr, x, y);
600 JNIEXPORT void JNICALL
601 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoCurveTo
602 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
603 jlong pointer, jdouble x1, jdouble y1,
604 jdouble x2, jdouble y2, jdouble x3, jdouble y3)
606 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
607 g_assert (gr != NULL);
608 cairo_curve_to (gr->cr, x1, y1, x2, y2, x3, y3);
611 JNIEXPORT void JNICALL
612 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRelMoveTo
613 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
614 jlong pointer, jdouble dx, jdouble dy)
616 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
617 g_assert (gr != NULL);
619 cairo_rel_move_to (gr->cr, dx, dy);
622 JNIEXPORT void JNICALL
623 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRelLineTo
624 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
625 jlong pointer, jdouble dx, jdouble dy)
627 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
628 g_assert (gr != NULL);
630 cairo_rel_line_to (gr->cr, dx, dy);
633 JNIEXPORT void JNICALL
634 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRelCurveTo
635 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
636 jlong pointer, jdouble dx1, jdouble dy1,
637 jdouble dx2, jdouble dy2, jdouble dx3, jdouble dy3)
639 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
640 g_assert (gr != NULL);
642 cairo_rel_curve_to (gr->cr, dx1, dy1, dx2, dy2, dx3, dy3);
645 JNIEXPORT void JNICALL
646 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRectangle
647 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
648 jlong pointer, jdouble x, jdouble y, jdouble width, jdouble height)
650 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
652 cairo_rectangle (gr->cr, x, y, width, height);
655 JNIEXPORT void JNICALL
656 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoArc
657 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
658 jlong pointer, jdouble x, jdouble y, jdouble radius, jdouble angle1,
661 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
663 cairo_arc (gr->cr, x, y, radius, angle1, angle2);
666 JNIEXPORT void JNICALL
667 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoClosePath
668 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
671 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
672 g_assert (gr != NULL);
674 cairo_close_path (gr->cr);
677 JNIEXPORT void JNICALL
678 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoStroke
679 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
682 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
683 g_assert (gr != NULL);
685 cairo_stroke (gr->cr);
688 JNIEXPORT void JNICALL
689 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoFill
690 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
691 jlong pointer, jdouble alpha)
693 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
694 g_assert (gr != NULL);
702 cairo_paint_with_alpha(gr->cr, alpha);
703 cairo_restore(gr->cr);
707 JNIEXPORT void JNICALL
708 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoClip
709 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
712 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
713 g_assert( gr != NULL );
715 cairo_clip( gr->cr );
718 JNIEXPORT void JNICALL
719 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoResetClip
720 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
723 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
724 g_assert (gr != NULL);
726 cairo_reset_clip( gr->cr );
729 JNIEXPORT void JNICALL
730 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoPreserveClip
731 (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
734 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
735 g_assert (gr != NULL);
737 cairo_clip_preserve( gr->cr );
740 JNIEXPORT void JNICALL
741 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawLine
742 (JNIEnv *env __attribute__ ((unused)), jobject obj __attribute__ ((unused)),
743 jlong pointer, jdouble x1, jdouble y1, jdouble x2, jdouble y2)
745 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
746 g_assert (gr != NULL);
748 cairo_new_path(gr->cr);
749 cairo_move_to(gr->cr, x1, y1);
750 cairo_line_to(gr->cr, x2, y2);
751 cairo_stroke(gr->cr);
754 JNIEXPORT void JNICALL
755 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawRect
756 (JNIEnv *env __attribute__ ((unused)), jobject obj __attribute__ ((unused)),
757 jlong pointer, jdouble x, jdouble y, jdouble w, jdouble h)
759 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
760 g_assert (gr != NULL);
762 cairo_new_path(gr->cr);
763 cairo_rectangle(gr->cr, x, y, w, h);
764 cairo_stroke(gr->cr);
767 JNIEXPORT void JNICALL
768 Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoFillRect
769 (JNIEnv *env __attribute__ ((unused)), jobject obj __attribute__ ((unused)),
770 jlong pointer, jdouble x, jdouble y, jdouble w, jdouble h)
772 struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
773 g_assert (gr != NULL);
775 cairo_new_path(gr->cr);
776 cairo_rectangle(gr->cr, x, y, w, h);
781 update_pattern_transform (struct cairographics2d *gr)
785 g_assert (gr != NULL);
786 if (gr->pattern == NULL)
789 cairo_get_matrix (gr->cr, &mat);
790 cairo_pattern_set_matrix (gr->pattern, &mat);