evas_gl support back after evas 1.1 out.
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 3 Dec 2011 14:21:58 +0000 (14:21 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 3 Dec 2011 14:21:58 +0000 (14:21 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@65842 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/bin/Makefile.am
src/bin/test.c
src/lib/Elementary.h.in
src/lib/Makefile.am

index 734beca..db1d353 100644 (file)
@@ -64,6 +64,8 @@ test_gengrid.c \
 test_genlist.c \
 test_gesture_layer.c \
 test_gesture_layer2.c \
+test_glview_simple.c \
+test_glview.c \
 test_grid.c \
 test_hover.c \
 test_hoversel.c \
@@ -108,10 +110,6 @@ test_web.c \
 test_win_inline.c \
 test_win_state.c
 
-## disabled for efl 1.1
-#test_glview_simple.c
-#test_glview.c
-
 if HAVE_EIO
 elementary_test_SOURCES += test_eio.c
 endif
index 367d934..ba779b6 100644 (file)
@@ -142,9 +142,8 @@ void test_segment_control(void *data, Evas_Object *obj, void *event_info);
 void test_store(void *data, Evas_Object *obj, void *event_info);
 void test_win_inline(void *data, Evas_Object *obj, void *event_info);
 void test_grid(void *data, Evas_Object *obj, void *event_info);
-//// disabled for efl 1.1
-//void test_glview_simple(void *data, Evas_Object *obj, void *event_info);
-//void test_glview(void *data, Evas_Object *obj, void *event_info);
+void test_glview_simple(void *data, Evas_Object *obj, void *event_info);
+void test_glview(void *data, Evas_Object *obj, void *event_info);
 void test_3d(void *data, Evas_Object *obj, void *event_info);
 void test_naviframe(void *data, Evas_Object *obj, void *event_info);
 void test_factory(void *data, Evas_Object *obj, void *event_info);
@@ -397,9 +396,8 @@ add_tests:
    ADD_TEST(NULL, "General", "Scaling 2", test_scaling2);
 
    //------------------------------//
-//// disabled for efl 1.1
-//   ADD_TEST(NULL, "3D", "GLViewSimple", test_glview_simple);
-//   ADD_TEST(NULL, "3D", "GLView", test_glview);
+   ADD_TEST(NULL, "3D", "GLViewSimple", test_glview_simple);
+   ADD_TEST(NULL, "3D", "GLView", test_glview);
    ADD_TEST(NULL, "3D", "Evas Map 3D", test_3d);
 
    //------------------------------//
index c9cf85f..a437aab 100644 (file)
@@ -369,8 +369,7 @@ contact with the developers and maintainers.
 #include <Eina.h>
 #include <Eet.h>
 #include <Evas.h>
-// disabled - evas 1.1 won't have this.
-//#include <Evas_GL.h>
+#include <Evas_GL.h>
 #include <Ecore.h>
 #include <Ecore_Evas.h>
 #include <Ecore_File.h>
@@ -5834,6 +5833,192 @@ extern "C" {
     * @}
     */
 
+   /* glview */
+   typedef void (*Elm_GLView_Func_Cb)(Evas_Object *obj);
+
+   typedef enum _Elm_GLView_Mode
+     {
+        ELM_GLVIEW_ALPHA   = 1,
+        ELM_GLVIEW_DEPTH   = 2,
+        ELM_GLVIEW_STENCIL = 4
+     } Elm_GLView_Mode;
+
+   /**
+    * Defines a policy for the glview resizing.
+    *
+    * @note Default is ELM_GLVIEW_RESIZE_POLICY_RECREATE
+    */
+   typedef enum _Elm_GLView_Resize_Policy
+     {
+        ELM_GLVIEW_RESIZE_POLICY_RECREATE = 1,      /**< Resize the internal surface along with the image */
+        ELM_GLVIEW_RESIZE_POLICY_SCALE    = 2       /**< Only reize the internal image and not the surface */
+     } Elm_GLView_Resize_Policy;
+
+   typedef enum _Elm_GLView_Render_Policy
+     {
+        ELM_GLVIEW_RENDER_POLICY_ON_DEMAND = 1,     /**< Render only when there is a need for redrawing */
+        ELM_GLVIEW_RENDER_POLICY_ALWAYS    = 2      /**< Render always even when it is not visible */
+     } Elm_GLView_Render_Policy;
+
+   /**
+    * @defgroup GLView
+    *
+    * A simple GLView widget that allows GL rendering.
+    *
+    * Signals that you can add callbacks for are:
+    *
+    * @{
+    */
+
+   /**
+    * Add a new glview to the parent
+    *
+    * @param parent The parent object
+    * @return The new object or NULL if it cannot be created
+    *
+    * @ingroup GLView
+    */
+   EAPI Evas_Object     *elm_glview_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
+
+   /**
+    * Sets the size of the glview
+    *
+    * @param obj The glview object
+    * @param width width of the glview object
+    * @param height height of the glview object
+    *
+    * @ingroup GLView
+    */
+   EAPI void             elm_glview_size_set(Evas_Object *obj, Evas_Coord width, Evas_Coord height) EINA_ARG_NONNULL(1);
+
+   /**
+    * Gets the size of the glview.
+    *
+    * @param obj The glview object
+    * @param width width of the glview object
+    * @param height height of the glview object
+    *
+    * Note that this function returns the actual image size of the
+    * glview.  This means that when the scale policy is set to
+    * ELM_GLVIEW_RESIZE_POLICY_SCALE, it'll return the non-scaled
+    * size.
+    *
+    * @ingroup GLView
+    */
+   EAPI void             elm_glview_size_get(const Evas_Object *obj, Evas_Coord *width, Evas_Coord *height) EINA_ARG_NONNULL(1);
+
+   /**
+    * Gets the gl api struct for gl rendering
+    *
+    * @param obj The glview object
+    * @return The api object or NULL if it cannot be created
+    *
+    * @ingroup GLView
+    */
+   EAPI Evas_GL_API     *elm_glview_gl_api_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set the mode of the GLView. Supports Three simple modes.
+    *
+    * @param obj The glview object
+    * @param mode The mode Options OR'ed enabling Alpha, Depth, Stencil.
+    * @return True if set properly.
+    *
+    * @ingroup GLView
+    */
+   EAPI Eina_Bool        elm_glview_mode_set(Evas_Object *obj, Elm_GLView_Mode mode) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set the resize policy for the glview object.
+    *
+    * @param obj The glview object.
+    * @param policy The scaling policy.
+    *
+    * By default, the resize policy is set to
+    * ELM_GLVIEW_RESIZE_POLICY_RECREATE.  When resize is called it
+    * destroys the previous surface and recreates the newly specified
+    * size. If the policy is set to ELM_GLVIEW_RESIZE_POLICY_SCALE,
+    * however, glview only scales the image object and not the underlying
+    * GL Surface.
+    *
+    * @ingroup GLView
+    */
+   EAPI Eina_Bool        elm_glview_resize_policy_set(Evas_Object *obj, Elm_GLView_Resize_Policy policy) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set the render policy for the glview object.
+    *
+    * @param obj The glview object.
+    * @param policy The render policy.
+    *
+    * By default, the render policy is set to
+    * ELM_GLVIEW_RENDER_POLICY_ON_DEMAND.  This policy is set such
+    * that during the render loop, glview is only redrawn if it needs
+    * to be redrawn. (i.e. When it is visible) If the policy is set to
+    * ELM_GLVIEWW_RENDER_POLICY_ALWAYS, it redraws regardless of
+    * whether it is visible/need redrawing or not.
+    *
+    * @ingroup GLView
+    */
+   EAPI Eina_Bool        elm_glview_render_policy_set(Evas_Object *obj, Elm_GLView_Render_Policy policy) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set the init function that runs once in the main loop.
+    *
+    * @param obj The glview object.
+    * @param func The init function to be registered.
+    *
+    * The registered init function gets called once during the render loop.
+    *
+    * @ingroup GLView
+    */
+   EAPI void             elm_glview_init_func_set(Evas_Object *obj, Elm_GLView_Func_Cb func) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set the render function that runs in the main loop.
+    *
+    * @param obj The glview object.
+    * @param func The delete function to be registered.
+    *
+    * The registered del function gets called when GLView object is deleted.
+    *
+    * @ingroup GLView
+    */
+   EAPI void             elm_glview_del_func_set(Evas_Object *obj, Elm_GLView_Func_Cb func) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set the resize function that gets called when resize happens.
+    *
+    * @param obj The glview object.
+    * @param func The resize function to be registered.
+    *
+    * @ingroup GLView
+    */
+   EAPI void             elm_glview_resize_func_set(Evas_Object *obj, Elm_GLView_Func_Cb func) EINA_ARG_NONNULL(1);
+
+   /**
+    * Set the render function that runs in the main loop.
+    *
+    * @param obj The glview object.
+    * @param func The render function to be registered.
+    *
+    * @ingroup GLView
+    */
+   EAPI void             elm_glview_render_func_set(Evas_Object *obj, Elm_GLView_Func_Cb func) EINA_ARG_NONNULL(1);
+
+   /**
+    * Notifies that there has been changes in the GLView.
+    *
+    * @param obj The glview object.
+    *
+    * @ingroup GLView
+    */
+   EAPI void             elm_glview_changed_set(Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+   /**
+    * @}
+    */
+
    /* box */
    /**
     * @defgroup Box Box
index 31343ea..faf7c24 100644 (file)
@@ -79,6 +79,7 @@ elm_genlist.h \
 elm_gengrid.c \
 elm_genlist.c \
 elm_gesture_layer.c \
+elm_glview.c \
 elm_grid.c \
 elm_hover.c \
 elm_icon.c \
@@ -131,9 +132,6 @@ els_scroller.h \
 els_tooltip.c \
 elu_ews_wm.c
 
-## disabled for efl 1.1
-#elm_glview.c
-
 libelementary_la_CFLAGS =
 libelementary_la_LIBADD = \
 @my_libs@ \