• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2010 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/dev/widget_dev.h"
6 
7 #include "ppapi/c/dev/ppb_widget_dev.h"
8 #include "ppapi/cpp/image_data.h"
9 #include "ppapi/cpp/input_event.h"
10 #include "ppapi/cpp/instance.h"
11 #include "ppapi/cpp/module.h"
12 #include "ppapi/cpp/rect.h"
13 #include "ppapi/cpp/module_impl.h"
14 
15 namespace pp {
16 
17 namespace {
18 
interface_name()19 template <> const char* interface_name<PPB_Widget_Dev_0_3>() {
20   return PPB_WIDGET_DEV_INTERFACE_0_3;
21 }
22 
interface_name()23 template <> const char* interface_name<PPB_Widget_Dev_0_4>() {
24   return PPB_WIDGET_DEV_INTERFACE_0_4;
25 }
26 
27 }  // namespace
28 
Widget_Dev(PP_Resource resource)29 Widget_Dev::Widget_Dev(PP_Resource resource) : Resource(resource) {
30 }
31 
Widget_Dev(const Widget_Dev & other)32 Widget_Dev::Widget_Dev(const Widget_Dev& other) : Resource(other) {
33 }
34 
Paint(const Rect & rect,ImageData * image)35 bool Widget_Dev::Paint(const Rect& rect, ImageData* image) {
36   if (has_interface<PPB_Widget_Dev_0_4>()) {
37     return PP_ToBool(get_interface<PPB_Widget_Dev_0_4>()->Paint(
38         pp_resource(), &rect.pp_rect(), image->pp_resource()));
39   } else if (has_interface<PPB_Widget_Dev_0_3>()) {
40     return PP_ToBool(get_interface<PPB_Widget_Dev_0_3>()->Paint(
41         pp_resource(), &rect.pp_rect(), image->pp_resource()));
42   }
43   return false;
44 }
45 
HandleEvent(const InputEvent & event)46 bool Widget_Dev::HandleEvent(const InputEvent& event) {
47   if (has_interface<PPB_Widget_Dev_0_4>()) {
48     return PP_ToBool(get_interface<PPB_Widget_Dev_0_4>()->HandleEvent(
49         pp_resource(), event.pp_resource()));
50   } else if (has_interface<PPB_Widget_Dev_0_3>()) {
51     return PP_ToBool(get_interface<PPB_Widget_Dev_0_3>()->HandleEvent(
52         pp_resource(), event.pp_resource()));
53   }
54   return false;
55 }
56 
GetLocation(Rect * location)57 bool Widget_Dev::GetLocation(Rect* location) {
58   if (has_interface<PPB_Widget_Dev_0_4>()) {
59     return PP_ToBool(get_interface<PPB_Widget_Dev_0_4>()->GetLocation(
60         pp_resource(), &location->pp_rect()));
61   } else if (has_interface<PPB_Widget_Dev_0_3>()) {
62     return PP_ToBool(get_interface<PPB_Widget_Dev_0_3>()->GetLocation(
63         pp_resource(), &location->pp_rect()));
64   }
65   return false;
66 }
67 
SetLocation(const Rect & location)68 void Widget_Dev::SetLocation(const Rect& location) {
69   if (has_interface<PPB_Widget_Dev_0_4>()) {
70     get_interface<PPB_Widget_Dev_0_4>()->SetLocation(pp_resource(),
71                                                      &location.pp_rect());
72   } else if (has_interface<PPB_Widget_Dev_0_3>()) {
73     get_interface<PPB_Widget_Dev_0_3>()->SetLocation(pp_resource(),
74                                                      &location.pp_rect());
75   }
76 }
77 
SetScale(float scale)78 void Widget_Dev::SetScale(float scale) {
79   if (has_interface<PPB_Widget_Dev_0_4>())
80     get_interface<PPB_Widget_Dev_0_4>()->SetScale(pp_resource(), scale);
81 }
82 
83 }  // namespace pp
84