You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							813 lines
						
					
					
						
							25 KiB
						
					
					
				
			
		
		
	
	
							813 lines
						
					
					
						
							25 KiB
						
					
					
				| /*
 | |
|  * Copyright (C) 2013 DENSO CORPORATION
 | |
|  *
 | |
|  * Permission is hereby granted, free of charge, to any person obtaining
 | |
|  * a copy of this software and associated documentation files (the
 | |
|  * "Software"), to deal in the Software without restriction, including
 | |
|  * without limitation the rights to use, copy, modify, merge, publish,
 | |
|  * distribute, sublicense, and/or sell copies of the Software, and to
 | |
|  * permit persons to whom the Software is furnished to do so, subject to
 | |
|  * the following conditions:
 | |
|  *
 | |
|  * The above copyright notice and this permission notice (including the
 | |
|  * next paragraph) shall be included in all copies or substantial
 | |
|  * portions of the Software.
 | |
|  *
 | |
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 | |
|  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 | |
|  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 | |
|  * NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
 | |
|  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 | |
|  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 | |
|  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | |
|  * SOFTWARE.
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * The ivi-layout library supports API set of controlling properties of
 | |
|  * surface and layer which groups surfaces. An unique ID whose type is integer
 | |
|  * is required to create surface and layer. With the unique ID, surface and
 | |
|  * layer are identified to control them. The API set consists of APIs to control
 | |
|  * properties of surface and layers about followings,
 | |
|  * - visibility.
 | |
|  * - opacity.
 | |
|  * - clipping (x,y,width,height).
 | |
|  * - position and size of it to be displayed.
 | |
|  * - orientation per 90 degree.
 | |
|  * - add or remove surfaces to a layer.
 | |
|  * - order of surfaces/layers in layer/screen to be displayed.
 | |
|  * - commit to apply property changes.
 | |
|  * - notifications of property change.
 | |
|  *
 | |
|  * Management of surfaces and layers grouping these surfaces are common
 | |
|  * way in In-Vehicle Infotainment system, which integrate several domains
 | |
|  * in one system. A layer is allocated to a domain in order to control
 | |
|  * application surfaces grouped to the layer all together.
 | |
|  *
 | |
|  * This API and ABI follow following specifications.
 | |
|  * http://projects.genivi.org/wayland-ivi-extension/layer-manager-apis
 | |
|  */
 | |
| 
 | |
| #ifndef _IVI_LAYOUT_EXPORT_H_
 | |
| #define _IVI_LAYOUT_EXPORT_H_
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif /* __cplusplus */
 | |
| 
 | |
| #include "stdbool.h"
 | |
| #include "compositor.h"
 | |
| 
 | |
| #define IVI_SUCCEEDED (0)
 | |
| #define IVI_FAILED (-1)
 | |
| 
 | |
| struct ivi_layout_layer;
 | |
| struct ivi_layout_screen;
 | |
| struct ivi_layout_surface;
 | |
| 
 | |
| struct ivi_layout_surface_properties
 | |
| {
 | |
| 	wl_fixed_t opacity;
 | |
| 	int32_t source_x;
 | |
| 	int32_t source_y;
 | |
| 	int32_t source_width;
 | |
| 	int32_t source_height;
 | |
| 	int32_t start_x;
 | |
| 	int32_t start_y;
 | |
| 	int32_t start_width;
 | |
| 	int32_t start_height;
 | |
| 	int32_t dest_x;
 | |
| 	int32_t dest_y;
 | |
| 	int32_t dest_width;
 | |
| 	int32_t dest_height;
 | |
| 	enum wl_output_transform orientation;
 | |
| 	bool visibility;
 | |
| 	int32_t transition_type;
 | |
| 	uint32_t transition_duration;
 | |
| };
 | |
| 
 | |
| struct ivi_layout_layer_properties
 | |
