Skip to content

Instantly share code, notes, and snippets.

@matthewtole
Created January 18, 2014 22:44
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save matthewtole/8497835 to your computer and use it in GitHub Desktop.
Save matthewtole/8497835 to your computer and use it in GitHub Desktop.
#include <pebble.h>
#include "scroll-text-layer.h"
#define MAX_HEIGHT 2000
#define PADDING_X 4
#define PADDING_Y 4
struct ScrollTextLayer {
TextLayer* text_layer;
ScrollLayer* scroll_layer;
};
ScrollTextLayer* scroll_text_layer_create(GRect rect) {
ScrollTextLayer* stl = malloc(sizeof(ScrollTextLayer));
stl->scroll_layer = scroll_layer_create(rect);
GRect max_text_bounds = GRect(PADDING_X, PADDING_Y, rect.size.w - (PADDING_X * 2), MAX_HEIGHT);
stl->text_layer = text_layer_create(max_text_bounds);
scroll_layer_add_child(stl->scroll_layer, text_layer_get_layer(stl->text_layer));
return stl;
}
void scroll_text_layer_destroy(ScrollTextLayer* layer) {
text_layer_destroy(scroll_text_layer_get_text_layer(layer));
scroll_layer_destroy(scroll_text_layer_get_scroll_layer(layer));
free(layer);
}
void scroll_text_layer_add_to_window(ScrollTextLayer* layer, Window* window) {
scroll_layer_set_click_config_onto_window(layer->scroll_layer, window);
layer_add_child(window_get_root_layer(window), scroll_layer_get_layer(layer->scroll_layer));
}
void scroll_text_layer_set_text(ScrollTextLayer* layer, char* text) {
text_layer_set_text(layer->text_layer, text);
GSize max_size = text_layer_get_content_size(layer->text_layer);
text_layer_set_size(layer->text_layer, max_size);
GRect bounds = layer_get_bounds(scroll_layer_get_layer(layer->scroll_layer));
scroll_layer_set_content_size(layer->scroll_layer, GSize(bounds.size.w, max_size.h + (PADDING_Y * 3)));
}
TextLayer* scroll_text_layer_get_text_layer(ScrollTextLayer* layer) {
return layer->text_layer;
}
ScrollLayer* scroll_text_layer_get_scroll_layer(ScrollTextLayer* layer) {
return layer->scroll_layer;
}
#include <pebble.h>
struct ScrollTextLayer;
typedef struct ScrollTextLayer ScrollTextLayer;
ScrollTextLayer* scroll_text_layer_create(GRect rect);
void scroll_text_layer_destroy(ScrollTextLayer* layer);
TextLayer* scroll_text_layer_get_text_layer(ScrollTextLayer* layer);
ScrollLayer* scroll_text_layer_get_scroll_layer(ScrollTextLayer* layer);
void scroll_text_layer_add_to_window(ScrollTextLayer* layer, Window* window);
void scroll_text_layer_set_text(ScrollTextLayer* layer, char* text);
#define scroll_text_layer_set_text_color(layer, color) text_layer_set_text_color(scroll_text_layer_get_text_layer(layer), color)
#define scroll_text_layer_set_background_color(layer, color) text_layer_set_background_color(scroll_text_layer_get_text_layer(layer), color)
#define scroll_text_layer_set_font(layer, font) text_layer_set_font(scroll_text_layer_get_text_layer(layer), font)
#define scroll_text_layer_set_text_alignment(layer, alignment) text_layer_set_text_alignment(scroll_text_layer_get_text_layer(layer), alignment)
#define scroll_text_layer_get_layer(layer) text_layer_get_layer(scroll_text_layer_get_text_layer(layer))
#define scroll_text_layer_set_system_font(layer, font) scroll_text_layer_get_text_layer(layer, fonts_get_system_font(font))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment