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 13namespace pp { 14 15namespace { 16 17template <> const char* interface_name<PPB_Graphics3D_1_0>() { 18 return PPB_GRAPHICS_3D_INTERFACE_1_0; 19} 20 21} // namespace 22 23Graphics3D::Graphics3D() { 24} 25 26Graphics3D::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 34Graphics3D::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 45Graphics3D::~Graphics3D() { 46} 47 48int32_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 57int32_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 66int32_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 74int32_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