| {
 | |
| 	wl_fixed_t opacity;
 | |
| 	int32_t source_x;
 | |
| 	int32_t source_y;
 | |
| 	int32_t source_width;
 | |
| 	int32_t source_height;
 | |
| 	int32_t dest_x;
 | |
| 	int32_t dest_y;
 | |
| 	int32_t dest_width;
 | |
| 	int32_t dest_height;
 | |
| 	enum wl_output_transform orientation;
 | |
| 	uint32_t visibility;
 | |
| 	int32_t transition_type;
 | |
| 	uint32_t transition_duration;
 | |
| 	double start_alpha;
 | |
| 	double end_alpha;
 | |
| 	uint32_t is_fade_in;
 | |
| };
 | |
| 
 | |
| enum ivi_layout_notification_mask {
 | |
| 	IVI_NOTIFICATION_NONE        = 0,
 | |
| 	IVI_NOTIFICATION_OPACITY     = (1 << 1),
 | |
| 	IVI_NOTIFICATION_SOURCE_RECT = (1 << 2),
 | |
| 	IVI_NOTIFICATION_DEST_RECT   = (1 << 3),
 | |
| 	IVI_NOTIFICATION_DIMENSION   = (1 << 4),
 | |
| 	IVI_NOTIFICATION_POSITION    = (1 << 5),
 | |
| 	IVI_NOTIFICATION_ORIENTATION = (1 << 6),
 | |
| 	IVI_NOTIFICATION_VISIBILITY  = (1 << 7),
 | |
| 	IVI_NOTIFICATION_PIXELFORMAT = (1 << 8),
 | |
| 	IVI_NOTIFICATION_ADD         = (1 << 9),
 | |
| 	IVI_NOTIFICATION_REMOVE      = (1 << 10),
 | |
| 	IVI_NOTIFICATION_CONFIGURE   = (1 << 11),
 | |
| 	IVI_NOTIFICATION_ALL         = 0xFFFF
 | |
| };
 | |
| 
 | |
| enum ivi_layout_transition_type{
 | |
| 	IVI_LAYOUT_TRANSITION_NONE,
 | |
| 	IVI_LAYOUT_TRANSITION_VIEW_DEFAULT,
 | |
| 	IVI_LAYOUT_TRANSITION_VIEW_DEST_RECT_ONLY,
 | |
| 	IVI_LAYOUT_TRANSITION_VIEW_FADE_ONLY,
 | |
| 	IVI_LAYOUT_TRANSITION_LAYER_FADE,
 | |
| 	IVI_LAYOUT_TRANSITION_LAYER_MOVE,
 | |
| 	IVI_LAYOUT_TRANSITION_LAYER_VIEW_ORDER,
 | |
| 	IVI_LAYOUT_TRANSITION_VIEW_MOVE_RESIZE,
 | |
| 	IVI_LAYOUT_TRANSITION_VIEW_RESIZE,
 | |
| 	IVI_LAYOUT_TRANSITION_VIEW_FADE,
 | |
| 	IVI_LAYOUT_TRANSITION_MAX,
 | |
| };
 | |
| 
 | |
| typedef void (*layer_property_notification_func)(
 | |
| 			struct ivi_layout_layer *ivilayer,
 | |
| 			const struct ivi_layout_layer_properties *,
 | |
| 			enum ivi_layout_notification_mask mask,
 | |
| 			void *userdata);
 | |
| 
 | |
| typedef void (*surface_property_notification_func)(
 | |
| 			struct ivi_layout_surface *ivisurf,
 | |
| 			const struct ivi_layout_surface_properties *,
 | |
| 			enum ivi_layout_notification_mask mask,
 | |
| 			void *userdata);
 | |
| 
 | |
| typedef void (*layer_create_notification_func)(
 | |
| 			struct ivi_layout_layer *ivilayer,
 | |
| 			void *userdata);
 | |
| 
 | |
| typedef void (*layer_remove_notification_func)(
 | |
| 			struct ivi_layout_layer *ivilayer,
 | |
| 			void *userdata);
 | |
| 
 | |
| typedef void (*surface_create_notification_func)(
 | |
| 			struct ivi_layout_surface *ivisurf,
 | |
| 			void *userdata);
 | |
| 
 | |
