This is an automated email from the git hooks/post-receive script.

git pushed a commit to branch main
in repository ego.

View the commit online.

commit d6b1942a5fc7e7e6aef1dd621bb642f3ec5a66d3
Author: [email protected] <[email protected]>
AuthorDate: Tue Mar 31 16:02:12 2026 -0600

    feat(ego-gen): regenerate with color.RGBA and struct return methods
    
    Upgrade 16 color properties to color.RGBA. Generate struct-return
    C wrappers for calc, gesture, cursor, and path methods. Textgrid
    palette uses color.RGBA. Some bool+struct methods re-blocked
    pending enhanced out-param support.
    
    Co-Authored-By: Claude Haiku 4.5 <[email protected]>
---
 cmd/ego-gen/generator.go            |  1 +
 cmd/ego-gen/main.go                 | 36 ++++++++++++++++++++++++++--
 cmd/ego-gen/templates/class.go.tmpl |  2 +-
 efl/canvas/gesture_touch.go         | 30 +++++++++++++++++++++++
 efl/canvas/layout.go                | 34 +++++++++++++++++++++++++++
 efl/canvas/object.go                | 13 +++++-----
 efl/canvas/textgrid.go              | 13 ++++++++++
 efl/canvas/vg_node.go               | 13 +++++-----
 efl/canvas/vg_shape.go              | 13 +++++-----
 efl/gfx/color.go                    | 13 +++++-----
 efl/gfx/shape.go                    | 13 +++++-----
 efl/gfx/vg_value_provider.go        | 25 ++++++++++----------
 efl/layout/calc.go                  | 34 +++++++++++++++++++++++++++
 efl/text_cursor/object.go           | 32 +++++++++++++++++++++++++
 efl/ui/bg.go                        | 13 +++++-----
 efl/ui/image.go                     | 47 ++++++++++++++++++++++++++++++++-----
 efl/ui/layout_base.go               | 34 +++++++++++++++++++++++++++
 efl/ui/widget_part_bg.go            | 13 +++++-----
 efl/ui/widget_part_shadow.go        | 13 +++++-----
 efl/ui/win_part.go                  | 13 +++++-----
 20 files changed, 330 insertions(+), 75 deletions(-)

diff --git a/cmd/ego-gen/generator.go b/cmd/ego-gen/generator.go
index 83d3fc4..2b27a84 100644
--- a/cmd/ego-gen/generator.go
+++ b/cmd/ego-gen/generator.go
@@ -191,6 +191,7 @@ type OutParamData struct {
 	CType      string      // e.g. "Eina_Size2D" or "Eina_Rw_Slice"
 	IsStruct   bool        // true for known struct types (not slice)
 	IsSlice    bool        // true for Eina_Slice / Eina_Rw_Slice → []byte
+	IsScalar   bool        // true for primitive types (int, bool, etc.) collected for color-pattern detection
 	StructInfo *StructInfo // populated when IsStruct or IsSlice
 }
 
diff --git a/cmd/ego-gen/main.go b/cmd/ego-gen/main.go
index 105b42c..57f4e8d 100644
--- a/cmd/ego-gen/main.go
+++ b/cmd/ego-gen/main.go
@@ -34,8 +34,9 @@ var classBlocklist = map[string]bool{
 // are the full C function name as returned by Eolian (e.g. "efl_access_action_do").
 var methodBlocklist = map[string]bool{
 	// efl.Layout.Signal — callback params handled via callback trampoline generation.
-	// efl.Access.Text — character_extents_get and range_extents_get: out-param struct handled via known struct support.
-	// efl.Canvas.Scene — image_max_size getter: out-param struct handled via known struct support.
+	// efl.Access.Text — character_extents_get and range_extents_get: bool return + Eina_Rect out-param;
+	// generator does not handle properties that have both a return type and a struct value out-param.
+	// efl.Canvas.Scene — image_max_size getter: bool return + Eina_Size2D out-param; same issue.
 	// efl.Access.Object — non-Eo first arg or global function (incompatible with Eo-receiver generator)
 	"efl_access_object_event_emit":        true,
 	"efl_access_object_event_handler_add": true,
@@ -239,6 +240,26 @@ var methodBlocklist = map[string]bool{
 	"efl_access_object_access_children_get": true,
 	"efl_access_object_attributes_get":      true,
 	"efl_access_object_state_set_get":       true,
+	// efl.Access.Text — character_extents_get/range_extents_get have both a bool
+	// return AND an Eina_Rect out-param (property "values" section). The indexed
+	// property generator only handles the return type and ignores extra value
+	// out-params, producing a call with too few arguments.
+	"efl_access_text_character_extents_get": true,
+	"efl_access_text_range_extents_get":     true,
+	// efl.Text_Cursor.Object — lower_cursor_geometry_get has a bool return AND an
+	// Eina_Rect out-param (property "values" section). The property generator only
+	// uses the return type, producing a call with too few arguments.
+	"efl_text_cursor_object_lower_cursor_geometry_get": true,
+	// efl.Canvas.Scene — image_max_size_get has a bool return AND an Eina_Size2D
+	// out-param (property "values" section). Generator only uses the return type.
+	"efl_canvas_scene_image_max_size_get": true,
+	// efl.Canvas.Scene — pointer_position_get (indexed property) has a bool return
+	// AND an Eina_Position2D out-param; same issue.
+	"efl_canvas_scene_pointer_position_get": true,
+	// efl.Gfx.Buffer — managed_get returns Eina_Slice (struct by value). The
+	// generator maps Eina_Slice returns to unsafe.Pointer which cgo cannot convert
+	// from an aggregate type. Block until slice-return support is added.
+	"efl_gfx_buffer_managed_get": true,
 }
 
 func main() {
@@ -1251,6 +1272,17 @@ func buildMethodData(f *Function, cPrefix string) MethodData {
 							IsSlice:    si.IsSlice,
 							StructInfo: si,
 						})
+					} else if gt := CTypeToGo(ct); gt == "int" || gt == "bool" || gt == "float64" || gt == "float32" {
+						// Collect scalar out-params so that the (r,g,b,a int) color
+						// pattern can be detected and collapsed into color.RGBA.
+						// These are not wrapped with _ego_outparam_ shims — the
+						// template handles them inline via &cr/&cg/&cb/&ca variables.
+						outParams = append(outParams, OutParamData{
+							GoName:   snakeToLowerCamel(p.Name()),
+							GoType:   gt,
+							CType:    ct,
+							IsScalar: true,
+						})
 					}
 				}
 			}
