GLView: Add support for client-side rotation

See recent changes in Evas GL for reference.

This also introduces the EO function rotation_get()

@feature
This commit is contained in:
Jean-Philippe Andre 2014-09-19 13:10:02 +09:00
parent d0241ad4c9
commit 37cb18740c
3 changed files with 48 additions and 1 deletions

View File

@ -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)
{

View File

@ -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;

View File

@ -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