Foundation classes for a basic GUI implementing simple widgets and events

Dependents:   TouchScreenGUIDemo

Committer:
duncanFrance
Date:
Sat May 21 14:40:09 2016 +0000
Revision:
13:6714534e7974
Parent:
12:63db16fea709
Child:
16:e9a771ecfdbe
Cleaned up SpinnerWidget; Started on SpinnerDialog - will extract Dialog later

Who changed what in which revision?

UserRevisionLine numberNew contents of line
duncanFrance 0:0a590815d51c 1 #include "TextWidget.h"
duncanFrance 0:0a590815d51c 2
duncanFrance 0:0a590815d51c 3 /**
duncanFrance 0:0a590815d51c 4 * A basic widget implementation which just draws some text.
duncanFrance 0:0a590815d51c 5 * If the text does not fit in the bounding-box it will be clipped
duncanFrance 0:0a590815d51c 6 **/
duncanFrance 12:63db16fea709 7 TextWidget::TextWidget(GraphicsContext *context) :
duncanFrance 12:63db16fea709 8 Widget(context),
duncanFrance 12:63db16fea709 9 _renderer(context->fontRenderer()),
duncanFrance 12:63db16fea709 10 _font(context->defaultFont())
duncanFrance 8:a460cabc85ac 11 {
duncanFrance 8:a460cabc85ac 12 }
duncanFrance 8:a460cabc85ac 13
duncanFrance 12:63db16fea709 14 TextWidget::TextWidget(GraphicsContext *context, FontRenderer* renderer) :
duncanFrance 12:63db16fea709 15 Widget(context),
duncanFrance 8:a460cabc85ac 16 _renderer(renderer),
duncanFrance 12:63db16fea709 17 _font(context->defaultFont())
duncanFrance 8:a460cabc85ac 18 {
duncanFrance 8:a460cabc85ac 19 }
duncanFrance 8:a460cabc85ac 20
duncanFrance 12:63db16fea709 21 TextWidget::TextWidget(GraphicsContext *context, FontRenderer* renderer, Font* font) :
duncanFrance 12:63db16fea709 22 Widget(context),
duncanFrance 8:a460cabc85ac 23 _renderer(renderer),
duncanFrance 8:a460cabc85ac 24 _font(font)
duncanFrance 7:303850a4b30c 25 {
duncanFrance 7:303850a4b30c 26 }
duncanFrance 0:0a590815d51c 27
duncanFrance 12:63db16fea709 28 void TextWidget::setText(char* text)
duncanFrance 1:48796b602c86 29 {
duncanFrance 11:b485561aa112 30 _text = text;
duncanFrance 12:63db16fea709 31 dirty();
duncanFrance 0:0a590815d51c 32 }
duncanFrance 0:0a590815d51c 33
duncanFrance 2:bb9183379488 34 void TextWidget::setFont(Font* font)
duncanFrance 1:48796b602c86 35 {
duncanFrance 2:bb9183379488 36 _font = font;
duncanFrance 12:63db16fea709 37 dirty();
duncanFrance 0:0a590815d51c 38 }
duncanFrance 0:0a590815d51c 39
duncanFrance 3:cb004f59b715 40
duncanFrance 8:a460cabc85ac 41 void TextWidget::_draw()
duncanFrance 3:cb004f59b715 42 {
duncanFrance 12:63db16fea709 43 Widget::_draw();
duncanFrance 12:63db16fea709 44
duncanFrance 13:6714534e7974 45 pc->printf("border (%i,%i) , (%i,%i)\n", _inner.x, _inner.y, _inner.x+_inner.width, _inner.y+_inner.height);
duncanFrance 13:6714534e7974 46
duncanFrance 12:63db16fea709 47 _renderer->window(_inner.x, _inner.y, _inner.width, _inner.height, false);
duncanFrance 7:303850a4b30c 48 _renderer->setForeground(_fg);
duncanFrance 7:303850a4b30c 49 _renderer->setBackground(_bg);
duncanFrance 12:63db16fea709 50 display()->fillrect(_inner.x, _inner.y, _inner.x+_inner.width, _inner.y+_inner.height, _bg);
duncanFrance 8:a460cabc85ac 51
duncanFrance 12:63db16fea709 52 _renderer->puts(_text, display(), _font);
duncanFrance 12:63db16fea709 53 display()->copy_to_lcd();
duncanFrance 8:a460cabc85ac 54 }