diff options
| author | chevalam <chevalam.s@samsung.com> | 2014-04-15 18:16:06 +0530 |
|---|---|---|
| committer | Bryce Harrington <b.harrington@samsung.com> | 2014-04-16 19:09:22 -0700 |
| commit | efbc73399e862e72063271983c643de4f0dd0604 (patch) | |
| tree | e4cbdcad0eb246cce23c5353571d81e931117f97 /src | |
| parent | 6ce3ba4a1e61d9cf396cea9a58fcb5e828ad45c4 (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.txt | 4 | ||||
| -rw-r--r-- | src/Shapes.h | 47 | ||||
| -rw-r--r-- | src/cairo-shapes.cpp | 57 | ||||
| -rw-r--r-- | src/cairo-shapes.h | 27 | ||||
| -rw-r--r-- | src/skia-shapes.cpp | 59 | ||||
| -rw-r--r-- | src/skia-shapes.h | 23 |
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 |