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/thunk/thunk.h"
6 #include "ppapi/thunk/enter.h"
7 #include "ppapi/thunk/ppb_scrollbar_api.h"
8 #include "ppapi/thunk/resource_creation_api.h"
9
10 namespace ppapi {
11 namespace thunk {
12
13 typedef EnterResource<PPB_Scrollbar_API> EnterScrollbar;
14
15 namespace {
16
Create(PP_Instance instance,PP_Bool vertical)17 PP_Resource Create(PP_Instance instance, PP_Bool vertical) {
18 EnterResourceCreation enter(instance);
19 if (enter.failed())
20 return 0;
21 return enter.functions()->CreateScrollbar(instance, vertical);
22 }
23
IsScrollbar(PP_Resource resource)24 PP_Bool IsScrollbar(PP_Resource resource) {
25 EnterScrollbar enter(resource, false);
26 return PP_FromBool(enter.succeeded());
27 }
28
GetThickness(PP_Resource scrollbar)29 uint32_t GetThickness(PP_Resource scrollbar) {
30 EnterScrollbar enter(scrollbar, true);
31 if (enter.failed())
32 return 0;
33 return enter.object()->GetThickness();
34 }
35
IsOverlay(PP_Resource scrollbar)36 PP_Bool IsOverlay(PP_Resource scrollbar) {
37 EnterScrollbar enter(scrollbar, true);
38 if (enter.failed())
39 return PP_FALSE;
40 return PP_FromBool(enter.object()->IsOverlay());
41 }
42
GetValue(PP_Resource scrollbar)43 uint32_t GetValue(PP_Resource scrollbar) {
44 EnterScrollbar enter(scrollbar, true);
45 if (enter.failed())
46 return 0;
47 return enter.object()->GetValue();
48 }
49
SetValue(PP_Resource scrollbar,uint32_t value)50 void SetValue(PP_Resource scrollbar, uint32_t value) {
51 EnterScrollbar enter(scrollbar, true);
52 if (enter.succeeded())
53 enter.object()->SetValue(value);
54 }
55
SetDocumentSize(PP_Resource scrollbar,uint32_t size)56 void SetDocumentSize(PP_Resource scrollbar, uint32_t size) {
57 EnterScrollbar enter(scrollbar, true);
58 if (enter.succeeded())
59 enter.object()->SetDocumentSize(size);
60 }
61
SetTickMarks(PP_Resource scrollbar,const PP_Rect * tick_marks,uint32_t count)62 void SetTickMarks(PP_Resource scrollbar,
63 const PP_Rect* tick_marks,
64 uint32_t count) {
65 EnterScrollbar enter(scrollbar, true);
66 if (enter.succeeded())
67 enter.object()->SetTickMarks(tick_marks, count);
68 }
69
ScrollBy(PP_Resource scrollbar,PP_ScrollBy_Dev unit,int32_t multiplier)70 void ScrollBy(PP_Resource scrollbar, PP_ScrollBy_Dev unit, int32_t multiplier) {
71 EnterScrollbar enter(scrollbar, true);
72 if (enter.succeeded())
73 enter.object()->ScrollBy(unit, multiplier);
74 }
75
76 const PPB_Scrollbar_Dev g_ppb_scrollbar_thunk = {
77 &Create,
78 &IsScrollbar,
79 &GetThickness,
80 &IsOverlay,
81 &GetValue,
82 &SetValue,
83 &SetDocumentSize,
84 &SetTickMarks,
85 &ScrollBy
86 };
87
88 } // namespace
89
GetPPB_Scrollbar_Dev_0_5_Thunk()90 const PPB_Scrollbar_Dev_0_5* GetPPB_Scrollbar_Dev_0_5_Thunk() {
91 return &g_ppb_scrollbar_thunk;
92 }
93
94 } // namespace thunk
95 } // namespace ppapi
96