/* Copyright (c) 2012 The Chromium Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
/* From private/ppb_flash.idl modified Fri Apr 27 10:13:19 2012. */
#ifndef PPAPI_C_PRIVATE_PPB_FLASH_H_
#define PPAPI_C_PRIVATE_PPB_FLASH_H_
#include "ppapi/c/dev/ppb_font_dev.h"
#include "ppapi/c/pp_bool.h"
#include "ppapi/c/pp_instance.h"
#include "ppapi/c/pp_macros.h"
#include "ppapi/c/pp_module.h"
#include "ppapi/c/pp_point.h"
#include "ppapi/c/pp_rect.h"
#include "ppapi/c/pp_resource.h"
#include "ppapi/c/pp_size.h"
#include "ppapi/c/pp_stdint.h"
#include "ppapi/c/pp_time.h"
#include "ppapi/c/pp_var.h"
#define PPB_FLASH_INTERFACE_12_0 "PPB_Flash;12.0"
#define PPB_FLASH_INTERFACE_12_1 "PPB_Flash;12.1"
#define PPB_FLASH_INTERFACE_12_2 "PPB_Flash;12.2"
#define PPB_FLASH_INTERFACE_12_3 "PPB_Flash;12.3"
#define PPB_FLASH_INTERFACE PPB_FLASH_INTERFACE_12_3
/**
* @file
* This file contains the PPB_Flash
interface.
*/
/**
* @addtogroup Enums
* @{
*/
typedef enum {
/**
* Specifies if the system likely supports 3D hardware acceleration.
*
* The result is an int where 1 corresponds to true and 0 corresponds to
* false, depending on the supported nature of 3D acceleration. If querying
* this function returns 1, the 3D system will normally use the native
* hardware for rendering which will be much faster.
*
* In rare cases (depending on the platform) this value will be 1 but a
* created 3D context will use emulation because context initialization
* failed.
*/
PP_FLASHSETTING_3DENABLED = 1
} PP_FlashSetting;
PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_FlashSetting, 4);
/**
* @}
*/
/**
* @addtogroup Interfaces
* @{
*/
/**
* The PPB_Flash
interface contains pointers to various functions
* that are only needed to support Pepper Flash.
*/
struct PPB_Flash_12_3 {
/**
* Sets or clears the rendering hint that the given plugin instance is always
* on top of page content. Somewhat more optimized painting can be used in
* this case.
*/
void (*SetInstanceAlwaysOnTop)(PP_Instance instance, PP_Bool on_top);
/**
* Draws the given pre-laid-out text. It is almost equivalent to Windows'
* ExtTextOut with the addition of the transformation (a 3x3 matrix given the
* transform to apply before drawing). It also adds the allow_subpixel_aa
* flag which when true, will use subpixel antialiasing if enabled in the
* system settings. For this to work properly, the graphics layer that the
* text is being drawn into must be opaque.
*/
PP_Bool (*DrawGlyphs)(PP_Instance instance,
PP_Resource pp_image_data,
const struct PP_FontDescription_Dev* font_desc,
uint32_t color,
const struct PP_Point* position,
const struct PP_Rect* clip,
const float transformation[3][3],
PP_Bool allow_subpixel_aa,
uint32_t glyph_count,
const uint16_t glyph_indices[],
const struct PP_Point glyph_advances[]);
/**
* Retrieves the proxy that will be used for the given URL. The result will
* be a string in PAC format, or an undefined var on error.
*/
struct PP_Var (*GetProxyForURL)(PP_Instance instance, const char* url);
/**
* Navigate to the URL given by the given URLRequestInfo. (This supports GETs,
* POSTs, and javascript: URLs.) May open a new tab if target is not "_self".
*/
int32_t (*Navigate)(PP_Resource request_info,
const char* target,
PP_Bool from_user_action);
/**
* Runs a nested message loop. The plugin will be reentered from this call.
* This function is used in places where Flash would normally enter a nested
* message loop (e.g., when displaying context menus), but Pepper provides
* only an asynchronous call. After performing that asynchronous call, call
* |RunMessageLoop()|. In the callback, call |QuitMessageLoop()|.
*/
void (*RunMessageLoop)(PP_Instance instance);
/* Posts a quit message for the outermost nested message loop. Use this to
* exit and return back to the caller after you call RunMessageLoop.
*/
void (*QuitMessageLoop)(PP_Instance instance);
/**
* Retrieves the local time zone offset from GM time for the given UTC time.
*/
double (*GetLocalTimeZoneOffset)(PP_Instance instance, PP_Time t);
/**
* Gets a (string) with "command-line" options for Flash; used to pass
* run-time debugging parameters, etc.
*/
struct PP_Var (*GetCommandLineArgs)(PP_Module module);
/**
* Loads the given font in a more priviledged process on Windows. Call this if
* Windows is giving errors for font calls. See
* content/renderer/font_cache_dispatcher_win.cc
*
* The parameter is a pointer to a LOGFONTW structure.
*
* On non-Windows platforms, this function does nothing.
*/
void (*PreloadFontWin)(const void* logfontw);
/**
* Returns whether the given rectangle (in the plugin) is topmost, i.e., above
* all other web content.
*/
PP_Bool (*IsRectTopmost)(PP_Instance instance, const struct PP_Rect* rect);
/**
* Does nothing, deprecated. See PPB_Flash_Print.
*/
int32_t (*InvokePrinting)(PP_Instance instance);
/**
* Indicates that there's activity and, e.g., the screensaver shouldn't kick
* in.
*/
void (*UpdateActivity)(PP_Instance instance);
/**
* Returns the device ID as a string. Returns a PP_VARTYPE_UNDEFINED on error.
*/
struct PP_Var (*GetDeviceID)(PP_Instance instance);
/**
* Returns the value associated with the given setting. Invalid enums will
* result in -1 return value.
*/
int32_t (*GetSettingInt)(PP_Instance instance, PP_FlashSetting setting);
};
typedef struct PPB_Flash_12_3 PPB_Flash;
struct PPB_Flash_12_0 {
void (*SetInstanceAlwaysOnTop)(PP_Instance instance, PP_Bool on_top);
PP_Bool (*DrawGlyphs)(PP_Instance instance,
PP_Resource pp_image_data,
const struct PP_FontDescription_Dev* font_desc,
uint32_t color,
const struct PP_Point* position,
const struct PP_Rect* clip,
const float transformation[3][3],
PP_Bool allow_subpixel_aa,
uint32_t glyph_count,
const uint16_t glyph_indices[],
const struct PP_Point glyph_advances[]);
struct PP_Var (*GetProxyForURL)(PP_Instance instance, const char* url);
int32_t (*Navigate)(PP_Resource request_info,
const char* target,
PP_Bool from_user_action);
void (*RunMessageLoop)(PP_Instance instance);
void (*QuitMessageLoop)(PP_Instance instance);
double (*GetLocalTimeZoneOffset)(PP_Instance instance, PP_Time t);
struct PP_Var (*GetCommandLineArgs)(PP_Module module);
void (*PreloadFontWin)(const void* logfontw);
};
struct PPB_Flash_12_1 {
void (*SetInstanceAlwaysOnTop)(PP_Instance instance, PP_Bool on_top);
PP_Bool (*DrawGlyphs)(PP_Instance instance,
PP_Resource pp_image_data,
const struct PP_FontDescription_Dev* font_desc,
uint32_t color,
const struct PP_Point* position,
const struct PP_Rect* clip,
const float transformation[3][3],
PP_Bool allow_subpixel_aa,
uint32_t glyph_count,
const uint16_t glyph_indices[],
const struct PP_Point glyph_advances[]);
struct PP_Var (*GetProxyForURL)(PP_Instance instance, const char* url);
int32_t (*Navigate)(PP_Resource request_info,
const char* target,
PP_Bool from_user_action);
void (*RunMessageLoop)(PP_Instance instance);
void (*QuitMessageLoop)(PP_Instance instance);
double (*GetLocalTimeZoneOffset)(PP_Instance instance, PP_Time t);
struct PP_Var (*GetCommandLineArgs)(PP_Module module);
void (*PreloadFontWin)(const void* logfontw);
PP_Bool (*IsRectTopmost)(PP_Instance instance, const struct PP_Rect* rect);
int32_t (*InvokePrinting)(PP_Instance instance);
void (*UpdateActivity)(PP_Instance instance);
};
struct PPB_Flash_12_2 {
void (*SetInstanceAlwaysOnTop)(PP_Instance instance, PP_Bool on_top);
PP_Bool (*DrawGlyphs)(PP_Instance instance,
PP_Resource pp_image_data,
const struct PP_FontDescription_Dev* font_desc,
uint32_t color,
const struct PP_Point* position,
const struct PP_Rect* clip,
const float transformation[3][3],
PP_Bool allow_subpixel_aa,
uint32_t glyph_count,
const uint16_t glyph_indices[],
const struct PP_Point glyph_advances[]);
struct PP_Var (*GetProxyForURL)(PP_Instance instance, const char* url);
int32_t (*Navigate)(PP_Resource request_info,
const char* target,
PP_Bool from_user_action);
void (*RunMessageLoop)(PP_Instance instance);
void (*QuitMessageLoop)(PP_Instance instance);
double (*GetLocalTimeZoneOffset)(PP_Instance instance, PP_Time t);
struct PP_Var (*GetCommandLineArgs)(PP_Module module);
void (*PreloadFontWin)(const void* logfontw);
PP_Bool (*IsRectTopmost)(PP_Instance instance, const struct PP_Rect* rect);
int32_t (*InvokePrinting)(PP_Instance instance);
void (*UpdateActivity)(PP_Instance instance);
struct PP_Var (*GetDeviceID)(PP_Instance instance);
};
/**
* @}
*/
/**
* The old version of the interface, which cannot be generated from IDL.
* TODO(viettrungluu): Remove this when enough time has passed. crbug.com/104184
*/
#define PPB_FLASH_INTERFACE_11_0 "PPB_Flash;11"
struct PPB_Flash_11 {
void (*SetInstanceAlwaysOnTop)(PP_Instance instance, PP_Bool on_top);
PP_Bool (*DrawGlyphs)(PP_Instance instance,
PP_Resource pp_image_data,
const struct PP_FontDescription_Dev* font_desc,
uint32_t color,
struct PP_Point position,
struct PP_Rect clip,
const float transformation[3][3],
uint32_t glyph_count,
const uint16_t glyph_indices[],
const struct PP_Point glyph_advances[]);
struct PP_Var (*GetProxyForURL)(PP_Instance instance, const char* url);
int32_t (*Navigate)(PP_Resource request_info,
const char* target,
bool from_user_action);
void (*RunMessageLoop)(PP_Instance instance);
void (*QuitMessageLoop)(PP_Instance instance);
double (*GetLocalTimeZoneOffset)(PP_Instance instance, PP_Time t);
struct PP_Var (*GetCommandLineArgs)(PP_Module module);
};
#endif /* PPAPI_C_PRIVATE_PPB_FLASH_H_ */