typedef struct _Ector_Renderer_Cairo_Shape_Data Ector_Renderer_Cairo_Shape_Data;
struct _Ector_Renderer_Cairo_Shape_Data
{
+ Efl_Gfx_Shape_Public *public_shape;
+
Ector_Cairo_Surface_Data *parent;
Ector_Renderer_Generic_Shape_Data *shape;
Ector_Renderer_Generic_Base_Data *base;
+
cairo_path_t *path;
};
if (pd->shape->fill)
eo_do(pd->shape->fill, ector_renderer_cairo_base_fill(mul_col));
- if (pd->shape->stroke.fill || pd->shape->stroke.color.a > 0)
+ if (pd->shape->stroke.fill || pd->public_shape->stroke.color.a > 0)
{
cairo_fill_preserve(pd->parent->cairo);
eo_do(pd->shape->stroke.fill, ector_renderer_cairo_base_fill(mul_col));
else
{
- r = (((pd->shape->stroke.color.r * R_VAL(&mul_col)) + 0xff) >> 8);
- g = (((pd->shape->stroke.color.g * G_VAL(&mul_col)) + 0xff) >> 8);
- b = (((pd->shape->stroke.color.b * B_VAL(&mul_col)) + 0xff) >> 8);
- a = (((pd->shape->stroke.color.a * A_VAL(&mul_col)) + 0xff) >> 8);
+ r = (((pd->public_shape->stroke.color.r * R_VAL(&mul_col)) + 0xff) >> 8);
+ g = (((pd->public_shape->stroke.color.g * G_VAL(&mul_col)) + 0xff) >> 8);
+ b = (((pd->public_shape->stroke.color.b * B_VAL(&mul_col)) + 0xff) >> 8);
+ a = (((pd->public_shape->stroke.color.a * A_VAL(&mul_col)) + 0xff) >> 8);
ector_color_argb_unpremul(a, &r, &g, &b);
cairo_set_source_rgba(pd->parent->cairo, r/255.0, g/255.0, b/255.0, a/255.0);
- if (pd->shape->stroke.dash)
+ if (pd->public_shape->stroke.dash)
{
double *dashinfo;
- dashinfo = (double *) malloc(2 * pd->shape->stroke.dash_length * sizeof(double));
- for (i = 0; i < pd->shape->stroke.dash_length; i++)
+ dashinfo = (double *) malloc(2 * pd->public_shape->stroke.dash_length * sizeof(double));
+ for (i = 0; i < pd->public_shape->stroke.dash_length; i++)
{
- dashinfo[i*2] = pd->shape->stroke.dash[i].length;
- dashinfo[i*2 + 1] = pd->shape->stroke.dash[i].gap;
+ dashinfo[i*2] = pd->public_shape->stroke.dash[i].length;
+ dashinfo[i*2 + 1] = pd->public_shape->stroke.dash[i].gap;
}
- cairo_set_dash(pd->parent->cairo, dashinfo, pd->shape->stroke.dash_length * 2, 0);
+ cairo_set_dash(pd->parent->cairo, dashinfo, pd->public_shape->stroke.dash_length * 2, 0);
free(dashinfo);
}
}
// Set dash, cap and join
- cairo_set_line_width(pd->parent->cairo, (pd->shape->stroke.width * pd->shape->stroke.scale * 2));
- cairo_set_line_cap(pd->parent->cairo, (cairo_line_cap_t) pd->shape->stroke.cap);
- cairo_set_line_join(pd->parent->cairo, (cairo_line_join_t) pd->shape->stroke.join);
+ cairo_set_line_width(pd->parent->cairo, (pd->public_shape->stroke.width * pd->public_shape->stroke.scale * 2));
+ cairo_set_line_cap(pd->parent->cairo, (cairo_line_cap_t) pd->public_shape->stroke.cap);
+ cairo_set_line_join(pd->parent->cairo, (cairo_line_join_t) pd->public_shape->stroke.join);
cairo_stroke(pd->parent->cairo);
}
else
eo_do_super(obj, ECTOR_RENDERER_CAIRO_SHAPE_CLASS, obj = eo_constructor());
if (!obj) return NULL;
+ pd->public_shape = eo_data_xref(obj, EFL_GFX_SHAPE_MIXIN, obj);
pd->shape = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_SHAPE_MIXIN, obj);
pd->base = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS, obj);
crc = ector_renderer_crc_get());
crc = eina_crc((void*) &pd->shape->stroke.marker, sizeof (pd->shape->stroke.marker), crc, EINA_FALSE);
- crc = eina_crc((void*) &pd->shape->stroke.scale, sizeof (pd->shape->stroke.scale) * 3, crc, EINA_FALSE); // scale, width, centered
- crc = eina_crc((void*) &pd->shape->stroke.color, sizeof (pd->shape->stroke.color), crc, EINA_FALSE);
- crc = eina_crc((void*) &pd->shape->stroke.cap, sizeof (pd->shape->stroke.cap), crc, EINA_FALSE);
- crc = eina_crc((void*) &pd->shape->stroke.join, sizeof (pd->shape->stroke.join), crc, EINA_FALSE);
+ crc = eina_crc((void*) &pd->public_shape->stroke.scale, sizeof (pd->public_shape->stroke.scale) * 3, crc, EINA_FALSE); // scale, width, centered
+ crc = eina_crc((void*) &pd->public_shape->stroke.color, sizeof (pd->public_shape->stroke.color), crc, EINA_FALSE);
+ crc = eina_crc((void*) &pd->public_shape->stroke.cap, sizeof (pd->public_shape->stroke.cap), crc, EINA_FALSE);
+ crc = eina_crc((void*) &pd->public_shape->stroke.join, sizeof (pd->public_shape->stroke.join), crc, EINA_FALSE);
if (pd->shape->fill) crc = _renderer_crc_get(pd->shape->fill, crc);
if (pd->shape->stroke.fill) crc = _renderer_crc_get(pd->shape->stroke.fill, crc);
if (pd->shape->stroke.marker) crc = _renderer_crc_get(pd->shape->stroke.marker, crc);
- if (pd->shape->stroke.dash_length)
+ if (pd->public_shape->stroke.dash_length)
{
- crc = eina_crc((void*) pd->shape->stroke.dash, sizeof (Efl_Gfx_Dash) * pd->shape->stroke.dash_length, crc, EINA_FALSE);
+ crc = eina_crc((void*) pd->public_shape->stroke.dash, sizeof (Efl_Gfx_Dash) * pd->public_shape->stroke.dash_length, crc, EINA_FALSE);
}
return crc;
struct {
Ector_Renderer *fill;
Ector_Renderer *marker;
-
- double scale;
- double width;
- double centered;
-
- struct {
- int r, g, b, a;
- } color;
-
- Efl_Gfx_Dash *dash;
- unsigned int dash_length;
-
- Efl_Gfx_Cap cap;
- Efl_Gfx_Join join;
} stroke;
};
}
}
}
- implements {
- Efl.Gfx.Shape.stroke_scale;
- Efl.Gfx.Shape.stroke_color;
- Efl.Gfx.Shape.stroke_width;
- Efl.Gfx.Shape.stroke_location;
- Efl.Gfx.Shape.stroke_dash;
- Efl.Gfx.Shape.stroke_cap;
- Efl.Gfx.Shape.stroke_join;
- }
}
return pd->stroke.marker;
}
-static void
-_ector_renderer_generic_shape_efl_gfx_shape_stroke_scale_set(Eo *obj EINA_UNUSED,
- Ector_Renderer_Generic_Shape_Data *pd,
- double s)
-{
- pd->stroke.scale = s;
-}
-
-static double
-_ector_renderer_generic_shape_efl_gfx_shape_stroke_scale_get(Eo *obj EINA_UNUSED,
- Ector_Renderer_Generic_Shape_Data *pd)
-{
- return pd->stroke.scale;
-}
-
-static void
-_ector_renderer_generic_shape_efl_gfx_shape_stroke_color_set(Eo *obj EINA_UNUSED,
- Ector_Renderer_Generic_Shape_Data *pd,
- int r, int g, int b, int a)
-{
- pd->stroke.color.r = r;
- pd->stroke.color.g = g;
- pd->stroke.color.b = b;
- pd->stroke.color.a = a;
-}
-
-static void
-_ector_renderer_generic_shape_efl_gfx_shape_stroke_color_get(Eo *obj EINA_UNUSED,
- Ector_Renderer_Generic_Shape_Data *pd,
- int *r, int *g, int *b, int *a)
-{
- if (r) *r = pd->stroke.color.r;
- if (g) *g = pd->stroke.color.g;
- if (b) *b = pd->stroke.color.b;
- if (a) *a = pd->stroke.color.a;
-}
-
-static void
-_ector_renderer_generic_shape_efl_gfx_shape_stroke_width_set(Eo *obj EINA_UNUSED,
- Ector_Renderer_Generic_Shape_Data *pd,
- double w)
-{
- pd->stroke.width = w;
-}
-
-static double
-_ector_renderer_generic_shape_efl_gfx_shape_stroke_width_get(Eo *obj EINA_UNUSED,
- Ector_Renderer_Generic_Shape_Data *pd)
-{
- return pd->stroke.width;
-}
-
-static void
-_ector_renderer_generic_shape_efl_gfx_shape_stroke_location_set(Eo *obj EINA_UNUSED,
- Ector_Renderer_Generic_Shape_Data *pd,
- double centered)
-{
- pd->stroke.centered = centered;
-}
-
-static double
-_ector_renderer_generic_shape_efl_gfx_shape_stroke_location_get(Eo *obj EINA_UNUSED,
- Ector_Renderer_Generic_Shape_Data *pd)
-{
- return pd->stroke.centered;
-}
-
-static void
-_ector_renderer_generic_shape_efl_gfx_shape_stroke_dash_set(Eo *obj EINA_UNUSED,
- Ector_Renderer_Generic_Shape_Data *pd,
- const Efl_Gfx_Dash *dash,
- unsigned int length)
-{
- Efl_Gfx_Dash *tmp;
-
- if (!dash)
- {
- free(pd->stroke.dash);
- pd->stroke.dash = NULL;
- pd->stroke.dash_length = 0;
- return ;
- }
-
- tmp = realloc(pd->stroke.dash, length * sizeof (Efl_Gfx_Dash));
- if (!tmp && length) return ;
- memcpy(tmp, dash, length * sizeof (Efl_Gfx_Dash));
-
- pd->stroke.dash = tmp;
- pd->stroke.dash_length = length;
-}
-
-static void
-_ector_renderer_generic_shape_efl_gfx_shape_stroke_dash_get(Eo *obj EINA_UNUSED,
- Ector_Renderer_Generic_Shape_Data *pd,
- const Efl_Gfx_Dash **dash,
- unsigned int *length)
-{
- if (dash) *dash = pd->stroke.dash;
- if (length) *length = pd->stroke.dash_length;
-}
-
-static void
-_ector_renderer_generic_shape_efl_gfx_shape_stroke_cap_set(Eo *obj EINA_UNUSED,
- Ector_Renderer_Generic_Shape_Data *pd,
- Efl_Gfx_Cap c)
-{
- pd->stroke.cap = c;
-}
-
-static Efl_Gfx_Cap
-_ector_renderer_generic_shape_efl_gfx_shape_stroke_cap_get(Eo *obj EINA_UNUSED,
- Ector_Renderer_Generic_Shape_Data *pd)
-{
- return pd->stroke.cap;
-}
-
-static void
-_ector_renderer_generic_shape_efl_gfx_shape_stroke_join_set(Eo *obj EINA_UNUSED,
- Ector_Renderer_Generic_Shape_Data *pd,
- Efl_Gfx_Join j)
-{
- pd->stroke.join = j;
-}
-
-static Efl_Gfx_Join
-_ector_renderer_generic_shape_efl_gfx_shape_stroke_join_get(Eo *obj EINA_UNUSED,
- Ector_Renderer_Generic_Shape_Data *pd)
-{
- return pd->stroke.join;
-}
-
#include "ector_renderer_generic_shape.eo.c"
#include "ector_private.h"
#include "ector_software_private.h"
-
typedef struct _Ector_Renderer_Software_Shape_Data Ector_Renderer_Software_Shape_Data;
struct _Ector_Renderer_Software_Shape_Data
{
+ Efl_Gfx_Shape_Public *public_shape;
+
Ector_Software_Surface_Data *surface;
Ector_Renderer_Generic_Shape_Data *shape;
Ector_Renderer_Generic_Base_Data *base;
+
Shape_Rle_Data *shape_data;
Shape_Rle_Data *outline_data;
};
SW_FT_Outline ft_outline;
int points_alloc;
int contours_alloc;
-}Outline;
+} Outline;
#define TO_FT_COORD(x) ((x) * 64) // to freetype 26.6 coordinate.
if (pd->outline_data) return EINA_FALSE;
if (!pd->shape->stroke.fill &&
- ((pd->shape->stroke.color.a == 0) ||
- (pd->shape->stroke.width < 0.01)))
+ ((pd->public_shape->stroke.color.a == 0) ||
+ (pd->public_shape->stroke.width < 0.01)))
return EINA_FALSE;
return EINA_TRUE;
if ( _generate_stroke_data(pd))
{
ector_software_rasterizer_stroke_set(pd->surface->software,
- (pd->shape->stroke.width *
- pd->shape->stroke.scale),
- pd->shape->stroke.cap,
- pd->shape->stroke.join);
+ (pd->public_shape->stroke.width *
+ pd->public_shape->stroke.scale),
+ pd->public_shape->stroke.cap,
+ pd->public_shape->stroke.join);
- if (pd->shape->stroke.dash)
+ if (pd->public_shape->stroke.dash)
{
dash_outline = _outline_create();
close_path = _generate_dashed_outline(cmds, pts, dash_outline,
- pd->shape->stroke.dash,
- pd->shape->stroke.dash_length);
+ pd->public_shape->stroke.dash,
+ pd->public_shape->stroke.dash_length);
_outline_transform(dash_outline, pd->base->m);
pd->outline_data = ector_software_rasterizer_generate_stroke_rle_data(pd->surface->software,
&dash_outline->ft_outline,
}
else
{
- if (pd->shape->stroke.color.a > 0)
+ if (pd->public_shape->stroke.color.a > 0)
{
ector_software_rasterizer_color_set(pd->surface->software,
- pd->shape->stroke.color.r,
- pd->shape->stroke.color.g,
- pd->shape->stroke.color.b,
- pd->shape->stroke.color.a);
+ pd->public_shape->stroke.color.r,
+ pd->public_shape->stroke.color.g,
+ pd->public_shape->stroke.color.b,
+ pd->public_shape->stroke.color.a);
ector_software_rasterizer_draw_rle_data(pd->surface->software,
x, y, mul_col, op,
pd->outline_data);
eo_do_super(obj, ECTOR_RENDERER_SOFTWARE_SHAPE_CLASS, obj = eo_constructor());
if (!obj) return NULL;
+ pd->public_shape = eo_data_xref(obj, EFL_GFX_SHAPE_MIXIN, obj);
pd->shape = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_SHAPE_MIXIN, obj);
pd->base = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS, obj);
eo_do(obj,
eo_do_super(obj, ECTOR_RENDERER_SOFTWARE_SHAPE_CLASS, crc = ector_renderer_crc_get());
- crc = eina_crc((void*) &pd->shape->stroke.marker, sizeof (pd->shape->stroke.marker), crc, EINA_FALSE);
- crc = eina_crc((void*) &pd->shape->stroke.scale, sizeof (pd->shape->stroke.scale) * 3, crc, EINA_FALSE); // scale, width, centered
- crc = eina_crc((void*) &pd->shape->stroke.color, sizeof (pd->shape->stroke.color), crc, EINA_FALSE);
- crc = eina_crc((void*) &pd->shape->stroke.cap, sizeof (pd->shape->stroke.cap), crc, EINA_FALSE);
- crc = eina_crc((void*) &pd->shape->stroke.join, sizeof (pd->shape->stroke.join), crc, EINA_FALSE);
+ crc = eina_crc((void*) &pd->shape->stroke.marker,
+ sizeof (pd->shape->stroke.marker),
+ crc, EINA_FALSE);
+ crc = eina_crc((void*) &pd->public_shape->stroke.scale,
+ sizeof (pd->public_shape->stroke.scale) * 3,
+ crc, EINA_FALSE); // scale, width, centered
+ crc = eina_crc((void*) &pd->public_shape->stroke.color,
+ sizeof (pd->public_shape->stroke.color),
+ crc, EINA_FALSE);
+ crc = eina_crc((void*) &pd->public_shape->stroke.cap,
+ sizeof (pd->public_shape->stroke.cap),
+ crc, EINA_FALSE);
+ crc = eina_crc((void*) &pd->public_shape->stroke.join,
+ sizeof (pd->public_shape->stroke.join),
+ crc, EINA_FALSE);
- if (pd->shape->fill) crc = _renderer_crc_get(pd->shape->fill, crc);
- if (pd->shape->stroke.fill) crc = _renderer_crc_get(pd->shape->stroke.fill, crc);
- if (pd->shape->stroke.marker) crc = _renderer_crc_get(pd->shape->stroke.marker, crc);
- if (pd->shape->stroke.dash_length)
+ if (pd->shape->fill)
+ crc = _renderer_crc_get(pd->shape->fill, crc);
+ if (pd->shape->stroke.fill)
+ crc = _renderer_crc_get(pd->shape->stroke.fill, crc);
+ if (pd->shape->stroke.marker)
+ crc = _renderer_crc_get(pd->shape->stroke.marker, crc);
+ if (pd->public_shape->stroke.dash_length)
{
- crc = eina_crc((void*) pd->shape->stroke.dash, sizeof (Efl_Gfx_Dash) * pd->shape->stroke.dash_length, crc, EINA_FALSE);
+ crc = eina_crc((void*) pd->public_shape->stroke.dash,
+ sizeof (Efl_Gfx_Dash) * pd->public_shape->stroke.dash_length,
+ crc, EINA_FALSE);
}
return crc;
} Efl_Gfx_Gradient_Spread;
+/**
+ * Type defining stroke information.
+ * @note Describe the properties to define the path stroke.
+ * @since 1.14
+ */
+typedef struct _Efl_Gfx_Stroke Efl_Gfx_Stroke;
+struct _Efl_Gfx_Stroke
+{
+ double scale;
+ double width;
+ double centered;
+
+ struct {
+ int r, g, b, a;
+ } color;
+
+ Efl_Gfx_Dash *dash;
+ unsigned int dash_length;
+
+ Efl_Gfx_Cap cap;
+ Efl_Gfx_Join join;
+};
+
+typedef struct _Efl_Gfx_Shape_Public Efl_Gfx_Shape_Public;
+struct _Efl_Gfx_Shape_Public
+{
+ Efl_Gfx_Stroke stroke;
+};
+
#ifdef EFL_BETA_API_SUPPORT
#include <Efl_Model_Common.h>
-
+
/* Interfaces */
#include "interfaces/efl_control.eo.h"
#include "interfaces/efl_file.eo.h"
typedef struct _Efl_Gfx_Shape_Data Efl_Gfx_Shape_Data;
struct _Efl_Gfx_Shape_Data
{
+ Efl_Gfx_Shape_Public public;
+
struct {
double x;
double y;
}
}
+static void
+_efl_gfx_shape_stroke_scale_set(Eo *obj EINA_UNUSED,
+ Efl_Gfx_Shape_Data *pd,
+ double s)
+{
+ pd->public.stroke.scale = s;
+}
+
+static double
+_efl_gfx_shape_stroke_scale_get(Eo *obj EINA_UNUSED,
+ Efl_Gfx_Shape_Data *pd)
+{
+ return pd->public.stroke.scale;
+}
+
+static void
+_efl_gfx_shape_stroke_color_set(Eo *obj EINA_UNUSED,
+ Efl_Gfx_Shape_Data *pd,
+ int r, int g, int b, int a)
+{
+ pd->public.stroke.color.r = r;
+ pd->public.stroke.color.g = g;
+ pd->public.stroke.color.b = b;
+ pd->public.stroke.color.a = a;
+}
+
+static void
+_efl_gfx_shape_stroke_color_get(Eo *obj EINA_UNUSED,
+ Efl_Gfx_Shape_Data *pd,
+ int *r, int *g, int *b, int *a)
+{
+ if (r) *r = pd->public.stroke.color.r;
+ if (g) *g = pd->public.stroke.color.g;
+ if (b) *b = pd->public.stroke.color.b;
+ if (a) *a = pd->public.stroke.color.a;
+}
+
+static void
+_efl_gfx_shape_stroke_width_set(Eo *obj EINA_UNUSED,
+ Efl_Gfx_Shape_Data *pd,
+ double w)
+{
+ pd->public.stroke.width = w;
+}
+
+static double
+_efl_gfx_shape_stroke_width_get(Eo *obj EINA_UNUSED,
+ Efl_Gfx_Shape_Data *pd)
+{
+ return pd->public.stroke.width;
+}
+
+static void
+_efl_gfx_shape_stroke_location_set(Eo *obj EINA_UNUSED,
+ Efl_Gfx_Shape_Data *pd,
+ double centered)
+{
+ pd->public.stroke.centered = centered;
+}
+
+static double
+_efl_gfx_shape_stroke_location_get(Eo *obj EINA_UNUSED,
+ Efl_Gfx_Shape_Data *pd)
+{
+ return pd->public.stroke.centered;
+}
+
+static void
+_efl_gfx_shape_stroke_dash_set(Eo *obj EINA_UNUSED,
+ Efl_Gfx_Shape_Data *pd,
+ const Efl_Gfx_Dash *dash, unsigned int length)
+{
+ Efl_Gfx_Dash *tmp;
+
+ if (!dash)
+ {
+ free(pd->public.stroke.dash);
+ pd->public.stroke.dash = NULL;
+ pd->public.stroke.dash_length = 0;
+ return ;
+ }
+
+ tmp = realloc(pd->public.stroke.dash, length * sizeof (Efl_Gfx_Dash));
+ if (!tmp && length) return ;
+ memcpy(tmp, dash, length * sizeof (Efl_Gfx_Dash));
+
+ pd->public.stroke.dash = tmp;
+ pd->public.stroke.dash_length = length;
+}
+
+static void
+_efl_gfx_shape_stroke_dash_get(Eo *obj EINA_UNUSED,
+ Efl_Gfx_Shape_Data *pd,
+ const Efl_Gfx_Dash **dash, unsigned int *length)
+{
+ if (dash) *dash = pd->public.stroke.dash;
+ if (length) *length = pd->public.stroke.dash_length;
+}
+
+static void
+_efl_gfx_shape_stroke_cap_set(Eo *obj EINA_UNUSED,
+ Efl_Gfx_Shape_Data *pd,
+ Efl_Gfx_Cap c)
+{
+ pd->public.stroke.cap = c;
+}
+
+static Efl_Gfx_Cap
+_efl_gfx_shape_stroke_cap_get(Eo *obj EINA_UNUSED,
+ Efl_Gfx_Shape_Data *pd)
+{
+ return pd->public.stroke.cap;
+}
+
+static void
+_efl_gfx_shape_stroke_join_set(Eo *obj EINA_UNUSED,
+ Efl_Gfx_Shape_Data *pd,
+ Efl_Gfx_Join j)
+{
+ pd->public.stroke.join = j;
+}
+
+static Efl_Gfx_Join
+_efl_gfx_shape_stroke_join_get(Eo *obj EINA_UNUSED,
+ Efl_Gfx_Shape_Data *pd)
+{
+ return pd->public.stroke.join;
+}
+
#include "interfaces/efl_gfx_shape.eo.c"
}
}
}
- implements {
- @virtual .stroke_scale.get;
- @virtual .stroke_scale.set;
- @virtual .stroke_color.get;
- @virtual .stroke_color.set;
- @virtual .stroke_width.get;
- @virtual .stroke_width.set;
- @virtual .stroke_location.get;
- @virtual .stroke_location.set;
- @virtual .stroke_dash.get;
- @virtual .stroke_dash.set;
- @virtual .stroke_cap.get;
- @virtual .stroke_cap.set;
- @virtual .stroke_join.get;
- @virtual .stroke_join.set;
- }
}
}
}
implements {
- Efl.Gfx.Shape.stroke_scale;
- Efl.Gfx.Shape.stroke_color;
- Efl.Gfx.Shape.stroke_width;
- Efl.Gfx.Shape.stroke_location;
- Efl.Gfx.Shape.stroke_dash;
- Efl.Gfx.Shape.stroke_cap;
- Efl.Gfx.Shape.stroke_join;
Efl.Gfx.Base.color_part.set;
Efl.Gfx.Base.color_part.get;
Efl.VG.Base.bounds_get;
Efl_VG *fill;
struct {
- Efl_Gfx_Dash *dash;
Efl_VG *fill;
Efl_VG *marker;
-
- double scale;
- double width;
- double centered; // from 0 to 1
-
- int r, g, b, a;
-
- unsigned int dash_count;
-
- Efl_Gfx_Cap cap;
- Efl_Gfx_Join join;
} stroke;
};
return pd->fill;
}
-static void
-_efl_vg_shape_efl_gfx_shape_stroke_scale_set(Eo *obj EINA_UNUSED,
- Efl_VG_Shape_Data *pd,
- double s)
-{
- pd->stroke.scale = s;
-
- _efl_vg_base_changed(obj);
-}
-
-static double
-_efl_vg_shape_efl_gfx_shape_stroke_scale_get(Eo *obj EINA_UNUSED,
- Efl_VG_Shape_Data *pd)
-{
- return pd->stroke.scale;
-}
-
-static void
-_efl_vg_shape_efl_gfx_shape_stroke_color_set(Eo *obj EINA_UNUSED,
- Efl_VG_Shape_Data *pd,
- int r, int g, int b, int a)
-{
- pd->stroke.r = r;
- pd->stroke.g = g;
- pd->stroke.b = b;
- pd->stroke.a = a;
-
- _efl_vg_base_changed(obj);
-}
-
static Eina_Bool
-_efl_vg_shape_efl_gfx_base_color_part_set(Eo *obj, Efl_VG_Shape_Data *pd,
+_efl_vg_shape_efl_gfx_base_color_part_set(Eo *obj, Efl_VG_Shape_Data *pd EINA_UNUSED,
const char * part,
int r, int g, int b, int a)
{
if (part && !strcmp(part, "stroke"))
{
- _efl_vg_shape_efl_gfx_shape_stroke_color_set(obj, pd, r, g, b, a);
+ eo_do(obj, efl_gfx_shape_stroke_color_set(r, g, b, a));
return EINA_TRUE;
}
return ret;
}
-static void
-_efl_vg_shape_efl_gfx_shape_stroke_color_get(Eo *obj EINA_UNUSED,
- Efl_VG_Shape_Data *pd,
- int *r, int *g, int *b, int *a)
-{
- if (r) *r = pd->stroke.r;
- if (g) *g = pd->stroke.g;
- if (b) *b = pd->stroke.b;
- if (a) *a = pd->stroke.a;
-}
-
static Eina_Bool
-_efl_vg_shape_efl_gfx_base_color_part_get(Eo *obj, Efl_VG_Shape_Data *pd,
+_efl_vg_shape_efl_gfx_base_color_part_get(Eo *obj, Efl_VG_Shape_Data *pd EINA_UNUSED,
const char * part,
int *r, int *g, int *b, int *a)
{
if (part && !strcmp(part, "stroke"))
{
- _efl_vg_shape_efl_gfx_shape_stroke_color_get(obj, pd, r, g, b, a);
+ eo_do(obj, efl_gfx_shape_stroke_color_get(r, g, b, a));
return EINA_TRUE;
}
}
static void
-_efl_vg_shape_efl_gfx_shape_stroke_width_set(Eo *obj EINA_UNUSED,
- Efl_VG_Shape_Data *pd,
- double w)
-{
- pd->stroke.width = w;
-
- _efl_vg_base_changed(obj);
-}
-
-static double
-_efl_vg_shape_efl_gfx_shape_stroke_width_get(Eo *obj EINA_UNUSED,
- Efl_VG_Shape_Data *pd)
-{
- return pd->stroke.width;
-}
-
-static void
-_efl_vg_shape_efl_gfx_shape_stroke_location_set(Eo *obj EINA_UNUSED,
- Efl_VG_Shape_Data *pd,
- double centered)
-{
- pd->stroke.centered = centered;
-
- _efl_vg_base_changed(obj);
-}
-
-static double
-_efl_vg_shape_efl_gfx_shape_stroke_location_get(Eo *obj EINA_UNUSED,
- Efl_VG_Shape_Data *pd)
-{
- return pd->stroke.centered;
-}
-
-static void
-_efl_vg_shape_efl_gfx_shape_stroke_dash_set(Eo *obj EINA_UNUSED,
- Efl_VG_Shape_Data *pd,
- const Efl_Gfx_Dash *dash,
- unsigned int length)
-{
- free(pd->stroke.dash);
- pd->stroke.dash = NULL;
- pd->stroke.dash_count = 0;
-
- // check for null or empty dash
- if (!dash || !length) return;
-
- pd->stroke.dash = malloc(sizeof (Efl_Gfx_Dash) * length);
- if (!pd->stroke.dash) return ;
-
- memcpy(pd->stroke.dash, dash, sizeof (Efl_Gfx_Dash) * length);
- pd->stroke.dash_count = length;
-
- _efl_vg_base_changed(obj);
-}
-
-static void
-_efl_vg_shape_efl_gfx_shape_stroke_dash_get(Eo *obj EINA_UNUSED,
- Efl_VG_Shape_Data *pd,
- const Efl_Gfx_Dash **dash,
- unsigned int *length)
-{
- if (dash) *dash = pd->stroke.dash;
- if (length) *length = pd->stroke.dash_count;
-}
-
-static void
_efl_vg_shape_stroke_marker_set(Eo *obj EINA_UNUSED,
Efl_VG_Shape_Data *pd,
Efl_VG_Shape *m)
}
static void
-_efl_vg_shape_efl_gfx_shape_stroke_cap_set(Eo *obj EINA_UNUSED,
- Efl_VG_Shape_Data *pd,
- Efl_Gfx_Cap c)
-{
- pd->stroke.cap = c;
-
- _efl_vg_base_changed(obj);
-}
-
-static Efl_Gfx_Cap
-_efl_vg_shape_efl_gfx_shape_stroke_cap_get(Eo *obj EINA_UNUSED,
- Efl_VG_Shape_Data *pd)
-{
- return pd->stroke.cap;
-}
-
-static void
-_efl_vg_shape_efl_gfx_shape_stroke_join_set(Eo *obj EINA_UNUSED,
- Efl_VG_Shape_Data *pd,
- Efl_Gfx_Join j)
-{
- pd->stroke.join = j;
-
- _efl_vg_base_changed(obj);
-}
-
-static Efl_Gfx_Join
-_efl_vg_shape_efl_gfx_shape_stroke_join_get(Eo *obj EINA_UNUSED,
- Efl_VG_Shape_Data *pd)
-{
- return pd->stroke.join;
-}
-
-static void
_efl_vg_shape_render_pre(Eo *obj EINA_UNUSED,
Eina_Matrix3 *parent,
Ector_Surface *s,
obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor());
- pd->stroke.cap = EFL_GFX_CAP_BUTT;
- pd->stroke.join = EFL_GFX_JOIN_MITER;
- pd->stroke.scale = 1;
- pd->stroke.centered = 0.5;
+ eo_do(obj,
+ efl_gfx_shape_stroke_scale_set(1),
+ efl_gfx_shape_stroke_location_set(0.5),
+ efl_gfx_shape_stroke_cap_set(EFL_GFX_CAP_BUTT),
+ efl_gfx_shape_stroke_join_set(EFL_GFX_JOIN_MITER));
nd = eo_data_scope_get(obj, EFL_VG_BASE_CLASS);
nd->render_pre = _efl_vg_shape_render_pre;