Foundation classes for a basic GUI implementing simple widgets and events

Dependents:   TouchScreenGUIDemo

Widgets/TextWidget.cpp

Committer:
duncanFrance
Date:
2016-05-21
Revision:
13:6714534e7974
Parent:
12:63db16fea709
Child:
16:e9a771ecfdbe

File content as of revision 13:6714534e7974:

#include "TextWidget.h"

/**
* A basic widget implementation which just draws some text.
* If the text does not fit in the bounding-box it will be clipped
**/
TextWidget::TextWidget(GraphicsContext *context) :
    Widget(context),
    _renderer(context->fontRenderer()),
    _font(context->defaultFont())
{
}

TextWidget::TextWidget(GraphicsContext *context, FontRenderer* renderer) :
    Widget(context),
    _renderer(renderer),
    _font(context->defaultFont())
{
}

TextWidget::TextWidget(GraphicsContext *context, FontRenderer* renderer, Font* font) :
    Widget(context),
    _renderer(renderer),
    _font(font)
{
}

void TextWidget::setText(char* text)
{
    _text = text;
    dirty();
}

void TextWidget::setFont(Font* font)
{
    _font = font;
    dirty();
}


void TextWidget::_draw()
{
    Widget::_draw();
    
    pc->printf("border (%i,%i) , (%i,%i)\n", _inner.x, _inner.y, _inner.x+_inner.width, _inner.y+_inner.height);
    
    _renderer->window(_inner.x, _inner.y, _inner.width, _inner.height, false);
    _renderer->setForeground(_fg);
    _renderer->setBackground(_bg);
    display()->fillrect(_inner.x, _inner.y, _inner.x+_inner.width, _inner.y+_inner.height, _bg);
   
    _renderer->puts(_text, display(), _font);
    display()->copy_to_lcd();
}