diff options
author | Jean-Philippe Andre <jp.andre@samsung.com> | 2014-09-19 13:10:02 +0900 |
---|---|---|
committer | Jean-Philippe Andre <jp.andre@samsung.com> | 2014-10-20 12:16:43 +0900 |
commit | 0799bb1f8db164e6bfa934bedd862ff1dd98fed4 (patch) | |
tree | c14ea285a81b3af93472f3a2e68b2ea5367e46b4 | |
parent | 08f7073a98d41361c0b3d9ad88314500a6a10bb3 (diff) | |
download | elementary-0799bb1f8db164e6bfa934bedd862ff1dd98fed4.tar.gz |
GLView: Add support for client-side rotation
See recent changes in Evas GL for reference.
This also introduces the EO function rotation_get()
@feature
-rw-r--r-- | src/lib/elm_glview.c | 12 | ||||
-rw-r--r-- | src/lib/elm_glview.eo | 22 | ||||
-rw-r--r-- | src/lib/elm_glview_common.h | 15 |
3 files changed, 48 insertions, 1 deletions
diff --git a/src/lib/elm_glview.c b/src/lib/elm_glview.c index 7d2a236f9..97e2dfcdf 100644 --- a/src/lib/elm_glview.c +++ b/src/lib/elm_glview.c @@ -355,6 +355,12 @@ _elm_glview_mode_set(Eo *obj, Elm_Glview_Data *sd, Elm_GLView_Mode mode) if (mode & ELM_GLVIEW_CLIENT_SIDE_ROTATION) sd->config->options_bits |= EVAS_GL_OPTIONS_CLIENT_SIDE_ROTATION; + // Check for Alpha Channel and enable it + if (mode & ELM_GLVIEW_ALPHA) + evas_object_image_alpha_set(wd->resize_obj, EINA_TRUE); + else + evas_object_image_alpha_set(wd->resize_obj, EINA_FALSE); + sd->mode = mode; _glview_update_surface(obj); @@ -466,6 +472,12 @@ _elm_glview_evas_gl_get(Eo *obj EINA_UNUSED, Elm_Glview_Data *sd) return sd->evasgl; } +EOLIAN static int +_elm_glview_rotation_get(Eo *obj EINA_UNUSED, Elm_Glview_Data *sd) +{ + return evas_gl_rotation_get(sd->evasgl); +} + static void _elm_glview_class_constructor(Eo_Class *klass) { diff --git a/src/lib/elm_glview.eo b/src/lib/elm_glview.eo index cbd065379..839cb669a 100644 --- a/src/lib/elm_glview.eo +++ b/src/lib/elm_glview.eo @@ -176,9 +176,31 @@ class Elm_Glview (Elm_Widget) @return The Evas_GL used by this GLView. @ingroup GLView */ + legacy: null; return: Evas_GL *; } } + rotation { + get { + /*@ + Get the current GL view's rotation when using direct rendering + + @return A window rotation in degrees (0, 90, 180 or 270) + + @note This rotation can be different from the device orientation. This + rotation value must be used in case of direct rendering and should be + taken into account by the application when setting the internal rotation + matrix for the view. + + @see ELM_GLVIEW_CLIENT_SIDE_ROTATION + + @since 1.12 + + @ingroup GLView */ + legacy: null; + return: int; + } + } } implements { class.constructor; diff --git a/src/lib/elm_glview_common.h b/src/lib/elm_glview_common.h index 7e6dc9663..6df9f61e1 100644 --- a/src/lib/elm_glview_common.h +++ b/src/lib/elm_glview_common.h @@ -1,8 +1,21 @@ typedef void (*Elm_GLView_Func_Cb)(Evas_Object *obj); /** - * Defines mode of GLView + * @brief Selects the target surface properties * + * An OR combination of @c Elm_GLView_Mode values should be passed to + * @ref elm_glview_mode_set when setting up a GL widget. These flags will + * specify the properties of the rendering target surface; in particular, + * the mode can request the surface to support alpha, depth and stencil buffers. + * + * @note @c ELM_GLVIEW_CLIENT_SIDE_ROTATION is a special value that indicates + * to EFL that the application will handle the view rotation when the + * device is rotated. This is needed only when the application requests + * direct rendering. Please refer to @ref Evas_GL + * for more information about direct rendering. + * + * @see elm_glview_mode_set + * @see @ref elm_opengl_page * @ingroup GLView */ typedef enum _Elm_GLView_Mode |