summaryrefslogtreecommitdiffstatsci
path: root/src
diff options
context:
space:
mode:
authorBryce Harrington <b.harrington@samsung.com>2014-05-29 18:31:36 -0700
committerBryce Harrington <b.harrington@samsung.com>2014-05-29 18:37:47 -0700
commit70c7d5de65c643fe6e8baf7cdd7ff7e073d4712a (patch)
tree2a8ba4cb38caf580cd3f662ce21bad18fd85231e /src
parenta60536ac868d22562a62ee6f4026dd6cc5df4daf (diff)
shapes: Add lines and curves
Diffstat (limited to 'src')
-rw-r--r--src/cairo-shapes.cpp36
-rw-r--r--src/caskbench.cpp4
-rw-r--r--src/shapes.h4
-rw-r--r--src/skia-shapes.cpp36
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,