summaryrefslogtreecommitdiffstatsci
path: root/src
diff options
context:
space:
mode:
authorchevalam <chevalam.s@samsung.com>2014-05-22 15:49:50 +0530
committerchevalam <chevalam.s@samsung.com>2014-05-22 15:49:50 +0530
commit94026b7a41173090bcd71024338469bb2fcbd33d (patch)
tree60349350157ee437ea7b08256a61957a7abe68dc /src
parent42276c85ce2759bd6dfb1d6cdf13bf500886b3cb (diff)
Issue#52Break caskbench_context stuff out to its own file
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/caskbench.cpp178
-rw-r--r--src/caskbench.h28
-rw-r--r--src/caskbench_context.cpp165
-rw-r--r--src/caskbench_context.h81
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 :
+