[seed] cairo: Move matrix code in to seed-cairo-matrix.c so additional functions can be added, and it can b
- From: Robert Carr <racarr src gnome org>
- To: svn-commits-list gnome org
- Subject: [seed] cairo: Move matrix code in to seed-cairo-matrix.c so additional functions can be added, and it can b
- Date: Thu, 14 May 2009 22:57:56 -0400 (EDT)
commit c1562d31209d1ef5c88aecefd1b8240ddd163ced
Author: Robert Carr <racarr svn gnome org>
Date: Thu May 14 13:59:26 2009 -0400
cairo: Move matrix code in to seed-cairo-matrix.c so additional functions can be added, and it can be used by the soon to be seed-cairo-pattern.c
---
modules/cairo/Makefile.am | 1 +
modules/cairo/seed-cairo-matrix.c | 58 +++++++++++++++++++++++++++++++++++++
modules/cairo/seed-cairo-matrix.h | 14 +++++++++
modules/cairo/seed-cairo.c | 37 ++---------------------
4 files changed, 76 insertions(+), 34 deletions(-)
diff --git a/modules/cairo/Makefile.am b/modules/cairo/Makefile.am
index 551e677..cdf797f 100644
--- a/modules/cairo/Makefile.am
+++ b/modules/cairo/Makefile.am
@@ -10,6 +10,7 @@ libcairo_la_SOURCES = \
seed-cairo.c \
seed-cairo-surface.c \
seed-cairo-image-surface.c \
+ seed-cairo-matrix.c \
seed-cairo-enums.c
libcairo_la_CFLAGS = \
diff --git a/modules/cairo/seed-cairo-matrix.c b/modules/cairo/seed-cairo-matrix.c
new file mode 100644
index 0000000..61a5a00
--- /dev/null
+++ b/modules/cairo/seed-cairo-matrix.c
@@ -0,0 +1,58 @@
+#include <seed.h>
+#include <cairo/cairo.h>
+
+#include "seed-cairo.h"
+SeedClass seed_matrix_class;
+
+seed_static_function matrix_funcs[] = {
+ {0, 0, 0}
+};
+
+SeedValue
+seed_value_from_cairo_matrix (SeedContext ctx,
+ const cairo_matrix_t *matrix,
+ SeedException *exception)
+{
+ SeedValue elems[6];
+
+ elems[0] = seed_value_from_double(ctx, matrix->xx, exception);
+ elems[1] = seed_value_from_double(ctx, matrix->yx, exception);
+ elems[2] = seed_value_from_double(ctx, matrix->xy, exception);
+ elems[3] = seed_value_from_double(ctx, matrix->yy, exception);
+ elems[4] = seed_value_from_double(ctx, matrix->x0, exception);
+ elems[5] = seed_value_from_double(ctx, matrix->y0, exception);
+
+ return seed_make_array (ctx, elems, 6, exception);
+}
+
+gboolean
+seed_value_to_cairo_matrix (SeedContext ctx,
+ SeedValue value,
+ cairo_matrix_t *matrix,
+ SeedException *exception)
+{
+ if (!seed_value_is_object (ctx, value))
+ return FALSE;
+
+ matrix->xx = seed_value_to_double (ctx, seed_object_get_property_at_index (ctx, (SeedObject) value, 0, exception), exception);
+ matrix->yx = seed_value_to_double (ctx, seed_object_get_property_at_index (ctx, (SeedObject) value, 1, exception), exception);
+ matrix->xy = seed_value_to_double (ctx, seed_object_get_property_at_index (ctx, (SeedObject) value, 2, exception), exception);
+ matrix->yy = seed_value_to_double (ctx, seed_object_get_property_at_index (ctx, (SeedObject) value, 3, exception), exception);
+ matrix->x0 = seed_value_to_double (ctx, seed_object_get_property_at_index (ctx, (SeedObject) value, 4, exception), exception);
+ matrix->y0 = seed_value_to_double (ctx, seed_object_get_property_at_index (ctx, (SeedObject) value, 5, exception), exception);
+
+ return TRUE;
+}
+
+void
+seed_define_cairo_matrix (SeedContext ctx,
+ SeedObject namespace_ref)
+{
+ seed_class_definition matrix_def = seed_empty_class;
+
+ matrix_def.class_name = "Matrix";
+ matrix_def.static_functions = matrix_funcs;
+ seed_matrix_class = seed_create_class (&matrix_def);
+
+ seed_object_set_property (ctx, namespace_ref, "Matrix", seed_make_object (ctx, seed_matrix_class, NULL));
+}
diff --git a/modules/cairo/seed-cairo-matrix.h b/modules/cairo/seed-cairo-matrix.h
new file mode 100644
index 0000000..ffcf7f7
--- /dev/null
+++ b/modules/cairo/seed-cairo-matrix.h
@@ -0,0 +1,14 @@
+#ifndef _SEED_MATRIX_H
+#define _SEED_MATRIX_H
+#include <seed.h>
+#include <cairo/cairo.h>
+
+void seed_define_cairo_matrix (SeedContext ctx, SeedObject namespace_ref);
+
+gboolean seed_value_to_cairo_matrix (SeedContext ctx, SeedValue value,
+ cairo_matrix_t *matrix, SeedException *exception);
+
+SeedValue seed_value_from_cairo_matrix (SeedContext ctx, const cairo_matrix_t *matrix,
+ SeedException *exception);
+
+#endif
diff --git a/modules/cairo/seed-cairo.c b/modules/cairo/seed-cairo.c
index ba73206..9b04be6 100644
--- a/modules/cairo/seed-cairo.c
+++ b/modules/cairo/seed-cairo.c
@@ -4,6 +4,7 @@
#include "seed-cairo-surface.h"
#include "seed-cairo-image-surface.h"
#include "seed-cairo-enums.h"
+#include "seed-cairo-matrix.h"
SeedEngine *eng;
@@ -1369,41 +1370,8 @@ seed_cairo_rotate (SeedContext ctx,
return seed_make_undefined (ctx);
}
-static SeedValue
-seed_value_from_cairo_matrix (SeedContext ctx,
- const cairo_matrix_t *matrix,
- SeedException *exception)
-{
- SeedValue elems[6];
-
- elems[0] = seed_value_from_double(ctx, matrix->xx, exception);
- elems[1] = seed_value_from_double(ctx, matrix->yx, exception);
- elems[2] = seed_value_from_double(ctx, matrix->xy, exception);
- elems[3] = seed_value_from_double(ctx, matrix->yy, exception);
- elems[4] = seed_value_from_double(ctx, matrix->x0, exception);
- elems[5] = seed_value_from_double(ctx, matrix->y0, exception);
-
- return seed_make_array (ctx, elems, 6, exception);
-}
-static gboolean
-seed_value_to_cairo_matrix (SeedContext ctx,
- SeedValue value,
- cairo_matrix_t *matrix,
- SeedException *exception)
-{
- if (!seed_value_is_object (ctx, value))
- return FALSE;
-
- matrix->xx = seed_value_to_double (ctx, seed_object_get_property_at_index (ctx, (SeedObject) value, 0, exception), exception);
- matrix->yx = seed_value_to_double (ctx, seed_object_get_property_at_index (ctx, (SeedObject) value, 1, exception), exception);
- matrix->xy = seed_value_to_double (ctx, seed_object_get_property_at_index (ctx, (SeedObject) value, 2, exception), exception);
- matrix->yy = seed_value_to_double (ctx, seed_object_get_property_at_index (ctx, (SeedObject) value, 3, exception), exception);
- matrix->x0 = seed_value_to_double (ctx, seed_object_get_property_at_index (ctx, (SeedObject) value, 4, exception), exception);
- matrix->y0 = seed_value_to_double (ctx, seed_object_get_property_at_index (ctx, (SeedObject) value, 5, exception), exception);
-
- return TRUE;
-}
+
static SeedValue
seed_cairo_transform (SeedContext ctx,
@@ -1688,6 +1656,7 @@ seed_module_init(SeedEngine * local_eng)
seed_value_protect (eng->context, namespace_ref);
seed_define_cairo_enums (eng->context, namespace_ref);
seed_define_cairo_surface (eng->context, namespace_ref);
+ seed_define_cairo_matrix (eng->context, namespace_ref);
cairo_def.class_name = "CairoContext";
cairo_def.static_functions = cairo_funcs;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]