From dcfa688e372ccdc367e2baa7f61fe61952e88da8 Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Wed, 23 Sep 2015 16:04:50 -0700 Subject: [PATCH] Use CFFIPointer in more places --- lime/graphics/cairo/Cairo.hx | 161 ++++++++++--------- lime/graphics/cairo/CairoFTFontFace.hx | 5 +- lime/graphics/cairo/CairoFontFace.hx | 6 +- lime/graphics/cairo/CairoFontOptions.hx | 21 +-- lime/graphics/cairo/CairoImageSurface.hx | 18 ++- lime/graphics/cairo/CairoPattern.hx | 31 ++-- lime/graphics/cairo/CairoSurface.hx | 6 +- project/src/graphics/cairo/CairoBindings.cpp | 67 +++----- 8 files changed, 147 insertions(+), 168 deletions(-) diff --git a/lime/graphics/cairo/Cairo.hx b/lime/graphics/cairo/Cairo.hx index 0320d0d2b..fbe8dfd14 100644 --- a/lime/graphics/cairo/Cairo.hx +++ b/lime/graphics/cairo/Cairo.hx @@ -4,6 +4,7 @@ package lime.graphics.cairo; import lime.math.Matrix3; import lime.math.Vector2; import lime.system.CFFI; +import lime.system.CFFIPointer; #if !macro @:build(lime.system.CFFI.build()) @@ -36,7 +37,7 @@ class Cairo { public var tolerance (get, set):Float; public var userData:Dynamic; - @:noCompletion private var handle:Dynamic; + @:noCompletion private var handle:CFFIPointer; public function new (surface:CairoSurface = null):Void { @@ -874,85 +875,85 @@ class Cairo { #if (lime_cairo && !macro) - @:cffi private static function lime_cairo_arc (handle:Dynamic, xc:Float, yc:Float, radius:Float, angle1:Float, angle2:Float):Void; - @:cffi private static function lime_cairo_arc_negative (handle:Dynamic, xc:Float, yc:Float, radius:Float, angle1:Float, angle2:Float):Void; - @:cffi private static function lime_cairo_clip (handle:Dynamic):Void; - @:cffi private static function lime_cairo_clip_preserve (handle:Dynamic):Void; - @:cffi private static function lime_cairo_clip_extents (handle:Dynamic, x1:Float, y1:Float, x2:Float, y2:Float):Void; - @:cffi private static function lime_cairo_close_path (handle:Dynamic):Void; - @:cffi private static function lime_cairo_copy_page (handle:Dynamic):Void; - @:cffi private static function lime_cairo_create (handle:Dynamic):Dynamic; - @:cffi private static function lime_cairo_curve_to (handle:Dynamic, x1:Float, y1:Float, x2:Float, y2:Float, x3:Float, y3:Float):Void; - @:cffi private static function lime_cairo_fill (handle:Dynamic):Void; - @:cffi private static function lime_cairo_fill_extents (handle:Dynamic, x1:Float, y1:Float, x2:Float, y2:Float):Void; - @:cffi private static function lime_cairo_fill_preserve (handle:Dynamic):Void; - @:cffi private static function lime_cairo_get_antialias (handle:Dynamic):Int; - @:cffi private static function lime_cairo_get_current_point (handle:Dynamic):Dynamic; - @:cffi private static function lime_cairo_get_dash (handle:Dynamic):Dynamic; - @:cffi private static function lime_cairo_get_dash_count (handle:Dynamic):Int; - @:cffi private static function lime_cairo_get_fill_rule (handle:Dynamic):Int; - @:cffi private static function lime_cairo_get_font_face (handle:Dynamic):Dynamic; - @:cffi private static function lime_cairo_get_font_options (handle:Dynamic):Dynamic; - @:cffi private static function lime_cairo_get_group_target (handle:Dynamic):Dynamic; - @:cffi private static function lime_cairo_get_line_cap (handle:Dynamic):Int; - @:cffi private static function lime_cairo_get_line_join (handle:Dynamic):Int; - @:cffi private static function lime_cairo_get_line_width (handle:Dynamic):Float; - @:cffi private static function lime_cairo_get_matrix (handle:Dynamic):Dynamic; - @:cffi private static function lime_cairo_get_miter_limit (handle:Dynamic):Float; - @:cffi private static function lime_cairo_get_operator (handle:Dynamic):Int; - @:cffi private static function lime_cairo_get_source (handle:Dynamic):Dynamic; - @:cffi private static function lime_cairo_get_target (handle:Dynamic):Dynamic; - @:cffi private static function lime_cairo_get_tolerance (handle:Dynamic):Float; - @:cffi private static function lime_cairo_has_current_point (handle:Dynamic):Bool; - @:cffi private static function lime_cairo_identity_matrix (handle:Dynamic):Void; - @:cffi private static function lime_cairo_in_clip (handle:Dynamic, x:Float, y:Float):Bool; - @:cffi private static function lime_cairo_in_fill (handle:Dynamic, x:Float, y:Float):Bool; - @:cffi private static function lime_cairo_in_stroke (handle:Dynamic, x:Float, y:Float):Bool; - @:cffi private static function lime_cairo_line_to (handle:Dynamic, x:Float, y:Float):Void; - @:cffi private static function lime_cairo_mask (handle:Dynamic, pattern:Dynamic):Void; - @:cffi private static function lime_cairo_mask_surface (handle:Dynamic, surface:Dynamic, x:Float, y:Float):Void; - @:cffi private static function lime_cairo_move_to (handle:Dynamic, x:Float, y:Float):Void; - @:cffi private static function lime_cairo_new_path (handle:Dynamic):Void; - @:cffi private static function lime_cairo_paint (handle:Dynamic):Void; - @:cffi private static function lime_cairo_paint_with_alpha (handle:Dynamic, alpha:Float):Void; - @:cffi private static function lime_cairo_pop_group (handle:Dynamic):Dynamic; - @:cffi private static function lime_cairo_pop_group_to_source (handle:Dynamic):Void; - @:cffi private static function lime_cairo_push_group (handle:Dynamic):Void; - @:cffi private static function lime_cairo_push_group_with_content (handle:Dynamic, content:Int):Void; - @:cffi private static function lime_cairo_rectangle (handle:Dynamic, x:Float, y:Float, width:Float, height:Float):Void; - @:cffi private static function lime_cairo_rel_curve_to (handle:Dynamic, dx1:Float, dy1:Float, dx2:Float, dy2:Float, dx3:Float, dy3:Float):Void; - @:cffi private static function lime_cairo_rel_line_to (handle:Dynamic, dx:Float, dy:Float):Void; - @:cffi private static function lime_cairo_rel_move_to (handle:Dynamic, dx:Float, dy:Float):Void; - @:cffi private static function lime_cairo_reset_clip (handle:Dynamic):Void; - @:cffi private static function lime_cairo_restore (handle:Dynamic):Void; - @:cffi private static function lime_cairo_rotate (handle:Dynamic, amount:Float):Void; - @:cffi private static function lime_cairo_save (handle:Dynamic):Void; - @:cffi private static function lime_cairo_scale (handle:Dynamic, x:Float, y:Float):Void; - @:cffi private static function lime_cairo_set_antialias (handle:Dynamic, cap:Int):Void; - @:cffi private static function lime_cairo_set_dash (handle:Dynamic, dash:Dynamic):Void; - @:cffi private static function lime_cairo_set_fill_rule (handle:Dynamic, cap:Int):Void; - @:cffi private static function lime_cairo_set_font_face (handle:Dynamic, face:Dynamic):Void; - @:cffi private static function lime_cairo_set_font_options (handle:Dynamic, options:Dynamic):Void; - @:cffi private static function lime_cairo_set_font_size (handle:Dynamic, size:Float):Void; - @:cffi private static function lime_cairo_set_line_cap (handle:Dynamic, cap:Int):Void; - @:cffi private static function lime_cairo_set_line_join (handle:Dynamic, join:Int):Void; - @:cffi private static function lime_cairo_set_line_width (handle:Dynamic, width:Float):Void; - @:cffi private static function lime_cairo_set_matrix (handle:Dynamic, matrix:Dynamic):Void; - @:cffi private static function lime_cairo_set_miter_limit (handle:Dynamic, miterLimit:Float):Void; - @:cffi private static function lime_cairo_set_operator (handle:Dynamic, op:Int):Void; - @:cffi private static function lime_cairo_set_source (handle:Dynamic, pattern:Dynamic):Void; - @:cffi private static function lime_cairo_set_source_rgb (handle:Dynamic, r:Float, g:Float, b:Float):Void; - @:cffi private static function lime_cairo_set_source_rgba (handle:Dynamic, r:Float, g:Float, b:Float, a:Float):Void; - @:cffi private static function lime_cairo_set_source_surface (handle:Dynamic, surface:Dynamic, x:Float, y:Float):Void; - @:cffi private static function lime_cairo_set_tolerance (handle:Dynamic, tolerance:Float):Void; - @:cffi private static function lime_cairo_show_page (handle:Dynamic):Void; - @:cffi private static function lime_cairo_show_text (handle:Dynamic, text:String):Void; - @:cffi private static function lime_cairo_status (handle:Dynamic):Int; - @:cffi private static function lime_cairo_stroke (handle:Dynamic):Void; - @:cffi private static function lime_cairo_stroke_extents (handle:Dynamic, x1:Float, y1:Float, x2:Float, y2:Float):Void; - @:cffi private static function lime_cairo_stroke_preserve (handle:Dynamic):Void; - @:cffi private static function lime_cairo_transform (handle:Dynamic, matrix:Dynamic):Void; - @:cffi private static function lime_cairo_translate (handle:Dynamic, x:Float, y:Float):Void; + @:cffi private static function lime_cairo_arc (handle:CFFIPointer, xc:Float, yc:Float, radius:Float, angle1:Float, angle2:Float):Void; + @:cffi private static function lime_cairo_arc_negative (handle:CFFIPointer, xc:Float, yc:Float, radius:Float, angle1:Float, angle2:Float):Void; + @:cffi private static function lime_cairo_clip (handle:CFFIPointer):Void; + @:cffi private static function lime_cairo_clip_preserve (handle:CFFIPointer):Void; + @:cffi private static function lime_cairo_clip_extents (handle:CFFIPointer, x1:Float, y1:Float, x2:Float, y2:Float):Void; + @:cffi private static function lime_cairo_close_path (handle:CFFIPointer):Void; + @:cffi private static function lime_cairo_copy_page (handle:CFFIPointer):Void; + @:cffi private static function lime_cairo_create (handle:CFFIPointer):Dynamic; + @:cffi private static function lime_cairo_curve_to (handle:CFFIPointer, x1:Float, y1:Float, x2:Float, y2:Float, x3:Float, y3:Float):Void; + @:cffi private static function lime_cairo_fill (handle:CFFIPointer):Void; + @:cffi private static function lime_cairo_fill_extents (handle:CFFIPointer, x1:Float, y1:Float, x2:Float, y2:Float):Void; + @:cffi private static function lime_cairo_fill_preserve (handle:CFFIPointer):Void; + @:cffi private static function lime_cairo_get_antialias (handle:CFFIPointer):Int; + @:cffi private static function lime_cairo_get_current_point (handle:CFFIPointer):Dynamic; + @:cffi private static function lime_cairo_get_dash (handle:CFFIPointer):Dynamic; + @:cffi private static function lime_cairo_get_dash_count (handle:CFFIPointer):Int; + @:cffi private static function lime_cairo_get_fill_rule (handle:CFFIPointer):Int; + @:cffi private static function lime_cairo_get_font_face (handle:CFFIPointer):CFFIPointer; + @:cffi private static function lime_cairo_get_font_options (handle:CFFIPointer):CFFIPointer; + @:cffi private static function lime_cairo_get_group_target (handle:CFFIPointer):CFFIPointer; + @:cffi private static function lime_cairo_get_line_cap (handle:CFFIPointer):Int; + @:cffi private static function lime_cairo_get_line_join (handle:CFFIPointer):Int; + @:cffi private static function lime_cairo_get_line_width (handle:CFFIPointer):Float; + @:cffi private static function lime_cairo_get_matrix (handle:CFFIPointer):Dynamic; + @:cffi private static function lime_cairo_get_miter_limit (handle:CFFIPointer):Float; + @:cffi private static function lime_cairo_get_operator (handle:CFFIPointer):Int; + @:cffi private static function lime_cairo_get_source (handle:CFFIPointer):CFFIPointer; + @:cffi private static function lime_cairo_get_target (handle:CFFIPointer):CFFIPointer; + @:cffi private static function lime_cairo_get_tolerance (handle:CFFIPointer):Float; + @:cffi private static function lime_cairo_has_current_point (handle:CFFIPointer):Bool; + @:cffi private static function lime_cairo_identity_matrix (handle:CFFIPointer):Void; + @:cffi private static function lime_cairo_in_clip (handle:CFFIPointer, x:Float, y:Float):Bool; + @:cffi private static function lime_cairo_in_fill (handle:CFFIPointer, x:Float, y:Float):Bool; + @:cffi private static function lime_cairo_in_stroke (handle:CFFIPointer, x:Float, y:Float):Bool; + @:cffi private static function lime_cairo_line_to (handle:CFFIPointer, x:Float, y:Float):Void; + @:cffi private static function lime_cairo_mask (handle:CFFIPointer, pattern:CFFIPointer):Void; + @:cffi private static function lime_cairo_mask_surface (handle:CFFIPointer, surface:CFFIPointer, x:Float, y:Float):Void; + @:cffi private static function lime_cairo_move_to (handle:CFFIPointer, x:Float, y:Float):Void; + @:cffi private static function lime_cairo_new_path (handle:CFFIPointer):Void; + @:cffi private static function lime_cairo_paint (handle:CFFIPointer):Void; + @:cffi private static function lime_cairo_paint_with_alpha (handle:CFFIPointer, alpha:Float):Void; + @:cffi private static function lime_cairo_pop_group (handle:CFFIPointer):CFFIPointer; + @:cffi private static function lime_cairo_pop_group_to_source (handle:CFFIPointer):Void; + @:cffi private static function lime_cairo_push_group (handle:CFFIPointer):Void; + @:cffi private static function lime_cairo_push_group_with_content (handle:CFFIPointer, content:Int):Void; + @:cffi private static function lime_cairo_rectangle (handle:CFFIPointer, x:Float, y:Float, width:Float, height:Float):Void; + @:cffi private static function lime_cairo_rel_curve_to (handle:CFFIPointer, dx1:Float, dy1:Float, dx2:Float, dy2:Float, dx3:Float, dy3:Float):Void; + @:cffi private static function lime_cairo_rel_line_to (handle:CFFIPointer, dx:Float, dy:Float):Void; + @:cffi private static function lime_cairo_rel_move_to (handle:CFFIPointer, dx:Float, dy:Float):Void; + @:cffi private static function lime_cairo_reset_clip (handle:CFFIPointer):Void; + @:cffi private static function lime_cairo_restore (handle:CFFIPointer):Void; + @:cffi private static function lime_cairo_rotate (handle:CFFIPointer, amount:Float):Void; + @:cffi private static function lime_cairo_save (handle:CFFIPointer):Void; + @:cffi private static function lime_cairo_scale (handle:CFFIPointer, x:Float, y:Float):Void; + @:cffi private static function lime_cairo_set_antialias (handle:CFFIPointer, cap:Int):Void; + @:cffi private static function lime_cairo_set_dash (handle:CFFIPointer, dash:Dynamic):Void; + @:cffi private static function lime_cairo_set_fill_rule (handle:CFFIPointer, cap:Int):Void; + @:cffi private static function lime_cairo_set_font_face (handle:CFFIPointer, face:CFFIPointer):Void; + @:cffi private static function lime_cairo_set_font_options (handle:CFFIPointer, options:CFFIPointer):Void; + @:cffi private static function lime_cairo_set_font_size (handle:CFFIPointer, size:Float):Void; + @:cffi private static function lime_cairo_set_line_cap (handle:CFFIPointer, cap:Int):Void; + @:cffi private static function lime_cairo_set_line_join (handle:CFFIPointer, join:Int):Void; + @:cffi private static function lime_cairo_set_line_width (handle:CFFIPointer, width:Float):Void; + @:cffi private static function lime_cairo_set_matrix (handle:CFFIPointer, matrix:Dynamic):Void; + @:cffi private static function lime_cairo_set_miter_limit (handle:CFFIPointer, miterLimit:Float):Void; + @:cffi private static function lime_cairo_set_operator (handle:CFFIPointer, op:Int):Void; + @:cffi private static function lime_cairo_set_source (handle:CFFIPointer, pattern:CFFIPointer):Void; + @:cffi private static function lime_cairo_set_source_rgb (handle:CFFIPointer, r:Float, g:Float, b:Float):Void; + @:cffi private static function lime_cairo_set_source_rgba (handle:CFFIPointer, r:Float, g:Float, b:Float, a:Float):Void; + @:cffi private static function lime_cairo_set_source_surface (handle:CFFIPointer, surface:CFFIPointer, x:Float, y:Float):Void; + @:cffi private static function lime_cairo_set_tolerance (handle:CFFIPointer, tolerance:Float):Void; + @:cffi private static function lime_cairo_show_page (handle:CFFIPointer):Void; + @:cffi private static function lime_cairo_show_text (handle:CFFIPointer, text:String):Void; + @:cffi private static function lime_cairo_status (handle:CFFIPointer):Int; + @:cffi private static function lime_cairo_stroke (handle:CFFIPointer):Void; + @:cffi private static function lime_cairo_stroke_extents (handle:CFFIPointer, x1:Float, y1:Float, x2:Float, y2:Float):Void; + @:cffi private static function lime_cairo_stroke_preserve (handle:CFFIPointer):Void; + @:cffi private static function lime_cairo_transform (handle:CFFIPointer, matrix:Dynamic):Void; + @:cffi private static function lime_cairo_translate (handle:CFFIPointer, x:Float, y:Float):Void; @:cffi private static function lime_cairo_version ():Int; @:cffi private static function lime_cairo_version_string ():String; #end diff --git a/lime/graphics/cairo/CairoFTFontFace.hx b/lime/graphics/cairo/CairoFTFontFace.hx index 8d6eadc05..26bd88944 100644 --- a/lime/graphics/cairo/CairoFTFontFace.hx +++ b/lime/graphics/cairo/CairoFTFontFace.hx @@ -1,6 +1,7 @@ package lime.graphics.cairo; +import lime.system.CFFIPointer; import lime.text.Font; #if !macro @@ -8,7 +9,7 @@ import lime.text.Font; #end -abstract CairoFTFontFace(CairoFontFace) from CairoFontFace to CairoFontFace { +abstract CairoFTFontFace(CairoFontFace) from CairoFontFace to CairoFontFace from CFFIPointer to CFFIPointer { public static inline var FT_LOAD_FORCE_AUTOHINT = (1 << 5); @@ -40,7 +41,7 @@ abstract CairoFTFontFace(CairoFontFace) from CairoFontFace to CairoFontFace { #if ((cpp || neko || nodejs) && !macro) - @:cffi private static function lime_cairo_ft_font_face_create (face:Dynamic, flags:Int):Dynamic; + @:cffi private static function lime_cairo_ft_font_face_create (face:CFFIPointer, flags:Int):CFFIPointer; #end diff --git a/lime/graphics/cairo/CairoFontFace.hx b/lime/graphics/cairo/CairoFontFace.hx index b4aa03519..c66d19936 100644 --- a/lime/graphics/cairo/CairoFontFace.hx +++ b/lime/graphics/cairo/CairoFontFace.hx @@ -1,12 +1,14 @@ package lime.graphics.cairo; +import lime.system.CFFIPointer; + #if !macro @:build(lime.system.CFFI.build()) #end -abstract CairoFontFace(Dynamic) { +abstract CairoFontFace(CFFIPointer) from CFFIPointer to CFFIPointer { private function new () { @@ -35,7 +37,7 @@ abstract CairoFontFace(Dynamic) { #if ((cpp || neko || nodejs) && !macro) - @:cffi private static function lime_cairo_font_face_status (handle:Dynamic):Int; + @:cffi private static function lime_cairo_font_face_status (handle:CFFIPointer):Int; #end diff --git a/lime/graphics/cairo/CairoFontOptions.hx b/lime/graphics/cairo/CairoFontOptions.hx index 56584e483..58dd2e1c7 100644 --- a/lime/graphics/cairo/CairoFontOptions.hx +++ b/lime/graphics/cairo/CairoFontOptions.hx @@ -1,6 +1,7 @@ package lime.graphics.cairo; +import lime.system.CFFIPointer; import lime.text.Font; #if !macro @@ -8,7 +9,7 @@ import lime.text.Font; #end -abstract CairoFontOptions(Dynamic) { +abstract CairoFontOptions(CFFIPointer) from CFFIPointer to CFFIPointer { public var antialias (get, set):CairoAntialias; @@ -132,15 +133,15 @@ abstract CairoFontOptions(Dynamic) { #if ((cpp || neko || nodejs) && !macro) - @:cffi private static function lime_cairo_font_options_create ():Dynamic; - @:cffi private static function lime_cairo_font_options_get_antialias (handle:Dynamic):Int; - @:cffi private static function lime_cairo_font_options_get_hint_metrics (handle:Dynamic):Int; - @:cffi private static function lime_cairo_font_options_get_hint_style (handle:Dynamic):Int; - @:cffi private static function lime_cairo_font_options_get_subpixel_order (handle:Dynamic):Int; - @:cffi private static function lime_cairo_font_options_set_antialias (handle:Dynamic, v:Int):Void; - @:cffi private static function lime_cairo_font_options_set_hint_metrics (handle:Dynamic, v:Int):Void; - @:cffi private static function lime_cairo_font_options_set_hint_style (handle:Dynamic, v:Int):Void; - @:cffi private static function lime_cairo_font_options_set_subpixel_order (handle:Dynamic, v:Int):Void; + @:cffi private static function lime_cairo_font_options_create ():CFFIPointer; + @:cffi private static function lime_cairo_font_options_get_antialias (handle:CFFIPointer):Int; + @:cffi private static function lime_cairo_font_options_get_hint_metrics (handle:CFFIPointer):Int; + @:cffi private static function lime_cairo_font_options_get_hint_style (handle:CFFIPointer):Int; + @:cffi private static function lime_cairo_font_options_get_subpixel_order (handle:CFFIPointer):Int; + @:cffi private static function lime_cairo_font_options_set_antialias (handle:CFFIPointer, v:Int):Void; + @:cffi private static function lime_cairo_font_options_set_hint_metrics (handle:CFFIPointer, v:Int):Void; + @:cffi private static function lime_cairo_font_options_set_hint_style (handle:CFFIPointer, v:Int):Void; + @:cffi private static function lime_cairo_font_options_set_subpixel_order (handle:CFFIPointer, v:Int):Void; #end diff --git a/lime/graphics/cairo/CairoImageSurface.hx b/lime/graphics/cairo/CairoImageSurface.hx index d9fe39a79..21298dd1b 100644 --- a/lime/graphics/cairo/CairoImageSurface.hx +++ b/lime/graphics/cairo/CairoImageSurface.hx @@ -1,12 +1,14 @@ package lime.graphics.cairo; +import lime.system.CFFIPointer; + #if !macro @:build(lime.system.CFFI.build()) #end -@:forward abstract CairoImageSurface(CairoSurface) from CairoSurface to CairoSurface { +@:forward abstract CairoImageSurface(CairoSurface) from CairoSurface to CairoSurface from CFFIPointer to CFFIPointer { public var data (get, never):Dynamic; @@ -120,13 +122,13 @@ package lime.graphics.cairo; #if (lime_cairo && !macro) @:cffi private static function lime_bytes_get_data_pointer (handle:Dynamic):Float; - @:cffi private static function lime_cairo_image_surface_create (format:Int, width:Int, height:Int):Dynamic; - @:cffi private static function lime_cairo_image_surface_create_for_data (data:Float, format:Int, width:Int, height:Int, stride:Int):Dynamic; - @:cffi private static function lime_cairo_image_surface_get_data (handle:Dynamic):Float; - @:cffi private static function lime_cairo_image_surface_get_format (handle:Dynamic):Int; - @:cffi private static function lime_cairo_image_surface_get_height (handle:Dynamic):Int; - @:cffi private static function lime_cairo_image_surface_get_stride (handle:Dynamic):Int; - @:cffi private static function lime_cairo_image_surface_get_width (handle:Dynamic):Int; + @:cffi private static function lime_cairo_image_surface_create (format:Int, width:Int, height:Int):CFFIPointer; + @:cffi private static function lime_cairo_image_surface_create_for_data (data:Float, format:Int, width:Int, height:Int, stride:Int):CFFIPointer; + @:cffi private static function lime_cairo_image_surface_get_data (handle:CFFIPointer):Float; + @:cffi private static function lime_cairo_image_surface_get_format (handle:CFFIPointer):Int; + @:cffi private static function lime_cairo_image_surface_get_height (handle:CFFIPointer):Int; + @:cffi private static function lime_cairo_image_surface_get_stride (handle:CFFIPointer):Int; + @:cffi private static function lime_cairo_image_surface_get_width (handle:CFFIPointer):Int; #end diff --git a/lime/graphics/cairo/CairoPattern.hx b/lime/graphics/cairo/CairoPattern.hx index 21f28d5cd..1b35affd3 100644 --- a/lime/graphics/cairo/CairoPattern.hx +++ b/lime/graphics/cairo/CairoPattern.hx @@ -2,13 +2,14 @@ package lime.graphics.cairo; import lime.math.Matrix3; +import lime.system.CFFIPointer; #if !macro @:build(lime.system.CFFI.build()) #end -abstract CairoPattern(Dynamic) { +abstract CairoPattern(CFFIPointer) from CFFIPointer to CFFIPointer { public var colorStopCount (get, never):Int; @@ -190,20 +191,20 @@ abstract CairoPattern(Dynamic) { #if (lime_cairo && !macro) - @:cffi private static function lime_cairo_pattern_add_color_stop_rgb (handle:Dynamic, offset:Float, red:Float, green:Float, blue:Float):Void; - @:cffi private static function lime_cairo_pattern_add_color_stop_rgba (handle:Dynamic, offset:Float, red:Float, green:Float, blue:Float, alpha:Float):Void; - @:cffi private static function lime_cairo_pattern_create_for_surface (surface:Dynamic):Dynamic; - @:cffi private static function lime_cairo_pattern_create_linear (x0:Float, y0:Float, x1:Float, y1:Float):Dynamic; - @:cffi private static function lime_cairo_pattern_create_radial (cx0:Float, cy0:Float, radius0:Float, cx1:Float, cy1:Float, radius1:Float):Dynamic; - @:cffi private static function lime_cairo_pattern_create_rgb (r:Float, g:Float, b:Float):Dynamic; - @:cffi private static function lime_cairo_pattern_create_rgba (r:Float, g:Float, b:Float, a:Float):Dynamic; - @:cffi private static function lime_cairo_pattern_get_color_stop_count (handle:Dynamic):Int; - @:cffi private static function lime_cairo_pattern_get_extend (handle:Dynamic):Int; - @:cffi private static function lime_cairo_pattern_get_filter (handle:Dynamic):Int; - @:cffi private static function lime_cairo_pattern_get_matrix (handle:Dynamic):Dynamic; - @:cffi private static function lime_cairo_pattern_set_extend (handle:Dynamic, extend:Int):Void; - @:cffi private static function lime_cairo_pattern_set_filter (handle:Dynamic, filter:Int):Void; - @:cffi private static function lime_cairo_pattern_set_matrix (handle:Dynamic, matrix:Dynamic):Void; + @:cffi private static function lime_cairo_pattern_add_color_stop_rgb (handle:CFFIPointer, offset:Float, red:Float, green:Float, blue:Float):Void; + @:cffi private static function lime_cairo_pattern_add_color_stop_rgba (handle:CFFIPointer, offset:Float, red:Float, green:Float, blue:Float, alpha:Float):Void; + @:cffi private static function lime_cairo_pattern_create_for_surface (surface:CFFIPointer):CFFIPointer; + @:cffi private static function lime_cairo_pattern_create_linear (x0:Float, y0:Float, x1:Float, y1:Float):CFFIPointer; + @:cffi private static function lime_cairo_pattern_create_radial (cx0:Float, cy0:Float, radius0:Float, cx1:Float, cy1:Float, radius1:Float):CFFIPointer; + @:cffi private static function lime_cairo_pattern_create_rgb (r:Float, g:Float, b:Float):CFFIPointer; + @:cffi private static function lime_cairo_pattern_create_rgba (r:Float, g:Float, b:Float, a:Float):CFFIPointer; + @:cffi private static function lime_cairo_pattern_get_color_stop_count (handle:CFFIPointer):Int; + @:cffi private static function lime_cairo_pattern_get_extend (handle:CFFIPointer):Int; + @:cffi private static function lime_cairo_pattern_get_filter (handle:CFFIPointer):Int; + @:cffi private static function lime_cairo_pattern_get_matrix (handle:CFFIPointer):Dynamic; + @:cffi private static function lime_cairo_pattern_set_extend (handle:CFFIPointer, extend:Int):Void; + @:cffi private static function lime_cairo_pattern_set_filter (handle:CFFIPointer, filter:Int):Void; + @:cffi private static function lime_cairo_pattern_set_matrix (handle:CFFIPointer, matrix:Dynamic):Void; #end diff --git a/lime/graphics/cairo/CairoSurface.hx b/lime/graphics/cairo/CairoSurface.hx index 7931528bf..9fe276deb 100644 --- a/lime/graphics/cairo/CairoSurface.hx +++ b/lime/graphics/cairo/CairoSurface.hx @@ -1,12 +1,14 @@ package lime.graphics.cairo; +import lime.system.CFFIPointer; + #if !macro @:build(lime.system.CFFI.build()) #end -abstract CairoSurface(Dynamic) { +abstract CairoSurface(CFFIPointer) from CFFIPointer to CFFIPointer { public function flush ():Void { @@ -26,7 +28,7 @@ abstract CairoSurface(Dynamic) { #if (lime_cairo && !macro) - @:cffi private static function lime_cairo_surface_flush (surface:Dynamic):Void; + @:cffi private static function lime_cairo_surface_flush (surface:CFFIPointer):Void; #end diff --git a/project/src/graphics/cairo/CairoBindings.cpp b/project/src/graphics/cairo/CairoBindings.cpp index 2c22a4fcd..e3afcc964 100644 --- a/project/src/graphics/cairo/CairoBindings.cpp +++ b/project/src/graphics/cairo/CairoBindings.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include @@ -132,9 +133,7 @@ namespace lime { value lime_cairo_create (value surface) { cairo_t* cairo = cairo_create ((cairo_surface_t*)val_data (surface)); - value handle = cffi::alloc_pointer (cairo); - val_gc (handle, gc_cairo); - return handle; + return CFFIPointer (cairo, gc_cairo); } @@ -176,9 +175,7 @@ namespace lime { value lime_cairo_font_options_create () { - value handle = cffi::alloc_pointer (cairo_font_options_create ()); - val_gc (handle, gc_cairo_font_options); - return handle; + return CFFIPointer (cairo_font_options_create (), gc_cairo_font_options); } @@ -248,9 +245,7 @@ namespace lime { AutoGCRoot* fontReference = new AutoGCRoot (face); cairo_font_face_set_user_data (cairoFont, &userData, fontReference, gc_user_data); - value handle = cffi::alloc_pointer (cairoFont); - val_gc (handle, gc_cairo_font_face); - return handle; + return CFFIPointer (cairoFont, gc_cairo_font_face); #else return 0; #endif @@ -316,20 +311,16 @@ namespace lime { cairo_font_face_t* face = cairo_get_font_face ((cairo_t*)val_data (handle)); cairo_font_face_reference (face); - value v = cffi::alloc_pointer (face); - val_gc (v, gc_cairo_font_face); - return v; + return CFFIPointer (face, gc_cairo_font_face); } value lime_cairo_get_font_options (value handle) { - cairo_font_options_t *options = 0; + cairo_font_options_t* options = 0; cairo_get_font_options ((cairo_t*)val_data (handle), options); - value v = cffi::alloc_pointer (options); - val_gc (v, gc_cairo_font_options); - return v; + return CFFIPointer (options, gc_cairo_font_options); } @@ -338,9 +329,7 @@ namespace lime { cairo_surface_t* surface = cairo_get_group_target ((cairo_t*)val_data (handle)); cairo_surface_reference (surface); - value v = cffi::alloc_pointer (surface); - val_gc (v, gc_cairo_surface); - return v; + return CFFIPointer (surface, gc_cairo_surface); } @@ -394,9 +383,7 @@ namespace lime { cairo_pattern_t* pattern = cairo_get_source ((cairo_t*)val_data (handle)); cairo_pattern_reference (pattern); - value v = cffi::alloc_pointer (pattern); - val_gc (v, gc_cairo_pattern); - return v; + return CFFIPointer (pattern, gc_cairo_pattern); } @@ -405,9 +392,7 @@ namespace lime { cairo_surface_t* surface = cairo_get_target ((cairo_t*)val_data (handle)); cairo_surface_reference (surface); - value v = cffi::alloc_pointer (surface); - val_gc (v, gc_cairo_surface); - return v; + return CFFIPointer (surface, gc_cairo_surface); } @@ -436,9 +421,7 @@ namespace lime { value lime_cairo_image_surface_create (int format, int width, int height) { cairo_surface_t* surface = cairo_image_surface_create ((cairo_format_t)format, width, height); - value handle = cffi::alloc_pointer (surface); - val_gc (handle, gc_cairo_surface); - return handle; + return CFFIPointer (surface, gc_cairo_surface); } @@ -446,9 +429,7 @@ namespace lime { value lime_cairo_image_surface_create_for_data (double data, int format, int width, int height, int stride) { cairo_surface_t* surface = cairo_image_surface_create_for_data ((unsigned char*)(intptr_t)data, (cairo_format_t)format, width, height, stride); - value handle = cffi::alloc_pointer (surface); - val_gc (handle, gc_cairo_surface); - return handle; + return CFFIPointer (surface, gc_cairo_surface); } @@ -575,9 +556,7 @@ namespace lime { value lime_cairo_pattern_create_for_surface (value surface) { cairo_pattern_t* pattern = cairo_pattern_create_for_surface ((cairo_surface_t*)val_data (surface)); - value handle = cffi::alloc_pointer (pattern); - val_gc (handle, gc_cairo_pattern); - return handle; + return CFFIPointer (pattern, gc_cairo_pattern); } @@ -585,9 +564,7 @@ namespace lime { value lime_cairo_pattern_create_linear (double x0, double y0, double x1, double y1) { cairo_pattern_t* pattern = cairo_pattern_create_linear (x0, y0, x1, y1); - value handle = cffi::alloc_pointer (pattern); - val_gc (handle, gc_cairo_pattern); - return handle; + return CFFIPointer (pattern, gc_cairo_pattern); } @@ -595,9 +572,7 @@ namespace lime { value lime_cairo_pattern_create_radial (double cx0, double cy0, double radius0, double cx1, double cy1, double radius1) { cairo_pattern_t* pattern = cairo_pattern_create_radial (cx0, cy0, radius0, cx1, cy1, radius1); - value handle = cffi::alloc_pointer (pattern); - val_gc (handle, gc_cairo_pattern); - return handle; + return CFFIPointer (pattern, gc_cairo_pattern); } @@ -605,9 +580,7 @@ namespace lime { value lime_cairo_pattern_create_rgb (double r, double g, double b) { cairo_pattern_t* pattern = cairo_pattern_create_rgb (r, g, b); - value handle = cffi::alloc_pointer (pattern); - val_gc (handle, gc_cairo_pattern); - return handle; + return CFFIPointer (pattern, gc_cairo_pattern); } @@ -615,9 +588,7 @@ namespace lime { value lime_cairo_pattern_create_rgba (double r, double g, double b, double a) { cairo_pattern_t* pattern = cairo_pattern_create_rgba (r, g, b, a); - value handle = cffi::alloc_pointer (pattern); - val_gc (handle, gc_cairo_pattern); - return handle; + return CFFIPointer (pattern, gc_cairo_pattern); } @@ -685,9 +656,7 @@ namespace lime { cairo_pattern_t* pattern = cairo_pop_group ((cairo_t*)val_data (handle)); cairo_pattern_reference (pattern); - value v = cffi::alloc_pointer (pattern); - val_gc (v, gc_cairo_pattern); - return v; + return CFFIPointer (pattern, gc_cairo_pattern); }