Pebble Foundation Classes  0.2.0
C++ for Pebble
pebble_scroll_layer.hpp
1 #pragma once
2 
3 #include "pebble.hpp"
4 
5 namespace Pebble {
6 
7 class ScrollLayer : public Layer
8 {
9 public:
10  ScrollLayer(GRect frame) : Layer((scroll_layer_ = scroll_layer_create(frame), scroll_layer_get_layer(scroll_layer_))) { }
11 
12  ScrollLayer() : ScrollLayer(GRect(0, 0, 0, 0)) {}
13 
15  virtual ~ScrollLayer() {
16  scroll_layer_destroy(scroll_layer_);
17  }
18 
20  inline operator ::ScrollLayer*() { return scroll_layer_; }
21 
22  inline void AddChild(Layer& child) { scroll_layer_add_child(scroll_layer_, child); }
23 
24  inline GPoint GetContentOffset() const { return scroll_layer_get_content_offset(scroll_layer_); }
25 
26  inline GSize GetContentSize() const { return scroll_layer_get_content_size(scroll_layer_); }
27 
28  inline bool GetShadowHidden() const { return scroll_layer_get_shadow_hidden(scroll_layer_); }
29 
30  inline void SetContentOffset(GPoint offset, bool animated) { scroll_layer_set_content_offset(scroll_layer_, offset, animated); }
31  inline void SetContentOffset(int offset, bool animated) { SetContentOffset(GPoint(0, offset), animated); }
32 
33  inline void SetContentSize(GSize size) { scroll_layer_set_content_size(scroll_layer_, size); }
34  inline void SetContentSize(int height, int width) { SetContentSize(GSize(height, width)); }
35 
36  inline void SetFrame(GRect frame) { scroll_layer_set_frame(scroll_layer_, frame); };
37  inline void SetFrame(int16_t x, int16_t y, int16_t w, int16_t h) { SetFrame(GRect(x, y, w, h)); }
38  inline void SetFrame(GPoint origin, GSize size) { SetFrame(GRect(origin, size)); }
39 
40  inline void SetShadowHidden(bool hidden) { scroll_layer_set_shadow_hidden(scroll_layer_, hidden); }
41 
42  inline void SetClickConfigOntoWindow(Window& owner_window) { scroll_layer_set_click_config_onto_window(scroll_layer_, owner_window); }
43 
44  inline void SetCallbacks(Window& owner_window, ScrollLayerCallbacks callbacks)
45  {
46  scroll_layer_set_context(scroll_layer_, &owner_window);
47  scroll_layer_set_callbacks(scroll_layer_, callbacks);
48  }
49 
50  inline void SetCallbacks(Window& owner_window, ::ClickConfigProvider click_config_provider, ::ScrollLayerCallback content_offset_changed_handler)
51  {
52  SetCallbacks(owner_window, {
53  .click_config_provider = click_config_provider,
54  .content_offset_changed_handler = content_offset_changed_handler
55  });
56  }
57 
58  inline void SetCallbacks(Window& owner_window, ::ScrollLayerCallback content_offset_changed_handler)
59  {
60  SetCallbacks(owner_window, nullptr, content_offset_changed_handler);
61  }
62 
63  inline void SetCallbacks(Window& owner_window, ::ClickConfigProvider click_config_provider)
64  {
65  SetCallbacks(owner_window, click_config_provider, nullptr);
66  }
67 
68 protected:
69  // The layer pointer
70  ::ScrollLayer* scroll_layer_;
71 };
72 
73 
74 // Scroll layer callback handler
75 template<class T, void (T::*Method)(void)>
76 static void pebble_callback_handler(::ScrollLayer* scroll_layer, void* context)
77 {
78  (((T*)context)->*Method)();
79 }
80 
81 }
Pebble::Layer
Definition: pebble_layer.hpp:34
GPoint
Definition: pebble.h:3316
scroll_layer_get_shadow_hidden
bool scroll_layer_get_shadow_hidden(const ScrollLayer *scroll_layer)
Pebble::Layer::Layer
Layer(::Layer *layer)
Wraps an existing TextLayer.
Definition: pebble_layer.hpp:38
scroll_layer_set_callbacks
void scroll_layer_set_callbacks(ScrollLayer *scroll_layer, ScrollLayerCallbacks callbacks)
scroll_layer_add_child
void scroll_layer_add_child(ScrollLayer *scroll_layer, Layer *child)
GSize
Represents a 2-dimensional size.
Definition: pebble.h:3336
Pebble::ScrollLayer::~ScrollLayer
virtual ~ScrollLayer()
Destroys the underlying TextLayer.
Definition: pebble_scroll_layer.hpp:15
scroll_layer_destroy
void scroll_layer_destroy(ScrollLayer *scroll_layer)
Destroys a ScrollLayer previously created by scroll_layer_create.
scroll_layer_set_click_config_onto_window
void scroll_layer_set_click_config_onto_window(ScrollLayer *scroll_layer, struct Window *window)
scroll_layer_set_shadow_hidden
void scroll_layer_set_shadow_hidden(ScrollLayer *scroll_layer, bool hidden)
scroll_layer_get_content_size
GSize scroll_layer_get_content_size(const ScrollLayer *scroll_layer)
ScrollLayerCallback
void(* ScrollLayerCallback)(struct ScrollLayer *scroll_layer, void *context)
Function signature for the .content_offset_changed_handler callback.
Definition: pebble.h:6564
ClickConfigProvider
void(* ClickConfigProvider)(void *context)
Definition: pebble.h:4990
GSize
struct GSize GSize
Represents a 2-dimensional size.
scroll_layer_set_frame
void scroll_layer_set_frame(ScrollLayer *scroll_layer, GRect frame)
scroll_layer_create
ScrollLayer * scroll_layer_create(GRect frame)
GPoint
struct GPoint GPoint
scroll_layer_get_content_offset
GPoint scroll_layer_get_content_offset(ScrollLayer *scroll_layer)
Pebble::GRect
Definition: pebble_graphics_types.hpp:71
scroll_layer_set_content_offset
void scroll_layer_set_content_offset(ScrollLayer *scroll_layer, GPoint offset, bool animated)
scroll_layer_set_context
void scroll_layer_set_context(ScrollLayer *scroll_layer, void *context)
Pebble::ScrollLayer
Definition: pebble_scroll_layer.hpp:7
GRect
struct GRect GRect
scroll_layer_set_content_size
void scroll_layer_set_content_size(ScrollLayer *scroll_layer, GSize size)
scroll_layer_get_layer
Layer * scroll_layer_get_layer(const ScrollLayer *scroll_layer)
ScrollLayerCallbacks
Definition: pebble.h:6569
GRect
Definition: pebble.h:3357