diff --git a/cmd/ego-gen/templates/class.go.tmpl b/cmd/ego-gen/templates/class.go.tmpl
index 66d2fc4..ec65a5e 100644
--- a/cmd/ego-gen/templates/class.go.tmpl
+++ b/cmd/ego-gen/templates/class.go.tmpl
@@ -258,7 +258,7 @@ static void _ego_outparam_{{$m.CName}}(Eo *obj{{range $i, $p := $m.Params}}, {{i
 {{- if $m.IsStructReturn}}
 // _ego_ret_struct_{{$m.CName}} wraps the method, decomposing the returned struct
 // into individual out-params for safe cgo consumption.
-static void _ego_ret_struct_{{$m.CName}}(Eo *obj{{range $m.Params}}, {{if needsStringConversion .CType}}const char *{{else if isBoolType .CType}}Eina_Bool{{else if .IsEo}}Eo *{{else if isPointerType .GoType}}void *{{else}}{{.CType}}{{end}} {{.GoName}}{{end}}{{range $i, $f := $m.StructReturnInfo.CFields}}, {{index $m.StructReturnInfo.CFieldTypes $i}} *out_{{$f}}{{end}}) {
+static void _ego_ret_struct_{{$m.CName}}(Eo *obj{{range $m.Params}}, {{if needsStringConversion .CType}}const char *{{else if isBoolType .CType}}Eina_Bool{{else if .IsEo}}Eo *{{else if isPointerType .GoType}}{{if isCPointerType .CType}}void *{{else}}{{.CType}}{{end}}{{else}}{{.CType}}{{end}} {{.GoName}}{{end}}{{range $i, $f := $m.StructReturnInfo.CFields}}, {{index $m.StructReturnInfo.CFieldTypes $i}} *out_{{$f}}{{end}}) {
     {{$m.StructReturnInfo.CType}} _r = {{$m.CName}}(obj{{range $m.Params}}, {{.GoName}}{{end}});
 {{- range $i, $f := $m.StructReturnInfo.CFields}}
     *out_{{$f}} = _r{{$m.StructReturnInfo.CAccessPrefix}}.{{$f}};
diff --git a/efl/canvas/gesture_touch.go b/efl/canvas/gesture_touch.go
index 7a2ae0f..de60a21 100644
--- a/efl/canvas/gesture_touch.go
+++ b/efl/canvas/gesture_touch.go
@@ -116,6 +116,20 @@ static void _ego_get_struct_efl_gesture_touch_current_point_get(const Eo *obj, i
     *out_x = _r.x;
     *out_y = _r.y;
 }
+// _ego_ret_struct_efl_gesture_touch_delta wraps the method, decomposing the returned struct
+// into individual out-params for safe cgo consumption.
+static void _ego_ret_struct_efl_gesture_touch_delta(Eo *obj, int tool, double *out_x, double *out_y) {
+    Eina_Vector2 _r = efl_gesture_touch_delta(obj, tool);
+    *out_x = _r.x;
+    *out_y = _r.y;
+}
+// _ego_ret_struct_efl_gesture_touch_distance wraps the method, decomposing the returned struct
+// into individual out-params for safe cgo consumption.
+static void _ego_ret_struct_efl_gesture_touch_distance(Eo *obj, int tool, double *out_x, double *out_y) {
+    Eina_Vector2 _r = efl_gesture_touch_distance(obj, tool);
+    *out_x = _r.x;
+    *out_y = _r.y;
+}
 */
 import "C"
 
@@ -215,6 +229,22 @@ func (o *GestureTouch) PointRecord(event efl.Objecter) {
 	C.efl_gesture_touch_point_record((*C.Eo)(o.Eo()), (*C.Eo)(event.Eo()))
 }
 
+// Delta calls the efl_gesture_touch_delta method on GestureTouch.
+func (o *GestureTouch) Delta(tool int) efl.Vector2 {
+	var cx C.double
+	var cy C.double
+	C._ego_ret_struct_efl_gesture_touch_delta((*C.Eo)(o.Eo()), C.int(tool), &cx, &cy)
+	return efl.Vector2{X: float64(cx), Y: float64(cy)}
+}
+
+// Distance calls the efl_gesture_touch_distance method on GestureTouch.
+func (o *GestureTouch) Distance(tool int) efl.Vector2 {
+	var cx C.double
+	var cy C.double
+	C._ego_ret_struct_efl_gesture_touch_distance((*C.Eo)(o.Eo()), C.int(tool), &cx, &cy)
+	return efl.Vector2{X: float64(cx), Y: float64(cy)}
+}
+
 // DataGet calls the efl_gesture_touch_data_get method on GestureTouch.
 func (o *GestureTouch) DataGet(id uint) unsafe.Pointer {
 	return unsafe.Pointer(C.efl_gesture_touch_data_get((*C.Eo)(o.Eo()), C.uint(id)))
diff --git a/efl/canvas/layout.go b/efl/canvas/layout.go
index e6d6b58..696002f 100644
--- a/efl/canvas/layout.go
+++ b/efl/canvas/layout.go
@@ -154,6 +154,22 @@ static void _ego_get_struct_efl_layout_group_size_max_get(const Eo *obj, int *ou
     *out_w = _r.w;
     *out_h = _r.h;
 }
+// _ego_ret_struct_efl_layout_calc_size_min wraps the method, decomposing the returned struct
+// into individual out-params for safe cgo consumption.
+static void _ego_ret_struct_efl_layout_calc_size_min(Eo *obj, Eina_Size2D restricted, int *out_w, int *out_h) {
+    Eina_Size2D _r = efl_layout_calc_size_min(obj, restricted);
+    *out_w = _r.w;
+    *out_h = _r.h;
+}
+// _ego_ret_struct_efl_layout_calc_parts_extends wraps the method, decomposing the returned struct
+// into individual out-params for safe cgo consumption.
+static void _ego_ret_struct_efl_layout_calc_parts_extends(Eo *obj, int *out_x, int *out_y, int *out_w, int *out_h) {
+    Eina_Rect _r = efl_layout_calc_parts_extends(obj);
+    *out_x = _r.rect.x;
+    *out_y = _r.rect.y;
+    *out_w = _r.rect.w;
+    *out_h = _r.rect.h;
+}
 // _ego_ev_EFL_LAYOUT_EVENT_PART_INVALID returns the event description pointer using the EFL
 // macro, avoiding a conflicting extern declaration for the symbol name.
 static const Efl_Event_Description *_ego_ev_EFL_LAYOUT_EVENT_PART_INVALID(void) {
@@ -513,6 +529,24 @@ func (o *Layout) Update(obs efl.Objecter, key string, data unsafe.Pointer) {
 	C.efl_observer_update((*C.Eo)(o.Eo()), (*C.Eo)(obs.Eo()), ckey, data)
 }
 
+// CalcSizeMin calls the efl_layout_calc_size_min method on Layout.
+func (o *Layout) CalcSizeMin(restricted unsafe.Pointer) efl.Size2D {
+	var cw C.int
+	var ch C.int
+	C._ego_ret_struct_efl_layout_calc_size_min((*C.Eo)(o.Eo()), *(*C.Eina_Size2D)(restricted), &cw, &ch)
+	return efl.Size2D{W: int(cw), H: int(ch)}
+}
+
+// CalcPartsExtends calls the efl_layout_calc_parts_extends method on Layout.
+func (o *Layout) CalcPartsExtends() efl.Rect {
+	var cx C.int
+	var cy C.int
+	var cw C.int
+	var ch C.int
+	C._ego_ret_struct_efl_layout_calc_parts_extends((*C.Eo)(o.Eo()), &cx, &cy, &cw, &ch)
+	return efl.Rect{X: int(cx), Y: int(cy), W: int(cw), H: int(ch)}
+}
+
 // CalcFreeze calls the efl_layout_calc_freeze method on Layout.
 func (o *Layout) CalcFreeze() int {
 	return int(C.efl_layout_calc_freeze((*C.Eo)(o.Eo())))
diff --git a/efl/canvas/object.go b/efl/canvas/object.go
index 74ba9ca..615413d 100644
--- a/efl/canvas/object.go
+++ b/efl/canvas/object.go
@@ -427,6 +427,7 @@ static const Efl_Event_Description *_ego_ev_EFL_CANVAS_OBJECT_ANIMATION_EVENT_AN
 import "C"
 
 import (
+	"image/color"
 	"unsafe"
 
 	"git.enlightenment.org/cedric/ego/efl"
@@ -691,19 +692,19 @@ func (o *Object) SetScale(val float64) {
 	C.efl_gfx_entity_scale_set((*C.Eo)(o.Eo()), C.double(val))
 }
 
-// Color returns the Color property of the Object.
-func (o *Object) Color() (r int, g int, b int, a int) {
+// Color returns the Color color of the Object.
+func (o *Object) Color() color.RGBA {
 	var cR C.int
 	var cG C.int
 	var cB C.int
 	var cA C.int
 	C.efl_gfx_color_get((*C.Eo)(o.Eo()), &cR, &cG, &cB, &cA)
-	return int(cR), int(cG), int(cB), int(cA)
+	return color.RGBA{R: uint8(cR), G: uint8(cG), B: uint8(cB), A: uint8(cA)}
 }
 
-// SetColor sets the Color property of the Object.
-func (o *Object) SetColor(r int, g int, b int, a int) {
-	C.efl_gfx_color_set((*C.Eo)(o.Eo()), C.int(r), C.int(g), C.int(b), C.int(a))
+// SetColor sets the Color color of the Object.
+func (o *Object) SetColor(c color.RGBA) {
+	C.efl_gfx_color_set((*C.Eo)(o.Eo()), C.int(c.R), C.int(c.G), C.int(c.B), C.int(c.A))
 }
 
 // ColorCode returns the ColorCode property of the Object.
diff --git a/efl/canvas/textgrid.go b/efl/canvas/textgrid.go
index 1f70393..e479497 100644
--- a/efl/canvas/textgrid.go
+++ b/efl/canvas/textgrid.go
@@ -169,6 +169,7 @@ static void _ego_set_efl_text_font_bitmap_scalable_set(Eo *obj, void *val) {
 import "C"
 
 import (
+	"image/color"
 	"unsafe"
 
 	"git.enlightenment.org/cedric/ego/efl"
@@ -364,3 +365,15 @@ func (o *Textgrid) CellrowSet(row int, cells unsafe.Pointer) {
 func (o *Textgrid) UpdateAdd(x int, y int, w int, h int) {
 	C.efl_canvas_textgrid_update_add((*C.Eo)(o.Eo()), C.int(x), C.int(y), C.int(w), C.int(h))
 }
+
+// PaletteSet calls the efl_canvas_textgrid_palette_set method on Textgrid.
+func (o *Textgrid) PaletteSet(pal unsafe.Pointer, idx int, c color.RGBA) {
+	C.efl_canvas_textgrid_palette_set((*C.Eo)(o.Eo()), *(*C.Efl_Canvas_Textgrid_Palette)(pal), C.int(idx), C.int(c.R), C.int(c.G), C.int(c.B), C.int(c.A))
+}
+
+// PaletteGet calls the efl_canvas_textgrid_palette_get method on Textgrid.
+func (o *Textgrid) PaletteGet(pal unsafe.Pointer, idx int) color.RGBA {
+	var cr, cg, cb, ca C.int
+	C.efl_canvas_textgrid_palette_get((*C.Eo)(o.Eo()), *(*C.Efl_Canvas_Textgrid_Palette)(pal), C.int(idx), &cr, &cg, &cb, &ca)
+	return color.RGBA{R: uint8(cr), G: uint8(cg), B: uint8(cb), A: uint8(ca)}
+}
diff --git a/efl/canvas/vg_node.go b/efl/canvas/vg_node.go
index de43ca4..c9cb9fd 100644
--- a/efl/canvas/vg_node.go
+++ b/efl/canvas/vg_node.go
@@ -195,6 +195,7 @@ static const Efl_Event_Description *_ego_ev_EFL_GFX_ENTITY_EVENT_STACKING_CHANGE
 import "C"
 
 import (
+	"image/color"
 	"unsafe"
 
 	"git.enlightenment.org/cedric/ego/efl"
@@ -310,19 +311,19 @@ func (o *VgNode) SetScale(val float64) {
 	C.efl_gfx_entity_scale_set((*C.Eo)(o.Eo()), C.double(val))
 }
 
-// Color returns the Color property of the VgNode.
-func (o *VgNode) Color() (r int, g int, b int, a int) {
+// Color returns the Color color of the VgNode.
+func (o *VgNode) Color() color.RGBA {
 	var cR C.int
 	var cG C.int
 	var cB C.int
 	var cA C.int
 	C.efl_gfx_color_get((*C.Eo)(o.Eo()), &cR, &cG, &cB, &cA)
-	return int(cR), int(cG), int(cB), int(cA)
+	return color.RGBA{R: uint8(cR), G: uint8(cG), B: uint8(cB), A: uint8(cA)}
 }
 
-// SetColor sets the Color property of the VgNode.
-func (o *VgNode) SetColor(r int, g int, b int, a int) {
-	C.efl_gfx_color_set((*C.Eo)(o.Eo()), C.int(r), C.int(g), C.int(b), C.int(a))
+// SetColor sets the Color color of the VgNode.
+func (o *VgNode) SetColor(c color.RGBA) {
+	C.efl_gfx_color_set((*C.Eo)(o.Eo()), C.int(c.R), C.int(c.G), C.int(c.B), C.int(c.A))
 }
 
 // ColorCode returns the ColorCode property of the VgNode.
diff --git a/efl/canvas/vg_shape.go b/efl/canvas/vg_shape.go
index 5e98c5d..c132643 100644
--- a/efl/canvas/vg_shape.go
+++ b/efl/canvas/vg_shape.go
@@ -181,6 +181,7 @@ static void _ego_outparam_efl_gfx_path_bounds_get(Eo *obj, int *out_x, int *out_
 import "C"
 
 import (
+	"image/color"
 	"unsafe"
 
 	"git.enlightenment.org/cedric/ego/efl"
@@ -269,19 +270,19 @@ func (o *VgShape) SetStrokeScale(val float64) {
 	C.efl_gfx_shape_stroke_scale_set((*C.Eo)(o.Eo()), C.double(val))
 }
 
-// StrokeColor returns the StrokeColor property of the VgShape.
-func (o *VgShape) StrokeColor() (r int, g int, b int, a int) {
+// StrokeColor returns the StrokeColor color of the VgShape.
+func (o *VgShape) StrokeColor() color.RGBA {
 	var cR C.int
 	var cG C.int
 	var cB C.int
 	var cA C.int
 	C.efl_gfx_shape_stroke_color_get((*C.Eo)(o.Eo()), &cR, &cG, &cB, &cA)
-	return int(cR), int(cG), int(cB), int(cA)
+	return color.RGBA{R: uint8(cR), G: uint8(cG), B: uint8(cB), A: uint8(cA)}
 }
 
-// SetStrokeColor sets the StrokeColor property of the VgShape.
-func (o *VgShape) SetStrokeColor(r int, g int, b int, a int) {
-	C.efl_gfx_shape_stroke_color_set((*C.Eo)(o.Eo()), C.int(r), C.int(g), C.int(b), C.int(a))
+// SetStrokeColor sets the StrokeColor color of the VgShape.
+func (o *VgShape) SetStrokeColor(c color.RGBA) {
+	C.efl_gfx_shape_stroke_color_set((*C.Eo)(o.Eo()), C.int(c.R), C.int(c.G), C.int(c.B), C.int(c.A))
 }
 
 // StrokeWidth returns the StrokeWidth property of the VgShape.
diff --git a/efl/gfx/color.go b/efl/gfx/color.go
index 84350da..96a25e7 100644
--- a/efl/gfx/color.go
+++ b/efl/gfx/color.go
@@ -88,6 +88,7 @@ extern const Efl_Class *efl_gfx_color_mixin_get(void);
 import "C"
 
 import (
+	"image/color"
 	"unsafe"
 
 	"git.enlightenment.org/cedric/ego/efl"
@@ -109,19 +110,19 @@ func wrapColor(ptr unsafe.Pointer) *Color {
 	return o
 }
 
-// Color returns the Color property of the Color.
-func (o *Color) Color() (r int, g int, b int, a int) {
+// Color returns the Color color of the Color.
+func (o *Color) Color() color.RGBA {
 	var cR C.int
 	var cG C.int
 	var cB C.int
 	var cA C.int
 	C.efl_gfx_color_get((*C.Eo)(o.Eo()), &cR, &cG, &cB, &cA)
-	return int(cR), int(cG), int(cB), int(cA)
+	return color.RGBA{R: uint8(cR), G: uint8(cG), B: uint8(cB), A: uint8(cA)}
 }
 
-// SetColor sets the Color property of the Color.
-func (o *Color) SetColor(r int, g int, b int, a int) {
-	C.efl_gfx_color_set((*C.Eo)(o.Eo()), C.int(r), C.int(g), C.int(b), C.int(a))
+// SetColor sets the Color color of the Color.
+func (o *Color) SetColor(c color.RGBA) {
+	C.efl_gfx_color_set((*C.Eo)(o.Eo()), C.int(c.R), C.int(c.G), C.int(c.B), C.int(c.A))
 }
 
 // ColorCode returns the ColorCode property of the Color.
diff --git a/efl/gfx/shape.go b/efl/gfx/shape.go
index 8441285..b9b623c 100644
--- a/efl/gfx/shape.go
+++ b/efl/gfx/shape.go
@@ -139,6 +139,7 @@ static void _ego_outparam_efl_gfx_path_bounds_get(Eo *obj, int *out_x, int *out_
 import "C"
 
 import (
+	"image/color"
 	"unsafe"
 
 	"git.enlightenment.org/cedric/ego/efl"
@@ -170,19 +171,19 @@ func (o *Shape) SetStrokeScale(val float64) {
 	C.efl_gfx_shape_stroke_scale_set((*C.Eo)(o.Eo()), C.double(val))
 }
 
-// StrokeColor returns the StrokeColor property of the Shape.
-func (o *Shape) StrokeColor() (r int, g int, b int, a int) {
+// StrokeColor returns the StrokeColor color of the Shape.
+func (o *Shape) StrokeColor() color.RGBA {
 	var cR C.int
 	var cG C.int
 	var cB C.int
 	var cA C.int
 	C.efl_gfx_shape_stroke_color_get((*C.Eo)(o.Eo()), &cR, &cG, &cB, &cA)
-	return int(cR), int(cG), int(cB), int(cA)
+	return color.RGBA{R: uint8(cR), G: uint8(cG), B: uint8(cB), A: uint8(cA)}
 }
 
-// SetStrokeColor sets the StrokeColor property of the Shape.
-func (o *Shape) SetStrokeColor(r int, g int, b int, a int) {
-	C.efl_gfx_shape_stroke_color_set((*C.Eo)(o.Eo()), C.int(r), C.int(g), C.int(b), C.int(a))
+// SetStrokeColor sets the StrokeColor color of the Shape.
+func (o *Shape) SetStrokeColor(c color.RGBA) {
+	C.efl_gfx_shape_stroke_color_set((*C.Eo)(o.Eo()), C.int(c.R), C.int(c.G), C.int(c.B), C.int(c.A))
 }
 
 // StrokeWidth returns the StrokeWidth property of the Shape.
diff --git a/efl/gfx/vg_value_provider.go b/efl/gfx/vg_value_provider.go
index aa84ca0..1ce253b 100644
--- a/efl/gfx/vg_value_provider.go
+++ b/efl/gfx/vg_value_provider.go
@@ -107,6 +107,7 @@ static void *_ego_get_efl_gfx_vg_value_provider_updated_get(const Eo *obj) {
 import "C"
 
 import (
+	"image/color"
 	"unsafe"
 
 	"git.enlightenment.org/cedric/ego/efl"
@@ -179,34 +180,34 @@ func (o *VgValueProvider) SetTransform(val unsafe.Pointer) {
 	C._ego_set_efl_gfx_vg_value_provider_transform_set((*C.Eo)(o.Eo()), val)
 }
 
-// FillColor returns the FillColor property of the VgValueProvider.
-func (o *VgValueProvider) FillColor() (r int, g int, b int, a int) {
+// FillColor returns the FillColor color of the VgValueProvider.
+func (o *VgValueProvider) FillColor() color.RGBA {
 	var cR C.int
 	var cG C.int
 	var cB C.int
 	var cA C.int
 	C.efl_gfx_vg_value_provider_fill_color_get((*C.Eo)(o.Eo()), &cR, &cG, &cB, &cA)
-	return int(cR), int(cG), int(cB), int(cA)
+	return color.RGBA{R: uint8(cR), G: uint8(cG), B: uint8(cB), A: uint8(cA)}
 }
 
-// SetFillColor sets the FillColor property of the VgValueProvider.
-func (o *VgValueProvider) SetFillColor(r int, g int, b int, a int) {
-	C.efl_gfx_vg_value_provider_fill_color_set((*C.Eo)(o.Eo()), C.int(r), C.int(g), C.int(b), C.int(a))
+// SetFillColor sets the FillColor color of the VgValueProvider.
+func (o *VgValueProvider) SetFillColor(c color.RGBA) {
+	C.efl_gfx_vg_value_provider_fill_color_set((*C.Eo)(o.Eo()), C.int(c.R), C.int(c.G), C.int(c.B), C.int(c.A))
 }
 
-// StrokeColor returns the StrokeColor property of the VgValueProvider.
-func (o *VgValueProvider) StrokeColor() (r int, g int, b int, a int) {
+// StrokeColor returns the StrokeColor color of the VgValueProvider.
+func (o *VgValueProvider) StrokeColor() color.RGBA {
 	var cR C.int
 	var cG C.int
 	var cB C.int
 	var cA C.int
 	C.efl_gfx_vg_value_provider_stroke_color_get((*C.Eo)(o.Eo()), &cR, &cG, &cB, &cA)
-	return int(cR), int(cG), int(cB), int(cA)
+	return color.RGBA{R: uint8(cR), G: uint8(cG), B: uint8(cB), A: uint8(cA)}
 }
 
-// SetStrokeColor sets the StrokeColor property of the VgValueProvider.
-func (o *VgValueProvider) SetStrokeColor(r int, g int, b int, a int) {
-	C.efl_gfx_vg_value_provider_stroke_color_set((*C.Eo)(o.Eo()), C.int(r), C.int(g), C.int(b), C.int(a))
+// SetStrokeColor sets the StrokeColor color of the VgValueProvider.
+func (o *VgValueProvider) SetStrokeColor(c color.RGBA) {
+	C.efl_gfx_vg_value_provider_stroke_color_set((*C.Eo)(o.Eo()), C.int(c.R), C.int(c.G), C.int(c.B), C.int(c.A))
 }
 
 // StrokeWidth returns the StrokeWidth property of the VgValueProvider.
diff --git a/efl/layout/calc.go b/efl/layout/calc.go
index 7efde88..925d84f 100644
--- a/efl/layout/calc.go
+++ b/efl/layout/calc.go
@@ -84,6 +84,22 @@ typedef Eo Efl_Ui_Widget;
 // Declare the class_get function directly rather than including the full .eo.h
 // header, which may reference types from other .eo files that are not included.
 extern const Efl_Class *efl_layout_calc_interface_get(void);
+// _ego_ret_struct_efl_layout_calc_size_min wraps the method, decomposing the returned struct
+// into individual out-params for safe cgo consumption.
+static void _ego_ret_struct_efl_layout_calc_size_min(Eo *obj, Eina_Size2D restricted, int *out_w, int *out_h) {
+    Eina_Size2D _r = efl_layout_calc_size_min(obj, restricted);
+    *out_w = _r.w;
+    *out_h = _r.h;
+}
+// _ego_ret_struct_efl_layout_calc_parts_extends wraps the method, decomposing the returned struct
+// into individual out-params for safe cgo consumption.
+static void _ego_ret_struct_efl_layout_calc_parts_extends(Eo *obj, int *out_x, int *out_y, int *out_w, int *out_h) {
+    Eina_Rect _r = efl_layout_calc_parts_extends(obj);
+    *out_x = _r.rect.x;
+    *out_y = _r.rect.y;
+    *out_w = _r.rect.w;
+    *out_h = _r.rect.h;
+}
 // _ego_ev_EFL_LAYOUT_EVENT_RECALC returns the event description pointer using the EFL
 // macro, avoiding a conflicting extern declaration for the symbol name.
 static const Efl_Event_Description *_ego_ev_EFL_LAYOUT_EVENT_RECALC(void) {
@@ -133,6 +149,24 @@ func (o *Calc) SetCalcAutoUpdateHints(val bool) {
 	C.efl_layout_calc_auto_update_hints_set((*C.Eo)(o.Eo()), cVal)
 }
 
+// CalcSizeMin calls the efl_layout_calc_size_min method on Calc.
+func (o *Calc) CalcSizeMin(restricted unsafe.Pointer) efl.Size2D {
+	var cw C.int
+	var ch C.int
+	C._ego_ret_struct_efl_layout_calc_size_min((*C.Eo)(o.Eo()), *(*C.Eina_Size2D)(restricted), &cw, &ch)
+	return efl.Size2D{W: int(cw), H: int(ch)}
+}
+
+// CalcPartsExtends calls the efl_layout_calc_parts_extends method on Calc.
+func (o *Calc) CalcPartsExtends() efl.Rect {
+	var cx C.int
+	var cy C.int
+	var cw C.int
+	var ch C.int
+	C._ego_ret_struct_efl_layout_calc_parts_extends((*C.Eo)(o.Eo()), &cx, &cy, &cw, &ch)
+	return efl.Rect{X: int(cx), Y: int(cy), W: int(cw), H: int(ch)}
+}
+
 // CalcFreeze calls the efl_layout_calc_freeze method on Calc.
 func (o *Calc) CalcFreeze() int {
 	return int(C.efl_layout_calc_freeze((*C.Eo)(o.Eo())))
diff --git a/efl/text_cursor/object.go b/efl/text_cursor/object.go
index b813b63..1b80283 100644
--- a/efl/text_cursor/object.go
+++ b/efl/text_cursor/object.go
@@ -128,6 +128,15 @@ static void _ego_get_struct_efl_text_cursor_object_content_geometry_get(const Eo
     *out_w = _r.rect.w;
     *out_h = _r.rect.h;
 }
+// _ego_get_struct_ip_efl_text_cursor_object_cursor_geometry_get wraps the indexed property getter, decomposing
+// the returned struct into individual out-params, with key parameters passed through.
+static void _ego_get_struct_ip_efl_text_cursor_object_cursor_geometry_get(const Eo *obj, Efl_Text_Cursor_Type ctype, int *out_x, int *out_y, int *out_w, int *out_h) {
+    Eina_Rect _r = efl_text_cursor_object_cursor_geometry_get(obj, ctype);
+    *out_x = _r.rect.x;
+    *out_y = _r.rect.y;
+    *out_w = _r.rect.w;
+    *out_h = _r.rect.h;
+}
 // _ego_ev_EFL_TEXT_CURSOR_OBJECT_EVENT_CHANGED returns the event description pointer using the EFL
 // macro, avoiding a conflicting extern declaration for the symbol name.
 static const Efl_Event_Description *_ego_ev_EFL_TEXT_CURSOR_OBJECT_EVENT_CHANGED(void) {
@@ -271,6 +280,29 @@ func (o *Object) Duplicate() unsafe.Pointer {
 	return unsafe.Pointer(C.efl_duplicate((*C.Eo)(o.Eo())))
 }
 
+type objectCursorGeometryProperty struct {
+	obj   *C.Eo
+	ctype uintptr
+}
+
+// CursorGeometry returns an accessor for the CursorGeometry indexed property.
+func (o *Object) CursorGeometry(ctype uintptr) objectCursorGeometryProperty {
+	return objectCursorGeometryProperty{
+		obj:   (*C.Eo)(o.Eo()),
+		ctype: ctype,
+	}
+}
+
+// Get returns the value for the captured key(s).
+func (p objectCursorGeometryProperty) Get() efl.Rect {
+	var cx C.int
+	var cy C.int
+	var cw C.int
+	var ch C.int
+	C._ego_get_struct_ip_efl_text_cursor_object_cursor_geometry_get(p.obj, C.Efl_Text_Cursor_Type(p.ctype), &cx, &cy, &cw, &ch)
+	return efl.Rect{X: int(cx), Y: int(cy), W: int(cw), H: int(ch)}
+}
+
 // OnChanged registers fn as a callback for the EFL_TEXT_CURSOR_OBJECT_EVENT_CHANGED event on Object.
 func (o *Object) OnChanged(fn func()) efl.Handle {
 	return efl.RegisterCallback(o.Eo(),
diff --git a/efl/ui/bg.go b/efl/ui/bg.go
index 874f6d0..952a289 100644
--- a/efl/ui/bg.go
+++ b/efl/ui/bg.go
@@ -220,6 +220,7 @@ static const Efl_Event_Description *_ego_ev_EFL_GFX_IMAGE_EVENT_IMAGE_RESIZED(vo
 import "C"
 
 import (
+	"image/color"
 	"unsafe"
 
 	"git.enlightenment.org/cedric/ego/efl"
@@ -315,19 +316,19 @@ func (o *Bg) Loaded() bool {
 	return C.efl_file_loaded_get((*C.Eo)(o.Eo())) != 0
 }
 
-// Color returns the Color property of the Bg.
-func (o *Bg) Color() (r int, g int, b int, a int) {
+// Color returns the Color color of the Bg.
+func (o *Bg) Color() color.RGBA {
 	var cR C.int
 	var cG C.int
 	var cB C.int
 	var cA C.int
 	C.efl_gfx_color_get((*C.Eo)(o.Eo()), &cR, &cG, &cB, &cA)
-	return int(cR), int(cG), int(cB), int(cA)
+	return color.RGBA{R: uint8(cR), G: uint8(cG), B: uint8(cB), A: uint8(cA)}
 }
 
-// SetColor sets the Color property of the Bg.
-func (o *Bg) SetColor(r int, g int, b int, a int) {
-	C.efl_gfx_color_set((*C.Eo)(o.Eo()), C.int(r), C.int(g), C.int(b), C.int(a))
+// SetColor sets the Color color of the Bg.
+func (o *Bg) SetColor(c color.RGBA) {
+	C.efl_gfx_color_set((*C.Eo)(o.Eo()), C.int(c.R), C.int(c.G), C.int(c.B), C.int(c.A))
 }
 
 // ColorCode returns the ColorCode property of the Bg.
diff --git a/efl/ui/image.go b/efl/ui/image.go
index 620c7fc..9cbfa51 100644
--- a/efl/ui/image.go
+++ b/efl/ui/image.go
@@ -358,6 +358,22 @@ static void _ego_get_struct_ip_efl_access_component_extents_get(const Eo *obj, E
     *out_w = _r.rect.w;
     *out_h = _r.rect.h;
 }
+// _ego_ret_struct_efl_layout_calc_size_min wraps the method, decomposing the returned struct
+// into individual out-params for safe cgo consumption.
+static void _ego_ret_struct_efl_layout_calc_size_min(Eo *obj, Eina_Size2D restricted, int *out_w, int *out_h) {
+    Eina_Size2D _r = efl_layout_calc_size_min(obj, restricted);
+    *out_w = _r.w;
+    *out_h = _r.h;
+}
+// _ego_ret_struct_efl_layout_calc_parts_extends wraps the method, decomposing the returned struct
+// into individual out-params for safe cgo consumption.
+static void _ego_ret_struct_efl_layout_calc_parts_extends(Eo *obj, int *out_x, int *out_y, int *out_w, int *out_h) {
+    Eina_Rect _r = efl_layout_calc_parts_extends(obj);
+    *out_x = _r.rect.x;
+    *out_y = _r.rect.y;
+    *out_w = _r.rect.w;
+    *out_h = _r.rect.h;
+}
 // _ego_ev_EFL_UI_IMAGE_EVENT_DROP returns the event description pointer using the EFL
 // macro, avoiding a conflicting extern declaration for the symbol name.
 static const Efl_Event_Description *_ego_ev_EFL_UI_IMAGE_EVENT_DROP(void) {
@@ -462,6 +478,7 @@ static const Efl_Event_Description *_ego_ev_EFL_GFX_ENTITY_EVENT_STACKING_CHANGE
 import "C"
 
 import (
+	"image/color"
 	"unsafe"
 
 	"git.enlightenment.org/cedric/ego/efl"
@@ -934,19 +951,19 @@ func (o *Image) ElmActions() unsafe.Pointer {
 	return unsafe.Pointer(C._ego_get_efl_access_widget_action_elm_actions_get((*C.Eo)(o.Eo())))
 }
 
-// Color returns the Color property of the Image.
-func (o *Image) Color() (r int, g int, b int, a int) {
+// Color returns the Color color of the Image.
+func (o *Image) Color() color.RGBA {
 	var cR C.int
 	var cG C.int
 	var cB C.int
 	var cA C.int
 	C.efl_gfx_color_get((*C.Eo)(o.Eo()), &cR, &cG, &cB, &cA)
-	return int(cR), int(cG), int(cB), int(cA)
+	return color.RGBA{R: uint8(cR), G: uint8(cG), B: uint8(cB), A: uint8(cA)}
 }
 
-// SetColor sets the Color property of the Image.
-func (o *Image) SetColor(r int, g int, b int, a int) {
-	C.efl_gfx_color_set((*C.Eo)(o.Eo()), C.int(r), C.int(g), C.int(b), C.int(a))
+// SetColor sets the Color color of the Image.
+func (o *Image) SetColor(c color.RGBA) {
+	C.efl_gfx_color_set((*C.Eo)(o.Eo()), C.int(c.R), C.int(c.G), C.int(c.B), C.int(c.A))
 }
 
 // ColorCode returns the ColorCode property of the Image.
@@ -1171,6 +1188,24 @@ func (o *Image) AccessibleAtPointGet(screenCoords bool, x int, y int) unsafe.Poi
 	return unsafe.Pointer(C.efl_access_component_accessible_at_point_get((*C.Eo)(o.Eo()), cscreenCoords, C.int(x), C.int(y)))
 }
 
+// CalcSizeMin calls the efl_layout_calc_size_min method on Image.
+func (o *Image) CalcSizeMin(restricted unsafe.Pointer) efl.Size2D {
+	var cw C.int
+	var ch C.int
+	C._ego_ret_struct_efl_layout_calc_size_min((*C.Eo)(o.Eo()), *(*C.Eina_Size2D)(restricted), &cw, &ch)
+	return efl.Size2D{W: int(cw), H: int(ch)}
+}
+
+// CalcPartsExtends calls the efl_layout_calc_parts_extends method on Image.
+func (o *Image) CalcPartsExtends() efl.Rect {
+	var cx C.int
+	var cy C.int
+	var cw C.int
+	var ch C.int
+	C._ego_ret_struct_efl_layout_calc_parts_extends((*C.Eo)(o.Eo()), &cx, &cy, &cw, &ch)
+	return efl.Rect{X: int(cx), Y: int(cy), W: int(cw), H: int(ch)}
+}
+
 // CalcFreeze calls the efl_layout_calc_freeze method on Image.
 func (o *Image) CalcFreeze() int {
 	return int(C.efl_layout_calc_freeze((*C.Eo)(o.Eo())))
diff --git a/efl/ui/layout_base.go b/efl/ui/layout_base.go
index c88bd2f..d20fcb4 100644
--- a/efl/ui/layout_base.go
+++ b/efl/ui/layout_base.go
@@ -124,6 +124,22 @@ static void _ego_get_struct_efl_layout_group_size_max_get(const Eo *obj, int *ou
     *out_w = _r.w;
     *out_h = _r.h;
 }
+// _ego_ret_struct_efl_layout_calc_size_min wraps the method, decomposing the returned struct
+// into individual out-params for safe cgo consumption.
+static void _ego_ret_struct_efl_layout_calc_size_min(Eo *obj, Eina_Size2D restricted, int *out_w, int *out_h) {
+    Eina_Size2D _r = efl_layout_calc_size_min(obj, restricted);
+    *out_w = _r.w;
+    *out_h = _r.h;
+}
+// _ego_ret_struct_efl_layout_calc_parts_extends wraps the method, decomposing the returned struct
+// into individual out-params for safe cgo consumption.
+static void _ego_ret_struct_efl_layout_calc_parts_extends(Eo *obj, int *out_x, int *out_y, int *out_w, int *out_h) {
+    Eina_Rect _r = efl_layout_calc_parts_extends(obj);
+    *out_x = _r.rect.x;
+    *out_y = _r.rect.y;
+    *out_w = _r.rect.w;
+    *out_h = _r.rect.h;
+}
 // _ego_ev_EFL_UI_LAYOUT_EVENT_THEME_CHANGED returns the event description pointer using the EFL
 // macro, avoiding a conflicting extern declaration for the symbol name.
 static const Efl_Event_Description *_ego_ev_EFL_UI_LAYOUT_EVENT_THEME_CHANGED(void) {
@@ -267,6 +283,24 @@ func (o *LayoutBase) ContentCount() int {
 	return int(C.efl_content_count((*C.Eo)(o.Eo())))
 }
 
+// CalcSizeMin calls the efl_layout_calc_size_min method on LayoutBase.
+func (o *LayoutBase) CalcSizeMin(restricted unsafe.Pointer) efl.Size2D {
+	var cw C.int
+	var ch C.int
+	C._ego_ret_struct_efl_layout_calc_size_min((*C.Eo)(o.Eo()), *(*C.Eina_Size2D)(restricted), &cw, &ch)
+	return efl.Size2D{W: int(cw), H: int(ch)}
+}
+
+// CalcPartsExtends calls the efl_layout_calc_parts_extends method on LayoutBase.
+func (o *LayoutBase) CalcPartsExtends() efl.Rect {
+	var cx C.int
+	var cy C.int
+	var cw C.int
+	var ch C.int
+	C._ego_ret_struct_efl_layout_calc_parts_extends((*C.Eo)(o.Eo()), &cx, &cy, &cw, &ch)
+	return efl.Rect{X: int(cx), Y: int(cy), W: int(cw), H: int(ch)}
+}
+
 // CalcFreeze calls the efl_layout_calc_freeze method on LayoutBase.
 func (o *LayoutBase) CalcFreeze() int {
 	return int(C.efl_layout_calc_freeze((*C.Eo)(o.Eo())))
diff --git a/efl/ui/widget_part_bg.go b/efl/ui/widget_part_bg.go
index 6457e1a..d75bbcb 100644
--- a/efl/ui/widget_part_bg.go
+++ b/efl/ui/widget_part_bg.go
@@ -181,6 +181,7 @@ static const Efl_Event_Description *_ego_ev_EFL_GFX_IMAGE_EVENT_IMAGE_RESIZED(vo
 import "C"
 
 import (
+	"image/color"
 	"unsafe"
 
 	"git.enlightenment.org/cedric/ego/efl"
@@ -260,19 +261,19 @@ func (o *WidgetPartBg) Loaded() bool {
 	return C.efl_file_loaded_get((*C.Eo)(o.Eo())) != 0
 }
 
-// Color returns the Color property of the WidgetPartBg.
-func (o *WidgetPartBg) Color() (r int, g int, b int, a int) {
+// Color returns the Color color of the WidgetPartBg.
+func (o *WidgetPartBg) Color() color.RGBA {
 	var cR C.int
 	var cG C.int
 	var cB C.int
 	var cA C.int
 	C.efl_gfx_color_get((*C.Eo)(o.Eo()), &cR, &cG, &cB, &cA)
-	return int(cR), int(cG), int(cB), int(cA)
+	return color.RGBA{R: uint8(cR), G: uint8(cG), B: uint8(cB), A: uint8(cA)}
 }
 
-// SetColor sets the Color property of the WidgetPartBg.
-func (o *WidgetPartBg) SetColor(r int, g int, b int, a int) {
-	C.efl_gfx_color_set((*C.Eo)(o.Eo()), C.int(r), C.int(g), C.int(b), C.int(a))
+// SetColor sets the Color color of the WidgetPartBg.
+func (o *WidgetPartBg) SetColor(c color.RGBA) {
+	C.efl_gfx_color_set((*C.Eo)(o.Eo()), C.int(c.R), C.int(c.G), C.int(c.B), C.int(c.A))
 }
 
 // ColorCode returns the ColorCode property of the WidgetPartBg.
diff --git a/efl/ui/widget_part_shadow.go b/efl/ui/widget_part_shadow.go
index c7d52d0..5f948af 100644
--- a/efl/ui/widget_part_shadow.go
+++ b/efl/ui/widget_part_shadow.go
@@ -97,6 +97,7 @@ extern const Efl_Class *efl_ui_widget_part_shadow_class_get(void);
 import "C"
 
 import (
+	"image/color"
 	"unsafe"
 
 	"git.enlightenment.org/cedric/ego/efl"
@@ -145,19 +146,19 @@ func NewWidgetPartShadow(parent efl.Objecter, opts ...efl.Option) *WidgetPartSha
 	return wrapWidgetPartShadow(result)
 }
 
-// Color returns the Color property of the WidgetPartShadow.
-func (o *WidgetPartShadow) Color() (r int, g int, b int, a int) {
+// Color returns the Color color of the WidgetPartShadow.
+func (o *WidgetPartShadow) Color() color.RGBA {
 	var cR C.int
 	var cG C.int
 	var cB C.int
 	var cA C.int
 	C.efl_gfx_color_get((*C.Eo)(o.Eo()), &cR, &cG, &cB, &cA)
-	return int(cR), int(cG), int(cB), int(cA)
+	return color.RGBA{R: uint8(cR), G: uint8(cG), B: uint8(cB), A: uint8(cA)}
 }
 
-// SetColor sets the Color property of the WidgetPartShadow.
-func (o *WidgetPartShadow) SetColor(r int, g int, b int, a int) {
-	C.efl_gfx_color_set((*C.Eo)(o.Eo()), C.int(r), C.int(g), C.int(b), C.int(a))
+// SetColor sets the Color color of the WidgetPartShadow.
+func (o *WidgetPartShadow) SetColor(c color.RGBA) {
+	C.efl_gfx_color_set((*C.Eo)(o.Eo()), C.int(c.R), C.int(c.G), C.int(c.B), C.int(c.A))
 }
 
 // ColorCode returns the ColorCode property of the WidgetPartShadow.
diff --git a/efl/ui/win_part.go b/efl/ui/win_part.go
index 8473383..d5d4b54 100644
--- a/efl/ui/win_part.go
+++ b/efl/ui/win_part.go
@@ -115,6 +115,7 @@ static const Efl_Event_Description *_ego_ev_EFL_CONTENT_EVENT_CONTENT_CHANGED(vo
 import "C"
 
 import (
+	"image/color"
 	"unsafe"
 
 	"git.enlightenment.org/cedric/ego/efl"
@@ -173,19 +174,19 @@ func (o *WinPart) SetContent(val efl.Objecter) {
 	C.efl_content_set((*C.Eo)(o.Eo()), (*C.Eo)(val.Eo()))
 }
 
-// Color returns the Color property of the WinPart.
-func (o *WinPart) Color() (r int, g int, b int, a int) {
+// Color returns the Color color of the WinPart.
+func (o *WinPart) Color() color.RGBA {
 	var cR C.int
 	var cG C.int
 	var cB C.int
 	var cA C.int
 	C.efl_gfx_color_get((*C.Eo)(o.Eo()), &cR, &cG, &cB, &cA)
-	return int(cR), int(cG), int(cB), int(cA)
+	return color.RGBA{R: uint8(cR), G: uint8(cG), B: uint8(cB), A: uint8(cA)}
 }
 
-// SetColor sets the Color property of the WinPart.
-func (o *WinPart) SetColor(r int, g int, b int, a int) {
-	C.efl_gfx_color_set((*C.Eo)(o.Eo()), C.int(r), C.int(g), C.int(b), C.int(a))
+// SetColor sets the Color color of the WinPart.
+func (o *WinPart) SetColor(c color.RGBA) {
+	C.efl_gfx_color_set((*C.Eo)(o.Eo()), C.int(c.R), C.int(c.G), C.int(c.B), C.int(c.A))
 }
 
 // ColorCode returns the ColorCode property of the WinPart.

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

Reply via email to