reflected-stroke.c [plain text]
#include "cairo-test.h"
static void
draw_symbol (cairo_t *cr)
{
double dash[] = {6, 3};
cairo_rectangle (cr, -25, -25, 50, 50);
cairo_stroke (cr);
cairo_move_to (cr, 0, -25);
cairo_curve_to (cr, 12.5, -12.5, 12.5, -12.5, 0, 0);
cairo_curve_to (cr, -12.5, 12.5, -12.5, 12.5, 0, 25);
cairo_curve_to (cr, 12.5, 12.5, 12.5, 12.5, 0, 0);
cairo_stroke (cr);
cairo_save (cr);
cairo_set_dash (cr, dash, sizeof (dash) / sizeof (dash[0]), 0.);
cairo_move_to (cr, 0, 0);
cairo_arc (cr, 0, 0, 12.5, 0, 3 * M_PI / 2);
cairo_close_path (cr);
cairo_stroke (cr);
cairo_restore (cr);
}
static cairo_test_status_t
draw (cairo_t *cr, int width, int height)
{
cairo_set_source_rgb (cr, 1, 1, 1);
cairo_paint (cr);
cairo_set_source_rgb (cr, 0, 0, 0);
cairo_save (cr);
cairo_translate (cr, 50, 50);
cairo_scale (cr, 1, 1);
draw_symbol (cr);
cairo_restore (cr);
cairo_save (cr);
cairo_translate (cr, 150, 50);
cairo_scale (cr, -1, 1);
draw_symbol (cr);
cairo_restore (cr);
cairo_save (cr);
cairo_translate (cr, 150, 150);
cairo_scale (cr, -1, -1);
draw_symbol (cr);
cairo_restore (cr);
cairo_save (cr);
cairo_translate (cr, 50, 150);
cairo_scale (cr, 1, -1);
draw_symbol (cr);
cairo_restore (cr);
return CAIRO_TEST_SUCCESS;
}
CAIRO_TEST (reflected_stroke,
"Exercises the stroker with a reflected ctm",
"stroke, transform",
NULL,
200, 200,
NULL, draw)