forked from enlightenment/efl
Eolian: Integration of Evas Out
This commit is contained in:
parent
2219b5434c
commit
7e6c21c44b
|
@ -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 \
|
||||||
|
|
|
@ -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
|
|
@ -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);
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue