diff options
author | Owen Taylor <otaylor@redhat.com> | 2005-05-07 18:05:17 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2005-05-07 18:05:17 +0000 |
commit | e174de1f25a84cae71518bfc5ac0f82e4cda964e (patch) | |
tree | 9d28624c016a505aaac889bda493b25f08cda47f /examples | |
parent | cdc77f57773bfb4639f15b77a14736658a3d9926 (diff) | |
download | pango-e174de1f25a84cae71518bfc5ac0f82e4cda964e.tar.gz |
Update for Cairo API changes.
2005-05-07 Owen Taylor <otaylor@redhat.com>
* pango/pangocairo-fontmap.c pango/pangocairo-render.c
examples/cairosimple.c pango/pangocairo-fcfont.c
examples/cairoview.c: Update for Cairo API changes.
Diffstat (limited to 'examples')
-rw-r--r-- | examples/cairosimple.c | 19 | ||||
-rw-r--r-- | examples/cairoview.c | 54 |
2 files changed, 41 insertions, 32 deletions
diff --git a/examples/cairosimple.c b/examples/cairosimple.c index 5ac00b39..27aaf044 100644 --- a/examples/cairosimple.c +++ b/examples/cairosimple.c @@ -35,7 +35,7 @@ draw_text (cairo_t *cr) /* Gradient from red at angle == 60 to blue at angle == 300 */ red = (1 + cos ((angle - 60) * G_PI / 180.)) / 2; - cairo_set_rgb_color (cr, red, 0, 1.0 - red); + cairo_set_source_rgb (cr, red, 0, 1.0 - red); cairo_rotate (cr, angle * G_PI / 180.); @@ -58,6 +58,7 @@ int main (int argc, char **argv) cairo_t *cr; char *filename; cairo_status_t status; + cairo_surface_t *surface; if (argc != 2) { @@ -67,17 +68,19 @@ int main (int argc, char **argv) filename = argv[1]; - cr = cairo_create(); - cairo_set_target_image_no_data (cr, - CAIRO_FORMAT_ARGB32, - 2 * RADIUS, 2 * RADIUS); + surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, + 2 * RADIUS, 2 * RADIUS); + cr = cairo_create (surface); + - cairo_set_rgb_color (cr, 1.0, 1.0, 1.0); + cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); cairo_rectangle (cr, 0, 0, 2 * RADIUS, 2 * RADIUS); cairo_fill (cr); draw_text (cr); + cairo_destroy (cr); - status = cairo_surface_write_to_png (cairo_get_target_surface (cr), filename); + status = cairo_surface_write_to_png (surface, filename); + cairo_surface_destroy (surface); if (status != CAIRO_STATUS_SUCCESS) { @@ -85,7 +88,5 @@ int main (int argc, char **argv) return 1; } - cairo_destroy (cr); - return 0; } diff --git a/examples/cairoview.c b/examples/cairoview.c index 96c39886..356efd95 100644 --- a/examples/cairoview.c +++ b/examples/cairoview.c @@ -61,7 +61,7 @@ do_cairo_render (PangoLayout *layout, if (show_borders) { PangoRectangle ink, logical; - double lw = cairo_current_line_width (cr); + double lw = cairo_get_line_width (cr); pango_layout_get_extents (layout, &ink, &logical); @@ -94,27 +94,27 @@ do_cairo_transform (PangoContext *context, gpointer data) { RenderData *render_data = data; - cairo_matrix_t *cairo_matrix = cairo_matrix_create (); + cairo_matrix_t cairo_matrix; if (matrix) { - cairo_matrix_set_affine (cairo_matrix, - matrix->xx, matrix->yx, - matrix->xy, matrix->yy, - matrix->x0 + render_data->x_offset, - matrix->y0 + render_data->y_offset); + cairo_matrix.xx = matrix->xx; + cairo_matrix.yx = matrix->yx; + cairo_matrix.xy = matrix->xy; + cairo_matrix.yy = matrix->yy; + cairo_matrix.x0 = matrix->x0; + cairo_matrix.y0 = matrix->y0; } else { - cairo_matrix_set_affine (cairo_matrix, - 1.0, 0, - 0, 1.0, - render_data->x_offset, - render_data->y_offset); + cairo_matrix_init_identity (&cairo_matrix); } - cairo_set_matrix (render_data->cr, cairo_matrix); - cairo_matrix_destroy (cairo_matrix); + cairo_matrix_translate (&cairo_matrix, + render_data->x_offset, + render_data->y_offset); + + cairo_set_matrix (render_data->cr, &cairo_matrix); pango_context_set_matrix (context, matrix); pango_cairo_update_context (render_data->cr, context); @@ -124,6 +124,7 @@ void update () { RenderData render_data; + cairo_surface_t *surface; cairo_t *cr; Pixmap pixmap; GC gc; @@ -135,13 +136,14 @@ update () /* Create a temporary pixmap and a Cairo context pointing to it */ extents = pixman_region_extents (update_region); - pixmap = XCreatePixmap (display, window, - extents->x2 - extents->x1, - extents->y2 - extents->y1, - DefaultDepth (display, screen)); + surface = cairo_xlib_surface_create_for_pixmap_with_visual (display, + pixmap, + DefaultVisual (display, screen)); + - cr = render_data.cr = cairo_create(); - cairo_set_target_drawable (cr, display, pixmap); + cr = render_data.cr = cairo_create (surface); + cairo_surface_destroy (surface); + render_data.x_offset = - extents->x1; render_data.y_offset = - extents->y1; @@ -164,11 +166,11 @@ update () } cairo_clip (cr); - cairo_set_rgb_color (cr, 1.0, 1.0, 1.0); + cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); cairo_paint (cr); /* Draw the text in black */ - cairo_set_rgb_color (cr, 0.0, 0.0, 0.0); + cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); do_output (context, do_cairo_render, do_cairo_transform, &render_data, NULL, NULL); cairo_destroy (cr); @@ -209,6 +211,7 @@ int main (int argc, char **argv) RenderData render_data; unsigned int quit_keycode; unsigned int borders_keycode; + cairo_surface_t *surface; g_type_init(); @@ -222,7 +225,12 @@ int main (int argc, char **argv) fontmap = pango_cairo_font_map_get_default (); context = pango_cairo_font_map_create_context (PANGO_CAIRO_FONT_MAP (fontmap)); - render_data.cr = cairo_create (); + /* This is annoying ... we have to create a temporary surface just to + * get the extents of the text. + */ + surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, 1, 1); + render_data.cr = cairo_create (surface); + cairo_surface_destroy (surface); render_data.x_offset = 0; render_data.y_offset = 0; do_output (context, NULL, do_cairo_transform, &render_data, &width, &height); |