Copyright (C) 2017 Advanced Driver Information Technology Joint Venture GmbH 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 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. Request to destroy the ivi_wm_screen. A screen has no content assigned to itself, it is a container for layers. This request removes all layers from the screen render order. Note: the layers are not destroyed, they are just no longer contained by the screen. A screen has no content assigned to itself, it is a container for layers. This request adds a layers to the topmost position of the screen render order. The added layer will cover all other layers of the screen. A screen has no content assigned to itself, it is a container for layers. This request removes a layer. An ivi_screenshot object is created which will receive the screenshot data of the specified output. After this request, compositor sends the requested parameter. Sent immediately after creating the ivi_wm_screen object. A layer is added to the render order lisf of the screen Sent immediately after creating the ivi_wm_screen object. The error event is sent out when an error has occurred. An ivi_screenshot object receives a single "done" or "error" event. The server will destroy this resource after the event has been send, so the client shall then destroy its proxy too. This event contains a filedescriptor for a file with raw image data. Furthermore size, stride, format and timestamp of screenshot are provided. The error event is sent when the screenshot could not be created. All requests are not applied directly to scene object, so a controller can set different properties and apply the changes all at once. Note: there's an exception to this. Creation and destruction of scene objects is executed immediately. Ask the ivi-wm to create a ivi-screen for given wl_output. If visibility argument is 0, the surface in the ivi compositor is set to invisible. If visibility argument is not 0, the surface in the ivi compositor is set to visible. If visibility argument is 0, the layer in the ivi compositor is set to invisible. If visibility argument is not 0, the layer in the ivi compositor is set to visible. The valid range for opacity is 0.0 (fully transparent) to 1.0 (fully opaque). The valid range for opacity is 0.0 (fully transparent) to 1.0 (fully opaque). The source rectangle defines the part of the surface content, that is used for compositing the surface. It can be used, if valid content of the surface is smaller than the surface. Effectively it can be used to zoom the content of the surface. If a parameter is less than 0, that value is not changed. x: horizontal start position of scanout area within the surface y: vertical start position of scanout area within the surface width: width of scanout area within the surface height: height of scanout area within the surface The source rectangle defines the part of the layer content, that is used for compositing the screen. It can be used, if valid content of the layer is smaller than the layer. Effectively it can be used to zoom the content of the layer. If a parameter is less than 0, that value is not changed. x: horizontal start position of scanout area within the layer y: vertical start position of scanout area within the layer width: width of scanout area within the layer height: height of scanout area within the layer The destination rectangle defines the position and size of a surface on a layer. The surface will be scaled to this rectangle for rendering. If a parameter is less than 0, that value is not changed. x: horizontal start position of surface within the layer y: vertical start position of surface within the layer width : width of surface within the layer height: height of surface within the layer The destination rectangle defines the position and size of a layer on a screen. The layer will be scaled to this rectangle for rendering. If a parameter is less than 0, that value is not changed. x: horizontal start position of layer within the screen y: vertical start position of layer within the screen width : width of surface within the screen height: height of surface within the screen After this request, compositor sends the properties of the surface. If sync_state argument is 0, compositor sends the properties continously. If sync_state argument is not 0, compositor stops sending the properties continously. After this request, compositor sends the properties of the layer. If sync_state argument is 0, compositor sends the properties continously. If sync_state argument is not 0, compositor stops sending the properties continously. The HMI controller can request different types of parameters of an ivi-object. After this request, compositor sends the requested parameter. After this request, compositor sends the requested parameter. An ivi_screenshot object is created which will receive an image of the buffer currently attached to the surface with the given id. If there is no surface with such name the server will respond with an ivi_screenshot.error event. If a surface is restricted type, visible contents of the surface is strictly controlled by the compositor. Its content is not allowed to be go out of its destination region. If the application resizes its buffers or uses wp_viewporter protocol to scale its contents, the old destination region would causes visible glitches. To avoid these issues, the controller process mark a surface as desktop compatible. Source and destination regions of a desktop compatible surface will be modified accordingly,when application sends a request for resizing or scaling its contents. Therefore, applications contents will be drawn according to application's wishes. On the other hand, source and destination regions will be strictly enforced, when the surface's type is restricted. The default type for a surface is ivi. After this request, compositor changes the type of the surface. A layer has no content assigned to itself, it is a container for surfaces. This request removes all surfaces from the layer render order. A layer has no content assigned to itself, it is a container for surfaces. This request adds a surface to the topmost position of the layer render order. The added surface will cover all other surfaces of the layer. A layer has no content assigned to itself, it is a container for surfaces. This request removes one surfaces from the layer render order. Note: the surface is not destroyed, it is just no longer contained by the layer. After this request, compositor creates an ivi_layout_layer After this request, compositor destroyes an existing ivi_layout_layer. The new visibility state is provided in argument visibility. If visibility is 0, the surface has become invisible. If visibility is not 0, the surface has become visible. The new visibility state is provided in argument visibility. If visibility is 0, the layer has become invisible. If visibility is not 0, the layer has become visible. The new opacity state is provided in argument opacity. The valid range for opactiy is 0.0 (fully transparent) to 1.0 (fully opaque). The new opacity state is provided in argument opacity. The valid range for opactiy is 0.0 (fully transparent) to 1.0 (fully opaque). The scanout region of the surface content has changed. The new values for source rectangle are provided by x: new horizontal start position of scanout area within the surface y: new vertical start position of scanout area within the surface width: new width of scanout area within the surface height: new height of scanout area within the surface The scanout region of the layer content has changed. The new values for source rectangle are provided by x: new horizontal start position of scanout area within the layer y: new vertical start position of scanout area within the layer width: new width of scanout area within the layer height: new height of scanout area within the layer The new values for source rectangle are provided by x: new horizontal start position of surface within the layer y: new vertical start position of surface within the layer width : new width of surface within the layer height: new height of surface within the layer The new values for source rectangle are provided by x: new horizontal start position of layer within the screen y: new vertical start position of layer within the screen width : new width of layer within the screen height: new height of layer within the screen The error event is sent out when an error has occurred. The error event is sent out when an error has occurred. The client providing content for this surface modified size of the surface. The modified surface size is provided by arguments width and height. The information contained in this event is essential for monitoring, debugging, logging and tracing support in IVI systems. A surface is added to the render order of the layer