• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include "ppapi/cpp/compositor_layer.h"
6 
7 #include "ppapi/c/pp_errors.h"
8 #include "ppapi/cpp/completion_callback.h"
9 #include "ppapi/cpp/module_impl.h"
10 #include "ppapi/cpp/var.h"
11 
12 namespace pp {
13 
14 namespace {
15 
interface_name()16 template <> const char* interface_name<PPB_CompositorLayer_0_1>() {
17   return PPB_COMPOSITORLAYER_INTERFACE_0_1;
18 }
19 
20 }  // namespace
21 
CompositorLayer()22 CompositorLayer::CompositorLayer() {
23 }
24 
CompositorLayer(const CompositorLayer & other)25 CompositorLayer::CompositorLayer(
26     const CompositorLayer& other) : Resource(other) {
27 }
28 
CompositorLayer(const Resource & resource)29 CompositorLayer::CompositorLayer(const Resource& resource)
30     : Resource(resource) {
31   PP_DCHECK(IsCompositorLayer(resource));
32 }
33 
CompositorLayer(PassRef,PP_Resource resource)34 CompositorLayer::CompositorLayer(PassRef, PP_Resource resource)
35     : Resource(PASS_REF, resource) {
36 }
37 
~CompositorLayer()38 CompositorLayer::~CompositorLayer() {
39 }
40 
SetColor(float red,float green,float blue,float alpha,const Size & size)41 int32_t CompositorLayer::SetColor(float red,
42                                   float green,
43                                   float blue,
44                                   float alpha,
45                                   const Size& size) {
46   if (has_interface<PPB_CompositorLayer_0_1>()) {
47     return get_interface<PPB_CompositorLayer_0_1>()->SetColor(
48         pp_resource(), red, green, blue, alpha, &size.pp_size());
49   }
50   return PP_ERROR_NOINTERFACE;
51 }
52 
SetTexture(const Graphics3D & context,uint32_t texture,const Size & size,const CompletionCallback & cc)53 int32_t CompositorLayer::SetTexture(const Graphics3D& context,
54                                     uint32_t texture,
55                                     const Size& size,
56                                     const CompletionCallback& cc) {
57   if (has_interface<PPB_CompositorLayer_0_1>()) {
58     return get_interface<PPB_CompositorLayer_0_1>()->SetTexture(
59         pp_resource(), context.pp_resource(), texture, &size.pp_size(),
60         cc.pp_completion_callback());
61   }
62   return cc.MayForce(PP_ERROR_NOINTERFACE);
63 }
64 
SetImage(const ImageData & image,const CompletionCallback & cc)65 int32_t CompositorLayer::SetImage(const ImageData& image,
66                                   const CompletionCallback& cc) {
67   if (has_interface<PPB_CompositorLayer_0_1>()) {
68     return get_interface<PPB_CompositorLayer_0_1>()->SetImage(
69         pp_resource(), image.pp_resource(), NULL,
70         cc.pp_completion_callback());
71   }
72   return cc.MayForce(PP_ERROR_NOINTERFACE);
73 }
74 
SetImage(const ImageData & image,const Size & size,const CompletionCallback & cc)75 int32_t CompositorLayer::SetImage(const ImageData& image,
76                                   const Size& size,
77                                   const CompletionCallback& cc) {
78   if (has_interface<PPB_CompositorLayer_0_1>()) {
79     return get_interface<PPB_CompositorLayer_0_1>()->SetImage(
80         pp_resource(), image.pp_resource(), &size.pp_size(),
81         cc.pp_completion_callback());
82   }
83   return cc.MayForce(PP_ERROR_NOINTERFACE);
84 }
85 
SetClipRect(const Rect & rect)86 int32_t CompositorLayer::SetClipRect(const Rect& rect) {
87   if (has_interface<PPB_CompositorLayer_0_1>()) {
88     return get_interface<PPB_CompositorLayer_0_1>()->SetClipRect(
89         pp_resource(), &rect.pp_rect());
90   }
91   return PP_ERROR_NOINTERFACE;
92 }
93 
SetTransform(const float matrix[16])94 int32_t CompositorLayer::SetTransform(const float matrix[16]) {
95   if (has_interface<PPB_CompositorLayer_0_1>()) {
96     return get_interface<PPB_CompositorLayer_0_1>()->SetTransform(
97         pp_resource(), matrix);
98   }
99   return PP_ERROR_NOINTERFACE;
100 }
101 
SetOpacity(float opacity)102 int32_t CompositorLayer::SetOpacity(float opacity) {
103   if (has_interface<PPB_CompositorLayer_0_1>()) {
104     return get_interface<PPB_CompositorLayer_0_1>()->SetOpacity(
105         pp_resource(), opacity);
106   }
107   return PP_ERROR_NOINTERFACE;
108 }
109 
SetBlendMode(PP_BlendMode mode)110 int32_t CompositorLayer::SetBlendMode(PP_BlendMode mode) {
111   if (has_interface<PPB_CompositorLayer_0_1>()) {
112     return get_interface<PPB_CompositorLayer_0_1>()->SetBlendMode(
113         pp_resource(), mode);
114   }
115   return PP_ERROR_NOINTERFACE;
116 }
117 
SetSourceRect(const FloatRect & rect)118 int32_t CompositorLayer::SetSourceRect(const FloatRect& rect) {
119   if (has_interface<PPB_CompositorLayer_0_1>()) {
120     return get_interface<PPB_CompositorLayer_0_1>()->SetSourceRect(
121         pp_resource(), &rect.pp_float_rect());
122   }
123   return PP_ERROR_NOINTERFACE;
124 }
125 
SetPremultipliedAlpha(bool premult)126 int32_t CompositorLayer::SetPremultipliedAlpha(bool premult) {
127   if (has_interface<PPB_CompositorLayer_0_1>()) {
128     return get_interface<PPB_CompositorLayer_0_1>()->SetPremultipliedAlpha(
129         pp_resource(), PP_FromBool(premult));
130   }
131   return PP_ERROR_NOINTERFACE;
132 }
133 
IsCompositorLayer(const Resource & resource)134 bool CompositorLayer::IsCompositorLayer(const Resource& resource) {
135   if (has_interface<PPB_CompositorLayer_0_1>()) {
136     return PP_ToBool(get_interface<PPB_CompositorLayer_0_1>()->
137         IsCompositorLayer(resource.pp_resource()));
138   }
139   return false;
140 }
141 
142 }  // namespace pp
143