evas: move Evas_Polygon to become Efl_Canvas_Polygon.

TODO: add support for 2 points (aka line).
This commit is contained in:
Cedric BAIL 2016-03-14 14:59:33 -07:00
parent e6a27e13b5
commit 0ff7429ea7
6 changed files with 57 additions and 36 deletions

View File

@ -4,7 +4,7 @@
evas_eolian_pub_files = \
lib/evas/canvas/evas_object.eo \
lib/evas/canvas/evas_line.eo \
lib/evas/canvas/evas_polygon.eo \
lib/evas/canvas/efl_canvas_polygon.eo \
lib/evas/canvas/evas_rectangle.eo \
lib/evas/canvas/evas_text.eo \
lib/evas/canvas/evas_textblock.eo \

View File

@ -6138,7 +6138,7 @@ _edje_real_part_swallow_hints_update(Edje_Real_Part *rp)
rp->typedata.swallow->swallow_params.max.h = h;
}
else if (eo_isa(rp->typedata.swallow->swallowed_object, EVAS_TEXT_CLASS) ||
eo_isa(rp->typedata.swallow->swallowed_object, EVAS_POLYGON_CLASS) ||
eo_isa(rp->typedata.swallow->swallowed_object, EFL_CANVAS_POLYGON_CLASS) ||
eo_isa(rp->typedata.swallow->swallowed_object, EVAS_LINE_CLASS))
{
Evas_Coord w = 0, h = 0;

View File

@ -74,7 +74,7 @@
*
* @{
*/
#include "canvas/evas_polygon.eo.h"
#include "canvas/efl_canvas_polygon.eo.h"
/**
* @}
*/

View File

@ -3275,7 +3275,21 @@ EAPI Evas_Object *evas_object_line_add(Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG
*/
EAPI Evas_Object *evas_object_polygon_add(Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
#include "canvas/evas_polygon.eo.legacy.h"
/**
* @brief Adds the given point to the given evas polygon object.
*
* @param[in] y The Y coordinate of the given point.
*
* @ingroup Evas_Polygon
*/
EAPI void evas_object_polygon_point_add(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
/** Removes all of the points from the given evas polygon object.
*
* @ingroup Evas_Polygon
*/
EAPI void evas_object_polygon_points_clear(Evas_Object *obj);
/**
* @}
*/

View File

@ -1,7 +1,6 @@
class Evas.Polygon (Evas.Object)
class Efl.Canvas.Polygon (Evas.Object)
{
legacy_prefix: evas_object_polygon;
eo_prefix: evas_obj_polygon;
legacy_prefix: null;
methods {
point_add {
[[Adds the given point to the given evas polygon object.]]

View File

@ -1,16 +1,16 @@
#include "evas_common_private.h"
#include "evas_private.h"
#define MY_CLASS EVAS_POLYGON_CLASS
#define MY_CLASS EFL_CANVAS_POLYGON_CLASS
/* private magic number for polygon objects */
static const char o_type[] = "polygon";
/* private struct for line object internal data */
typedef struct _Evas_Polygon_Data Evas_Polygon_Data;
typedef struct _Evas_Polygon_Point Evas_Polygon_Point;
typedef struct _Efl_Canvas_Polygon_Data Efl_Canvas_Polygon_Data;
typedef struct _Efl_Canvas_Polygon_Point Efl_Canvas_Polygon_Point;
struct _Evas_Polygon_Data
struct _Efl_Canvas_Polygon_Data
{
Eina_List *points;
void *engine_data;
@ -21,7 +21,7 @@ struct _Evas_Polygon_Data
Eina_Bool changed : 1;
};
struct _Evas_Polygon_Point
struct _Efl_Canvas_Polygon_Point
{
Evas_Coord x, y;
};
@ -95,15 +95,11 @@ static const Evas_Object_Func object_func =
EAPI Evas_Object *
evas_object_polygon_add(Evas *e)
{
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
return NULL;
MAGIC_CHECK_END();
Evas_Object *eo_obj = eo_add(EVAS_POLYGON_CLASS, e);
return eo_obj;
return eo_add(MY_CLASS, e);
}
EOLIAN static Eo *
_evas_polygon_eo_base_constructor(Eo *eo_obj, Evas_Polygon_Data *class_data EINA_UNUSED)
_efl_canvas_polygon_eo_base_constructor(Eo *eo_obj, Efl_Canvas_Polygon_Data *class_data EINA_UNUSED)
{
eo_obj = eo_constructor(eo_super(eo_obj, MY_CLASS));
@ -113,11 +109,11 @@ _evas_polygon_eo_base_constructor(Eo *eo_obj, Evas_Polygon_Data *class_data EINA
}
EOLIAN static void
_evas_polygon_point_add(Eo *eo_obj, Evas_Polygon_Data *_pd, Evas_Coord x, Evas_Coord y)
_efl_canvas_polygon_point_add(Eo *eo_obj, Efl_Canvas_Polygon_Data *_pd, Evas_Coord x, Evas_Coord y)
{
Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
Evas_Polygon_Data *o = _pd;
Evas_Polygon_Point *p;
Efl_Canvas_Polygon_Data *o = _pd;
Efl_Canvas_Polygon_Point *p;
Evas_Coord min_x, max_x, min_y, max_y;
int is, was = 0;
@ -149,7 +145,7 @@ _evas_polygon_point_add(Eo *eo_obj, Evas_Polygon_Data *_pd, Evas_Coord x, Evas_C
}
}
p = malloc(sizeof(Evas_Polygon_Point));
p = malloc(sizeof(Efl_Canvas_Polygon_Point));
if (!p) return;
p->x = x + o->offset.x;
p->y = y + o->offset.y;
@ -220,10 +216,10 @@ _evas_polygon_point_add(Eo *eo_obj, Evas_Polygon_Data *_pd, Evas_Coord x, Evas_C
}
EOLIAN static void
_evas_polygon_points_clear(Eo *eo_obj, Evas_Polygon_Data *_pd)
_efl_canvas_polygon_points_clear(Eo *eo_obj, Efl_Canvas_Polygon_Data *_pd)
{
Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
Evas_Polygon_Data *o = _pd;
Efl_Canvas_Polygon_Data *o = _pd;
void *list_data;
int is, was;
@ -275,7 +271,7 @@ evas_object_polygon_init(Evas_Object *eo_obj)
}
EOLIAN static void
_evas_polygon_eo_base_destructor(Eo *eo_obj, Evas_Polygon_Data *_pd EINA_UNUSED)
_efl_canvas_polygon_eo_base_destructor(Eo *eo_obj, Efl_Canvas_Polygon_Data *_pd EINA_UNUSED)
{
Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
@ -288,7 +284,7 @@ evas_object_polygon_free(Evas_Object *eo_obj EINA_UNUSED,
Evas_Object_Protected_Data *obj,
void *type_private_data)
{
Evas_Polygon_Data *o = type_private_data;
Efl_Canvas_Polygon_Data *o = type_private_data;
void *list_data;
/* free obj */
EINA_LIST_FREE(o->points, list_data)
@ -306,9 +302,9 @@ evas_object_polygon_render(Evas_Object *eo_obj EINA_UNUSED,
void *type_private_data,
void *output, void *context, void *surface, int x, int y, Eina_Bool do_async)
{
Evas_Polygon_Data *o = type_private_data;
Efl_Canvas_Polygon_Data *o = type_private_data;
Eina_List *l;
Evas_Polygon_Point *p;
Efl_Canvas_Polygon_Point *p;
/* render object to surface with context, and offxet by x,y */
obj->layer->evas->engine.func->context_color_set(output,
@ -351,7 +347,7 @@ evas_object_polygon_render_pre(Evas_Object *eo_obj,
Evas_Object_Protected_Data *obj,
void *type_private_data)
{
Evas_Polygon_Data *o = type_private_data;
Efl_Canvas_Polygon_Data *o = type_private_data;
int is_v, was_v;
/* dont pre-render the obj twice! */
@ -456,21 +452,21 @@ evas_object_polygon_render_post(Evas_Object *eo_obj,
static unsigned int evas_object_polygon_id_get(Evas_Object *eo_obj)
{
Evas_Polygon_Data *o = eo_data_scope_get(eo_obj, MY_CLASS);
Efl_Canvas_Polygon_Data *o = eo_data_scope_get(eo_obj, MY_CLASS);
if (!o) return 0;
return MAGIC_OBJ_POLYGON;
}
static unsigned int evas_object_polygon_visual_id_get(Evas_Object *eo_obj)
{
Evas_Polygon_Data *o = eo_data_scope_get(eo_obj, MY_CLASS);
Efl_Canvas_Polygon_Data *o = eo_data_scope_get(eo_obj, MY_CLASS);
if (!o) return 0;
return MAGIC_OBJ_SHAPE;
}
static void *evas_object_polygon_engine_data_get(Evas_Object *eo_obj)
{
Evas_Polygon_Data *o = eo_data_scope_get(eo_obj, MY_CLASS);
Efl_Canvas_Polygon_Data *o = eo_data_scope_get(eo_obj, MY_CLASS);
return o->engine_data;
}
@ -503,10 +499,10 @@ evas_object_polygon_is_inside(Evas_Object *eo_obj EINA_UNUSED,
void *type_private_data,
Evas_Coord x, Evas_Coord y)
{
Evas_Polygon_Data *o = type_private_data;
Efl_Canvas_Polygon_Data *o = type_private_data;
int num_edges = 0; /* Number of edges we crossed */
Eina_List *itr;
Evas_Polygon_Point *p;
Efl_Canvas_Polygon_Point *p;
if (!o->points) return 0;
@ -524,7 +520,7 @@ evas_object_polygon_is_inside(Evas_Object *eo_obj EINA_UNUSED,
{
Evas_Coord line_y;
Eina_List *next = eina_list_next(itr);
Evas_Polygon_Point *p_next;
Efl_Canvas_Polygon_Point *p_next;
/* Get the next, or if there's no next, take the first */
if (next)
{
@ -565,4 +561,16 @@ evas_object_polygon_was_inside(Evas_Object *eo_obj EINA_UNUSED,
return 1;
}
#include "canvas/evas_polygon.eo.c"
EAPI void
evas_object_polygon_point_add(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
{
efl_canvas_polygon_point_add(obj, x, y);
}
EAPI void
evas_object_polygon_points_clear(Evas_Object *obj)
{
efl_canvas_polygon_points_clear(obj);
}
#include "canvas/efl_canvas_polygon.eo.c"