void gp_tetragon(gp_pixmap *pixmap, gp_coord x0, gp_coord y0, gp_coord x1, gp_coord y1, gp_coord x2, gp_coord y2, gp_coord x3, gp_coord y3, gp_pixel pixel) { GP_CHECK_PIXMAP(pixmap); GP_TRANSFORM_POINT(pixmap, x0, y0); GP_TRANSFORM_POINT(pixmap, x1, y1); GP_TRANSFORM_POINT(pixmap, x2, y2); GP_TRANSFORM_POINT(pixmap, x3, y3); gp_tetragon_raw(pixmap, x0, y0, x1, y1, x2, y2, x3, y3, pixel); }
void gp_fill_tetragon(gp_pixmap *pixmap, gp_coord x0, gp_coord y0, gp_coord x1, gp_coord y1, gp_coord x2, gp_coord y2, gp_coord x3, gp_coord y3, gp_pixel pixel) { GP_CHECK_PIXMAP(pixmap); GP_TRANSFORM_POINT(pixmap, x0, y0); GP_TRANSFORM_POINT(pixmap, x1, y1); GP_TRANSFORM_POINT(pixmap, x2, y2); GP_TRANSFORM_POINT(pixmap, x3, y3); const gp_coord xy[8] = {x0, y0, x1, y1, x2, y2, x3, y3}; gp_fill_polygon_raw(pixmap, 4, xy, pixel); }
void GP_FillRing(GP_Context *context, GP_Coord xcenter, GP_Coord ycenter, GP_Size r1, GP_Size r2, GP_Pixel pixel) { GP_CHECK_CONTEXT(context); GP_TRANSFORM_POINT(context, xcenter, ycenter); GP_FillRing_Raw(context, xcenter, ycenter, r1, r2, pixel); }
void GP_Circle(GP_Context *context, GP_Coord xcenter, GP_Coord ycenter, GP_Size r, GP_Pixel pixel) { GP_CHECK_CONTEXT(context); GP_TRANSFORM_POINT(context, xcenter, ycenter); GP_Circle_Raw(context, xcenter, ycenter, r, pixel); }
void gp_fill_circle_seg(gp_pixmap *pixmap, gp_coord xcenter, gp_coord ycenter, gp_size r, uint8_t seg_flag, gp_pixel pixel) { GP_CHECK_PIXMAP(pixmap); GP_TRANSFORM_POINT(pixmap, xcenter, ycenter); gp_fill_circle_seg_raw(pixmap, xcenter, ycenter, r, transform_segments(pixmap, seg_flag), pixel); }
void GP_PartialEllipse(GP_Context *context, GP_Coord xcenter, GP_Coord ycenter, GP_Size a, GP_Size b, int start, int end, GP_Pixel pixel) { GP_CHECK_CONTEXT(context); /* recalculate center point and swap a and b when axes are swapped */ GP_TRANSFORM_POINT(context, xcenter, ycenter); GP_TRANSFORM_SWAP(context, a, b); GP_PartialEllipse_Raw(context, xcenter, ycenter, a, b, start, end, pixel); }
void GP_Polygon(GP_Context *context, unsigned int vertex_count, const GP_Coord *xy, GP_Pixel pixel) { unsigned int i; GP_Coord prev_x = xy[2 * vertex_count - 2]; GP_Coord prev_y = xy[2 * vertex_count - 1]; GP_TRANSFORM_POINT(context, prev_x, prev_y); for (i = 0; i < vertex_count; i++) { GP_Coord x = xy[2 * i]; GP_Coord y = xy[2 * i + 1]; GP_TRANSFORM_POINT(context, x, y); GP_Line_Raw(context, prev_x, prev_y, x, y, pixel); prev_x = x; prev_y = y; } }
void gp_polygon(gp_pixmap *pixmap, unsigned int vertex_count, const gp_coord *xy, gp_pixel pixel) { unsigned int i; gp_coord prev_x = xy[2 * vertex_count - 2]; gp_coord prev_y = xy[2 * vertex_count - 1]; GP_TRANSFORM_POINT(pixmap, prev_x, prev_y); for (i = 0; i < vertex_count; i++) { gp_coord x = xy[2 * i]; gp_coord y = xy[2 * i + 1]; GP_TRANSFORM_POINT(pixmap, x, y); gp_line_raw(pixmap, prev_x, prev_y, x, y, pixel); prev_x = x; prev_y = y; } }
void GP_FillPolygon(GP_Context *context, unsigned int vertex_count, const GP_Coord *xy, GP_Pixel pixel) { unsigned int i; GP_Coord xy_copy[2 * vertex_count]; for (i = 0; i < vertex_count; i++) { unsigned int x = 2 * i; unsigned int y = 2 * i + 1; xy_copy[x] = xy[x]; xy_copy[y] = xy[y]; GP_TRANSFORM_POINT(context, xy_copy[x], xy_copy[y]); } GP_FillPolygon_Raw(context, vertex_count, xy_copy, pixel); }
void gp_fill_polygon(gp_pixmap *pixmap, unsigned int vertex_count, const gp_coord *xy, gp_pixel pixel) { unsigned int i; gp_coord xy_copy[2 * vertex_count]; for (i = 0; i < vertex_count; i++) { unsigned int x = 2 * i; unsigned int y = 2 * i + 1; xy_copy[x] = xy[x]; xy_copy[y] = xy[y]; GP_TRANSFORM_POINT(pixmap, xy_copy[x], xy_copy[y]); } gp_fill_polygon_raw(pixmap, vertex_count, xy_copy, pixel); }