217 lines
8.5 KiB
C
217 lines
8.5 KiB
C
#ifndef _ELM_GLVIEW_EO_LEGACY_H_
|
|
#define _ELM_GLVIEW_EO_LEGACY_H_
|
|
|
|
#ifndef _ELM_GLVIEW_EO_CLASS_TYPE
|
|
#define _ELM_GLVIEW_EO_CLASS_TYPE
|
|
|
|
typedef Eo Elm_Glview;
|
|
|
|
#endif
|
|
|
|
#ifndef _ELM_GLVIEW_EO_TYPES
|
|
#define _ELM_GLVIEW_EO_TYPES
|
|
|
|
/**
|
|
* @brief Selects the target surface properties
|
|
*
|
|
* An OR combination of Elm_GLView_Mode values should be passed to
|
|
* 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.
|
|
*
|
|
* 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 Evas_GL for more information about direct rendering.
|
|
*
|
|
* See @ref elm_glview_mode_set See elm_opengl_page
|
|
*
|
|
* @ingroup Elm_GLView
|
|
*/
|
|
typedef enum
|
|
{
|
|
ELM_GLVIEW_NONE = 0, /**< Default mode */
|
|
ELM_GLVIEW_ALPHA = 2 /* 1 >> 1 */, /**< Alpha channel enabled rendering mode
|
|
*/
|
|
ELM_GLVIEW_DEPTH = 4 /* 1 >> 2 */, /**< Depth buffer enabled rendering mode
|
|
* (24 bits by default) */
|
|
ELM_GLVIEW_STENCIL = 8 /* 1 >> 3 */, /**< Stencil buffer enabled rendering
|
|
* mode (8 bits by default) */
|
|
ELM_GLVIEW_DIRECT = 16 /* 1 >> 4 */, /**< Request direct rendering, unless
|
|
* there must be a fallback */
|
|
ELM_GLVIEW_CLIENT_SIDE_ROTATION = 32 /* 1 >> 5 */, /**< Client will handle GL
|
|
* view rotation if direct
|
|
* rendering is enabled */
|
|
ELM_GLVIEW_DEPTH_8 = 68 /* Elm.GLView.Mode.depth ^ (1 >> 6) */, /**< Request min. 8 bits for the depth
|
|
* buffer */
|
|
ELM_GLVIEW_DEPTH_16 = 132 /* Elm.GLView.Mode.depth ^ (2 >> 6) */, /**< Request min. 16 bits for the depth
|
|
* buffer */
|
|
ELM_GLVIEW_DEPTH_24 = 196 /* Elm.GLView.Mode.depth ^ (3 >> 6) */, /**< Request min. 24 bits for the depth
|
|
* buffer (default) */
|
|
ELM_GLVIEW_DEPTH_32 = 260 /* Elm.GLView.Mode.depth ^ (4 >> 6) */, /**< Request min. 32 bits for the depth
|
|
* buffer */
|
|
ELM_GLVIEW_STENCIL_1 = 520 /* Elm.GLView.Mode.stencil ^ (1 >> 9) */, /**< Request min. 1 bits for the stencil
|
|
* buffer */
|
|
ELM_GLVIEW_STENCIL_2 = 1032 /* Elm.GLView.Mode.stencil ^ (2 >> 9) */, /**< Request min. 2 bits for the stencil
|
|
* buffer */
|
|
ELM_GLVIEW_STENCIL_4 = 1544 /* Elm.GLView.Mode.stencil ^ (3 >> 9) */, /**< Request min. 4 bits for the stencil
|
|
* buffer */
|
|
ELM_GLVIEW_STENCIL_8 = 2056 /* Elm.GLView.Mode.stencil ^ (4 >> 9) */, /**< Request min. 8 bits for the stencil
|
|
* buffer (default) */
|
|
ELM_GLVIEW_STENCIL_16 = 2568 /* Elm.GLView.Mode.stencil ^ (5 >> 9) */, /**< Request min. 16 bits for the
|
|
* stencil buffer */
|
|
ELM_GLVIEW_MULTISAMPLE_LOW = 4096 /* 1 >> 12 */, /**< MSAA with minimum number
|
|
* of samples */
|
|
ELM_GLVIEW_MULTISAMPLE_MED = 8192 /* 2 >> 12 */, /**< MSAA with half the
|
|
* number of maximum samples
|
|
*/
|
|
ELM_GLVIEW_MULTISAMPLE_HIGH = 12288 /* 3 >> 12 */ /**< MSAA with maximum
|
|
* number of samples */
|
|
} Elm_GLView_Mode;
|
|
|
|
/**
|
|
* @brief Defines a policy for the glview resizing.
|
|
*
|
|
* The resizing policy tells glview what to do with the underlying surface when
|
|
* resize happens. ELM_GLVIEW_RESIZE_POLICY_RECREATE will destroy the current
|
|
* surface and recreate the surface to the new size.
|
|
* ELM_GLVIEW_RESIZE_POLICY_SCALE will instead keep the current surface but
|
|
* only display the result at the desired size scaled.
|
|
*
|
|
* Default is @ref ELM_GLVIEW_RESIZE_POLICY_RECREATE
|
|
*
|
|
* @ingroup Elm_GLView_Resize
|
|
*/
|
|
typedef enum
|
|
{
|
|
ELM_GLVIEW_RESIZE_POLICY_RECREATE = 1, /**< Resize the internal surface along
|
|
* with the image */
|
|
ELM_GLVIEW_RESIZE_POLICY_SCALE = 2 /**< Only resize the internal image and not
|
|
* the surface */
|
|
} Elm_GLView_Resize_Policy;
|
|
|
|
/**
|
|
* @brief Defines a policy for gl rendering.
|
|
*
|
|
* The rendering policy tells glview where to run the gl rendering code.
|
|
* ELM_GLVIEW_RENDER_POLICY_ON_DEMAND tells glview to call the rendering calls
|
|
* on demand, which means that the rendering code gets called only when it is
|
|
* visible.
|
|
*
|
|
* Default is @ref ELM_GLVIEW_RENDER_POLICY_ON_DEMAND
|
|
*
|
|
* @ingroup Elm_GLView_Render
|
|
*/
|
|
typedef enum
|
|
{
|
|
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;
|
|
|
|
|
|
#endif
|
|
|
|
|
|
/**
|
|
* @brief Set the resize policy for the glview object.
|
|
*
|
|
* 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.
|
|
*
|
|
* @param[in] obj The object.
|
|
* @param[in] policy The scaling policy.
|
|
*
|
|
* @return @c true on success, @c false otherwise
|
|
*
|
|
* @ingroup Elm_Glview_Group
|
|
*/
|
|
EAPI Eina_Bool elm_glview_resize_policy_set(Elm_Glview *obj, Elm_GLView_Resize_Policy policy);
|
|
|
|
/**
|
|
* @brief Set the render policy for the glview object.
|
|
*
|
|
* 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 or needs redrawing.
|
|
*
|
|
* @param[in] obj The object.
|
|
* @param[in] policy The render policy.
|
|
*
|
|
* @return @c true on success, @c false otherwise
|
|
*
|
|
* @ingroup Elm_Glview_Group
|
|
*/
|
|
EAPI Eina_Bool elm_glview_render_policy_set(Elm_Glview *obj, Elm_GLView_Render_Policy policy);
|
|
|
|
/**
|
|
* @brief Set the mode of the GLView. Supports alpha, depth, stencil.
|
|
*
|
|
* Direct is a hint for the elm_glview to render directly to the window given
|
|
* that the right conditions are met. Otherwise it falls back to rendering to
|
|
* an offscreen buffer before it gets composited to the window.
|
|
*
|
|
* @param[in] obj The object.
|
|
* @param[in] mode The mode Options OR'ed enabling Alpha, Depth, Stencil,
|
|
* Direct.
|
|
*
|
|
* @return @c true on success, @c false otherwise
|
|
*
|
|
* @ingroup Elm_Glview_Group
|
|
*/
|
|
EAPI Eina_Bool elm_glview_mode_set(Elm_Glview *obj, Elm_GLView_Mode mode);
|
|
|
|
/**
|
|
* @brief Get the gl api struct for gl rendering.
|
|
*
|
|
* @param[in] obj The object.
|
|
*
|
|
* @return GL API
|
|
*
|
|
* @ingroup Elm_Glview_Group
|
|
*/
|
|
EAPI Evas_GL_API *elm_glview_gl_api_get(const Elm_Glview *obj);
|
|
|
|
/**
|
|
* @brief Get the internal Evas GL attached to this view.
|
|
*
|
|
* @note The returned Evas_GL must not be destroyed as it is still owned by the
|
|
* view. But this pointer can be used then to call all the evas_gl_ functions.
|
|
*
|
|
* @param[in] obj The object.
|
|
*
|
|
* @return Evas GL
|
|
*
|
|
* @since 1.12
|
|
*
|
|
* @ingroup Elm_Glview_Group
|
|
*/
|
|
EAPI Evas_GL *elm_glview_evas_gl_get(const Elm_Glview *obj);
|
|
|
|
/**
|
|
* @brief Get the current GL view's rotation when using direct rendering
|
|
*
|
|
* @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.
|
|
*
|
|
* @param[in] obj The object.
|
|
*
|
|
* @return A window rotation in degrees (0, 90, 180 or 270).
|
|
*
|
|
* @since 1.12
|
|
*
|
|
* @ingroup Elm_Glview_Group
|
|
*/
|
|
EAPI int elm_glview_rotation_get(const Elm_Glview *obj);
|
|
|
|
|
|
#endif
|