summaryrefslogtreecommitdiffstatsci
path: root/src
diff options
context:
space:
mode:
authorchevalam <chevalam.s@samsung.com>2014-04-15 18:16:06 +0530
committerBryce Harrington <b.harrington@samsung.com>2014-04-16 19:09:22 -0700
commitefbc73399e862e72063271983c643de4f0dd0604 (patch)
treee4cbdcad0eb246cce23c5353571d81e931117f97 /src
parent6ce3ba4a1e61d9cf396cea9a58fcb5e828ad45c4 (diff)
Issue#2 - Establish shared shapes code for cairo and skia tests
Signed-off-by: Bryce Harrington <b.harrington@samsung.com>
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt4
-rw-r--r--src/Shapes.h47
-rw-r--r--src/cairo-shapes.cpp57
-rw-r--r--src/cairo-shapes.h27
-rw-r--r--src/skia-shapes.cpp59
-rw-r--r--src/skia-shapes.h23
6 files changed, 216 insertions, 1 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 837b199..ab1c422 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,9 +1,11 @@
file(GLOB caskbench_SOURCES
caskbench.cpp
-
+ kinetics.cpp
image.cpp
cairo-image.cpp
skia-image.cpp
+ cairo-shapes.cpp
+ skia-shapes.cpp
cairo-tests/*.cpp
skia-tests/*.cpp
diff --git a/src/Shapes.h b/src/Shapes.h
new file mode 100644
index 0000000..bd2163a
--- /dev/null
+++ b/src/Shapes.h
@@ -0,0 +1,47 @@
+#ifndef __SHAPES_H_
+#define __SHAPES_H_
+#include <SkPath.h>
+typedef struct shapes
+{
+ double centre_x;
+ double centre_y;
+ double radius;
+ double width;
+ double height;
+ int numpoints;
+ double (*points)[2];
+ SkPath path;
+ SkRect rect;
+
+ int shape_id;
+ char* fill_type;
+ double red;
+ double green;
+ double blue;
+ double alpha;
+ int animation;
+ char *image_path;
+ int stroke_width;
+ int multi_shapes;
+
+ double stroke_red;
+ double stroke_green;
+ double stroke_blue;
+
+ int dash_style;
+ int cap_style;
+ int join_style;
+
+
+} shapes_t;
+
+enum Shapes
+{
+ Circle,
+ Rectangle,
+ Triangle,
+ Star,
+ RoundedRectangle
+};
+
+#endif
diff --git a/src/cairo-shapes.cpp b/src/cairo-shapes.cpp
new file mode 100644
index 0000000..4c774d9
--- /dev/null
+++ b/src/cairo-shapes.cpp
@@ -0,0 +1,57 @@
+#include "cairo-shapes.h"
+
+
+
+
+void cairoDrawCircle(caskbench_context_t *ctx, shapes_t *args)
+{
+ cairo_arc (ctx->cairo_cr, args->centre_x, args->centre_y, args->radius, 0, 2*M_PI);
+}
+
+void cairoDrawRectangle(caskbench_context_t *ctx, shapes_t *args)
+{
+ cairo_rectangle (ctx->cairo_cr, args->centre_x, args->centre_y, args->width, args->height);
+}
+
+void cairoDrawTriangle(caskbench_context_t *ctx, shapes_t *args)
+{
+ for (int p = 0; p < args->numpoints; p++ ) {
+ if(p == 0)
+ cairo_move_to (ctx->cairo_cr, args->points[p][0], args->points[0][1]);
+ else
+ cairo_rel_line_to (ctx->cairo_cr, args->points[p][0], args->points[p][1]);
+ }
+
+}
+
+void cairoDrawStar(caskbench_context_t *ctx, shapes_t *args)
+{
+ for (int p = 0; p < args->numpoints; p++ ) {
+ if(p == 0)
+ cairo_move_to (ctx->cairo_cr, args->points[p][0], args->points[0][1]);
+ else
+ cairo_line_to (ctx->cairo_cr, args->points[p][0], args->points[p][1]);
+ }
+ cairo_close_path(ctx->cairo_cr);
+}
+
+
+void
+cairoDrawRoundedRectangle (caskbench_context_t *ctx, shapes_t *args)
+{
+ cairo_move_to (ctx->cairo_cr, args->centre_x+args->radius, args->centre_y);
+ cairo_arc (ctx->cairo_cr, args->centre_x+args->width-args->radius, args->centre_y+args->radius, args->radius, M_PI + M_PI / 2, M_PI * 2 );
+ cairo_arc (ctx->cairo_cr, args->centre_x+args->width-args->radius, args->centre_y+args->height-args->radius, args->radius, 0, M_PI / 2 );
+ cairo_arc (ctx->cairo_cr, args->centre_x+args->radius, args->centre_y+args->height-args->radius, args->radius, M_PI/2, M_PI );
+ cairo_arc (ctx->cairo_cr, args->centre_x+args->radius, args->centre_y+args->radius, args->radius, M_PI, 270 * M_PI / 180);
+}
+
+
+void (*cairoShapes[5])(caskbench_context_t *ctx , shapes_t *args) = {
+ cairoDrawCircle,
+ cairoDrawRectangle,
+ cairoDrawTriangle,
+ cairoDrawStar,
+ cairoDrawRoundedRectangle
+ };
+
diff --git a/src/cairo-shapes.h b/src/cairo-shapes.h
new file mode 100644
index 0000000..52751f8
--- /dev/null
+++ b/src/cairo-shapes.h
@@ -0,0 +1,27 @@
+#ifndef __CAIRO_SHAPES_H_
+#define __CAIRO_SHAPES_H_
+
+#include "Shapes.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <cairo.h>
+#include <math.h>
+#include "cairo-shapes.h"
+#include "caskbench.h"
+
+void cairoDrawCircle(caskbench_context_t *ctx, shapes_t *args);
+
+void cairoDrawRectangle(caskbench_context_t *ctx, shapes_t *args);
+
+void cairoDrawTriangle(caskbench_context_t *ctx, shapes_t *args);
+
+void cairoDrawStar(caskbench_context_t *ctx, shapes_t *args);
+
+void cairoDrawRoundedRectangle (caskbench_context_t *ctx, shapes_t *args);
+
+extern void (*cairoShapes[5])(caskbench_context_t *ctx , shapes_t *args);
+
+
+
+
+#endif
diff --git a/src/skia-shapes.cpp b/src/skia-shapes.cpp
new file mode 100644
index 0000000..03fefd6
--- /dev/null
+++ b/src/skia-shapes.cpp
@@ -0,0 +1,59 @@
+#include "skia-shapes.h"
+
+void skiaDrawCircle(caskbench_context_t *ctx, shapes_t *args)
+{
+ ctx->skia_canvas->drawCircle(args->centre_x, args->centre_y, args->radius,
+ *(ctx->skia_paint));
+
+}
+
+void skiaDrawRectangle(caskbench_context_t *ctx, shapes_t *args)
+{
+ ctx->skia_canvas->drawRectCoords(args->centre_x, args->centre_y, args->width, args->height,
+ *(ctx->skia_paint));
+
+}
+
+void skiaDrawTriangle(caskbench_context_t *ctx, shapes_t *args)
+{
+
+ for (int p = 0; p < ctx->shape_args.numpoints ; p++ ) {
+ if(p == 0)
+ args->path.moveTo(args->points[p][0], args->points[p][1]);
+ else
+ args->path.rLineTo(args->points[p][0], args->points[p][1]);
+ }
+ ctx->skia_canvas->drawPath(args->path,
+ *(ctx->skia_paint));
+
+}
+
+void skiaDrawStar(caskbench_context_t *ctx, shapes_t *args)
+{
+
+ for (int p = 0; p < args->numpoints; p++ ) {
+ if(p == 0)
+ args->path.moveTo(args->points[p][0], args->points[p][1]);
+ else
+ args->path.lineTo(args->points[p][0], args->points[p][1]);
+ }
+ ctx->skia_canvas->drawPath(args->path,
+ *(ctx->skia_paint));
+}
+
+void skiaDrawRoundedRectangle (caskbench_context_t *ctx, shapes_t *args)
+{
+ args->rect.set(args->centre_x, args->centre_y, args->width, args->height);
+
+ ctx->skia_canvas->drawRoundRect(args->rect, 4.0, 4.0, *(ctx->skia_paint));
+
+}
+void (*skiaShapes[5])(caskbench_context_t *ctx , shapes_t *args) = {
+ skiaDrawCircle,
+ skiaDrawRectangle,
+ skiaDrawTriangle,
+ skiaDrawStar,
+ skiaDrawRoundedRectangle
+ };
+
+
diff --git a/src/skia-shapes.h b/src/skia-shapes.h
new file mode 100644
index 0000000..9c47bbd
--- /dev/null
+++ b/src/skia-shapes.h
@@ -0,0 +1,23 @@
+#ifndef __SKIA_SHAPES_H_
+#define __SKIA_SHAPES_H_
+
+#include "Shapes.h"
+#include <SkCanvas.h>
+#include <SkPaint.h>
+#include <cairo.h>
+#include <math.h>
+#include "caskbench.h"
+
+void skiaDrawCircle(caskbench_context_t *ctx, shapes_t *args);
+
+void skiaDrawRectangle(caskbench_context_t *ctx, shapes_t *args);
+
+void skiaDrawTriangle(caskbench_context_t *ctx, shapes_t *args);
+
+void skiaDrawStar(caskbench_context_t *ctx, shapes_t *args);
+
+void skiaDrawRoundedRectangle(caskbench_context_t *ctx, shapes_t *args);
+
+extern void (*skiaShapes[5])(caskbench_context_t *ctx , shapes_t *args);
+
+#endif