Add Cairo bindings for gradient patterns

This commit is contained in:
Joshua Granick
2015-05-06 01:01:37 -07:00
parent 2ec0f7c4b2
commit e976f64ce4
2 changed files with 101 additions and 0 deletions

View File

@@ -8,6 +8,7 @@ import lime.system.System;
abstract CairoPattern(Dynamic) {
public var colorStopCount (get, never):Int;
public var extend (get, set):CairoExtend;
public var filter (get, set):CairoFilter;
public var matrix (get, set):Matrix3;
@@ -20,6 +21,24 @@ abstract CairoPattern(Dynamic) {
}
public function addColorStopRGB (offset:Float, r:Float, g:Float, b:Float):Void {
#if lime_cairo
lime_cairo_pattern_add_color_stop_rgb (this, offset, r, g, b);
#end
}
public function addColorStopRGBA (offset:Float, r:Float, g:Float, b:Float, a:Float):Void {
#if lime_cairo
lime_cairo_pattern_add_color_stop_rgba (this, offset, r, g, b, a);
#end
}
public static function createForSurface (surface:CairoSurface):CairoPattern {
#if lime_cairo
@@ -31,6 +50,28 @@ abstract CairoPattern(Dynamic) {
}
public static function createLinear (x0:Float, y0:Float, x1:Float, y1:Float):CairoPattern {
#if lime_cairo
return lime_cairo_pattern_create_linear (x0, y0, x1, y1);
#else
return cast 0;
#end
}
public static function createRadial (cx0:Float, cy0:Float, radius0:Float, cx1:Float, cy1:Float, radius1:Float):CairoPattern {
#if lime_cairo
return lime_cairo_pattern_create_radial (cx0, cy0, radius0, cx1, cy1, radius1);
#else
return cast 0;
#end
}
public static function createRGB (r:Float, g:Float, b:Float):CairoPattern {
#if lime_cairo
@@ -69,6 +110,17 @@ abstract CairoPattern(Dynamic) {
public function get_colorStopCount ():Int {
#if lime_cairo
return lime_cairo_pattern_get_color_stop_count (this);
#else
return 0;
#end
}
public function get_extend ():CairoExtend {
#if lime_cairo
@@ -144,10 +196,15 @@ abstract CairoPattern(Dynamic) {
#if lime_cairo
private static var lime_cairo_pattern_add_color_stop_rgb = System.load ("lime", "lime_cairo_pattern_add_color_stop_rgb", 5);
private static var lime_cairo_pattern_add_color_stop_rgba = System.load ("lime", "lime_cairo_pattern_add_color_stop_rgba", -1);
private static var lime_cairo_pattern_create_for_surface = System.load ("lime", "lime_cairo_pattern_create_for_surface", 1);
private static var lime_cairo_pattern_create_linear = System.load ("lime", "lime_cairo_pattern_create_linear", 4);
private static var lime_cairo_pattern_create_radial = System.load ("lime", "lime_cairo_pattern_create_radial", -1);
private static var lime_cairo_pattern_create_rgb = System.load ("lime", "lime_cairo_pattern_create_rgb", 3);
private static var lime_cairo_pattern_create_rgba = System.load ("lime", "lime_cairo_pattern_create_rgba", 4);
private static var lime_cairo_pattern_destroy = System.load ("lime", "lime_cairo_pattern_destroy", 1);
private static var lime_cairo_pattern_get_color_stop_count = System.load ("lime", "lime_cairo_pattern_get_color_stop_count", 1);
private static var lime_cairo_pattern_get_extend = System.load ("lime", "lime_cairo_pattern_get_extend", 1);
private static var lime_cairo_pattern_get_filter = System.load ("lime", "lime_cairo_pattern_get_filter", 1);
private static var lime_cairo_pattern_get_matrix = System.load ("lime", "lime_cairo_pattern_get_matrix", 1);

View File

@@ -374,6 +374,22 @@ namespace lime {
}
value lime_cairo_pattern_add_color_stop_rgb (value handle, value offset, value red, value green, value blue) {
cairo_pattern_add_color_stop_rgb ((cairo_pattern_t*)(intptr_t)val_float (handle), val_number (offset), val_number (red), val_number (green), val_number (blue));
return alloc_null ();
}
value lime_cairo_pattern_add_color_stop_rgba (value *arg, int argCount) {
cairo_pattern_add_color_stop_rgba ((cairo_pattern_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]));
return alloc_null ();
}
value lime_cairo_pattern_create_for_surface (value surface) {
return alloc_float ((intptr_t)cairo_pattern_create_for_surface ((cairo_surface_t*)(intptr_t)val_float (surface)));
@@ -381,6 +397,20 @@ namespace lime {
}
value lime_cairo_pattern_create_linear (value x0, value y0, value x1, value y1) {
return alloc_float ((intptr_t)cairo_pattern_create_linear (val_number (x0), val_number (y0), val_number (x1), val_number (y1)));
}
value lime_cairo_pattern_create_radial (value *arg, int argCount) {
return alloc_float ((intptr_t)cairo_pattern_create_radial (val_number (arg[0]), val_number (arg[1]), val_number (arg[2]), val_number (arg[3]), val_number (arg[4]), val_number (arg[5])));
}
value lime_cairo_pattern_create_rgb (value r, value g, value b) {
return alloc_float ((intptr_t)cairo_pattern_create_rgb (val_number (r), val_number (g), val_number (b)));
@@ -403,6 +433,15 @@ namespace lime {
}
value lime_cairo_pattern_get_color_stop_count (value handle) {
int count;
cairo_pattern_get_color_stop_count ((cairo_pattern_t*)(intptr_t)val_float (handle), &count);
return alloc_int (count);
}
value lime_cairo_pattern_get_extend (value handle) {
return alloc_int (cairo_pattern_get_extend ((cairo_pattern_t*)(intptr_t)val_float (handle)));
@@ -819,10 +858,15 @@ namespace lime {
DEFINE_PRIM (lime_cairo_new_path, 1);
DEFINE_PRIM (lime_cairo_paint, 1);
DEFINE_PRIM (lime_cairo_paint_with_alpha, 2);
DEFINE_PRIM (lime_cairo_pattern_add_color_stop_rgb, 5);
DEFINE_PRIM_MULT (lime_cairo_pattern_add_color_stop_rgba);
DEFINE_PRIM (lime_cairo_pattern_create_for_surface, 1);
DEFINE_PRIM (lime_cairo_pattern_create_linear, 4);
DEFINE_PRIM_MULT (lime_cairo_pattern_create_radial);
DEFINE_PRIM (lime_cairo_pattern_create_rgb, 3);
DEFINE_PRIM (lime_cairo_pattern_create_rgba, 4);
DEFINE_PRIM (lime_cairo_pattern_destroy, 1);
DEFINE_PRIM (lime_cairo_pattern_get_color_stop_count, 1);
DEFINE_PRIM (lime_cairo_pattern_get_extend, 1);
DEFINE_PRIM (lime_cairo_pattern_get_filter, 1);
DEFINE_PRIM (lime_cairo_pattern_get_matrix, 1);