Eolian: Integration of Evas Out

This commit is contained in:
Yossi Kantor 2014-03-12 20:13:45 +02:00 committed by Daniel Zaoui
parent 2219b5434c
commit 7e6c21c44b
4 changed files with 68 additions and 104 deletions

View File

@ -31,7 +31,9 @@ BUILT_SOURCES += \
lib/evas/canvas/evas_grid.eo.c \ lib/evas/canvas/evas_grid.eo.c \
lib/evas/canvas/evas_grid.eo.h \ lib/evas/canvas/evas_grid.eo.h \
lib/evas/canvas/evas_image.eo.c \ lib/evas/canvas/evas_image.eo.c \
lib/evas/canvas/evas_image.eo.h lib/evas/canvas/evas_image.eo.h \
lib/evas/canvas/evas_out.eo.c \
lib/evas/canvas/evas_out.eo.h
EXTRA_DIST += \ EXTRA_DIST += \
lib/evas/canvas/evas_object.eo \ lib/evas/canvas/evas_object.eo \
@ -48,7 +50,8 @@ EXTRA_DIST += \
lib/evas/canvas/evas_common_interface.eo \ lib/evas/canvas/evas_common_interface.eo \
lib/evas/canvas/evas.eo \ lib/evas/canvas/evas.eo \
lib/evas/canvas/evas_grid.eo \ lib/evas/canvas/evas_grid.eo \
lib/evas/canvas/evas_image.eo lib/evas/canvas/evas_image.eo \
lib/evas/canvas/evas_out.eo
lib_LTLIBRARIES += lib/evas/libevas.la lib_LTLIBRARIES += lib/evas/libevas.la
noinst_LTLIBRARIES = noinst_LTLIBRARIES =
@ -78,7 +81,8 @@ nodist_installed_evascanvasheaders_DATA = \
lib/evas/canvas/evas_object.eo.h \ lib/evas/canvas/evas_object.eo.h \
lib/evas/canvas/evas.eo.h \ lib/evas/canvas/evas.eo.h \
lib/evas/canvas/evas_grid.eo.h \ lib/evas/canvas/evas_grid.eo.h \
lib/evas/canvas/evas_image.eo.h lib/evas/canvas/evas_image.eo.h \
lib/evas/canvas/evas_out.eo.h
noinst_HEADERS = \ noinst_HEADERS = \
lib/evas/include/evas_inline.x \ lib/evas/include/evas_inline.x \

View File

@ -6678,7 +6678,9 @@ enum
/** /**
* @} * @}
*/ */
#include "canvas/evas_out.eo.h"
#if 0
#define EVAS_OUT_CLASS evas_out_class_get() #define EVAS_OUT_CLASS evas_out_class_get()
const Eo_Class *evas_out_class_get(void) EINA_CONST; const Eo_Class *evas_out_class_get(void) EINA_CONST;
extern EAPI Eo_Op EVAS_OUT_BASE_ID; extern EAPI Eo_Op EVAS_OUT_BASE_ID;
@ -6776,3 +6778,5 @@ EO_TYPECHECK(Eina_Bool *, ret)
#define evas_out_engine_info_get(ret) \ #define evas_out_engine_info_get(ret) \
EVAS_OUT_ID(EVAS_OUT_SUB_ID_ENGINE_INFO_GET), \ EVAS_OUT_ID(EVAS_OUT_SUB_ID_ENGINE_INFO_GET), \
EO_TYPECHECK(Evas_Engine_Info **, ret) EO_TYPECHECK(Evas_Engine_Info **, ret)
#endif

View File

