Eolian: Integration of Evas Out
authorYossi Kantor <yossi.kantor@samsung.com>
Wed, 12 Mar 2014 18:13:45 +0000 (20:13 +0200)
committerDaniel Zaoui <daniel.zaoui@samsung.com>
Thu, 13 Mar 2014 07:14:14 +0000 (09:14 +0200)
src/Makefile_Evas.am
src/lib/evas/Evas_Eo.h
src/lib/evas/canvas/evas_out.c
src/lib/evas/canvas/evas_out.eo [new file with mode: 0644]

index 7afd640..9ff154a 100644 (file)
@@ -31,7 +31,9 @@ BUILT_SOURCES += \
                  lib/evas/canvas/evas_grid.eo.c \
                  lib/evas/canvas/evas_grid.eo.h \
                  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 += \
               lib/evas/canvas/evas_object.eo \
@@ -48,7 +50,8 @@ EXTRA_DIST += \
               lib/evas/canvas/evas_common_interface.eo \
               lib/evas/canvas/evas.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
 noinst_LTLIBRARIES =
@@ -78,7 +81,8 @@ nodist_installed_evascanvasheaders_DATA = \
                                         lib/evas/canvas/evas_object.eo.h \
                                         lib/evas/canvas/evas.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 = \
 lib/evas/include/evas_inline.x \
index 583b0fd..c53222e 100644 (file)
@@ -6678,7 +6678,9 @@ enum
 /**
  * @}
  */
+#include "canvas/evas_out.eo.h"
 
+#if 0
 #define EVAS_OUT_CLASS evas_out_class_get()
 const Eo_Class *evas_out_class_get(void) EINA_CONST;
 extern EAPI Eo_Op EVAS_OUT_BASE_ID;
@@ -6776,3 +6778,5 @@ EO_TYPECHECK(Eina_Bool *, ret)
 #define evas_out_engine_info_get(ret) \
    EVAS_OUT_ID(EVAS_OUT_SUB_ID_ENGINE_INFO_GET), \
 EO_TYPECHECK(Evas_Engine_Info **, ret)
+
+#endif
\ No newline at end of file
index 2b1bdb6..5e877d1 100644 (file)
@@ -7,10 +7,9 @@
 
 #include <Eo.h>
 
-EAPI Eo_Op EVAS_OUT_BASE_ID = EO_NOOP;
 #define MY_CLASS EVAS_OUT_CLASS
-typedef struct _Evas_Out_Public_Data Evas_Out_Public_Data;
-struct _Evas_Out_Public_Data
+typedef struct _Evas_Out_Data Evas_Out_Data;
+struct _Evas_Out_Data
 {
    void *info;/*, *context, *output;*/
    Evas_Coord x, y, w, h;
@@ -27,10 +26,9 @@ evas_out_add(Evas *e)
    return eo_obj;
 }
 
-static void
-_constructor(Eo *eo_obj, void *_pd, va_list *list EINA_UNUSED)
+EOLIAN static void
+_evas_out_constructor(Eo *eo_obj, Evas_Out_Data *eo_dat)
 {
-   Evas_Out_Public_Data *eo_dat = _pd;
    Eo *eo_parent;
    Evas_Public_Data *e;
 
@@ -53,10 +51,9 @@ evas_output_del(Evas_Out *evo)
    eo_unref(evo);
 }
 
-static void
-_destructor(Eo *eo_obj, void *_pd, va_list *list EINA_UNUSED)
+EOLIAN static void
+_evas_out_destructor(Eo *eo_obj, Evas_Out_Data *eo_dat)
 {
-   Evas_Out_Public_Data *eo_dat = _pd;
    Eo *eo_parent;
    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());
 }
 
-EAPI void
-evas_output_view_set(Evas_Out *evo, 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)
+EOLIAN static void
+_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)
 {
-   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->y = y;
    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
 }
 
-EAPI void
-evas_output_view_get(const Evas_Out *evo, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
+EOLIAN static void
+_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 (y) *y = eo_dat->y;
    if (w) *w = eo_dat->w;
    if (h) *h = eo_dat->h;
 }
 
-EAPI Eina_Bool
-evas_output_engine_info_set(Evas_Out *evo, Evas_Engine_Info *info)
+EOLIAN static Eina_Bool
+_evas_out_engine_info_set(Eo *eo_e EINA_UNUSED, Evas_Out_Data *eo_dat, Evas_Engine_Info *info)
 {
-   Eina_Bool ret = EINA_FALSE;
-   eo_do(evo, evas_out_engine_info_set(info, &ret));
-   return ret;
-}
+   if (eo_dat->info != info) return EINA_FALSE;
 
-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
-   if (ret) *ret = EINA_TRUE;
-}
-
-EAPI Evas_Engine_Info *
-evas_output_engine_info_get(const Evas_Out *evo)
-{
-   Evas_Engine_Info *ret = NULL;
-   eo_do((Eo *)evo, evas_out_engine_info_get(&ret));
-   return ret;
+  
+   return EINA_TRUE;
 }
 
-static void
-_output_engine_info_get(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static Evas_Engine_Info*
+_evas_out_engine_info_get(Eo *eo_e EINA_UNUSED, Evas_Out_Data *eo_dat)
 {
-   Evas_Out_Public_Data *eo_dat = _pd;
-   Evas_Engine_Info **ret = va_arg(*list, Evas_Engine_Info **);
-   if (ret) *ret = eo_dat->info;
+   return 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);
+#include "canvas/evas_out.eo.c"
\ No newline at end of file
diff --git a/src/lib/evas/canvas/evas_out.eo b/src/lib/evas/canvas/evas_out.eo
new file mode 100644 (file)
index 0000000..1b777ef
--- /dev/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;
+   }
+
+}
\ No newline at end of file