| typedef void (*surface_remove_notification_func)(
 | |
| 			struct ivi_layout_surface *ivisurf,
 | |
| 			void *userdata);
 | |
| 
 | |
| typedef void (*surface_configure_notification_func)(
 | |
| 			struct ivi_layout_surface *ivisurf,
 | |
| 			void *userdata);
 | |
| 
 | |
| typedef void (*ivi_controller_surface_content_callback)(
 | |
| 			struct ivi_layout_surface *ivisurf,
 | |
| 			int32_t content,
 | |
| 			void *userdata);
 | |
| 
 | |
| struct ivi_controller_interface {
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Commit all changes and execute all enqueued commands since
 | |
| 	 * last commit.
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*commit_changes)(void);
 | |
| 
 | |
| 	/**
 | |
| 	 * surface controller interface
 | |
| 	 */
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief register/unregister for notification when ivi_surface is created
 | |
| 	 */
 | |
| 	int32_t (*add_notification_create_surface)(
 | |
| 				surface_create_notification_func callback,
 | |
| 				void *userdata);
 | |
| 
 | |
| 	void (*remove_notification_create_surface)(
 | |
| 				surface_create_notification_func callback,
 | |
| 				void *userdata);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief register/unregister for notification when ivi_surface is removed
 | |
| 	 */
 | |
| 	int32_t (*add_notification_remove_surface)(
 | |
| 				surface_remove_notification_func callback,
 | |
| 				void *userdata);
 | |
| 
 | |
| 	void (*remove_notification_remove_surface)(
 | |
| 				surface_remove_notification_func callback,
 | |
| 				void *userdata);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief register/unregister for notification when ivi_surface is configured
 | |
| 	 */
 | |
| 	int32_t (*add_notification_configure_surface)(
 | |
| 				surface_configure_notification_func callback,
 | |
| 				void *userdata);
 | |
| 
 | |
| 	void (*remove_notification_configure_surface)(
 | |
| 				surface_configure_notification_func callback,
 | |
| 				void *userdata);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Get all ivi_surfaces which are currently registered and managed
 | |
| 	 * by the services
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*get_surfaces)(int32_t *pLength, struct ivi_layout_surface ***ppArray);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief get id of ivi_surface from ivi_layout_surface
 | |
| 	 *
 | |
| 	 * \return id of ivi_surface
 | |
| 	 */
 | |
| 	uint32_t (*get_id_of_surface)(struct ivi_layout_surface *ivisurf);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief get ivi_layout_surface from id of ivi_surface
 | |
| 	 *
 | |
| 	 * \return (struct ivi_layout_surface *)
 | |
| 	 *              if the method call was successful
 | |
| 	 * \return NULL if the method call was failed
 | |
| 	 */
 | |
| 	struct ivi_layout_surface *
 | |
| 		(*get_surface_from_id)(uint32_t id_surface);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief get ivi_layout_surface_properties from ivisurf
 | |
| 	 *
 | |
| 	 * \return (struct ivi_layout_surface_properties *)
 | |
| 	 *              if the method call was successful
 | |
| 	 * \return NULL if the method call was failed
 | |
| 	 */
 | |
| 	const struct ivi_layout_surface_properties *
 | |
| 		(*get_properties_of_surface)(struct ivi_layout_surface *ivisurf);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Get all Surfaces which are currently registered to a given
 | |
| 	 * layer and are managed by the services
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*get_surfaces_on_layer)(struct ivi_layout_layer *ivilayer,
 | |
| 					 int32_t *pLength,
 | |
| 					 struct ivi_layout_surface ***ppArray);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Set the visibility of a ivi_surface.
 | |
| 	 *
 | |
| 	 * If a surface is not visible it will not be rendered.
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*surface_set_visibility)(struct ivi_layout_surface *ivisurf,
 | |
| 					  bool newVisibility);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Get the visibility of a surface.
 | |
| 	 *
 | |
| 	 * If a surface is not visible it will not be rendered.
 | |
| 	 *
 | |
| 	 * \return true if surface is visible
 | |
