- add sources.
[platform/framework/web/crosswalk.git] / src / ppapi / c / private / ppb_flash.h
1 /* Copyright (c) 2012 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 private/ppb_flash.idl modified Thu Apr 18 15:06:12 2013. */
7
8 #ifndef PPAPI_C_PRIVATE_PPB_FLASH_H_
9 #define PPAPI_C_PRIVATE_PPB_FLASH_H_
10
11 #include "ppapi/c/pp_array_output.h"
12 #include "ppapi/c/pp_bool.h"
13 #include "ppapi/c/pp_instance.h"
14 #include "ppapi/c/pp_macros.h"
15 #include "ppapi/c/pp_module.h"
16 #include "ppapi/c/pp_point.h"
17 #include "ppapi/c/pp_rect.h"
18 #include "ppapi/c/pp_resource.h"
19 #include "ppapi/c/pp_size.h"
20 #include "ppapi/c/pp_stdint.h"
21 #include "ppapi/c/pp_time.h"
22 #include "ppapi/c/pp_var.h"
23 #include "ppapi/c/trusted/ppb_browser_font_trusted.h"
24
25 #define PPB_FLASH_INTERFACE_12_4 "PPB_Flash;12.4"
26 #define PPB_FLASH_INTERFACE_12_5 "PPB_Flash;12.5"
27 #define PPB_FLASH_INTERFACE_12_6 "PPB_Flash;12.6"
28 #define PPB_FLASH_INTERFACE_13_0 "PPB_Flash;13.0"
29 #define PPB_FLASH_INTERFACE PPB_FLASH_INTERFACE_13_0
30
31 /**
32  * @file
33  * This file contains the <code>PPB_Flash</code> interface.
34  */
35
36
37 /**
38  * @addtogroup Enums
39  * @{
40  */
41 typedef enum {
42   /**
43    * No restrictions on Flash LSOs.
44    */
45   PP_FLASHLSORESTRICTIONS_NONE = 1,
46   /**
47    * Don't allow access to Flash LSOs.
48    */
49   PP_FLASHLSORESTRICTIONS_BLOCK = 2,
50   /**
51    * Store Flash LSOs in memory only.
52    */
53   PP_FLASHLSORESTRICTIONS_IN_MEMORY = 3
54 } PP_FlashLSORestrictions;
55 PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_FlashLSORestrictions, 4);
56
57 typedef enum {
58   /**
59    * Specifies if the system likely supports 3D hardware acceleration.
60    *
61    * The result is a boolean PP_Var, depending on the supported nature of 3D
62    * acceleration. If querying this function returns true, the 3D system will
63    * normally use the native hardware for rendering which will be much faster.
64    *
65    * Having this set to true only means that 3D should be used to draw 2D and
66    * video elements. PP_FLASHSETTING_STAGE3D_ENABLED should be checked to
67    * determine if it's ok to use 3D for arbitrary content.
68    *
69    * In rare cases (depending on the platform) this value will be true but a
70    * created 3D context will use emulation because context initialization
71    * failed.
72    */
73   PP_FLASHSETTING_3DENABLED = 1,
74   /**
75    * Specifies if the given instance is in private/incognito/off-the-record mode
76    * (returns true) or "regular" mode (returns false). Returns an undefined
77    * PP_Var on invalid instance.
78    */
79   PP_FLASHSETTING_INCOGNITO = 2,
80   /**
81    * Specifies if arbitrary 3d commands are supported (returns true), or if 3d
82    * should only be used for drawing 2d and video (returns false).
83    *
84    * This should only be enabled if PP_FLASHSETTING_3DENABLED is true.
85    */
86   PP_FLASHSETTING_STAGE3DENABLED = 3,
87   /**
88    * Specifies the string for the language code of the UI of the browser.
89    *
90    * For example: "en-US" or "de".
91    *
92    * Returns an undefined PP_Var on invalid instance.
93    */
94   PP_FLASHSETTING_LANGUAGE = 4,
95   /**
96    * Specifies the number of CPU cores that are present on the system.
97    */
98   PP_FLASHSETTING_NUMCORES = 5,
99   /**
100    * Specifies restrictions on how flash should handle LSOs. The result is an
101    * int from <code>PP_FlashLSORestrictions</code>.
102    */
103   PP_FLASHSETTING_LSORESTRICTIONS = 6,
104   /**
105    * Specifies if the driver is reliable enough to use Shader Model 3 commands
106    * with it.
107    *
108    * This should only be enabled if PP_FLASHSETTING_STAGE3DENABLED is true.
109    */
110   PP_FLASHSETTING_STAGE3DBASELINEENABLED = 7
111 } PP_FlashSetting;
112 PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_FlashSetting, 4);
113
114 /**
115  * This enum provides keys for setting breakpad crash report data.
116  */
117 typedef enum {
118   /**
119    * Specifies the document URL which contains the flash instance.
120    */
121   PP_FLASHCRASHKEY_URL = 1,
122   /**
123    * Specifies the URL of the current swf.
124    */
125   PP_FLASHCRASHKEY_RESOURCE_URL = 2
126 } PP_FlashCrashKey;
127 PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_FlashCrashKey, 4);
128 /**
129  * @}
130  */
131
132 /**
133  * @addtogroup Interfaces
134  * @{
135  */
136 /**
137  * The <code>PPB_Flash</code> interface contains pointers to various functions
138  * that are only needed to support Pepper Flash.
139  */
140 struct PPB_Flash_13_0 {
141   /**
142    * Sets or clears the rendering hint that the given plugin instance is always
143    * on top of page content. Somewhat more optimized painting can be used in
144    * this case.
145    */
146   void (*SetInstanceAlwaysOnTop)(PP_Instance instance, PP_Bool on_top);
147   /**
148    * Draws the given pre-laid-out text. It is almost equivalent to Windows'
149    * ExtTextOut with the addition of the transformation (a 3x3 matrix given the
150    * transform to apply before drawing). It also adds the allow_subpixel_aa
151    * flag which when true, will use subpixel antialiasing if enabled in the
152    * system settings. For this to work properly, the graphics layer that the
153    * text is being drawn into must be opaque.
154    */
155   PP_Bool (*DrawGlyphs)(
156       PP_Instance instance,
157       PP_Resource pp_image_data,
158       const struct PP_BrowserFont_Trusted_Description* font_desc,
159       uint32_t color,
160       const struct PP_Point* position,
161       const struct PP_Rect* clip,
162       const float transformation[3][3],
163       PP_Bool allow_subpixel_aa,
164       uint32_t glyph_count,
165       const uint16_t glyph_indices[],
166       const struct PP_Point glyph_advances[]);
167   /**
168    * Retrieves the proxy that will be used for the given URL. The result will
169    * be a string in PAC format, or an undefined var on error.
170    */
171   struct PP_Var (*GetProxyForURL)(PP_Instance instance, const char* url);
172   /**
173    * Navigate to the URL given by the given URLRequestInfo. (This supports GETs,
174    * POSTs, and javascript: URLs.) May open a new tab if target is not "_self".
175    */
176   int32_t (*Navigate)(PP_Resource request_info,
177                       const char* target,
178                       PP_Bool from_user_action);
179   /**
180    * Retrieves the local time zone offset from GM time for the given UTC time.
181    */
182   double (*GetLocalTimeZoneOffset)(PP_Instance instance, PP_Time t);
183   /**
184    * Gets a (string) with "command-line" options for Flash; used to pass
185    * run-time debugging parameters, etc.
186    */
187   struct PP_Var (*GetCommandLineArgs)(PP_Module module);
188   /**
189    * Loads the given font in a more privileged process on Windows. Call this if
190    * Windows is giving errors for font calls. See
191    * content/renderer/font_cache_dispatcher_win.cc
192    *
193    * The parameter is a pointer to a LOGFONTW structure.
194    *
195    * On non-Windows platforms, this function does nothing.
196    */
197   void (*PreloadFontWin)(const void* logfontw);
198   /**
199    * Returns whether the given rectangle (in the plugin) is topmost, i.e., above
200    * all other web content.
201    */
202   PP_Bool (*IsRectTopmost)(PP_Instance instance, const struct PP_Rect* rect);
203   /**
204    * Indicates that there's activity and, e.g., the screensaver shouldn't kick
205    * in.
206    */
207   void (*UpdateActivity)(PP_Instance instance);
208   /**
209    * Returns the value associated with the given setting. Invalid enums will
210    * result in an undefined PP_Var return value.
211    */
212   struct PP_Var (*GetSetting)(PP_Instance instance, PP_FlashSetting setting);
213   /**
214    * Allows setting breakpad crash data which will be included in plugin crash
215    * reports. Returns PP_FALSE if crash data could not be set.
216    */
217   PP_Bool (*SetCrashData)(PP_Instance instance,
218                           PP_FlashCrashKey key,
219                           struct PP_Var value);
220   /**
221    * Enumerates video capture devices. |video_capture| is a valid
222    * PPB_VideoCapture_Dev resource. Once the operation has completed
223    * successfully, |devices| will be set up with an array of
224    * PPB_DeviceRef_Dev resources.
225    *
226    * PP_OK is returned on success and different pepper error code on failure.
227    * The ref count of the returned |devices| has already been increased by 1 for
228    * the caller.
229    *
230    * NOTE: This method is a synchronous version of |EnumerateDevices| in
231    * PPB_VideoCapture_Dev.
232    */
233   int32_t (*EnumerateVideoCaptureDevices)(PP_Instance instance,
234                                           PP_Resource video_capture,
235                                           struct PP_ArrayOutput devices);
236 };
237
238 typedef struct PPB_Flash_13_0 PPB_Flash;
239
240 struct PPB_Flash_12_4 {
241   void (*SetInstanceAlwaysOnTop)(PP_Instance instance, PP_Bool on_top);
242   PP_Bool (*DrawGlyphs)(
243       PP_Instance instance,
244       PP_Resource pp_image_data,
245       const struct PP_BrowserFont_Trusted_Description* font_desc,
246       uint32_t color,
247       const struct PP_Point* position,
248       const struct PP_Rect* clip,
249       const float transformation[3][3],
250       PP_Bool allow_subpixel_aa,
251       uint32_t glyph_count,
252       const uint16_t glyph_indices[],
253       const struct PP_Point glyph_advances[]);
254   struct PP_Var (*GetProxyForURL)(PP_Instance instance, const char* url);
255   int32_t (*Navigate)(PP_Resource request_info,
256                       const char* target,
257                       PP_Bool from_user_action);
258   void (*RunMessageLoop)(PP_Instance instance);
259   void (*QuitMessageLoop)(PP_Instance instance);
260   double (*GetLocalTimeZoneOffset)(PP_Instance instance, PP_Time t);
261   struct PP_Var (*GetCommandLineArgs)(PP_Module module);
262   void (*PreloadFontWin)(const void* logfontw);
263   PP_Bool (*IsRectTopmost)(PP_Instance instance, const struct PP_Rect* rect);
264   int32_t (*InvokePrinting)(PP_Instance instance);
265   void (*UpdateActivity)(PP_Instance instance);
266   struct PP_Var (*GetDeviceID)(PP_Instance instance);
267   int32_t (*GetSettingInt)(PP_Instance instance, PP_FlashSetting setting);
268   struct PP_Var (*GetSetting)(PP_Instance instance, PP_FlashSetting setting);
269 };
270
271 struct PPB_Flash_12_5 {
272   void (*SetInstanceAlwaysOnTop)(PP_Instance instance, PP_Bool on_top);
273   PP_Bool (*DrawGlyphs)(
274       PP_Instance instance,
275       PP_Resource pp_image_data,
276       const struct PP_BrowserFont_Trusted_Description* font_desc,
277       uint32_t color,
278       const struct PP_Point* position,
279       const struct PP_Rect* clip,
280       const float transformation[3][3],
281       PP_Bool allow_subpixel_aa,
282       uint32_t glyph_count,
283       const uint16_t glyph_indices[],
284       const struct PP_Point glyph_advances[]);
285   struct PP_Var (*GetProxyForURL)(PP_Instance instance, const char* url);
286   int32_t (*Navigate)(PP_Resource request_info,
287                       const char* target,
288                       PP_Bool from_user_action);
289   void (*RunMessageLoop)(PP_Instance instance);
290   void (*QuitMessageLoop)(PP_Instance instance);
291   double (*GetLocalTimeZoneOffset)(PP_Instance instance, PP_Time t);
292   struct PP_Var (*GetCommandLineArgs)(PP_Module module);
293   void (*PreloadFontWin)(const void* logfontw);
294   PP_Bool (*IsRectTopmost)(PP_Instance instance, const struct PP_Rect* rect);
295   int32_t (*InvokePrinting)(PP_Instance instance);
296   void (*UpdateActivity)(PP_Instance instance);
297   struct PP_Var (*GetDeviceID)(PP_Instance instance);
298   int32_t (*GetSettingInt)(PP_Instance instance, PP_FlashSetting setting);
299   struct PP_Var (*GetSetting)(PP_Instance instance, PP_FlashSetting setting);
300   PP_Bool (*SetCrashData)(PP_Instance instance,
301                           PP_FlashCrashKey key,
302                           struct PP_Var value);
303 };
304
305 struct PPB_Flash_12_6 {
306   void (*SetInstanceAlwaysOnTop)(PP_Instance instance, PP_Bool on_top);
307   PP_Bool (*DrawGlyphs)(
308       PP_Instance instance,
309       PP_Resource pp_image_data,
310       const struct PP_BrowserFont_Trusted_Description* font_desc,
311       uint32_t color,
312       const struct PP_Point* position,
313       const struct PP_Rect* clip,
314       const float transformation[3][3],
315       PP_Bool allow_subpixel_aa,
316       uint32_t glyph_count,
317       const uint16_t glyph_indices[],
318       const struct PP_Point glyph_advances[]);
319   struct PP_Var (*GetProxyForURL)(PP_Instance instance, const char* url);
320   int32_t (*Navigate)(PP_Resource request_info,
321                       const char* target,
322                       PP_Bool from_user_action);
323   void (*RunMessageLoop)(PP_Instance instance);
324   void (*QuitMessageLoop)(PP_Instance instance);
325   double (*GetLocalTimeZoneOffset)(PP_Instance instance, PP_Time t);
326   struct PP_Var (*GetCommandLineArgs)(PP_Module module);
327   void (*PreloadFontWin)(const void* logfontw);
328   PP_Bool (*IsRectTopmost)(PP_Instance instance, const struct PP_Rect* rect);
329   int32_t (*InvokePrinting)(PP_Instance instance);
330   void (*UpdateActivity)(PP_Instance instance);
331   struct PP_Var (*GetDeviceID)(PP_Instance instance);
332   int32_t (*GetSettingInt)(PP_Instance instance, PP_FlashSetting setting);
333   struct PP_Var (*GetSetting)(PP_Instance instance, PP_FlashSetting setting);
334   PP_Bool (*SetCrashData)(PP_Instance instance,
335                           PP_FlashCrashKey key,
336                           struct PP_Var value);
337   int32_t (*EnumerateVideoCaptureDevices)(PP_Instance instance,
338                                           PP_Resource video_capture,
339                                           struct PP_ArrayOutput devices);
340 };
341 /**
342  * @}
343  */
344
345 #endif  /* PPAPI_C_PRIVATE_PPB_FLASH_H_ */
346