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/view.h" 6 7#include "ppapi/c/ppb_view.h" 8#include "ppapi/cpp/module_impl.h" 9 10namespace pp { 11 12namespace { 13 14template <> const char* interface_name<PPB_View_1_0>() { 15 return PPB_VIEW_INTERFACE_1_0; 16} 17 18template <> const char* interface_name<PPB_View_1_1>() { 19 return PPB_VIEW_INTERFACE_1_1; 20} 21 22template <> const char* interface_name<PPB_View_1_2>() { 23 return PPB_VIEW_INTERFACE_1_2; 24} 25 26} // namespace 27 28View::View() : Resource() { 29} 30 31View::View(PP_Resource view_resource) : Resource(view_resource) { 32} 33 34Rect View::GetRect() const { 35 PP_Rect out; 36 if (has_interface<PPB_View_1_2>()) { 37 if (PP_ToBool(get_interface<PPB_View_1_2>()->GetRect(pp_resource(), &out))) 38 return Rect(out); 39 } else if (has_interface<PPB_View_1_1>()) { 40 if (PP_ToBool(get_interface<PPB_View_1_1>()->GetRect(pp_resource(), &out))) 41 return Rect(out); 42 } else if (has_interface<PPB_View_1_0>()) { 43 if (PP_ToBool(get_interface<PPB_View_1_0>()->GetRect(pp_resource(), &out))) 44 return Rect(out); 45 } 46 return Rect(); 47} 48 49bool View::IsFullscreen() const { 50 if (has_interface<PPB_View_1_2>()) { 51 return PP_ToBool(get_interface<PPB_View_1_2>()->IsFullscreen( 52 pp_resource())); 53 } else if (has_interface<PPB_View_1_1>()) { 54 return PP_ToBool(get_interface<PPB_View_1_1>()->IsFullscreen( 55 pp_resource())); 56 } else if (has_interface<PPB_View_1_0>()) { 57 return PP_ToBool(get_interface<PPB_View_1_0>()->IsFullscreen( 58 pp_resource())); 59 } 60 return false; 61} 62 63bool View::IsVisible() const { 64 if (has_interface<PPB_View_1_2>()) 65 return PP_ToBool(get_interface<PPB_View_1_2>()->IsVisible(pp_resource())); 66 else if (has_interface<PPB_View_1_1>()) 67 return PP_ToBool(get_interface<PPB_View_1_1>()->IsVisible(pp_resource())); 68 else if (has_interface<PPB_View_1_0>()) 69 return PP_ToBool(get_interface<PPB_View_1_0>()->IsVisible(pp_resource())); 70 return false; 71} 72 73bool View::IsPageVisible() const { 74 if (has_interface<PPB_View_1_2>()) { 75 return PP_ToBool(get_interface<PPB_View_1_2>()->IsPageVisible( 76 pp_resource())); 77 } else if (has_interface<PPB_View_1_1>()) { 78 return PP_ToBool(get_interface<PPB_View_1_1>()->IsPageVisible( 79 pp_resource())); 80 } else if (has_interface<PPB_View_1_0>()) { 81 return PP_ToBool(get_interface<PPB_View_1_0>()->IsPageVisible( 82 pp_resource())); 83 } 84 return true; 85} 86 87Rect View::GetClipRect() const { 88 PP_Rect out; 89 if (has_interface<PPB_View_1_2>()) { 90 if (PP_ToBool(get_interface<PPB_View_1_2>()->GetClipRect(pp_resource(), 91 &out))) 92 return Rect(out); 93 } else if (has_interface<PPB_View_1_1>()) { 94 if (PP_ToBool(get_interface<PPB_View_1_1>()->GetClipRect(pp_resource(), 95 &out))) 96 return Rect(out); 97 } else if (has_interface<PPB_View_1_0>()) { 98 if (PP_ToBool(get_interface<PPB_View_1_0>()->GetClipRect(pp_resource(), 99 &out))) 100 return Rect(out); 101 } 102 return Rect(); 103} 104 105float View::GetDeviceScale() const { 106 if (has_interface<PPB_View_1_2>()) 107 return get_interface<PPB_View_1_2>()->GetDeviceScale(pp_resource()); 108 else if (has_interface<PPB_View_1_1>()) 109 return get_interface<PPB_View_1_1>()->GetDeviceScale(pp_resource()); 110 return 1.0f; 111} 112 113float View::GetCSSScale() const { 114 if (has_interface<PPB_View_1_2>()) 115 return get_interface<PPB_View_1_2>()->GetCSSScale(pp_resource()); 116 else if (has_interface<PPB_View_1_1>()) 117 return get_interface<PPB_View_1_1>()->GetCSSScale(pp_resource()); 118 return 1.0f; 119} 120 121Point View::GetScrollOffset() const { 122 PP_Point out; 123 if (has_interface<PPB_View_1_2>()) { 124 if (PP_ToBool(get_interface<PPB_View_1_2>()->GetScrollOffset(pp_resource(), 125 &out))) { 126 return Point(out); 127 } 128 } 129 return Point(); 130} 131 132} // namespace pp 133