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.
5 #include "ppapi/shared_impl/ppb_view_shared.h"
9 bool IsRectNonempty(const PP_Rect
& rect
) {
10 return rect
.size
.width
> 0 && rect
.size
.height
> 0;
17 ViewData::ViewData() {
19 memset(this, 0, sizeof(ViewData
));
25 ViewData::~ViewData() {}
27 bool ViewData::Equals(const ViewData
& other
) const {
28 return rect
.point
.x
== other
.rect
.point
.x
&&
29 rect
.point
.y
== other
.rect
.point
.y
&&
30 rect
.size
.width
== other
.rect
.size
.width
&&
31 rect
.size
.height
== other
.rect
.size
.height
&&
32 is_fullscreen
== other
.is_fullscreen
&&
33 is_page_visible
== other
.is_page_visible
&&
34 clip_rect
.point
.x
== other
.clip_rect
.point
.x
&&
35 clip_rect
.point
.y
== other
.clip_rect
.point
.y
&&
36 clip_rect
.size
.width
== other
.clip_rect
.size
.width
&&
37 clip_rect
.size
.height
== other
.clip_rect
.size
.height
&&
38 device_scale
== other
.device_scale
&& css_scale
== other
.css_scale
&&
39 scroll_offset
.x
== other
.scroll_offset
.x
&&
40 scroll_offset
.y
== other
.scroll_offset
.y
;
43 PPB_View_Shared::PPB_View_Shared(ResourceObjectType type
,
46 : Resource(type
, instance
), data_(data
) {}
48 PPB_View_Shared::~PPB_View_Shared() {}
50 thunk::PPB_View_API
* PPB_View_Shared::AsPPB_View_API() { return this; }
52 const ViewData
& PPB_View_Shared::GetData() const { return data_
; }
54 PP_Bool
PPB_View_Shared::GetRect(PP_Rect
* viewport
) const {
57 *viewport
= data_
.rect
;
61 PP_Bool
PPB_View_Shared::IsFullscreen() const {
62 return PP_FromBool(data_
.is_fullscreen
);
65 PP_Bool
PPB_View_Shared::IsVisible() const {
66 return PP_FromBool(data_
.is_page_visible
&& IsRectNonempty(data_
.clip_rect
));
69 PP_Bool
PPB_View_Shared::IsPageVisible() const {
70 return PP_FromBool(data_
.is_page_visible
);
73 PP_Bool
PPB_View_Shared::GetClipRect(PP_Rect
* clip
) const {
76 *clip
= data_
.clip_rect
;
80 float PPB_View_Shared::GetDeviceScale() const { return data_
.device_scale
; }
82 float PPB_View_Shared::GetCSSScale() const { return data_
.css_scale
; }
84 PP_Bool
PPB_View_Shared::GetScrollOffset(PP_Point
* scroll_offset
) const {
87 *scroll_offset
= data_
.scroll_offset
;