| 	 * \return false if surface is invisible or the method call was failed
 | |
| 	 */
 | |
| 	bool (*surface_get_visibility)(struct ivi_layout_surface *ivisurf);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Set the opacity of a surface.
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*surface_set_opacity)(struct ivi_layout_surface *ivisurf,
 | |
| 				       wl_fixed_t opacity);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Get the opacity of a ivi_surface.
 | |
| 	 *
 | |
| 	 * \return opacity if the method call was successful
 | |
| 	 * \return wl_fixed_from_double(0.0) if the method call was failed
 | |
| 	 */
 | |
| 	wl_fixed_t (*surface_get_opacity)(struct ivi_layout_surface *ivisurf);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Set the area of a ivi_surface which should be used for the rendering.
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*surface_set_source_rectangle)(struct ivi_layout_surface *ivisurf,
 | |
| 						int32_t x, int32_t y,
 | |
| 						int32_t width, int32_t height);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Set the destination area of a ivi_surface within a ivi_layer
 | |
| 	 * for rendering.
 | |
| 	 *
 | |
| 	 * The surface will be scaled to this rectangle for rendering.
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*surface_set_destination_rectangle)(struct ivi_layout_surface *ivisurf,
 | |
| 						     int32_t x, int32_t y,
 | |
| 						     int32_t width, int32_t height);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Sets the horizontal and vertical position of the surface.
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*surface_set_position)(struct ivi_layout_surface *ivisurf,
 | |
| 					int32_t dest_x, int32_t dest_y);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Get the horizontal and vertical position of the surface.
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*surface_get_position)(struct ivi_layout_surface *ivisurf,
 | |
| 					int32_t *dest_x, int32_t *dest_y);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Set the horizontal and vertical dimension of the surface.
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*surface_set_dimension)(struct ivi_layout_surface *ivisurf,
 | |
| 					 int32_t dest_width, int32_t dest_height);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Get the horizontal and vertical dimension of the surface.
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*surface_get_dimension)(struct ivi_layout_surface *ivisurf,
 | |
| 					 int32_t *dest_width, int32_t *dest_height);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Sets the orientation of a ivi_surface.
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*surface_set_orientation)(struct ivi_layout_surface *ivisurf,
 | |
| 					   enum wl_output_transform orientation);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Gets the orientation of a surface.
 | |
| 	 *
 | |
| 	 * \return (enum wl_output_transform)
 | |
| 	 *              if the method call was successful
 | |
| 	 * \return WL_OUTPUT_TRANSFORM_NORMAL if the method call was failed
 | |
| 	 */
 | |
| 	enum wl_output_transform
 | |
| 		(*surface_get_orientation)(struct ivi_layout_surface *ivisurf);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Set an observer callback for ivi_surface content status change.
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*surface_set_content_observer)(
 | |
| 				struct ivi_layout_surface *ivisurf,
 | |
| 				ivi_controller_surface_content_callback callback,
 | |
| 				void* userdata);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief register for notification on property changes of ivi_surface
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*surface_add_notification)(struct ivi_layout_surface *ivisurf,
 | |
| 					    surface_property_notification_func callback,
 | |
| 					    void *userdata);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief remove notification on property changes of ivi_surface
 | |
| 	 */
 | |
| 	void (*surface_remove_notification)(struct ivi_layout_surface *ivisurf);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief get weston_surface of ivi_surface
 | |
| 	 */
 | |
| 	struct weston_surface *
 | |
| 		(*surface_get_weston_surface)(struct ivi_layout_surface *ivisurf);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief set type of transition animation
 | |
| 	 */
 | |
| 	int32_t (*surface_set_transition)(struct ivi_layout_surface *ivisurf,
 | |
| 					  enum ivi_layout_transition_type type,
 | |
| 					  uint32_t duration);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief set duration of transition animation
 | |
| 	 */
 | |
| 	int32_t (*surface_set_transition_duration)(
 | |
| 					struct ivi_layout_surface *ivisurf,
 | |
| 					uint32_t duration);
 | |
