compositor_layer.h revision 6e8cce623b6e4fe0c9e4af605d675dd9d0338c38
146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// found in the LICENSE file.
446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#ifndef PPAPI_CPP_COMPOSITOR_LAYER_H_
646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#define PPAPI_CPP_COMPOSITOR_LAYER_H_
746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "ppapi/c/ppb_compositor_layer.h"
946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "ppapi/cpp/graphics_3d.h"
1046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "ppapi/cpp/image_data.h"
1146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "ppapi/cpp/rect.h"
1246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "ppapi/cpp/resource.h"
1346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "ppapi/cpp/size.h"
1446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace pp {
1646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class CompositorLayer : public Resource {
1846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) public:
1946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// Default constructor for creating an is_null()
2046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// <code>CompositorLayer</code> object.
2146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  CompositorLayer();
2246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
2346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// The copy constructor for <code>CompositorLayer</code>.
2446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///
2546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// @param[in] other A reference to a <code>CompositorLayer</code>.
2646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  CompositorLayer(const CompositorLayer& other);
2746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
2846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// Constructs a <code>CompositorLayer</code> from a <code>Resource</code>.
2946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///
3046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// @param[in] resource A <code>PPB_CompositorLayer</code> resource.
3146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  explicit CompositorLayer(const Resource& resource);
3246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
3346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// A constructor used when you have received a <code>PP_Resource</code> as a
3446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// return value that has had 1 ref added for you.
3546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///
3646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// @param[in] resource A <code>PPB_CompositorLayer</code> resource.
3746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  CompositorLayer(PassRef, PP_Resource resource);
3846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
3946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// Destructor.
4046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ~CompositorLayer();
4146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
4246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// Sets the color of a solid color layer. If the layer is uninitialized, it
4346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// will initialize the layer first, and then set its color. If the layer has
4446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// been initialized to another kind of layer, the layer will not be changed,
4546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// and <code>PP_ERROR_BADARGUMENT</code> will be returned.
4646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///
4746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// param[in] red A <code>float</code> for the red color component. It will be
4846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// clamped to [0, 1]
4946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// param[in] green A <code>float</code> for the green color component.
5046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// It will be clamped to [0, 1].
5146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// param[in] blue A <code>float</code> for the blue color component. It will
5246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// be clamped to [0, 1].
5346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// param[in] alpha A <code>float</code> for the alpha color component.
5446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// It will be clamped to [0, 1].
5546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// param[in] size A <code>Size</code> for the size of the layer before
5646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// transform.
5746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///
5846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// @return An int32_t containing a result code from <code>pp_errors.h</code>.
5946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  int32_t SetColor(float red,
6046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                   float green,
6146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                   float blue,
6246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                   float alpha,
6346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                   const Size& size);
6446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
6546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// Sets the texture of a texture layer. If the layer is uninitialized, it
6646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// will initialize the layer first, and then set its texture. The source rect
6746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// will be set to ((0, 0), (1, 1)). If the layer has been initialized to
6846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// another kind of layer, the layer will not be changed, and
6946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// <code>PP_ERROR_BADARGUMENT</code> will be returned.
7046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///
7146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// param[in] context A <code>Graphics3D</code> corresponding to a graphics 3d
7246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// resource which owns the GL texture.
736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  /// param[in] target GL texture target (GL_TEXTURE_2D, etc).
7446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// param[in] texture A GL texture object id.
7546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// param[in] size A <code>Size</code> for the size of the layer before
7646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// transform.
7746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// param[in] cc A <code>CompletionCallback</code> to be called when
7846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// the texture is released by Chromium compositor.
7946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///
8046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// @return An int32_t containing a result code from <code>pp_errors.h</code>.
8146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  int32_t SetTexture(const Graphics3D& context,
826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)                     uint32_t target,
8346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                     uint32_t texture,
8446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                     const Size& size,
8546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                     const CompletionCallback& cc);
8646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
8746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// Sets the image of an image layer. If the layer is uninitialized, it will
8846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// initiliaze the layer first, and then set the image of it. If the layer has
8946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// been initialized to another kind of layer, the layer will not be changed,
9046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// and <code>PP_ERROR_BADARGUMENT</code> will be returned.
9146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///
9246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// param[in] image_data A <code>PP_Resource</code> corresponding to an image
9346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// data resource.
9446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// param[in] cc A <code>CompletionCallback</code> to be called when
9546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// the image data is released by Chromium compositor.
9646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///
9746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// @return An int32_t containing a result code from <code>pp_errors.h</code>.
9846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  int32_t SetImage(const ImageData& image,
9946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                   const CompletionCallback& callback);
10046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
10146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// Sets the image of an image layer. If the layer is uninitialized, it will
10246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// initialize the layer first, and then set its image. The layer size will
10346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// be set to the image's size. The source rect will be set to the full image.
10446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// If the layer has been initialized to another kind of layer, the layer will
10546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// not be changed, and <code>PP_ERROR_BADARGUMENT</code> will be returned.
10646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///
10746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// param[in] image_data A <code>ImageData</code> corresponding to an image
10846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// data resource.
10946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// param[in] size A <code>Size</code> for the size of the layer before
11046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// transform.
11146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// param[in] cc A <code>CompletionCallback</code> to be called when the image
11246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// data is released by Chromium compositor.
11346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///
11446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// @return An int32_t containing a result code from <code>pp_errors.h</code>.
11546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  int32_t SetImage(const ImageData& image,
11646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                   const Size& size,
11746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                   const CompletionCallback& callback);
11846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
11946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// Sets a clip rectangle for a compositor layer. The Chromium compositor
12046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// applies a transform matrix on the layer first, and then clips the layer
12146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// with the rectangle.
12246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///
12346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// param[in] rect The clip rectangle. The origin is top-left corner of
12446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// the plugin.
12546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///
12646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// @return An int32_t containing a result code from <code>pp_errors.h</code>.
12746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  int32_t SetClipRect(const Rect& rect);
12846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
12946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// Sets a transform matrix which is used to composite the layer.
13046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///
13146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// param[in] matrix A float array with 16 elements. The matrix is coloum
13246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// major. The default transform matrix is an identity matrix.
13346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///
13446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// @return An int32_t containing a result code from <code>pp_errors.h</code>.
13546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  int32_t SetTransform(const float matrix[16]);
13646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
13746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// Sets the opacity value which will be applied to the layer. The effective
13846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// value of each pixel is computed as:
13946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///
14046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///   if (premult_alpha)
14146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///     pixel.rgb = pixel.rgb * opacity;
14246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///   pixel.a = pixel.a * opactiy;
14346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///
14446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// param[in] opacity A <code>float</code> for the opacity value.
14546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// The default value is 1.0f.
14646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///
14746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///@return An int32_t containing a result code from <code>pp_errors.h</code>.
14846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  int32_t SetOpacity(float opacity);
14946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
15046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// Sets the blend mode which is used to composite the layer.
15146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///
15246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// param[in] mode A <code>PP_BlendMode</code>. The default value is
15346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// <code>PP_BLENDMODE_SRC_OVER</code>.
15446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///
15546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// @return An int32_t containing a result code from <code>pp_errors.h</code>.
15646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  int32_t SetBlendMode(PP_BlendMode mode);
15746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
15846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// Sets a source rectangle for a texture layer or an image layer.
15946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///
16046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// param[in] rect A <code>FloatRect</code> for an area of the source to
16146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// consider. For a texture layer, rect is in uv coordinates. For an image
16246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// layer, rect is in pixels. If the rect is beyond the dimensions of the
16346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// texture or image, <code>PP_ERROR_BADARGUMENT</code> will be returned.
16446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// If the layer size does not match the source rect size, bilinear scaling
16546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// will be used.
16646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///
16746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// @return An int32_t containing a result code from <code>pp_errors.h</code>.
16846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  int32_t SetSourceRect(const FloatRect& rect);
16946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
17046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// Sets the premultiplied alpha for an texture layer.
17146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///
17246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// param[in] premult A <code>bool</code> with <code>true</code> if
17346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// pre-multiplied alpha is used.
17446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///
17546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// @return An int32_t containing a result code from <code>pp_errors.h</code>.
17646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  int32_t SetPremultipliedAlpha(bool premult);
17746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
17846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// Checks whether a <code>Resource</code> is a compositor layer, to test
17946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// whether it is appropriate for use with the <code>CompositorLayer</code>
18046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// constructor.
18146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///
18246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// @param[in] resource A <code>Resource</code> to test.
18346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ///
18446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  /// @return True if <code>resource</code> is a compositor layer.
18546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  static bool IsCompositorLayer(const Resource& resource);
18646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)};
18746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
18846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}  // namespace pp
18946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
19046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#endif  // PPAPI_CPP_COMPOSITOR_LAYER_H_
191