[seed] cairo: Move matrix code in to seed-cairo-matrix.c so additional functions can be added, and it can b



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]