| 
 | |
| 	/**
 | |
| 	 * layer controller interface
 | |
| 	 */
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief register/unregister for notification when ivi_layer is created
 | |
| 	 */
 | |
| 	int32_t (*add_notification_create_layer)(
 | |
| 				layer_create_notification_func callback,
 | |
| 				void *userdata);
 | |
| 
 | |
| 	void (*remove_notification_create_layer)(
 | |
| 				layer_create_notification_func callback,
 | |
| 				void *userdata);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief register/unregister for notification when ivi_layer is removed
 | |
| 	 */
 | |
| 	int32_t (*add_notification_remove_layer)(
 | |
| 				layer_remove_notification_func callback,
 | |
| 				void *userdata);
 | |
| 
 | |
| 	void (*remove_notification_remove_layer)(
 | |
| 				layer_remove_notification_func callback,
 | |
| 				void *userdata);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Create a ivi_layer which should be managed by the service
 | |
| 	 *
 | |
| 	 * \return (struct ivi_layout_layer *)
 | |
| 	 *              if the method call was successful
 | |
| 	 * \return NULL if the method call was failed
 | |
| 	 */
 | |
| 	struct ivi_layout_layer *
 | |
| 		(*layer_create_with_dimension)(uint32_t id_layer,
 | |
| 					       int32_t width, int32_t height);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Removes a ivi_layer which is currently managed by the service
 | |
| 	 */
 | |
| 	void (*layer_destroy)(struct ivi_layout_layer *ivilayer);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Get all ivi_layers which are currently registered and managed
 | |
| 	 * by the services
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*get_layers)(int32_t *pLength, struct ivi_layout_layer ***ppArray);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief get id of ivi_layer from ivi_layout_layer
 | |
| 	 *
 | |
| 	 *
 | |
| 	 * \return id of ivi_layer
 | |
| 	 */
 | |
| 	uint32_t (*get_id_of_layer)(struct ivi_layout_layer *ivilayer);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief get ivi_layout_layer from id of layer
 | |
| 	 *
 | |
| 	 * \return (struct ivi_layout_layer *)
 | |
| 	 *              if the method call was successful
 | |
| 	 * \return NULL if the method call was failed
 | |
| 	 */
 | |
| 	struct ivi_layout_layer * (*get_layer_from_id)(uint32_t id_layer);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief  Get the ivi_layer properties
 | |
| 	 *
 | |
| 	 * \return (const struct ivi_layout_layer_properties *)
 | |
| 	 *              if the method call was successful
 | |
| 	 * \return NULL if the method call was failed
 | |
| 	 */
 | |
| 	const struct ivi_layout_layer_properties *
 | |
| 		(*get_properties_of_layer)(struct ivi_layout_layer *ivilayer);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Get all ivi_ayers under the given ivi_surface
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*get_layers_under_surface)(struct ivi_layout_surface *ivisurf,
 | |
| 					    int32_t *pLength,
 | |
| 					    struct ivi_layout_layer ***ppArray);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Get all Layers of the given screen
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*get_layers_on_screen)(struct ivi_layout_screen *iviscrn,
 | |
| 					int32_t *pLength,
 | |
| 					struct ivi_layout_layer ***ppArray);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Set the visibility of a ivi_layer. If a ivi_layer is not visible,
 | |
| 	 * the ivi_layer and its ivi_surfaces will not be rendered.
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*layer_set_visibility)(struct ivi_layout_layer *ivilayer,
 | |
| 					bool newVisibility);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Get the visibility of a layer. If a layer is not visible,
 | |
| 	 * the layer and its surfaces will not be rendered.
 | |
| 	 *
 | |
| 	 * \return true if layer is visible
 | |
| 	 * \return false if layer is invisible or the method call was failed
 | |
| 	 */
 | |
| 	bool (*layer_get_visibility)(struct ivi_layout_layer *ivilayer);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Set the opacity of a ivi_layer.
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*layer_set_opacity)(struct ivi_layout_layer *ivilayer,
 | |
| 				     wl_fixed_t opacity);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Get the opacity of a ivi_layer.
 | |
