Pepper_47_C_interfaces
ppb_compositor_layer.h
Go to the documentation of this file.
1 /* Copyright 2014 The Chromium Authors. All rights reserved.
2  * Use of this source code is governed by a BSD-style license that can be
3  * found in the LICENSE file.
4  */
5 
6 /* From ppb_compositor_layer.idl modified Thu Aug 14 18:06:33 2014. */
7 
8 #ifndef PPAPI_C_PPB_COMPOSITOR_LAYER_H_
9 #define PPAPI_C_PPB_COMPOSITOR_LAYER_H_
10 
11 #include "ppapi/c/pp_bool.h"
13 #include "ppapi/c/pp_macros.h"
14 #include "ppapi/c/pp_point.h"
15 #include "ppapi/c/pp_rect.h"
16 #include "ppapi/c/pp_resource.h"
17 #include "ppapi/c/pp_size.h"
18 #include "ppapi/c/pp_stdint.h"
19 
20 #define PPB_COMPOSITORLAYER_INTERFACE_0_1 "PPB_CompositorLayer;0.1" /* dev */
21 #define PPB_COMPOSITORLAYER_INTERFACE_0_2 "PPB_CompositorLayer;0.2" /* dev */
22 /**
23  * @file
24  */
25 
26 
27 /**
28  * @addtogroup Enums
29  * @{
30  */
31 /**
32  * This enumeration contains blend modes used for computing the result pixels
33  * based on the source RGBA values in layers with the RGBA values that are
34  * already in the destination framebuffer.
35  * alpha_src, color_src: source alpha and color.
36  * alpha_dst, color_dst: destination alpha and color (before compositing).
37  * Below descriptions of the blend modes assume the colors are pre-multiplied.
38  * This interface is still in development (Dev API status) and may change,
39  * so is only supported on Dev channel and Canary currently.
40  */
41 typedef enum {
42  /**
43  * No blending, copy source to the destination directly.
44  */
46  /**
47  * Source is placed over the destination.
48  * Resulting alpha = alpha_src + alpha_dst - alpha_src * alpha_dst
49  * Resulting color = color_src + color_dst * (1 - alpha_src)
50  */
52  /**
53  * The last blend mode.
54  */
56 } PP_BlendMode;
57 /**
58  * @}
59  */
60 
61 /**
62  * @addtogroup Interfaces
63  * @{
64  */
65 /**
66  * Defines the <code>PPB_CompositorLayer</code> interface. It is used by
67  * <code>PPB_Compositor</code>.
68  */
69 struct PPB_CompositorLayer_0_2 { /* dev */
70  /**
71  * Determines if a resource is a compositor layer resource.
72  *
73  * @param[in] resource The <code>PP_Resource</code> to test.
74  *
75  * @return A <code>PP_Bool</code> with <code>PP_TRUE</code> if the given
76  * resource is a compositor layer resource or <code>PP_FALSE</code>
77  * otherwise.
78  */
80  /**
81  * Sets the color of a solid color layer. If the layer is uninitialized,
82  * it will initialize the layer first, and then set its color.
83  * If the layer has been initialized to another kind of layer, the layer will
84  * not be changed, and <code>PP_ERROR_BADARGUMENT</code> will be returned.
85  *
86  * param[in] layer A <code>PP_Resource</code> corresponding to a compositor
87  * layer resource.
88  * param[in] red A <code>float</code> for the red color component. It will be
89  * clamped to [0, 1].
90  * param[in] green A <code>float</code> for the green color component. It will
91  * be clamped to [0, 1].
92  * param[in] blue A <code>float</code> for the blue color component. It will
93  * be clamped to [0, 1].
94  * param[in] alpha A <code>float</code> for the alpha color component. It will
95  * be clamped to [0, 1].
96  * param[in] size A <code>PP_Size</code> for the size of the layer before
97  * transform.
98  *
99  * @return An int32_t containing a result code from <code>pp_errors.h</code>.
100  */
101  int32_t (*SetColor)(PP_Resource layer,
102  float red,
103  float green,
104  float blue,
105  float alpha,
106  const struct PP_Size* size);
107  /**
108  * Sets the texture of a texture layer. If the layer is uninitialized,
109  * it will initialize the layer first, and then set its texture.
110  * The source rect will be set to ((0, 0), (1, 1)). If the layer has been
111  * initialized to another kind of layer, the layer will not be changed,
112  * and <code>PP_ERROR_BADARGUMENT</code> will be returned.
113  *
114  * param[in] layer A <code>PP_Resource</code> corresponding to a compositor
115  * layer resource.
116  * param[in] context A <code>PP_Resource</code> corresponding to a graphics
117  * 3d resource which owns the GL texture.
118  * param[in] target GL texture target (GL_TEXTURE_2D, etc).
119  * param[in] texture A GL texture object id.
120  * param[in] size A <code>PP_Size</code> for the size of the layer before
121  * transform.
122  * param[in] cc A <code>PP_CompletionCallback</code> to be called when
123  * the texture is released by Chromium compositor.
124  *
125  * @return An int32_t containing a result code from <code>pp_errors.h</code>.
126  */
127  int32_t (*SetTexture)(PP_Resource layer,
128  PP_Resource context,
129  uint32_t target,
130  uint32_t texture,
131  const struct PP_Size* size,
132  struct PP_CompletionCallback cc);
133  /**
134  * Sets the image of an image layer. If the layer is uninitialized,
135  * it will initialize the layer first, and then set its image.
136  * The layer size will be set to the image's size. The source rect will be set
137  * to the full image. If the layer has been initialized to another kind of
138  * layer, the layer will not be changed, and <code>PP_ERROR_BADARGUMENT</code>
139  * will be returned.
140  *
141  * param[in] layer A <code>PP_Resource</code> corresponding to a compositor
142  * layer resource.
143  * param[in] image_data A <code>PP_Resource</code> corresponding to
144  * an image data resource.
145  * param[in] size A <code>PP_Size</code> for the size of the layer before
146  * transform. If NULL, the image's size will be used.
147  * param[in] cc A <code>PP_CompletionCallback</code> to be called when
148  * the image data is released by Chromium compositor.
149  *
150  * @return An int32_t containing a result code from <code>pp_errors.h</code>.
151  */
152  int32_t (*SetImage)(PP_Resource layer,
153  PP_Resource image_data,
154  const struct PP_Size* size,
155  struct PP_CompletionCallback cc);
156  /**
157  * Sets a clip rectangle for a compositor layer. The Chromium compositor
158  * applies a transform matrix on the layer first, and then clips the layer
159  * with the rectangle.
160  *
161  * param[in] layer A <code>PP_Resource</code> corresponding to a compositor
162  * layer resource.
163  * param[in] rect The clip rectangle. The origin is top-left corner of
164  * the plugin.
165  *
166  * @return An int32_t containing a result code from <code>pp_errors.h</code>.
167  */
168  int32_t (*SetClipRect)(PP_Resource layer, const struct PP_Rect* rect);
169  /**
170  * Sets a transform matrix which is used to composite the layer.
171  *
172  * param[in] layer A <code>PP_Resource</code> corresponding to a compositor
173  * layer resource.
174  * param[in] matrix A float array with 16 elements. The matrix is
175  * column major. The default transform matrix is an identity matrix.
176  *
177  * @return An int32_t containing a result code from <code>pp_errors.h</code>.
178  */
179  int32_t (*SetTransform)(PP_Resource layer, const float matrix[16]);
180  /**
181  * Sets the opacity value which will be applied to the layer. The effective
182  * value of each pixel is computed as:
183  *
184  * if (premult_alpha)
185  * pixel.rgb = pixel.rgb * opacity;
186  * pixel.a = pixel.a * opactiy;
187  *
188  * param[in] layer A <code>PP_Resource</code> corresponding to a compositor
189  * layer resource.
190  * param[in] opacity A <code>float</code> for the opacity value, The default
191  * value is 1.0f.
192  *
193  * @return An int32_t containing a result code from <code>pp_errors.h</code>.
194  */
195  int32_t (*SetOpacity)(PP_Resource layer, float opacity);
196  /**
197  * Sets the blend mode which is used to composite the layer.
198  *
199  * param[in] layer A <code>PP_Resource</code> corresponding to a compositor
200  * layer resource.
201  * param[in] mode A <code>PP_BlendMode</code>. The default mode is
202  * <code>PP_BLENDMODE_SRC_OVER</code>.
203  *
204  * @return An int32_t containing a result code from <code>pp_errors.h</code>.
205  */
206  int32_t (*SetBlendMode)(PP_Resource layer, PP_BlendMode mode);
207  /**
208  * Sets a source rectangle for a texture layer or an image layer.
209  *
210  * param[in] layer A <code>PP_Resource</code> corresponding to a compositor
211  * layer resource.
212  * param[in] rect A <code>PP_FloatRect</code> for an area of the source to
213  * consider. For a texture layer, rect is in uv coordinates. For an image
214  * layer, rect is in pixels. If the rect is beyond the dimensions of the
215  * texture or image, <code>PP_ERROR_BADARGUMENT</code> will be returned.
216  * If the layer size does not match the source rect size, bilinear scaling
217  * will be used.
218  *
219  * @return An int32_t containing a result code from <code>pp_errors.h</code>.
220  */
221  int32_t (*SetSourceRect)(PP_Resource layer, const struct PP_FloatRect* rect);
222  /**
223  * Sets the premultiplied alpha for an texture layer.
224  *
225  * param[in] layer A <code>PP_Resource</code> corresponding to a compositor
226  * layer resource.
227  * param[in] premult A <code>PP_Bool</code> with <code>PP_TRUE</code> if
228  * pre-multiplied alpha is used.
229  *
230  * @return An int32_t containing a result code from <code>pp_errors.h</code>.
231  */
232  int32_t (*SetPremultipliedAlpha)(PP_Resource layer, PP_Bool premult);
233 };
234 
235 struct PPB_CompositorLayer_0_1 { /* dev */
237  int32_t (*SetColor)(PP_Resource layer,
238  float red,
239  float green,
240  float blue,
241  float alpha,
242  const struct PP_Size* size);
243  int32_t (*SetTexture)(PP_Resource layer,
244  PP_Resource context,
245  uint32_t texture,
246  const struct PP_Size* size,
247  struct PP_CompletionCallback cc);
248  int32_t (*SetImage)(PP_Resource layer,
249  PP_Resource image_data,
250  const struct PP_Size* size,
251  struct PP_CompletionCallback cc);
252  int32_t (*SetClipRect)(PP_Resource layer, const struct PP_Rect* rect);
253  int32_t (*SetTransform)(PP_Resource layer, const float matrix[16]);
254  int32_t (*SetOpacity)(PP_Resource layer, float opacity);
255  int32_t (*SetBlendMode)(PP_Resource layer, PP_BlendMode mode);
256  int32_t (*SetSourceRect)(PP_Resource layer, const struct PP_FloatRect* rect);
257  int32_t (*SetPremultipliedAlpha)(PP_Resource layer, PP_Bool premult);
258 };
259 /**
260  * @}
261  */
262 
263 #endif /* PPAPI_C_PPB_COMPOSITOR_LAYER_H_ */
264 
int32_t(* SetTransform)(PP_Resource layer, const float matrix[16])
int32_t(* SetOpacity)(PP_Resource layer, float opacity)
int32_t(* SetClipRect)(PP_Resource layer, const struct PP_Rect *rect)
int32_t(* SetPremultipliedAlpha)(PP_Resource layer, PP_Bool premult)
PP_Bool(* IsCompositorLayer)(PP_Resource resource)
int32_t(* SetSourceRect)(PP_Resource layer, const struct PP_FloatRect *rect)
int32_t(* SetColor)(PP_Resource layer, float red, float green, float blue, float alpha, const struct PP_Size *size)
int32_t(* SetBlendMode)(PP_Resource layer, PP_BlendMode mode)
int32_t(* SetTransform)(PP_Resource layer, const float matrix[16])
int32_t(* SetImage)(PP_Resource layer, PP_Resource image_data, const struct PP_Size *size, struct PP_CompletionCallback cc)
int32_t PP_Resource
Definition: pp_resource.h:40
int32_t(* SetImage)(PP_Resource layer, PP_Resource image_data, const struct PP_Size *size, struct PP_CompletionCallback cc)
int32_t(* SetOpacity)(PP_Resource layer, float opacity)
int32_t(* SetTexture)(PP_Resource layer, PP_Resource context, uint32_t texture, const struct PP_Size *size, struct PP_CompletionCallback cc)
int32_t(* SetSourceRect)(PP_Resource layer, const struct PP_FloatRect *rect)
int32_t(* SetTexture)(PP_Resource layer, PP_Resource context, uint32_t target, uint32_t texture, const struct PP_Size *size, struct PP_CompletionCallback cc)
int32_t(* SetBlendMode)(PP_Resource layer, PP_BlendMode mode)
PP_Bool(* IsCompositorLayer)(PP_Resource resource)
PP_Bool
Definition: pp_bool.h:30
int32_t(* SetColor)(PP_Resource layer, float red, float green, float blue, float alpha, const struct PP_Size *size)
int32_t(* SetClipRect)(PP_Resource layer, const struct PP_Rect *rect)
int32_t(* SetPremultipliedAlpha)(PP_Resource layer, PP_Bool premult)