From 35b37c06eeed98de20c7fb76d1ebb22604e06a9f Mon Sep 17 00:00:00 2001 From: Janos Kovacs Date: Thu, 27 Nov 2014 19:08:08 +0200 Subject: [PATCH] downstream: synch weston-ivi-shell headers Change-Id: I316abd4a4361fe2b5a58e640558ca12386e1da69 --- weston-ivi-shell/src/ivi-layout-export.h | 931 +++++++++++------------------- weston-ivi-shell/src/ivi-layout-private.h | 343 +++++++++++ weston-ivi-shell/src/ivi-layout.h | 147 ----- 3 files changed, 675 insertions(+), 746 deletions(-) create mode 100644 weston-ivi-shell/src/ivi-layout-private.h delete mode 100644 weston-ivi-shell/src/ivi-layout.h diff --git a/weston-ivi-shell/src/ivi-layout-export.h b/weston-ivi-shell/src/ivi-layout-export.h index e1dbb06..196b115 100644 --- a/weston-ivi-shell/src/ivi-layout-export.h +++ b/weston-ivi-shell/src/ivi-layout-export.h @@ -36,10 +36,13 @@ * - 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. + * 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_ @@ -49,181 +52,205 @@ extern "C" { #endif /* __cplusplus */ +#include "stdbool.h" #include "compositor.h" -#include "ivi-layout.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_KEYBOARD_FOCUS = (1 << 12), - IVI_NOTIFICATION_ALL = 0xFFFF + 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_MAX, + 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(*shellWarningNotificationFunc)(uint32_t id_surface, - enum ivi_layout_warning_flag warn, - void *userdata); - -typedef void(*layerPropertyNotificationFunc)(struct ivi_layout_layer *ivilayer, - struct ivi_layout_LayerProperties*, - enum ivi_layout_notification_mask mask, - void *userdata); - -typedef void(*surfacePropertyNotificationFunc)(struct ivi_layout_surface *ivisurf, - struct ivi_layout_SurfaceProperties*, - enum ivi_layout_notification_mask mask, - void *userdata); +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(*layerCreateNotificationFunc)(struct ivi_layout_layer *ivilayer, - 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(*layerRemoveNotificationFunc)(struct ivi_layout_layer *ivilayer, - void *userdata); +typedef void (*layer_create_notification_func)( + struct ivi_layout_layer *ivilayer, + void *userdata); -typedef void(*surfaceCreateNotificationFunc)(struct ivi_layout_surface *ivisurf, - void *userdata); +typedef void (*layer_remove_notification_func)( + struct ivi_layout_layer *ivilayer, + void *userdata); -typedef void(*surfaceRemoveNotificationFunc)(struct ivi_layout_surface *ivisurf, - void *userdata); +typedef void (*surface_create_notification_func)( + struct ivi_layout_surface *ivisurf, + void *userdata); -typedef void(*surfaceConfigureNotificationFunc)(struct ivi_layout_surface *ivisurf, - void *userdata); +typedef void (*surface_remove_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); - -int32_t -ivi_layout_addNotificationShellWarning(shellWarningNotificationFunc callback, - void *userdata); - -void -ivi_layout_removeNotificationShellWarning(shellWarningNotificationFunc callback, - void *userdata); - -/** - * \brief to be called by ivi-shell in order to set initail view of - * weston_surface. - */ -/* -struct weston_view * -ivi_layout_get_weston_view(struct ivi_layout_surface *surface); -*/ +typedef void (*surface_configure_notification_func)( + struct ivi_layout_surface *ivisurf, + void *userdata); -/** - * \brief initialize ivi-layout - */ -/* -void -ivi_layout_initWithCompositor(struct weston_compositor *ec); -*/ +typedef void (*ivi_controller_surface_content_callback)( + struct ivi_layout_surface *ivisurf, + int32_t content, + void *userdata); /** * \brief register for notification when layer is created */ int32_t -ivi_layout_addNotificationCreateLayer(layerCreateNotificationFunc callback, - void *userdata); +ivi_layout_add_notification_create_layer( + layer_create_notification_func callback, + void *userdata); void -ivi_layout_removeNotificationCreateLayer(layerCreateNotificationFunc callback, - void *userdata); +ivi_layout_remove_notification_create_layer( + layer_create_notification_func callback, + void *userdata); /** * \brief register for notification when layer is removed */ int32_t -ivi_layout_addNotificationRemoveLayer(layerRemoveNotificationFunc callback, - void *userdata); +ivi_layout_add_notification_remove_layer( + layer_remove_notification_func callback, + void *userdata); void -ivi_layout_removeNotificationRemoveLayer(layerRemoveNotificationFunc callback, - void *userdata); +ivi_layout_remove_notification_remove_layer( + layer_remove_notification_func callback, + void *userdata); /** * \brief register for notification when surface is created */ int32_t -ivi_layout_addNotificationCreateSurface(surfaceCreateNotificationFunc callback, - void *userdata); +ivi_layout_add_notification_create_surface( + surface_create_notification_func callback, + void *userdata); void -ivi_layout_removeNotificationCreateSurface(surfaceCreateNotificationFunc callback, - void *userdata); +ivi_layout_remove_notification_create_surface( + surface_create_notification_func callback, + void *userdata); /** * \brief register for notification when surface is removed */ int32_t -ivi_layout_addNotificationRemoveSurface(surfaceRemoveNotificationFunc callback, - void *userdata); +ivi_layout_add_notification_remove_surface( + surface_remove_notification_func callback, + void *userdata); void -ivi_layout_removeNotificationRemoveSurface(surfaceRemoveNotificationFunc callback, - void *userdata); +ivi_layout_remove_notification_remove_surface( + surface_remove_notification_func callback, + void *userdata); /** * \brief register for notification when surface is configured */ int32_t -ivi_layout_addNotificationConfigureSurface(surfaceConfigureNotificationFunc callback, - void *userdata); +ivi_layout_add_notification_configure_surface( + surface_configure_notification_func callback, + void *userdata); void -ivi_layout_removeNotificationConfigureSurface(surfaceConfigureNotificationFunc callback, - void *userdata); +ivi_layout_remove_notification_configure_surface( + surface_configure_notification_func callback, + void *userdata); /** * \brief get id of surface from ivi_layout_surface * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return id of surface */ uint32_t -ivi_layout_getIdOfSurface(struct ivi_layout_surface *ivisurf); +ivi_layout_get_id_of_surface(struct ivi_layout_surface *ivisurf); /** * \brief get id of layer from ivi_layout_layer * * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return id of layer */ uint32_t -ivi_layout_getIdOfLayer(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 * -ivi_layout_getLayerFromId(uint32_t id_layer); +ivi_layout_get_id_of_layer(struct ivi_layout_layer *ivilayer); /** * \brief get ivi_layout_surface from id of surface @@ -233,7 +260,7 @@ ivi_layout_getLayerFromId(uint32_t id_layer); * \return NULL if the method call was failed */ struct ivi_layout_surface * -ivi_layout_getSurfaceFromId(uint32_t id_surface); +ivi_layout_get_surface_from_id(uint32_t id_surface); /** * \brief get ivi_layout_screen from id of screen @@ -243,708 +270,414 @@ ivi_layout_getSurfaceFromId(uint32_t id_surface); * \return NULL if the method call was failed */ struct ivi_layout_screen * -ivi_layout_getScreenFromId(uint32_t id_screen); +ivi_layout_get_screen_from_id(uint32_t id_screen); /** * \brief Get the screen resolution of a specific screen * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -int32_t -ivi_layout_getScreenResolution(struct ivi_layout_screen *iviscrn, - int32_t *pWidth, - int32_t *pHeight); - -/** - * \brief register for notification on property changes of surface - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -int32_t -ivi_layout_surfaceAddNotification(struct ivi_layout_surface *ivisurf, - surfacePropertyNotificationFunc callback, - void *userdata); - -/** - * \brief remove notification on property changes of surface - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return IVI_SUCCEEDED if the method call was successful + * \return IVI_FAILED if the method call was failed */ int32_t -ivi_layout_surfaceRemoveNotification(struct ivi_layout_surface *ivisurf); - -/** - * \brief Create a surface - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -/* -struct ivi_layout_surface * -ivi_layout_surfaceCreate(struct weston_surface *wl_surface, - uint32_t id_surface); -*/ - -/** - * \brief Set the native content of an application to be used as surface content. - * If wl_surface is NULL, remove the native content of a surface - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -/* -int32_t -ivi_layout_surfaceSetNativeContent(struct weston_surface *wl_surface, - uint32_t width, - uint32_t height, - uint32_t id_surface); -*/ +ivi_layout_get_screen_resolution(struct ivi_layout_screen *iviscrn, + int32_t *pWidth, + int32_t *pHeight); /** * \brief Set an observer callback for surface content status change. * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -int32_t -ivi_layout_surfaceSetContentObserver(struct ivi_layout_surface *ivisurf, - ivi_controller_surface_content_callback callback, - void* userdata); - -/** - * \brief initialize ivi_layout_surface dest/source width and height - */ -/* -void -ivi_layout_surfaceConfigure(struct ivi_layout_surface *ivisurf, - uint32_t width, uint32_t height); -*/ - -/** - * \brief Remove a surface - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -int32_t -ivi_layout_surfaceRemove(struct ivi_layout_surface *ivisurf); - -/** - * \brief Set from which kind of devices the surface can accept input events. - * By default, a surface accept input events from all kind of devices (keyboards, pointer, ...) - * By calling this function, you can adjust surface preferences. Note that this function only - * adjust the acceptance for the specified devices. Non specified are keept untouched. - * - * Typicall use case for this function is when dealing with pointer or touch events. - * Those are normally dispatched to the first visible surface below the coordinate. - * If you want a different behavior (i.e. forward events to an other surface below the coordinate, - * you can set all above surfaces to refuse input events) - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return IVI_SUCCEEDED if the method call was successful + * \return IVI_FAILED if the method call was failed */ int32_t -ivi_layout_UpdateInputEventAcceptanceOn(struct ivi_layout_surface *ivisurf, - int32_t devices, - int32_t acceptance); +ivi_layout_surface_set_content_observer( + struct ivi_layout_surface *ivisurf, + ivi_controller_surface_content_callback callback, + void* userdata); /** * \brief Get the layer properties * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -int32_t -ivi_layout_getPropertiesOfLayer(struct ivi_layout_layer *ivilayer, - struct ivi_layout_LayerProperties *pLayerProperties); - -/** - * \brief Get the number of hardware layers of a screen - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return (const struct ivi_layout_layer_properties *) + * if the method call was successful + * \return NULL if the method call was failed */ -int32_t -ivi_layout_getNumberOfHardwareLayers(uint32_t id_screen, - int32_t *pNumberOfHardwareLayers); +const struct ivi_layout_layer_properties * +ivi_layout_get_properties_of_layer(struct ivi_layout_layer *ivilayer); /** * \brief Get the screens * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return IVI_SUCCEEDED if the method call was successful + * \return IVI_FAILED if the method call was failed */ int32_t -ivi_layout_getScreens(int32_t *pLength, struct ivi_layout_screen ***ppArray); +ivi_layout_get_screens(int32_t *pLength, struct ivi_layout_screen ***ppArray); /** * \brief Get the screens under the given layer * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -int32_t -ivi_layout_getScreensUnderLayer(struct ivi_layout_layer *ivilayer, - int32_t *pLength, - struct ivi_layout_screen ***ppArray); - -/** - * \brief Get all Layers which are currently registered and managed by the services - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return IVI_SUCCEEDED if the method call was successful + * \return IVI_FAILED if the method call was failed */ int32_t -ivi_layout_getLayers(int32_t *pLength, struct ivi_layout_layer ***ppArray); +ivi_layout_get_screens_under_layer(struct ivi_layout_layer *ivilayer, + int32_t *pLength, + struct ivi_layout_screen ***ppArray); /** - * \brief Get all Layers of the given screen + * \brief Get all Layers which are currently registered and managed + * by the services * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return IVI_SUCCEEDED if the method call was successful + * \return IVI_FAILED if the method call was failed */ int32_t -ivi_layout_getLayersOnScreen(struct ivi_layout_screen *iviscrn, - int32_t *pLength, - struct ivi_layout_layer ***ppArray); +ivi_layout_get_layers(int32_t *pLength, struct ivi_layout_layer ***ppArray); /** * \brief Get all Layers under the given surface * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -int32_t -ivi_layout_getLayersUnderSurface(struct ivi_layout_surface *ivisurf, - int32_t *pLength, - struct ivi_layout_layer ***ppArray); - -/** - * \brief Get all Surfaces which are currently registered and managed by the services - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return IVI_SUCCEEDED if the method call was successful + * \return IVI_FAILED if the method call was failed */ int32_t -ivi_layout_getSurfaces(int32_t *pLength, struct ivi_layout_surface ***ppArray); +ivi_layout_get_layers_under_surface(struct ivi_layout_surface *ivisurf, + int32_t *pLength, + struct ivi_layout_layer ***ppArray); /** - * \brief Get all Surfaces which are currently registered to a given layer and are managed by the services + * \brief Get all Surfaces which are currently registered and managed + * by the services * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return IVI_SUCCEEDED if the method call was successful + * \return IVI_FAILED if the method call was failed */ int32_t -ivi_layout_getSurfacesOnLayer(struct ivi_layout_layer *ivilayer, - int32_t *pLength, - struct ivi_layout_surface ***ppArray); +ivi_layout_get_surfaces(int32_t *pLength, struct ivi_layout_surface ***ppArray); /** * \brief Create a layer which should be managed by the service * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return (struct ivi_layout_layer *) + * if the method call was successful + * \return NULL if the method call was failed */ struct ivi_layout_layer * -ivi_layout_layerCreateWithDimension(uint32_t id_layer, - int32_t width, int32_t height); +ivi_layout_layer_create_with_dimension(uint32_t id_layer, + int32_t width, int32_t height); /** * \brief Removes a layer which is currently managed by the service - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -int32_t -ivi_layout_layerRemove(struct ivi_layout_layer *ivilayer); - -/** - * \brief Get the current type of the layer. - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed */ -int32_t -ivi_layout_layerGetType(struct ivi_layout_layer *ivilayer, - int32_t *pLayerType); - -/** - * \brief Set the visibility of a layer. If a layer is not visible, the layer and its - * surfaces will not be rendered. - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -int32_t -ivi_layout_layerSetVisibility(struct ivi_layout_layer *ivilayer, - int32_t newVisibility); +void +ivi_layout_layer_remove(struct ivi_layout_layer *ivilayer); /** - * \brief Get the visibility of a layer. If a layer is not visible, the layer and its - * surfaces will not be rendered. + * \brief Set the visibility of a layer. If a layer is not visible, the + * layer and its surfaces will not be rendered. * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return IVI_SUCCEEDED if the method call was successful + * \return IVI_FAILED if the method call was failed */ int32_t -ivi_layout_layerGetVisibility(struct ivi_layout_layer *ivilayer, - int32_t *pVisibility); +ivi_layout_layer_set_visibility(struct ivi_layout_layer *ivilayer, + bool newVisibility); /** * \brief Set the opacity of a layer. * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return IVI_SUCCEEDED if the method call was successful + * \return IVI_FAILED if the method call was failed */ int32_t -ivi_layout_layerSetOpacity(struct ivi_layout_layer *ivilayer, float opacity); +ivi_layout_layer_set_opacity(struct ivi_layout_layer *ivilayer, + wl_fixed_t opacity); /** * \brief Get the opacity of a layer. * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return opacity if the method call was successful + * \return wl_fixed_from_double(0.0) if the method call was failed */ -int32_t -ivi_layout_layerGetOpacity(struct ivi_layout_layer *ivilayer, float *pOpacity); +wl_fixed_t +ivi_layout_layer_get_opacity(struct ivi_layout_layer *ivilayer); /** * \brief Set the area of a layer which should be used for the rendering. - * Only this part will be visible. * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -int32_t -ivi_layout_layerSetSourceRectangle(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 layer. - * The layer will be scaled and positioned to this rectangle for rendering + * Only this part will be visible. * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return IVI_SUCCEEDED if the method call was successful + * \return IVI_FAILED if the method call was failed */ int32_t -ivi_layout_layerSetDestinationRectangle(struct ivi_layout_layer *ivilayer, - int32_t x, int32_t y, - int32_t width, int32_t height); +ivi_layout_layer_set_source_rectangle(struct ivi_layout_layer *ivilayer, + int32_t x, int32_t y, + int32_t width, int32_t height); /** - * \brief Get the horizontal and vertical dimension of the layer. + * \brief Set the destination area on the display for a layer. * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -int32_t -ivi_layout_layerGetDimension(struct ivi_layout_layer *ivilayer, - int32_t *pDimension); - -/** - * \brief Set the horizontal and vertical dimension of the layer. + * The layer will be scaled and positioned to this rectangle + * for rendering * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return IVI_SUCCEEDED if the method call was successful + * \return IVI_FAILED if the method call was failed */ int32_t -ivi_layout_layerSetDimension(struct ivi_layout_layer *ivilayer, - int32_t *pDimension); +ivi_layout_layer_set_destination_rectangle(struct ivi_layout_layer *ivilayer, + int32_t x, int32_t y, + int32_t width, int32_t height); /** * \brief Get the horizontal and vertical position of the layer. * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return IVI_SUCCEEDED if the method call was successful + * \return IVI_FAILED if the method call was failed */ int32_t -ivi_layout_layerGetPosition(struct ivi_layout_layer *ivilayer, - int32_t *pPosition); +ivi_layout_layer_get_position(struct ivi_layout_layer *ivilayer, + int32_t *dest_x, int32_t *dest_y); /** * \brief Sets the horizontal and vertical position of the layer. * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return IVI_SUCCEEDED if the method call was successful + * \return IVI_FAILED if the method call was failed */ int32_t -ivi_layout_layerSetPosition(struct ivi_layout_layer *ivilayer, - int32_t *pPosition); +ivi_layout_layer_set_position(struct ivi_layout_layer *ivilayer, + int32_t dest_x, int32_t dest_y); /** * \brief Sets the orientation of a layer. * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -int32_t -ivi_layout_layerSetOrientation(struct ivi_layout_layer *ivilayer, - int32_t orientation); - -/** - * \brief Gets the orientation of a layer. - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return IVI_SUCCEEDED if the method call was successful + * \return IVI_FAILED if the method call was failed */ int32_t -ivi_layout_layerGetOrientation(struct ivi_layout_layer *ivilayer, - int32_t *pOrientation); - -/** - * \brief Sets the color value which defines the transparency value. - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -int32_t -ivi_layout_layerSetChromaKey(struct ivi_layout_layer *ivilayer, - int32_t* pColor); +ivi_layout_layer_set_orientation(struct ivi_layout_layer *ivilayer, + enum wl_output_transform orientation); /** * \brief Sets render order of surfaces within one layer * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -int32_t -ivi_layout_layerSetRenderOrder(struct ivi_layout_layer *ivilayer, - struct ivi_layout_surface **pSurface, - int32_t number); - -/** - * \brief Get the capabilities of a layer - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -int32_t -ivi_layout_layerGetCapabilities(struct ivi_layout_layer *ivilayer, - int32_t *pCapabilities); - -/** - * \brief Get the possible capabilities of a layertype - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -int32_t -ivi_layout_layerTypeGetCapabilities(int32_t layerType, - int32_t *pCapabilities); - -/** - * \brief Create the logical surface, which has no native buffer associated - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return IVI_SUCCEEDED if the method call was successful + * \return IVI_FAILED if the method call was failed */ int32_t -ivi_layout_surfaceInitialize(struct ivi_layout_surface **pSurface); +ivi_layout_layer_set_render_order(struct ivi_layout_layer *ivilayer, + struct ivi_layout_surface **pSurface, + int32_t number); /** * \brief Set the visibility of a surface. - * If a surface is not visible it will not be rendered. * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * 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 -ivi_layout_surfaceSetVisibility(struct ivi_layout_surface *ivisurf, - int32_t newVisibility); +ivi_layout_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 0 if the method call was successful - * \return -1 if the method call was failed + * 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 */ -int32_t -ivi_layout_surfaceGetVisibility(struct ivi_layout_surface *ivisurf, - int32_t *pVisibility); +bool +ivi_layout_surface_get_visibility(struct ivi_layout_surface *ivisurf); /** * \brief Set the opacity of a surface. * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return IVI_SUCCEEDED if the method call was successful + * \return IVI_FAILED if the method call was failed */ int32_t -ivi_layout_surfaceSetOpacity(struct ivi_layout_surface *ivisurf, - float opacity); +ivi_layout_surface_set_opacity(struct ivi_layout_surface *ivisurf, + wl_fixed_t opacity); /** * \brief Get the opacity of a surface. * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -int32_t -ivi_layout_surfaceGetOpacity(struct ivi_layout_surface *ivisurf, - float *pOpacity); - -/** - * \brief Set the keyboard focus on a certain surface - * To receive keyboard events, 2 conditions must be fulfilled: - * 1- The surface must accept events from keyboard. See ilm_UpdateInputEventAcceptanceOn - * 2- The keyboard focus must be set on that surface - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return opacity if the method call was successful + * \return wl_fixed_from_double(0.0) if the method call was failed */ -int32_t -ivi_layout_SetKeyboardFocusOn(uint32_t *surface_ids, size_t size); - -/** - * \brief Get the indentifier of the surface which hold the keyboard focus - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -int32_t -ivi_layout_GetKeyboardFocusSurfaceId(uint32_t *surface_ids, size_t size, uint32_t *count); +wl_fixed_t +ivi_layout_surface_get_opacity(struct ivi_layout_surface *ivisurf); /** * \brief Set the destination area of a surface within a layer for rendering. - * The surface will be scaled to this rectangle for rendering. * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -int32_t -ivi_layout_surfaceSetDestinationRectangle(struct ivi_layout_surface *ivisurf, - int32_t x, int32_t y, - int32_t width, int32_t height); - -/** - * \brief Set the horizontal and vertical dimension of the surface. + * The surface will be scaled to this rectangle for rendering. * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return IVI_SUCCEEDED if the method call was successful + * \return IVI_FAILED if the method call was failed */ int32_t -ivi_layout_surfaceSetDimension(struct ivi_layout_surface *ivisurf, - int32_t *pDimension); - -/** - * \brief Get the horizontal and vertical dimension of the surface. - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -int32_t -ivi_layout_surfaceGetDimension(struct ivi_layout_surface *ivisurf, - int32_t *pDimension); - -/** - * \brief Sets the horizontal and vertical position of the surface. - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -int32_t -ivi_layout_surfaceSetPosition(struct ivi_layout_surface *ivisurf, - int32_t *pPosition); - -/** - * \brief Get the horizontal and vertical position of the surface. - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -int32_t -ivi_layout_surfaceGetPosition(struct ivi_layout_surface *ivisurf, - int32_t *pPosition); +ivi_layout_surface_set_destination_rectangle(struct ivi_layout_surface *ivisurf, + int32_t x, int32_t y, + int32_t width, int32_t height); /** * \brief Sets the orientation of a surface. * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return IVI_SUCCEEDED if the method call was successful + * \return IVI_FAILED if the method call was failed */ int32_t -ivi_layout_surfaceSetOrientation(struct ivi_layout_surface *ivisurf, - int32_t orientation); - -/** - * \brief Gets the orientation of a surface. - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -int32_t -ivi_layout_surfaceGetOrientation(struct ivi_layout_surface *ivisurf, - int32_t *pOrientation); - -/** - * \brief Gets the pixelformat of a surface. - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -int32_t -ivi_layout_surfaceGetPixelformat(struct ivi_layout_layer *ivisurf, - int32_t *pPixelformat); - -/** - * \brief Sets the color value which defines the transparency value of a surface. - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed - */ -int32_t -ivi_layout_surfaceSetChromaKey(struct ivi_layout_surface *ivisurf, - int32_t* pColor); +ivi_layout_surface_set_orientation(struct ivi_layout_surface *ivisurf, + enum wl_output_transform orientation); /** * \brief Add a layer to a screen which is currently managed by the service * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return IVI_SUCCEEDED if the method call was successful + * \return IVI_FAILED if the method call was failed */ int32_t -ivi_layout_screenAddLayer(struct ivi_layout_screen *iviscrn, - struct ivi_layout_layer *addlayer); +ivi_layout_screen_add_layer(struct ivi_layout_screen *iviscrn, + struct ivi_layout_layer *addlayer); /** * \brief Sets render order of layers on a display * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return IVI_SUCCEEDED if the method call was successful + * \return IVI_FAILED if the method call was failed */ int32_t -ivi_layout_screenSetRenderOrder(struct ivi_layout_screen *iviscrn, - struct ivi_layout_layer **pLayer, - const int32_t number); +ivi_layout_screen_set_render_order(struct ivi_layout_screen *iviscrn, + struct ivi_layout_layer **pLayer, + const int32_t number); /** - * \brief Enable or disable a rendering optimization + * \brief register for notification on property changes of layer * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return IVI_SUCCEEDED if the method call was successful + * \return IVI_FAILED if the method call was failed */ int32_t -ivi_layout_SetOptimizationMode(uint32_t id, int32_t mode); +ivi_layout_layer_add_notification(struct ivi_layout_layer *ivilayer, + layer_property_notification_func callback, + void *userdata); /** - * \brief Get the current enablement for an optimization - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \brief remove notification on property changes of layer */ -int32_t -ivi_layout_GetOptimizationMode(uint32_t id, int32_t *pMode); +void +ivi_layout_layer_remove_notification(struct ivi_layout_layer *ivilayer); /** - * \brief register for notification on property changes of layer + * \brief register for notification on property changes of surface * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return IVI_SUCCEEDED if the method call was successful + * \return IVI_FAILED if the method call was failed */ int32_t -ivi_layout_layerAddNotification(struct ivi_layout_layer *ivilayer, - layerPropertyNotificationFunc callback, - void *userdata); +ivi_layout_surface_add_notification(struct ivi_layout_surface *ivisurf, + surface_property_notification_func callback, + void *userdata); /** - * \brief remove notification on property changes of layer - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \brief remove notification on property changes of surface */ -int32_t -ivi_layout_layerRemoveNotification(struct ivi_layout_layer *ivilayer); +void +ivi_layout_surface_remove_notification(struct ivi_layout_surface *ivisurf); /** * \brief Get the surface properties * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return (const struct ivi_surface_layer_properties *) + * if the method call was successful + * \return NULL if the method call was failed */ -int32_t -ivi_layout_getPropertiesOfSurface(struct ivi_layout_surface *ivisurf, - struct ivi_layout_SurfaceProperties *pSurfaceProperties); +const struct ivi_layout_surface_properties * +ivi_layout_get_properties_of_surface(struct ivi_layout_surface *ivisurf); /** * \brief Add a surface to a layer which is currently managed by the service * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return IVI_SUCCEEDED if the method call was successful + * \return IVI_FAILED if the method call was failed */ int32_t -ivi_layout_layerAddSurface(struct ivi_layout_layer *ivilayer, - struct ivi_layout_surface *addsurf); +ivi_layout_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 - * - * \return 0 if the method call was successful - * \return -1 if the method call was failed */ -int32_t -ivi_layout_layerRemoveSurface(struct ivi_layout_layer *ivilayer, - struct ivi_layout_surface *remsurf); +void +ivi_layout_layer_remove_surface(struct ivi_layout_layer *ivilayer, + struct ivi_layout_surface *remsurf); /** * \brief Set the area of a surface which should be used for the rendering. * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return IVI_SUCCEEDED if the method call was successful + * \return IVI_FAILED if the method call was failed */ int32_t -ivi_layout_surfaceSetSourceRectangle(struct ivi_layout_surface *ivisurf, - int32_t x, int32_t y, - int32_t width, int32_t height); +ivi_layout_surface_set_source_rectangle(struct ivi_layout_surface *ivisurf, + int32_t x, int32_t y, + int32_t width, int32_t height); /** * \brief get weston_output from ivi_layout_screen. * - * \return (struct weston_screen *) + * \return (struct weston_output *) * if the method call was successful * \return NULL if the method call was failed */ struct weston_output * -ivi_layout_screenGetOutput(struct ivi_layout_screen *); +ivi_layout_screen_get_output(struct ivi_layout_screen *); struct weston_surface * -ivi_layout_surfaceGetWestonSurface(struct ivi_layout_surface *ivisurf); +ivi_layout_surface_get_weston_surface(struct ivi_layout_surface *ivisurf); int32_t -ivi_layout_surfaceGetSize(struct ivi_layout_surface *ivisurf, int32_t *width, int32_t *height, int32_t *stride); +ivi_layout_layer_set_transition(struct ivi_layout_layer *ivilayer, + enum ivi_layout_transition_type type, + uint32_t duration); int32_t -ivi_layout_layerSetTransition(struct ivi_layout_layer *ivilayer, - enum ivi_layout_transition_type type, - uint32_t duration); +ivi_layout_layer_set_fade_info(struct ivi_layout_layer* layer, + uint32_t is_fade_in, + double start_alpha, double end_alpha); int32_t -ivi_layout_layerSetFadeInfo(struct ivi_layout_layer* layer, - uint32_t is_fade_in, - double start_alpha, double end_alpha); +ivi_layout_surface_set_transition(struct ivi_layout_surface *ivisurf, + enum ivi_layout_transition_type type, + uint32_t duration); -int32_t -ivi_layout_surfaceSetTransition(struct ivi_layout_surface *ivisurf, - enum ivi_layout_transition_type type, - uint32_t duration); +void +ivi_layout_transition_layer_render_order(struct ivi_layout_layer* layer, + struct ivi_layout_surface** new_order, + uint32_t surface_num, + uint32_t duration); -int32_t -ivi_layout_surfaceSetTransitionDuration(struct ivi_layout_surface *ivisurf,uint32_t duration); +void +ivi_layout_transition_move_layer_cancel(struct ivi_layout_layer* layer); /** - * \brief Commit all changes and execute all enqueued commands since last commit. + * \brief Commit all changes and execute all enqueued commands since + * last commit. * - * \return 0 if the method call was successful - * \return -1 if the method call was failed + * \return IVI_SUCCEEDED if the method call was successful + * \return IVI_FAILED if the method call was failed */ int32_t -ivi_layout_commitChanges(void); +ivi_layout_commit_changes(void); #ifdef __cplusplus -} /**/ +} #endif /* __cplusplus */ #endif /* _IVI_LAYOUT_EXPORT_H_ */ diff --git a/weston-ivi-shell/src/ivi-layout-private.h b/weston-ivi-shell/src/ivi-layout-private.h new file mode 100644 index 0000000..14d44db --- /dev/null +++ b/weston-ivi-shell/src/ivi-layout-private.h @@ -0,0 +1,343 @@ +/* + * Copyright (C) 2014 DENSO CORPORATION + * + * Permission to use, copy, modify, distribute, and sell this software and + * its documentation for any purpose is hereby granted without fee, provided + * that the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of the copyright holders not be used in + * advertising or publicity pertaining to distribution of the software + * without specific, written prior permission. The copyright holders make + * no representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY + * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF + * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef _ivi_layout_PRIVATE_H_ +#define _ivi_layout_PRIVATE_H_ + +#include "compositor.h" +#include "ivi-layout-export.h" + +struct ivi_layout_surface { + struct wl_list link; + struct wl_signal property_changed; + struct wl_list layer_list; + int32_t update_count; + uint32_t id_surface; + + struct ivi_layout *layout; + struct weston_surface *surface; + struct weston_view *view; + + struct wl_listener surface_destroy_listener; + struct weston_transform surface_rotation; + struct weston_transform layer_rotation; + struct weston_transform surface_pos; + struct weston_transform layer_pos; + struct weston_transform scaling; + + struct ivi_layout_surface_properties prop; + uint32_t event_mask; + + struct { + struct ivi_layout_surface_properties prop; + struct wl_list link; + } pending; + + struct { + struct wl_list link; + struct wl_list layer_list; + } order; + + struct { + ivi_controller_surface_content_callback callback; + void *userdata; + } content_observer; + + struct wl_signal configured; +}; + +struct ivi_layout_layer { + struct wl_list link; + struct wl_signal property_changed; + struct wl_list screen_list; + struct wl_list link_to_surface; + uint32_t id_layer; + + struct ivi_layout *layout; + + struct ivi_layout_layer_properties prop; + uint32_t event_mask; + + struct { + struct ivi_layout_layer_properties prop; + struct wl_list surface_list; + struct wl_list link; + } pending; + + struct { + struct wl_list surface_list; + struct wl_list link; + } order; +}; + +struct ivi_background { + struct wl_list link; + struct weston_surface *surface; + struct weston_view *view; +}; + +struct ivi_layout { + struct weston_compositor *compositor; + + struct wl_list surface_list; + struct wl_list layer_list; + struct wl_list screen_list; + + struct { + struct wl_signal created; + struct wl_signal removed; + } layer_notification; + + struct { + struct wl_signal created; + struct wl_signal removed; + struct wl_signal configure_changed; + } surface_notification; + + struct weston_layer layout_layer; + struct weston_layer background_layer; + + struct wl_signal warning_signal; + + struct ivi_layout_transition_set *transitions; + struct wl_list pending_transition_list; + + struct wl_list background_list; + struct { + float red, green, blue; + } background_color; +}; + +struct ivi_layout *get_layout_instance(void); + +struct ivi_layout_transition; + +struct ivi_layout_transition_set { + struct wl_event_source *event_source; + struct wl_list transition_list; +}; + +typedef void (*ivi_layout_transition_destroy_user_func)(void *user_data); + +struct ivi_layout_transition_set * +ivi_layout_transition_set_create(struct weston_compositor *ec); + +void +ivi_layout_transition_move_resize_view(struct ivi_layout_surface *surface, + int32_t dest_x, int32_t dest_y, + int32_t dest_width, int32_t dest_height, + uint32_t duration); + +void +ivi_layout_transition_visibility_on(struct ivi_layout_surface *surface, + uint32_t duration); + +void +ivi_layout_transition_visibility_off(struct ivi_layout_surface *surface, + uint32_t duration); + +void +ivi_layout_transition_move_layer(struct ivi_layout_layer *layer, + int32_t dest_x, int32_t dest_y, + uint32_t duration); + +void +ivi_layout_transition_fade_layer(struct ivi_layout_layer *layer, + uint32_t is_fade_in, + double start_alpha, double end_alpha, + void *user_data, + ivi_layout_transition_destroy_user_func destroy_func, + uint32_t duration); + +int32_t +is_surface_transition(struct ivi_layout_surface *surface); + +/** + * \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 * +ivi_layout_get_layer_from_id(uint32_t id_layer); + +/** + * \brief Remove a surface + */ +void +ivi_layout_surface_remove(struct ivi_layout_surface *ivisurf); + +/** + * \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 +ivi_layout_get_layers_on_screen(struct ivi_layout_screen *iviscrn, + int32_t *pLength, + struct ivi_layout_layer ***ppArray); + +/** + * \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 +ivi_layout_get_surfaces_on_layer(struct ivi_layout_layer *ivilayer, + int32_t *pLength, + struct ivi_layout_surface ***ppArray); + +/** + * \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 +ivi_layout_layer_get_visibility(struct ivi_layout_layer *ivilayer); + +/** + * \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 +ivi_layout_layer_get_dimension(struct ivi_layout_layer *ivilayer, + int32_t *dest_width, int32_t *dest_height); + +/** + * \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 +ivi_layout_layer_set_dimension(struct ivi_layout_layer *ivilayer, + int32_t dest_width, int32_t dest_height); + +/** + * \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 +ivi_layout_layer_get_orientation(struct ivi_layout_layer *ivilayer); + +/** + * \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 +ivi_layout_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 +ivi_layout_surface_get_dimension(struct ivi_layout_surface *ivisurf, + int32_t *dest_width, int32_t *dest_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 +ivi_layout_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 +ivi_layout_surface_get_position(struct ivi_layout_surface *ivisurf, + int32_t *dest_x, int32_t *dest_y); + +/** + * \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 +ivi_layout_surface_get_orientation(struct ivi_layout_surface *ivisurf); + +int32_t +ivi_layout_surface_set_transition_duration( + struct ivi_layout_surface *ivisurf, + uint32_t duration); + +struct ivi_layout_interface { + struct weston_surface* (*get_weston_surface)( + struct ivi_layout_surface *surface); + + struct weston_view *(*get_weston_view)( + struct ivi_layout_surface *surface); + + void (*surface_configure)(struct ivi_layout_surface *ivisurf, + int32_t width, + int32_t height); + + struct ivi_layout_surface *(*surface_create)( + struct weston_surface *wl_surface, + uint32_t id_surface); + + struct ivi_layout_surface* (*surface_find)(struct weston_surface *wl_surface); + + int32_t (*surface_add_notification)(struct ivi_layout_surface *ivisurf, + surface_property_notification_func callback, + void *userdata); + + void (*surface_remove_notification)(struct ivi_layout_surface *ivisurf); + + void (*init_with_compositor)(struct weston_compositor *ec); + + int32_t (*get_surface_dimension)( + struct ivi_layout_surface *ivisurf, + int32_t *dest_width, + int32_t *dest_height); + + void (*add_surface_configured_listener)( + struct ivi_layout_surface *ivisurf, + struct wl_listener* listener); +}; + +#endif diff --git a/weston-ivi-shell/src/ivi-layout.h b/weston-ivi-shell/src/ivi-layout.h deleted file mode 100644 index 7a53733..0000000 --- a/weston-ivi-shell/src/ivi-layout.h +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright (C) 2013 DENSO CORPORATION - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of the copyright holders not be used in - * advertising or publicity pertaining to distribution of the software - * without specific, written prior permission. The copyright holders make - * no representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY - * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF - * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS 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. - */ - -#ifndef _IVI_LAYOUT_H_ -#define _IVI_LAYOUT_H_ - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#include "compositor.h" - -struct ivi_layout_surface; -struct ivi_layout_layer; -struct ivi_layout_screen; - -struct ivi_layout_SurfaceProperties -{ - float opacity; - uint32_t sourceX; - uint32_t sourceY; - uint32_t sourceWidth; - uint32_t sourceHeight; - uint32_t origSourceWidth; - uint32_t origSourceHeight; - int32_t startX; - int32_t startY; - uint32_t startWidth; - uint32_t startHeight; - int32_t destX; - int32_t destY; - uint32_t destWidth; - uint32_t destHeight; - uint32_t orientation; - uint32_t visibility; - uint32_t frameCounter; - uint32_t drawCounter; - uint32_t updateCounter; - uint32_t pixelformat; - uint32_t nativeSurface; - uint32_t inputDevicesAcceptance; - uint32_t chromaKeyEnabled; - uint32_t chromaKeyRed; - uint32_t chromaKeyGreen; - uint32_t chromaKeyBlue; - int32_t creatorPid; - int32_t transitionType; - uint32_t transitionDuration; - uint32_t hasKeyboardFocus; -}; - -struct ivi_layout_LayerProperties -{ - float opacity; - uint32_t sourceX; - uint32_t sourceY; - uint32_t sourceWidth; - uint32_t sourceHeight; - uint32_t origSourceWidth; - uint32_t origSourceHeight; - int32_t destX; - int32_t destY; - uint32_t destWidth; - uint32_t destHeight; - uint32_t orientation; - uint32_t visibility; - uint32_t type; - uint32_t chromaKeyEnabled; - uint32_t chromaKeyRed; - uint32_t chromaKeyGreen; - uint32_t chromaKeyBlue; - int32_t creatorPid; - int32_t transitionType; - uint32_t transitionDuration; - double startAlpha; - double endAlpha; - uint32_t isFadeIn; -}; - -enum ivi_layout_warning_flag { - IVI_WARNING_INVALID_WL_SURFACE, - IVI_WARNING_IVI_ID_IN_USE -}; - -struct ivi_layout_interface { - struct weston_view* (*get_weston_view)(struct ivi_layout_surface *surface); - void (*surfaceConfigure)(struct ivi_layout_surface *ivisurf, - int32_t width, int32_t height); - int32_t (*surfaceSetNativeContent)(struct weston_surface *wl_surface, - int32_t width, - int32_t height, - uint32_t id_surface); - struct ivi_layout_surface* (*surfaceCreate)(struct weston_surface *wl_surface, - uint32_t id_surface); - void (*initWithCompositor)(struct weston_compositor *ec); - void (*emitWarningSignal)(uint32_t id_surface, - enum ivi_layout_warning_flag flag); -}; - -WL_EXPORT struct ivi_layout_interface ivi_layout_interface; - -#ifdef __cplusplus -} /**/ -#endif /* __cplusplus */ - -#endif /* _IVI_LAYOUT_H_ */ -- 2.7.4