| 	 *
 | |
| 	 * \return opacity if the method call was successful
 | |
| 	 * \return wl_fixed_from_double(0.0) if the method call was failed
 | |
| 	 */
 | |
| 	wl_fixed_t (*layer_get_opacity)(struct ivi_layout_layer *ivilayer);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Set the area of a ivi_layer which should be used for the rendering.
 | |
| 	 *
 | |
| 	 * Only this part will be visible.
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*layer_set_source_rectangle)(struct ivi_layout_layer *ivilayer,
 | |
| 					      int32_t x, int32_t y,
 | |
| 					      int32_t width, int32_t height);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Set the destination area on the display for a ivi_layer.
 | |
| 	 *
 | |
| 	 * The ivi_layer will be scaled and positioned to this rectangle
 | |
| 	 * for rendering
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*layer_set_destination_rectangle)(struct ivi_layout_layer *ivilayer,
 | |
| 						   int32_t x, int32_t y,
 | |
| 						   int32_t width, int32_t height);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Sets the horizontal and vertical position of the ivi_layer.
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*layer_set_position)(struct ivi_layout_layer *ivilayer,
 | |
| 				      int32_t dest_x, int32_t dest_y);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Get the horizontal and vertical position of the ivi_layer.
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*layer_get_position)(struct ivi_layout_layer *ivilayer,
 | |
| 				      int32_t *dest_x, int32_t *dest_y);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Set the horizontal and vertical dimension of the layer.
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*layer_set_dimension)(struct ivi_layout_layer *ivilayer,
 | |
| 				       int32_t dest_width, int32_t dest_height);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Get the horizontal and vertical dimension of the layer.
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*layer_get_dimension)(struct ivi_layout_layer *ivilayer,
 | |
| 				       int32_t *dest_width, int32_t *dest_height);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Sets the orientation of a ivi_layer.
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*layer_set_orientation)(struct ivi_layout_layer *ivilayer,
 | |
| 					 enum wl_output_transform orientation);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Gets the orientation of a layer.
 | |
| 	 *
 | |
| 	 * \return (enum wl_output_transform)
 | |
| 	 *              if the method call was successful
 | |
| 	 * \return WL_OUTPUT_TRANSFORM_NORMAL if the method call was failed
 | |
| 	 */
 | |
| 	enum wl_output_transform
 | |
| 		(*layer_get_orientation)(struct ivi_layout_layer *ivilayer);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Add a ivi_surface to a ivi_layer which is currently managed by the service
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*layer_add_surface)(struct ivi_layout_layer *ivilayer,
 | |
| 				     struct ivi_layout_surface *addsurf);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Removes a surface from a layer which is currently managed by the service
 | |
| 	 */
 | |
| 	void (*layer_remove_surface)(struct ivi_layout_layer *ivilayer,
 | |
| 				     struct ivi_layout_surface *remsurf);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Sets render order of ivi_surfaces within a ivi_layer
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*layer_set_render_order)(struct ivi_layout_layer *ivilayer,
 | |
| 					  struct ivi_layout_surface **pSurface,
 | |
| 					  int32_t number);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief register for notification on property changes of ivi_layer
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*layer_add_notification)(struct ivi_layout_layer *ivilayer,
 | |
| 					  layer_property_notification_func callback,
 | |
| 					  void *userdata);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief remove notification on property changes of ivi_layer
 | |
| 	 */
 | |
| 	void (*layer_remove_notification)(struct ivi_layout_layer *ivilayer);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief set type of transition animation
 | |
| 	 */
 | |
| 	int32_t (*layer_set_transition)(struct ivi_layout_layer *ivilayer,
 | |
| 					enum ivi_layout_transition_type type,
 | |
| 					uint32_t duration);
 | |
| 
 | |
| 	/**
 | |
| 	 * screen controller interface
 | |
| 	 */
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief get ivi_layout_screen from id of ivi_screen
 | |
| 	 *
 | |
| 	 * \return (struct ivi_layout_screen *)
 | |
