Add Cairo currentPoint/hasCurrentPoint

This commit is contained in:
Joshua Granick
2015-05-06 00:22:45 -07:00
parent a523803595
commit 2ec0f7c4b2
4 changed files with 77 additions and 0 deletions

View File

@@ -14,8 +14,11 @@ namespace lime {
public:
Vector2 ();
Vector2 (double x, double y);
Vector2 (value vec);
value Value ();
double x;
double y;

View File

@@ -1,5 +1,6 @@
#include <cairo.h>
#include <math/Matrix3.h>
#include <math/Vector2.h>
#include <hx/CFFI.h>
@@ -126,6 +127,16 @@ namespace lime {
}
value lime_cairo_get_current_point (value handle) {
double x, y;
cairo_get_current_point ((cairo_t*)(intptr_t)val_float (handle), &x, &y);
Vector2 vec2 = Vector2 (x, y);
return vec2.Value ();
}
value lime_cairo_get_dash (value handle) {
int length = cairo_get_dash_count ((cairo_t*)(intptr_t)val_float (handle));
@@ -243,6 +254,13 @@ namespace lime {
}
value lime_cairo_has_current_point (value handle) {
return alloc_bool (cairo_has_current_point ((cairo_t*)(intptr_t)val_float (handle)));
}
value lime_cairo_identity_matrix (value handle) {
cairo_identity_matrix ((cairo_t*)(intptr_t)val_float (handle));
@@ -770,6 +788,7 @@ namespace lime {
DEFINE_PRIM (lime_cairo_fill_extents, 5);
DEFINE_PRIM (lime_cairo_fill_preserve, 1);
DEFINE_PRIM (lime_cairo_get_antialias, 1);
DEFINE_PRIM (lime_cairo_get_current_point, 1);
DEFINE_PRIM (lime_cairo_get_dash, 1);
DEFINE_PRIM (lime_cairo_get_dash_count, 1);
DEFINE_PRIM (lime_cairo_get_fill_rule, 1);
@@ -784,6 +803,7 @@ namespace lime {
DEFINE_PRIM (lime_cairo_get_source, 1);
DEFINE_PRIM (lime_cairo_get_target, 1);
DEFINE_PRIM (lime_cairo_get_tolerance, 1);
DEFINE_PRIM (lime_cairo_has_current_point, 1);
DEFINE_PRIM (lime_cairo_identity_matrix, 1);
DEFINE_PRIM (lime_cairo_image_surface_create, 3);
DEFINE_PRIM (lime_cairo_image_surface_create_for_data, 5);

View File

@@ -17,6 +17,14 @@ namespace lime {
}
Vector2::Vector2 (double x, double y) {
this->x = x;
this->y = y;
}
Vector2::Vector2 (value vec) {
if (!init) {
@@ -33,4 +41,22 @@ namespace lime {
}
value Vector2::Value () {
if (!init) {
id_x = val_id ("x");
id_y = val_id ("y");
init = true;
}
value result = alloc_empty_object ();
alloc_field (result, id_x, alloc_float (x));
alloc_field (result, id_y, alloc_float (y));
return result;
}
}