Data Fields
PP_Bool(* | IsCompositor )(PP_Resource resource) |
PP_Resource(* | Create )(PP_Instance instance) |
PP_Resource(* | AddLayer )(PP_Resource compositor) |
int32_t(* | CommitLayers )(PP_Resource compositor, struct PP_CompletionCallback cc) |
int32_t(* | ResetLayers )(PP_Resource compositor) |
Detailed Description
Defines the PPB_Compositor
interface.
Used for setting PPB_CompositorLayer
layers to the Chromium compositor for compositing. This allows a plugin to combine different sources of visual data efficiently, such as PPB_ImageData
images and OpenGL textures. See also PPB_CompositorLayer
for more information. This interface is still in development (Dev API status) and may change, so is only supported on Dev channel and Canary currently.
Example usage from plugin code:
Setup:
PP_Resource compositor; compositor = compositor_if->Create(instance); instance_if->BindGraphics(instance, compositor);
Setup layer stack:
PP_Resource color_layer = compositor_if->AddLayer(compositor); PP_Resource texture_layer = compositor_if->AddLayer(compositor);
Present one frame: layer_if->SetColor(color_layer, 255, 255, 0, 255, PP_MakeSize(400, 400)); PP_CompletionCallback release_callback = { TextureReleasedCallback, 0, PP_COMPLETIONCALLBACK_FLAG_NONE, }; layer_if->SetTexture(texture_layer, graphics3d, texture_id, PP_MakeSize(300, 300), release_callback);
PP_CompletionCallback callback = { DidFinishCommitLayersCallback, (void*) texture_id, PP_COMPLETIONCALLBACK_FLAG_NONE, }; compositor_if->CommitLayers(compositor, callback);
release callback void ReleaseCallback(int32_t result, void* user_data) { if (result == PP_OK) { uint32_t texture_id = (uint32_t) user_data; // reuse the texture or delete it. } }
Shutdown:
core->ReleaseResource(color_layer); core->ReleaseResource(texture_layer); core->ReleaseResource(compositor);
Field Documentation
PP_Resource(* PPB_Compositor::AddLayer)(PP_Resource compositor) |
Creates a new PPB_CompositorLayer
and adds it to the end of the layer stack.
A PP_Resource
containing the layer is returned. It is uninitialized, SetColor()
, SetTexture
or SetImage
should be used to initialize it. The layer will appear above other pre-existing layers. If ResetLayers
is called or the PPB_Compositor
is released, the returned layer will be invalidated, and any further calls on the layer will return PP_ERROR_BADRESOURCE
.
param[in] compositor A PP_Resource
corresponding to a compositor layer resource.
- Returns:
- A
PP_Resource
containing the compositor layer resource if successful or 0 otherwise.
int32_t(* PPB_Compositor::CommitLayers)(PP_Resource compositor, struct PP_CompletionCallback cc) |
Commits layers added by AddLayer()
to the chromium compositor.
param[in] compositor A PP_Resource
corresponding to a compositor layer resource.
- Parameters:
[in] cc A PP_CompletionCallback
to be called when layers have been represented on screen.
- Returns:
- An int32_t containing a result code from
pp_errors.h
.
PP_Resource(* PPB_Compositor::Create)(PP_Instance instance) |
Creates a Compositor resource.
- Parameters:
[in] instance A PP_Instance
identifying one instance of a module.
- Returns:
- A
PP_Resource
containing the compositor resource if successful or 0 otherwise.
PP_Bool(* PPB_Compositor::IsCompositor)(PP_Resource resource) |
Determines if a resource is a compositor resource.
- Parameters:
[in] resource The PP_Resource
to test.
- Returns:
- A
PP_Bool
withPP_TRUE
if the given resource is a compositor resource orPP_FALSE
otherwise.
int32_t(* PPB_Compositor::ResetLayers)(PP_Resource compositor) |
Resets layers added by AddLayer()
.
param[in] compositor A PP_Resource
corresponding to a compositor layer resource.
- Returns:
- An int32_t containing a result code from
pp_errors.h
.
The documentation for this struct was generated from the following file: