Home | History | Annotate | Download | only in thunk
      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