- add sources.
[platform/framework/web/crosswalk.git] / src / ppapi / cpp / view.cc
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
10 namespace pp {
11
12 namespace {
13
14 template <> const char* interface_name<PPB_View_1_0>() {
15   return PPB_VIEW_INTERFACE_1_0;
16 }
17
18 template <> const char* interface_name<PPB_View_1_1>() {
19   return PPB_VIEW_INTERFACE_1_1;
20 }
21
22 }  // namespace
23
24 View::View() : Resource() {
25 }
26
27 View::View(PP_Resource view_resource) : Resource(view_resource) {
28 }
29
30 Rect View::GetRect() const {
31   PP_Rect out;
32   if (has_interface<PPB_View_1_1>()) {
33     if (PP_ToBool(get_interface<PPB_View_1_1>()->GetRect(pp_resource(), &out)))
34       return Rect(out);
35   } else if (has_interface<PPB_View_1_0>()) {
36     if (PP_ToBool(get_interface<PPB_View_1_0>()->GetRect(pp_resource(), &out)))
37       return Rect(out);
38   }
39   return Rect();
40 }
41
42 bool View::IsFullscreen() const {
43   if (has_interface<PPB_View_1_1>()) {
44     return PP_ToBool(get_interface<PPB_View_1_1>()->IsFullscreen(
45         pp_resource()));
46   } else if (has_interface<PPB_View_1_0>()) {
47     return PP_ToBool(get_interface<PPB_View_1_0>()->IsFullscreen(
48         pp_resource()));
49   }
50   return false;
51 }
52
53 bool View::IsVisible() const {
54   if (has_interface<PPB_View_1_1>())
55     return PP_ToBool(get_interface<PPB_View_1_1>()->IsVisible(pp_resource()));
56   else if (has_interface<PPB_View_1_0>())
57     return PP_ToBool(get_interface<PPB_View_1_0>()->IsVisible(pp_resource()));
58   return false;
59 }
60
61 bool View::IsPageVisible() const {
62   if (has_interface<PPB_View_1_1>()) {
63     return PP_ToBool(get_interface<PPB_View_1_1>()->IsPageVisible(
64         pp_resource()));
65   } else if (has_interface<PPB_View_1_0>()) {
66     return PP_ToBool(get_interface<PPB_View_1_0>()->IsPageVisible(
67         pp_resource()));
68   }
69   return true;
70 }
71
72 Rect View::GetClipRect() const {
73   PP_Rect out;
74   if (has_interface<PPB_View_1_1>()) {
75     if (PP_ToBool(get_interface<PPB_View_1_1>()->GetClipRect(pp_resource(),
76                                                              &out)))
77       return Rect(out);
78   } else if (has_interface<PPB_View_1_0>()) {
79     if (PP_ToBool(get_interface<PPB_View_1_0>()->GetClipRect(pp_resource(),
80                                                              &out)))
81       return Rect(out);
82   }
83   return Rect();
84 }
85
86 float View::GetDeviceScale() const {
87   if (has_interface<PPB_View_1_1>())
88     return get_interface<PPB_View_1_1>()->GetDeviceScale(pp_resource());
89   return 1.0f;
90 }
91
92 float View::GetCSSScale() const {
93   if (has_interface<PPB_View_1_1>())
94     return get_interface<PPB_View_1_1>()->GetCSSScale(pp_resource());
95   return 1.0f;
96 }
97
98 }  // namespace pp