Add Cairo currentPoint/hasCurrentPoint
This commit is contained in:
@@ -14,8 +14,11 @@ namespace lime {
|
||||
public:
|
||||
|
||||
Vector2 ();
|
||||
Vector2 (double x, double y);
|
||||
Vector2 (value vec);
|
||||
|
||||
value Value ();
|
||||
|
||||
double x;
|
||||
double y;
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user