diff options
| author | chevalam <chevalam.s@samsung.com> | 2014-05-22 15:49:50 +0530 |
|---|---|---|
| committer | chevalam <chevalam.s@samsung.com> | 2014-05-22 15:49:50 +0530 |
| commit | 94026b7a41173090bcd71024338469bb2fcbd33d (patch) | |
| tree | 60349350157ee437ea7b08256a61957a7abe68dc /src | |
| parent | 42276c85ce2759bd6dfb1d6cdf13bf500886b3cb (diff) | |
Issue#52Break caskbench_context stuff out to its own file
Diffstat (limited to 'src')
| -rw-r--r-- | src/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | src/caskbench.cpp | 178 | ||||
| -rw-r--r-- | src/caskbench.h | 28 | ||||
| -rw-r--r-- | src/caskbench_context.cpp | 165 | ||||
| -rw-r--r-- | src/caskbench_context.h | 81 |
5 files changed, 248 insertions, 205 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index eb2b8a7..7f31af8 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,5 +1,6 @@ file(GLOB caskbench_SOURCES caskbench.cpp + caskbench_context.cpp kinetics.cpp image.cpp shapes.cpp diff --git a/src/caskbench.cpp b/src/caskbench.cpp index 44b9af2..a77d3c3 100644 --- a/src/caskbench.cpp +++ b/src/caskbench.cpp @@ -102,35 +102,6 @@ const char *gFillTypes[] = { NULL }; -// Backend-specific graphics initialization -cairo_surface_t * create_cairo_surface_image (const device_config_t& config); -void destroy_cairo_image(); -void update_cairo_image(); - -SkBaseDevice * create_skia_device_image (const device_config_t& config); -void destroy_skia_image(); -void update_skia_image(); - -#if USE_GLX -cairo_surface_t *create_cairo_surface_glx (const device_config_t& config); -void destroy_cairo_glx(); -void update_cairo_glx(); - -SkBaseDevice * create_skia_device_glx (const device_config_t& config); -void destroy_skia_glx(); -void update_skia_glx(); -#endif - -#if USE_EGL -cairo_surface_t * create_cairo_surface_egl (const device_config_t& config); -void destroy_cairo_egl(); -void update_cairo_egl(); - -SkBaseDevice * create_skia_device_egl (const device_config_t& config); -void destroy_skia_egl(); -void update_skia_egl(); -#endif - typedef enum { CB_STATUS_PASS, CB_STATUS_FAIL, @@ -347,155 +318,6 @@ convertToFillType(const char *fill_name) } void -context_init(caskbench_context_t *context, int size) -{ - assert(context); - assert(size > 0); - - context->size = size; - context->canvas_width = 800; - context->canvas_height = 400; - context->skia_device = NULL; - context->skia_paint = NULL; - - context->setup_cairo = NULL; - context->setup_skia = NULL; - context->destroy_cairo = NULL; - context->destroy_skia = NULL; - context->update_cairo = NULL; - context->update_skia = NULL; -} - -void -context_setup_cairo(caskbench_context_t *context, const device_config_t& config) -{ - if (config.surface_type == NULL || !strncmp(config.surface_type, "image", 5)) { - context->setup_cairo = create_cairo_surface_image; - context->destroy_cairo = destroy_cairo_image; - context->update_cairo = update_cairo_image; - } else if (!strncmp(config.surface_type, "glx", 3)) { -#if USE_GLX - context->setup_cairo = create_cairo_surface_glx; - context->destroy_cairo = destroy_cairo_glx; - context->update_cairo = update_cairo_glx; -#else - errx(1, "glx unsupported in this build\n"); -#endif - - } else if (!strncmp(config.surface_type, "egl", 3)) { -#if USE_EGL - context->setup_cairo = create_cairo_surface_egl; - context->destroy_cairo = destroy_cairo_egl; - context->update_cairo = update_cairo_egl; -#else - errx(1, "egl unsupported in this build\n"); -#endif - } - assert (context->setup_cairo); - assert (context->destroy_cairo); - assert (context->update_cairo); - - context->cairo_surface = context->setup_cairo(config); - if (!context->cairo_surface) - errx(2, "Could not create a cairo surface\n"); - - context->cairo_cr = cairo_create(context->cairo_surface); - - // Clear background to black - cairo_set_source_rgb (context->cairo_cr, 0, 0, 0); - cairo_paint (context->cairo_cr); - - // Enable anti-aliasing - cairo_set_antialias (context->cairo_cr, CAIRO_ANTIALIAS_DEFAULT); - - // Ease up Cairo's tessellation tolerance (default is 0.001) - cairo_set_tolerance (context->cairo_cr, 0.25); -} - -void -context_update_cairo(caskbench_context_t *context) -{ - context->update_cairo(); -} - -void -context_destroy_cairo(caskbench_context_t *context) -{ - if (!context) - return; - cairo_destroy(context->cairo_cr); - cairo_surface_destroy(context->cairo_surface); - context->destroy_cairo(); - context->cairo_cr = NULL; -} - -#ifdef USE_SKIA -void -context_setup_skia(caskbench_context_t *context, const device_config_t& config) -{ - if (config.surface_type == NULL || !strncmp(config.surface_type, "image", 5)) { - context->setup_skia = create_skia_device_image; - context->destroy_skia = destroy_skia_image; - context->update_skia = update_skia_image; - } else if (!strncmp(config.surface_type, "glx", 3)) { -#if USE_GLX - context->setup_skia = create_skia_device_glx; - context->destroy_skia = destroy_skia_glx; - context->update_skia = update_skia_glx; -#else - errx(1, "glx unsupported in this build\n"); -#endif - - } else if (!strncmp(config.surface_type, "egl", 3)) { -#if USE_EGL - context->setup_skia = create_skia_device_egl; - context->destroy_skia = destroy_skia_egl; - context->update_skia = update_skia_egl; -#else - errx(1, "egl unsupported in this build\n"); -#endif - } - - assert (context->setup_skia); - assert (context->destroy_skia); - assert (context->update_skia); - - context->skia_device = context->setup_skia(config); - if (!context->skia_device) - errx(2, "Could not create a skia device\n"); - - context->skia_paint = new SkPaint; - context->skia_canvas = new SkCanvas(context->skia_device); - - // Clear background to black - context->skia_canvas->clear(0); - context->skia_paint->setARGB(255, 0, 0, 0); - context->skia_canvas->drawPaint(*context->skia_paint); - - // Enable anti-aliasing - context->skia_paint->setAntiAlias(true); -} - -void -context_update_skia(caskbench_context_t *context) -{ - context->update_skia(); -} - -void -context_destroy_skia(caskbench_context_t *context) -{ - if (!context) - return; - delete context->skia_paint; - delete context->skia_canvas; - delete context->skia_device; - context->destroy_skia(); - context->skia_device = NULL; -} -#endif - -void shape_defaults_init(shapes *shape_defaults, caskbench_options_t *opt) { shape_defaults->x = opt->x_position; diff --git a/src/caskbench.h b/src/caskbench.h index afd80e2..ab00382 100644 --- a/src/caskbench.h +++ b/src/caskbench.h @@ -23,33 +23,7 @@ # define NUM_ELEM(x) (sizeof(x)/sizeof(x[0])) #endif -#include "shapes.h" -#include "forward.h" - -typedef struct _caskbench_context { - int size; - int canvas_width; - int canvas_height; - - cairo_t *cairo_cr; - cairo_surface_t *cairo_surface; - - SkPaint *skia_paint; - SkCanvas *skia_canvas; - SkBaseDevice *skia_device; - - cairo_surface_t *(*setup_cairo)(const device_config_t& config); - SkBaseDevice *(*setup_skia)(const device_config_t& config); - void (*destroy_cairo)(void); - void (*destroy_skia)(void); - void (*update_cairo)(void); - void (*update_skia)(void); - - const char *stock_image_path; - shapes_t shape_defaults; - -} caskbench_context_t; - +#include "caskbench_context.h" // Framework double get_tick (void); void display_results_json(int iterations, int status); diff --git a/src/caskbench_context.cpp b/src/caskbench_context.cpp new file mode 100644 index 0000000..fb2a655 --- /dev/null +++ b/src/caskbench_context.cpp @@ -0,0 +1,165 @@ +#include <config.h> +#include <assert.h> +#include <err.h> +#include "caskbench_context.h" + +#include <cairo.h> +#ifdef HAVE_CAIRO_GL_H +# include <cairo-gl.h> +#endif + +#ifdef USE_SKIA +# include <SkBitmap.h> +# include <SkBitmapDevice.h> +# include <SkPaint.h> +# include <SkCanvas.h> +#endif + +void +context_init(caskbench_context_t *context, int size) +{ + assert(context); + assert(size > 0); + + context->size = size; + context->canvas_width = 800; + context->canvas_height = 400; + context->skia_device = NULL; + context->skia_paint = NULL; + context->setup_cairo = NULL; + context->setup_skia = NULL; + context->destroy_cairo = NULL; + context->destroy_skia = NULL; + context->update_cairo = NULL; + context->update_skia = NULL; +} + +void +context_setup_cairo(caskbench_context_t *context, const device_config_t& config) +{ + if (config.surface_type == NULL || !strncmp(config.surface_type, "image", 5)) { + context->setup_cairo = create_cairo_surface_image; + context->destroy_cairo = destroy_cairo_image; + context->update_cairo = update_cairo_image; + } else if (!strncmp(config.surface_type, "glx", 3)) { +#if USE_GLX + context->setup_cairo = create_cairo_surface_glx; + context->destroy_cairo = destroy_cairo_glx; + context->update_cairo = update_cairo_glx; +#else + errx(1, "glx unsupported in this build\n"); +#endif + + } else if (!strncmp(config.surface_type, "egl", 3)) { +#if USE_EGL + context->setup_cairo = create_cairo_surface_egl; + context->destroy_cairo = destroy_cairo_egl; + context->update_cairo = update_cairo_egl; +#else + errx(1, "egl unsupported in this build\n"); +#endif + } + assert (context->setup_cairo); + assert (context->destroy_cairo); + assert (context->update_cairo); + + context->cairo_surface = context->setup_cairo(config); + if (!context->cairo_surface) + errx(2, "Could not create a cairo surface\n"); + + context->cairo_cr = cairo_create(context->cairo_surface); + + // Clear background to black + cairo_set_source_rgb (context->cairo_cr, 0, 0, 0); + cairo_paint (context->cairo_cr); + + // Enable anti-aliasing + cairo_set_antialias (context->cairo_cr, CAIRO_ANTIALIAS_DEFAULT); + + // Ease up Cairo's tessellation tolerance (default is 0.001) + cairo_set_tolerance (context->cairo_cr, 0.25); +} + +void +context_update_cairo(caskbench_context_t *context) +{ + context->update_cairo(); +} + +void +context_destroy_cairo(caskbench_context_t *context) +{ + if (!context) + return; + cairo_destroy(context->cairo_cr); + cairo_surface_destroy(context->cairo_surface); + context->destroy_cairo(); + context->cairo_cr = NULL; +} + +#ifdef USE_SKIA +void +context_setup_skia(caskbench_context_t *context, const device_config_t& config) +{ + if (config.surface_type == NULL || !strncmp(config.surface_type, "image", 5)) { + context->setup_skia = create_skia_device_image; + context->destroy_skia = destroy_skia_image; + context->update_skia = update_skia_image; + } else if (!strncmp(config.surface_type, "glx", 3)) { +#if USE_GLX + context->setup_skia = create_skia_device_glx; + context->destroy_skia = destroy_skia_glx; + context->update_skia = update_skia_glx; +#else + errx(1, "glx unsupported in this build\n"); +#endif + + } else if (!strncmp(config.surface_type, "egl", 3)) { +#if USE_EGL + context->setup_skia = create_skia_device_egl; + context->destroy_skia = destroy_skia_egl; + context->update_skia = update_skia_egl; +#else + errx(1, "egl unsupported in this build\n"); +#endif + } + + assert (context->setup_skia); + assert (context->destroy_skia); + assert (context->update_skia); + + context->skia_device = context->setup_skia(config); + if (!context->skia_device) + errx(2, "Could not create a skia device\n"); + + context->skia_paint = new SkPaint; + context->skia_canvas = new SkCanvas(context->skia_device); + + // Clear background to black + context->skia_canvas->clear(0); + context->skia_paint->setARGB(255, 0, 0, 0); + context->skia_canvas->drawPaint(*context->skia_paint); + + // Enable anti-aliasing + context->skia_paint->setAntiAlias(true); +} + +void +context_update_skia(caskbench_context_t *context) +{ + context->update_skia(); +} + +void +context_destroy_skia(caskbench_context_t *context) +{ + if (!context) + return; + delete context->skia_paint; + delete context->skia_canvas; + delete context->skia_device; + context->destroy_skia(); + context->skia_device = NULL; +} +#endif + diff --git a/src/caskbench_context.h b/src/caskbench_context.h new file mode 100644 index 0000000..86a9fd7 --- /dev/null +++ b/src/caskbench_context.h @@ -0,0 +1,81 @@ +#ifndef __CASKBENCH_CONTEXT_H__ // -*- mode: c++ -*- +#define __CASKBENCH_CONTEXT_H__ +#include "shapes.h" +#include "forward.h" +#include "device_config.h" + +typedef struct _caskbench_context { + int size; + int canvas_width; + int canvas_height; + + cairo_t *cairo_cr; + cairo_surface_t *cairo_surface; + + SkPaint *skia_paint; + SkCanvas *skia_canvas; + SkBaseDevice *skia_device; + + cairo_surface_t *(*setup_cairo)(const device_config_t& config); + SkBaseDevice *(*setup_skia)(const device_config_t& config); + void (*destroy_cairo)(void); + void (*destroy_skia)(void); + void (*update_cairo)(void); + void (*update_skia)(void); + + const char *stock_image_path; + shapes_t shape_defaults; + +} caskbench_context_t; + +// Backend-specific graphics initialization +cairo_surface_t * create_cairo_surface_image (const device_config_t& config); +void destroy_cairo_image(); +void update_cairo_image(); + +SkBaseDevice * create_skia_device_image (const device_config_t& config); +void destroy_skia_image(); +void update_skia_image(); + +#if USE_GLX +cairo_surface_t *create_cairo_surface_glx (const device_config_t& config); +void destroy_cairo_glx(); +void update_cairo_glx(); + +SkBaseDevice * create_skia_device_glx (const device_config_t& config); +void destroy_skia_glx(); +void update_skia_glx(); +#endif + +#if USE_EGL +cairo_surface_t * create_cairo_surface_egl (const device_config_t& config); +void destroy_cairo_egl(); +void update_cairo_egl(); + +SkBaseDevice * create_skia_device_egl (const device_config_t& config); +void destroy_skia_egl(); +void update_skia_egl(); +#endif + + +// Context initialization and management +void context_init(caskbench_context_t *context, int size); +void context_setup_cairo(caskbench_context_t *context, const device_config_t& config); +void context_update_cairo(caskbench_context_t *context); +void context_destroy_cairo(caskbench_context_t *context); +void context_setup_skia(caskbench_context_t *context, const device_config_t& config); +void context_update_skia(caskbench_context_t *context); +void context_destroy_skia(caskbench_context_t *context); +#endif // __CASKBENCH_CONTEXT_H__ + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : + |