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
6/* From dev/ppb_scrollbar_dev.idl modified Wed Oct  5 14:06:02 2011. */
7
8#ifndef PPAPI_C_DEV_PPB_SCROLLBAR_DEV_H_
9#define PPAPI_C_DEV_PPB_SCROLLBAR_DEV_H_
10
11#include "ppapi/c/pp_bool.h"
12#include "ppapi/c/pp_instance.h"
13#include "ppapi/c/pp_macros.h"
14#include "ppapi/c/pp_point.h"
15#include "ppapi/c/pp_rect.h"
16#include "ppapi/c/pp_resource.h"
17#include "ppapi/c/pp_size.h"
18#include "ppapi/c/pp_stdint.h"
19
20#define PPB_SCROLLBAR_DEV_INTERFACE_0_5 "PPB_Scrollbar(Dev);0.5"
21#define PPB_SCROLLBAR_DEV_INTERFACE PPB_SCROLLBAR_DEV_INTERFACE_0_5
22
23/**
24 * @file
25 * This file defines the <code>PPB_Buffer_Dev</code> interface.
26 */
27
28
29/**
30 * @addtogroup Enums
31 * @{
32 */
33typedef enum {
34  PP_SCROLLBY_PIXEL = 0,
35  PP_SCROLLBY_LINE = 1,
36  PP_SCROLLBY_PAGE = 2,
37  PP_SCROLLBY_DOCUMENT = 3
38} PP_ScrollBy_Dev;
39PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_ScrollBy_Dev, 4);
40/**
41 * @}
42 */
43
44/**
45 * @addtogroup Interfaces
46 * @{
47 */
48/**
49 * The interface for a scrollbar.  A scrollbar is a widget, so the functions
50 * in PPB_Widget can also be used with scrollbar objects.
51 */
52struct PPB_Scrollbar_Dev_0_5 {
53  /**
54   * Create a new scrollbar.  Returns 0 if the instance is invalid.
55   */
56  PP_Resource (*Create)(PP_Instance instance, PP_Bool vertical);
57  /**
58   * Returns PP_TRUE if the given resource is a Scrollbar. Returns PP_FALSE if
59   * the resource is invalid or some type other than a scrollbar.
60   */
61  PP_Bool (*IsScrollbar)(PP_Resource resource);
62  /**
63   * Gets the thickness of a scrollbar.
64   */
65  uint32_t (*GetThickness)(PP_Resource resource);
66  /**
67   * Returns PP_TRUE if the system scrollbar style is an overlap scrollbar.
68   */
69  PP_Bool (*IsOverlay)(PP_Resource scrollbar);
70  /**
71   * Gets the value of the scrollbar.
72   */
73  uint32_t (*GetValue)(PP_Resource scrollbar);
74  /**
75   * Sets the value of the scrollbar.
76   */
77  void (*SetValue)(PP_Resource scrollbar, uint32_t value);
78  /**
79   * Set the document size (i.e. total length of the region that's being
80   * scrolled).
81   */
82  void (*SetDocumentSize)(PP_Resource scrollbar, uint32_t size);
83  /**
84   * Updates the tickmarks.  Only valid for vertical scrollbars.  "tick_marks"
85   * contains "count" PP_Rect objects.
86   */
87  void (*SetTickMarks)(PP_Resource scrollbar,
88                       const struct PP_Rect tick_marks[],
89                       uint32_t count);
90  /**
91   * Scroll by "multiplier" pixels/lines/pages units.  Positive values are
92   * forward and negative are backward.  If "unit" is document then any positive
93   * value goes to the end while any negative value goes to the beginning.
94   */
95  void (*ScrollBy)(PP_Resource scrollbar,
96                   PP_ScrollBy_Dev unit,
97                   int32_t multiplier);
98};
99
100typedef struct PPB_Scrollbar_Dev_0_5 PPB_Scrollbar_Dev;
101/**
102 * @}
103 */
104
105#endif  /* PPAPI_C_DEV_PPB_SCROLLBAR_DEV_H_ */
106
107