| 	 *              if the method call was successful
 | |
| 	 * \return NULL if the method call was failed
 | |
| 	 */
 | |
| 	struct ivi_layout_screen *
 | |
| 		(*get_screen_from_id)(uint32_t id_screen);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Get the screen resolution of a specific ivi_screen
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*get_screen_resolution)(struct ivi_layout_screen *iviscrn,
 | |
| 					 int32_t *pWidth,
 | |
| 					 int32_t *pHeight);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Get the ivi_screens
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*get_screens)(int32_t *pLength, struct ivi_layout_screen ***ppArray);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Get the ivi_screens under the given ivi_layer
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*get_screens_under_layer)(struct ivi_layout_layer *ivilayer,
 | |
| 					   int32_t *pLength,
 | |
| 					   struct ivi_layout_screen ***ppArray);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Add a ivi_layer to a ivi_screen which is currently managed
 | |
| 	 * by the service
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*screen_add_layer)(struct ivi_layout_screen *iviscrn,
 | |
| 				    struct ivi_layout_layer *addlayer);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief Sets render order of ivi_layers on a ivi_screen
 | |
| 	 *
 | |
| 	 * \return IVI_SUCCEEDED if the method call was successful
 | |
| 	 * \return IVI_FAILED if the method call was failed
 | |
| 	 */
 | |
| 	int32_t (*screen_set_render_order)(struct ivi_layout_screen *iviscrn,
 | |
| 					   struct ivi_layout_layer **pLayer,
 | |
| 					   const int32_t number);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief get weston_output from ivi_layout_screen.
 | |
| 	 *
 | |
| 	 * \return (struct weston_output *)
 | |
| 	 *              if the method call was successful
 | |
| 	 * \return NULL if the method call was failed
 | |
| 	 */
 | |
| 	struct weston_output *(*screen_get_output)(struct ivi_layout_screen *);
 | |
| 
 | |
| 
 | |
| 	/**
 | |
| 	 * transision animation for layer
 | |
| 	 */
 | |
| 	void (*transition_move_layer_cancel)(struct ivi_layout_layer *layer);
 | |
| 	int32_t (*layer_set_fade_info)(struct ivi_layout_layer* ivilayer,
 | |
| 				       uint32_t is_fade_in,
 | |
| 				       double start_alpha, double end_alpha);
 | |
| 
 | |
| 	/**
 | |
| 	 * surface content dumping for debugging
 | |
| 	 */
 | |
| 	int32_t (*surface_get_size)(struct ivi_layout_surface *ivisurf,
 | |
| 				    int32_t *width, int32_t *height,
 | |
| 				    int32_t *stride);
 | |
| 
 | |
| 	int32_t (*surface_dump)(struct weston_surface *surface,
 | |
| 				void *target, size_t size,
 | |
| 				int32_t x, int32_t y,
 | |
| 				int32_t width, int32_t height);
 | |
| 
 | |
| 	/**
 | |
| 	 * remove notification by callback on property changes of ivi_surface
 | |
| 	 */
 | |
| 	void (*surface_remove_notification_by_callback)(struct ivi_layout_surface *ivisurf,
 | |
| 							surface_property_notification_func callback,
 | |
| 							void *userdata);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief remove notification by callback on property changes of ivi_layer
 | |
| 	 */
 | |
| 	void (*layer_remove_notification_by_callback)(struct ivi_layout_layer *ivilayer,
 | |
| 						      layer_property_notification_func callback,
 | |
| 						      void *userdata);
 | |
| 
 | |
| 	/**
 | |
| 	 * \brief get id of ivi_screen from ivi_layout_screen
 | |
| 	 *
 | |
| 	 *
 | |
| 	 * \return id of ivi_screen
 | |
| 	 */
 | |
| 	uint32_t (*get_id_of_screen)(struct ivi_layout_screen *iviscrn);
 | |
| };
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif /* __cplusplus */
 | |
| 
 | |
| #endif /* _IVI_LAYOUT_EXPORT_H_ */
 | |
| 
 |