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.