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 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 24 PP_Bool IsScrollbar(PP_Resource resource) { 25 EnterScrollbar enter(resource, false); 26 return PP_FromBool(enter.succeeded()); 27 } 28 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 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 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 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 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 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 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 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