summaryrefslogtreecommitdiff
path: root/src/ml_cairo_surface.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ml_cairo_surface.c')
-rw-r--r--src/ml_cairo_surface.c45
1 files changed, 44 insertions, 1 deletions
diff --git a/src/ml_cairo_surface.c b/src/ml_cairo_surface.c
index cb9c992..1b35895 100644
--- a/src/ml_cairo_surface.c
+++ b/src/ml_cairo_surface.c
@@ -10,7 +10,7 @@
wMake_Val_final_pointer(cairo_surface_t, cairo_surface_destroy, 0)
-static cairo_content_t
+cairo_content_t
cairo_content_t_val (value v)
{
switch (Long_val (v))
@@ -22,6 +22,18 @@ cairo_content_t_val (value v)
}
}
+value
+Val_cairo_content_t (cairo_content_t c)
+{
+ switch (c)
+ {
+ case CAIRO_CONTENT_COLOR : return Val_long(0);
+ case CAIRO_CONTENT_ALPHA : return Val_long(1);
+ case CAIRO_CONTENT_COLOR_ALPHA: return Val_long(2);
+ default: assert(0);
+ }
+}
+
wML_4(cairo_surface_create_similar, \
cairo_surface_t_val, cairo_content_t_val, \
Int_val, Int_val, Val_cairo_surface_t)
@@ -37,6 +49,10 @@ ml_cairo_surface_finish (value surf)
return Val_unit;
}
+#define Val_cairo_surface_type_t(v) Val_int(v)
+wML_1 (cairo_surface_get_type, cairo_surface_t_val, Val_cairo_surface_type_t)
+wML_1 (cairo_surface_get_content, cairo_surface_t_val, Val_cairo_content_t)
+
static void
ml_cairo_destroy_user_data (void *data)
{
@@ -94,3 +110,30 @@ wML_1(cairo_surface_mark_dirty, cairo_surface_t_val, Unit)
wML_5(cairo_surface_mark_dirty_rectangle, cairo_surface_t_val, Int_val, Int_val, Int_val, Int_val, Unit)
wML_3(cairo_surface_set_device_offset, cairo_surface_t_val, Double_val, Double_val, Unit)
+CAMLprim value
+ml_cairo_surface_get_device_offset (value s)
+{
+ double x, y;
+ CAMLparam1(s);
+ CAMLlocal1(v);
+ cairo_surface_get_device_offset (cairo_surface_t_val(s), &x, &y);
+ v = caml_alloc_tuple(2);
+ Store_field(v, 0, caml_copy_double(x));
+ Store_field(v, 1, caml_copy_double(y));
+ CAMLreturn (v);
+}
+
+wML_3(cairo_surface_set_fallback_resolution, cairo_surface_t_val, Double_val, Double_val, Unit)
+
+
+/* Image surface */
+wML_3(cairo_image_surface_create, cairo_format_t_val, Int_val, Int_val, Val_cairo_surface_t)
+
+/* cairo_image_surface_create_for_data -> in ml_cairo_bigarr.c */
+/* cairo_image_surface_get_data -> in ml_cairo_bigarr.c */
+
+wML_1 (cairo_image_surface_get_format, cairo_surface_t_val, Val_cairo_format_t)
+wML_1 (cairo_image_surface_get_width, cairo_surface_t_val, Val_int)
+wML_1 (cairo_image_surface_get_height, cairo_surface_t_val, Val_int)
+wML_1 (cairo_image_surface_get_stride, cairo_surface_t_val, Val_int)
+