You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.4 KiB
53 lines
1.4 KiB
11 years ago
|
/* Taken from http://cairographics.org/samples/ */
|
||
|
|
||
|
|
||
|
#include <cairo.h>
|
||
|
#include <math.h>
|
||
|
#include <stdio.h>
|
||
|
|
||
|
int main(int argc, char *argv[])
|
||
|
{
|
||
|
char *filename;
|
||
|
if (argc != 2)
|
||
|
{
|
||
|
fprintf (stderr, "Usage: %s OUTPUT_FILENAME\n", argv[0]);
|
||
|
return 1;
|
||
|
}
|
||
|
filename = argv[1];
|
||
|
double xc = 128.0;
|
||
|
double yc = 128.0;
|
||
|
double radius = 100.0;
|
||
|
double angle1 = 45.0 * (M_PI/180.0); /* angles are specified */
|
||
|
double angle2 = 180.0 * (M_PI/180.0); /* in radians */
|
||
|
|
||
|
cairo_surface_t *im = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, xc * 2, yc * 2);
|
||
|
cairo_t *cr = cairo_create(im);
|
||
|
|
||
|
|
||
|
cairo_set_line_width (cr, 10.0);
|
||
|
cairo_arc (cr, xc, yc, radius, angle1, angle2);
|
||
|
cairo_stroke (cr);
|
||
|
|
||
|
/* draw helping lines */
|
||
|
cairo_set_source_rgba (cr, 1, 0.2, 0.2, 0.6);
|
||
|
cairo_set_line_width (cr, 6.0);
|
||
|
|
||
|
cairo_arc (cr, xc, yc, 10.0, 0, 2*M_PI);
|
||
|
cairo_fill (cr);
|
||
|
|
||
|
cairo_arc (cr, xc, yc, radius, angle1, angle1);
|
||
|
cairo_line_to (cr, xc, yc);
|
||
|
cairo_arc (cr, xc, yc, radius, angle2, angle2);
|
||
|
cairo_line_to (cr, xc, yc);
|
||
|
cairo_stroke (cr);
|
||
|
|
||
|
cairo_status_t status = cairo_surface_write_to_png (im, filename);
|
||
|
cairo_surface_destroy (im);
|
||
|
if (status != CAIRO_STATUS_SUCCESS) {
|
||
|
fprintf(stderr, "Could not save png to '%s'\n", filename);
|
||
|
}
|
||
|
|
||
|
cairo_destroy(cr);
|
||
|
return 0;
|
||
|
}
|