diff options
| author | Bryce Harrington <b.harrington@samsung.com> | 2014-05-29 18:31:36 -0700 |
|---|---|---|
| committer | Bryce Harrington <b.harrington@samsung.com> | 2014-05-29 18:37:47 -0700 |
| commit | 70c7d5de65c643fe6e8baf7cdd7ff7e073d4712a (patch) | |
| tree | 2a8ba4cb38caf580cd3f662ce21bad18fd85231e /src | |
| parent | a60536ac868d22562a62ee6f4026dd6cc5df4daf (diff) | |
shapes: Add lines and curves
Diffstat (limited to 'src')
| -rw-r--r-- | src/cairo-shapes.cpp | 36 | ||||
| -rw-r--r-- | src/caskbench.cpp | 4 | ||||
| -rw-r--r-- | src/shapes.h | 4 | ||||
| -rw-r--r-- | src/skia-shapes.cpp | 36 |
4 files changed, 79 insertions, 1 deletions
diff --git a/src/cairo-shapes.cpp b/src/cairo-shapes.cpp index 3cb8b4b..3a17193 100644 --- a/src/cairo-shapes.cpp +++ b/src/cairo-shapes.cpp @@ -71,7 +71,41 @@ cairoRandomizeColor(caskbench_context_t *ctx) cairo_set_source_rgba (ctx->cairo_cr, red, green, blue, alpha); } -void cairoDrawCircle(caskbench_context_t *ctx, shapes_t *args) +void +cairoDrawLine(caskbench_context_t *ctx, shapes_t *args) +{ + cairo_move_to (ctx->cairo_cr, args->x, args->y); + cairo_rel_line_to (ctx->cairo_cr, args->width, args->height); +} + +void +cairoDrawQuadraticCurve(caskbench_context_t *ctx, shapes_t *args) +{ + double qx1 = args->dx1 * 2.0 / 3.0; + double qy1 = args->dy1 * 2.0 / 3.0; + + double qx2 = args->width - args->dx1 * 2.0 / 3.0; + double qy2 = args->height - args->dy1 * 2.0 / 3.0; + + cairo_move_to (ctx->cairo_cr, args->x, args->y); + cairo_rel_curve_to (ctx->cairo_cr, + qx1, qy1, + qx2, qy2, + args->width, args->height); +} + +void +cairoDrawCubicCurve(caskbench_context_t *ctx, shapes_t *args) +{ + cairo_move_to (ctx->cairo_cr, args->x, args->y); + cairo_rel_curve_to (ctx->cairo_cr, + args->dx1, args->dy1, + args->dx2, args->dy2, + args->width, args->height); +} + +void +cairoDrawCircle(caskbench_context_t *ctx, shapes_t *args) { cairo_arc (ctx->cairo_cr, args->x + args->radius, diff --git a/src/caskbench.cpp b/src/caskbench.cpp index 2a83f91..acde1b7 100644 --- a/src/caskbench.cpp +++ b/src/caskbench.cpp @@ -331,6 +331,10 @@ shape_defaults_init(shapes *shape_defaults, caskbench_options_t *opt) { shape_defaults->x = opt->x_position; shape_defaults->y = opt->y_position; + shape_defaults->dx1 = 0; + shape_defaults->dy1 = 0; + shape_defaults->dx2 = 0; + shape_defaults->dy2 = 0; shape_defaults->width = opt->width; shape_defaults->height = opt->height; shape_defaults->shape_type = convertToShapeType(opt->shape_name); diff --git a/src/shapes.h b/src/shapes.h index bf9bacf..ba68e2b 100644 --- a/src/shapes.h +++ b/src/shapes.h @@ -34,6 +34,10 @@ typedef struct shapes double radius; double width; double height; + double dx1; + double dy1; + double dx2; + double dy2; shape_type_t shape_type; fill_type_t fill_type; diff --git a/src/skia-shapes.cpp b/src/skia-shapes.cpp index c646f53..30ce8b6 100644 --- a/src/skia-shapes.cpp +++ b/src/skia-shapes.cpp @@ -81,6 +81,42 @@ skiaCreateBitmapShader(const char *image_path) } void +skiaDrawLine(caskbench_context_t *ctx, shapes_t *args) +{ + SkPath path; + + path.moveTo(args->x, args->y); + path.rLineTo(args->width, args->height); + + ctx->skia_canvas->drawPath(path, *(ctx->skia_paint)); +} + +void +skiaDrawQuadraticCurve(caskbench_context_t *ctx, shapes_t *args) +{ + SkPath path; + + path.moveTo(args->x, args->y); + path.rQuadTo(args->dx1, args->dy1, + args->width, args->height); + + ctx->skia_canvas->drawPath(path, *(ctx->skia_paint)); +} + +void +skiaDrawCubicCurve(caskbench_context_t *ctx, shapes_t *args) +{ + SkPath path; + + path.moveTo(args->x, args->y); + path.rCubicTo(args->dx1, args->dy1, + args->dx2, args->dy2, + args->width, args->height); + + ctx->skia_canvas->drawPath(path, *(ctx->skia_paint)); +} + +void skiaDrawCircle(caskbench_context_t *ctx, shapes_t *args) { ctx->skia_canvas->drawCircle(args->x + args->radius, |