• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include "ppapi/cpp/graphics_3d.h"
6 
7 #include "ppapi/c/pp_errors.h"
8 #include "ppapi/cpp/completion_callback.h"
9 #include "ppapi/cpp/instance_handle.h"
10 #include "ppapi/cpp/module_impl.h"
11 #include "ppapi/cpp/var.h"
12 
13 namespace pp {
14 
15 namespace {
16 
interface_name()17 template <> const char* interface_name<PPB_Graphics3D_1_0>() {
18   return PPB_GRAPHICS_3D_INTERFACE_1_0;
19 }
20 
21 }  // namespace
22 
Graphics3D()23 Graphics3D::Graphics3D() {
24 }
25 
Graphics3D(const InstanceHandle & instance,const int32_t attrib_list[])26 Graphics3D::Graphics3D(const InstanceHandle& instance,
27                        const int32_t attrib_list[]) {
28   if (has_interface<PPB_Graphics3D_1_0>()) {
29     PassRefFromConstructor(get_interface<PPB_Graphics3D_1_0>()->Create(
30         instance.pp_instance(), 0, attrib_list));
31   }
32 }
33 
Graphics3D(const InstanceHandle & instance,const Graphics3D & share_context,const int32_t attrib_list[])34 Graphics3D::Graphics3D(const InstanceHandle& instance,
35                        const Graphics3D& share_context,
36                        const int32_t attrib_list[]) {
37   if (has_interface<PPB_Graphics3D_1_0>()) {
38     PassRefFromConstructor(get_interface<PPB_Graphics3D_1_0>()->Create(
39         instance.pp_instance(),
40         share_context.pp_resource(),
41         attrib_list));
42   }
43 }
44 
~Graphics3D()45 Graphics3D::~Graphics3D() {
46 }
47 
GetAttribs(int32_t attrib_list[]) const48 int32_t Graphics3D::GetAttribs(int32_t attrib_list[]) const {
49   if (!has_interface<PPB_Graphics3D_1_0>())
50     return PP_ERROR_NOINTERFACE;
51 
52   return get_interface<PPB_Graphics3D_1_0>()->GetAttribs(
53       pp_resource(),
54       attrib_list);
55 }
56 
SetAttribs(const int32_t attrib_list[])57 int32_t Graphics3D::SetAttribs(const int32_t attrib_list[]) {
58   if (!has_interface<PPB_Graphics3D_1_0>())
59     return PP_ERROR_NOINTERFACE;
60 
61   return get_interface<PPB_Graphics3D_1_0>()->SetAttribs(
62       pp_resource(),
63       attrib_list);
64 }
65 
ResizeBuffers(int32_t width,int32_t height)66 int32_t Graphics3D::ResizeBuffers(int32_t width, int32_t height) {
67   if (!has_interface<PPB_Graphics3D_1_0>())
68     return PP_ERROR_NOINTERFACE;
69 
70   return get_interface<PPB_Graphics3D_1_0>()->ResizeBuffers(
71       pp_resource(), width, height);
72 }
73 
SwapBuffers(const CompletionCallback & cc)74 int32_t Graphics3D::SwapBuffers(const CompletionCallback& cc) {
75   if (!has_interface<PPB_Graphics3D_1_0>())
76     return PP_ERROR_NOINTERFACE;
77 
78   return get_interface<PPB_Graphics3D_1_0>()->SwapBuffers(
79       pp_resource(),
80       cc.pp_completion_callback());
81 }
82 
83 }  // namespace pp
84