@ -7,10 +7,9 @@
#include <Eo.h> #include <Eo.h>
EAPI Eo_Op EVAS_OUT_BASE_ID = EO_NOOP;
#define MY_CLASS EVAS_OUT_CLASS #define MY_CLASS EVAS_OUT_CLASS
typedef struct _Evas_Out_Public_Data Evas_Out_Public_Data; typedef struct _Evas_Out_Data Evas_Out_Data;
struct _Evas_Out_Public_Data struct _Evas_Out_Data
{ {
void *info;/*, *context, *output;*/ void *info;/*, *context, *output;*/
Evas_Coord x, y, w, h; Evas_Coord x, y, w, h;
@ -27,10 +26,9 @@ evas_out_add(Evas *e)
return eo_obj; return eo_obj;
} }
static void EOLIAN static void
_constructor(Eo *eo_obj, void *_pd, va_list *list EINA_UNUSED) _evas_out_constructor(Eo *eo_obj, Evas_Out_Data *eo_dat)
{ {
Evas_Out_Public_Data *eo_dat = _pd;
Eo *eo_parent; Eo *eo_parent;
Evas_Public_Data *e; Evas_Public_Data *e;
@ -53,10 +51,9 @@ evas_output_del(Evas_Out *evo)
eo_unref(evo); eo_unref(evo);
} }
static void EOLIAN static void
_destructor(Eo *eo_obj, void *_pd, va_list *list EINA_UNUSED) _evas_out_destructor(Eo *eo_obj, Evas_Out_Data *eo_dat)
{ {
Evas_Out_Public_Data *eo_dat = _pd;
Eo *eo_parent; Eo *eo_parent;
Evas_Public_Data *e; Evas_Public_Data *e;
@ -73,20 +70,9 @@ _destructor(Eo *eo_obj, void *_pd, va_list *list EINA_UNUSED)
eo_do_super(eo_obj, MY_CLASS, eo_destructor()); eo_do_super(eo_obj, MY_CLASS, eo_destructor());
} }
EAPI void EOLIAN static void
evas_output_view_set(Evas_Out *evo, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h) _evas_out_view_set(Eo *eo_e EINA_UNUSED, Evas_Out_Data *eo_dat, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h)
{ {
eo_do((Eo *)evo, evas_out_view_set(x, y, w, h));
}
static void
_output_view_set(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
{
Evas_Out_Public_Data *eo_dat = _pd;
Evas_Coord x = va_arg(*list, Evas_Coord);
Evas_Coord y = va_arg(*list, Evas_Coord);
Evas_Coord w = va_arg(*list, Evas_Coord);
Evas_Coord h = va_arg(*list, Evas_Coord);
eo_dat->x = x; eo_dat->x = x;
eo_dat->y = y; eo_dat->y = y;
eo_dat->w = w; eo_dat->w = w;
@ -95,97 +81,29 @@ _output_view_set(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
// XXX: tell evas to add damage if viewport loc/size changed // XXX: tell evas to add damage if viewport loc/size changed
} }
EAPI void EOLIAN static void
evas_output_view_get(const Evas_Out *evo, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) _evas_out_view_get(Eo *eo_e EINA_UNUSED, Evas_Out_Data *eo_dat, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
{ {
eo_do((Eo *)evo, evas_out_view_get(x, y, w, h));
}
static void
_output_view_get(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
{
Evas_Out_Public_Data *eo_dat = _pd;
Evas_Coord *x = va_arg(*list, Evas_Coord *);
Evas_Coord *y = va_arg(*list, Evas_Coord *);
Evas_Coord *w = va_arg(*list, Evas_Coord *);
Evas_Coord *h = va_arg(*list, Evas_Coord *);
if (x) *x = eo_dat->x; if (x) *x = eo_dat->x;
if (y) *y = eo_dat->y; if (y) *y = eo_dat->y;
if (w) *w = eo_dat->w; if (w) *w = eo_dat->w;
if (h) *h = eo_dat->h; if (h) *h = eo_dat->h;
} }
EAPI Eina_Bool EOLIAN static Eina_Bool
evas_output_engine_info_set(Evas_Out *evo, Evas_Engine_Info *info) _evas_out_engine_info_set(Eo *eo_e EINA_UNUSED, Evas_Out_Data *eo_dat, Evas_Engine_Info *info)
{ {
Eina_Bool ret = EINA_FALSE; if (eo_dat->info != info) return EINA_FALSE;
eo_do(evo, evas_out_engine_info_set(info, &ret));
return ret;
}
static void
_output_engine_info_set(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
{
Evas_Out_Public_Data *eo_dat = _pd;
Evas_Engine_Info *info = va_arg(*list, Evas_Engine_Info *);
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
if (eo_dat->info != info)
{
*ret = EINA_FALSE;
return;
}
// XXX: handle setting of engine info here // XXX: handle setting of engine info here
if (ret) *ret = EINA_TRUE;
return EINA_TRUE;
} }
EAPI Evas_Engine_Info * EOLIAN static Evas_Engine_Info*
evas_output_engine_info_get(const Evas_Out *evo) _evas_out_engine_info_get(Eo *eo_e EINA_UNUSED, Evas_Out_Data *eo_dat)
{ {
Evas_Engine_Info *ret = NULL; return eo_dat->info;
eo_do((Eo *)evo, evas_out_engine_info_get(&ret));
return ret;
} }
static void #include "canvas/evas_out.eo.c"
_output_engine_info_get(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
{
Evas_Out_Public_Data *eo_dat = _pd;
Evas_Engine_Info **ret = va_arg(*list, Evas_Engine_Info **);
if (ret) *ret = eo_dat->info;
}
static void
_class_constructor(Eo_Class *klass)
{
const Eo_Op_Func_Description func_desc[] = {
EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_CONSTRUCTOR), _constructor),
EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_DESTRUCTOR), _destructor),
EO_OP_FUNC(EVAS_OUT_ID(EVAS_OUT_SUB_ID_VIEW_SET), _output_view_set),
EO_OP_FUNC(EVAS_OUT_ID(EVAS_OUT_SUB_ID_VIEW_GET), _output_view_get),
EO_OP_FUNC(EVAS_OUT_ID(EVAS_OUT_SUB_ID_ENGINE_INFO_SET), _output_engine_info_set),
EO_OP_FUNC(EVAS_OUT_ID(EVAS_OUT_SUB_ID_ENGINE_INFO_GET), _output_engine_info_get),
EO_OP_FUNC_SENTINEL
};
eo_class_funcs_set(klass, func_desc);
}
static const Eo_Op_Description op_desc[] = {
EO_OP_DESCRIPTION(EVAS_OUT_SUB_ID_VIEW_SET, "Set the canvas viewport region for the output"),
EO_OP_DESCRIPTION(EVAS_OUT_SUB_ID_VIEW_GET, "Get the canvas viewport region for the output"),
EO_OP_DESCRIPTION(EVAS_OUT_SUB_ID_ENGINE_INFO_SET, "Set engine specific information for rendering to the given output"),
EO_OP_DESCRIPTION(EVAS_OUT_SUB_ID_ENGINE_INFO_GET, "Get engine specific information for rendering to the given output"),
EO_OP_DESCRIPTION_SENTINEL
};
static const Eo_Class_Description class_desc = {
EO_VERSION,
"Evas_Out",
EO_CLASS_TYPE_REGULAR,
EO_CLASS_DESCRIPTION_OPS(&EVAS_OUT_BASE_ID, op_desc, EVAS_OUT_SUB_ID_LAST),
NULL,
sizeof(Evas_Out_Public_Data),
_class_constructor,
NULL
};
EO_DEFINE_CLASS(evas_out_class_get, &class_desc, EO_BASE_CLASS, NULL);

View File

@ -0,0 +1,38 @@
class Evas_Out (Eo_Base)
{
eo_prefix: evas_out;
legacy_prefix: evas_output;
properties {
view {
set {
/*@ Sets the viewport region of the canvas that the output displays This sets both the viewport region in the canvas that displays on the given output, but also the viewport size will match the output resolution 1:1. */
}
get {
/*@ Gets the viewport region of the canvas that the output displays */
}
values {
Evas_Coord x;
Evas_Coord y;
Evas_Coord w;
Evas_Coord h;
}
}
engine_info {
set {
/*@ Sets the engine specific output parameters for a given output. */
return Eina_Bool;
}
get {
/*@ Gets the engine specific output parameters for a given output. */
}
values {
Evas_Engine_Info *info; /*@ The engine parameters */
}
}
}
implements {
Eo_Base::constructor;
Eo_Base::destructor;
}
}