diff --git a/lime/graphics/cairo/Cairo.hx b/lime/graphics/cairo/Cairo.hx index 1826c6ab1..21a9f125f 100644 --- a/lime/graphics/cairo/Cairo.hx +++ b/lime/graphics/cairo/Cairo.hx @@ -107,6 +107,15 @@ class Cairo { } + public function curveTo (x1:Float, y1:Float, x2:Float, y2:Float, x3:Float, y3:Float):Void { + + #if lime_cairo + lime_cairo_curve_to (handle, x1, y1, x2, y2, x3, y3); + #end + + } + + public function destroy ():Void { #if lime_cairo @@ -304,6 +313,33 @@ class Cairo { } + public function relCurveTo (dx1:Float, dy1:Float, dx2:Float, dy2:Float, dx3:Float, dy3:Float):Void { + + #if lime_cairo + lime_cairo_rel_curve_to (handle, dx1, dy1, dx2, dy2, dx3, dy3); + #end + + } + + + public function relLineTo (dx:Float, dy:Float):Void { + + #if lime_cairo + lime_cairo_rel_line_to (handle, dx, dy); + #end + + } + + + public function relMoveTo (dx:Float, dy:Float):Void { + + #if lime_cairo + lime_cairo_rel_move_to (handle, dx, dy); + #end + + } + + public function resetClip ():Void { #if lime_cairo @@ -755,6 +791,7 @@ class Cairo { private static var lime_cairo_close_path = System.load ("lime", "lime_cairo_close_path", 1); private static var lime_cairo_copy_page = System.load ("lime", "lime_cairo_copy_page", 1); private static var lime_cairo_create = System.load ("lime", "lime_cairo_create", 1); + private static var lime_cairo_curve_to = System.load ("lime", "lime_cairo_curve_to", -1); private static var lime_cairo_destroy = System.load ("lime", "lime_cairo_destroy", 1); private static var lime_cairo_fill = System.load ("lime", "lime_cairo_fill", 1); private static var lime_cairo_fill_extents = System.load ("lime", "lime_cairo_fill_extents", 5); @@ -791,6 +828,9 @@ class Cairo { private static var lime_cairo_push_group_with_content = System.load ("lime", "lime_cairo_push_group_with_content", 2); private static var lime_cairo_rectangle = System.load ("lime", "lime_cairo_rectangle", 5); private static var lime_cairo_reference = System.load ("lime", "lime_cairo_reference", 1); + private static var lime_cairo_rel_curve_to = System.load ("lime", "lime_cairo_rel_curve_to", -1); + private static var lime_cairo_rel_line_to = System.load ("lime", "lime_cairo_rel_line_to", 3); + private static var lime_cairo_rel_move_to = System.load ("lime", "lime_cairo_rel_move_to", 3); private static var lime_cairo_reset_clip = System.load ("lime", "lime_cairo_reset_clip", 1); private static var lime_cairo_restore = System.load ("lime", "lime_cairo_restore", 1); private static var lime_cairo_save = System.load ("lime", "lime_cairo_save", 1); diff --git a/project/src/graphics/cairo/CairoBindings.cpp b/project/src/graphics/cairo/CairoBindings.cpp index c3719745e..02c28d4ae 100644 --- a/project/src/graphics/cairo/CairoBindings.cpp +++ b/project/src/graphics/cairo/CairoBindings.cpp @@ -74,6 +74,14 @@ namespace lime { } + value lime_cairo_curve_to (value *arg, int argCount) { + + cairo_curve_to ((cairo_t*)(intptr_t)val_float (arg[0]), val_number (arg[1]), val_number (arg[2]), val_number (arg[3]), val_number (arg[4]), val_number (arg[5]), val_number (arg[6])); + return alloc_null (); + + } + + value lime_cairo_destroy (value handle) { cairo_destroy ((cairo_t*)(intptr_t)val_float (handle)); @@ -463,6 +471,30 @@ namespace lime { } + value lime_cairo_rel_curve_to (value *arg, int argCount) { + + cairo_rel_curve_to ((cairo_t*)(intptr_t)val_float (arg[0]), val_number (arg[1]), val_number (arg[2]), val_number (arg[3]), val_number (arg[4]), val_number (arg[5]), val_number (arg[6])); + return alloc_null (); + + } + + + value lime_cairo_rel_line_to (value handle, value dx, value dy) { + + cairo_rel_line_to ((cairo_t*)(intptr_t)val_float (handle), val_number (dx), val_number (dy)); + return alloc_null (); + + } + + + value lime_cairo_rel_move_to (value handle, value dx, value dy) { + + cairo_rel_move_to ((cairo_t*)(intptr_t)val_float (handle), val_number (dx), val_number (dy)); + return alloc_null (); + + } + + value lime_cairo_reset_clip (value handle) { cairo_reset_clip ((cairo_t*)(intptr_t)val_float (handle)); @@ -718,6 +750,7 @@ namespace lime { DEFINE_PRIM (lime_cairo_close_path, 1); DEFINE_PRIM (lime_cairo_copy_page, 1); DEFINE_PRIM (lime_cairo_create, 1); + DEFINE_PRIM_MULT (lime_cairo_curve_to); DEFINE_PRIM (lime_cairo_destroy, 1); DEFINE_PRIM (lime_cairo_fill, 1); DEFINE_PRIM (lime_cairo_fill_extents, 5); @@ -766,6 +799,9 @@ namespace lime { DEFINE_PRIM (lime_cairo_push_group_with_content, 2); DEFINE_PRIM (lime_cairo_rectangle, 5); DEFINE_PRIM (lime_cairo_reference, 1); + DEFINE_PRIM_MULT (lime_cairo_rel_curve_to); + DEFINE_PRIM (lime_cairo_rel_line_to, 3); + DEFINE_PRIM (lime_cairo_rel_move_to, 3); DEFINE_PRIM (lime_cairo_reset_clip, 1); DEFINE_PRIM (lime_cairo_restore, 1); DEFINE_PRIM (lime_cairo_save, 1);