Foundation classes for a basic GUI implementing simple widgets and events
Dependents: TouchScreenGUIDemo
Diff: Widgets/BitmapWidget.cpp
- Revision:
- 12:63db16fea709
- Parent:
- 9:616a9686d5db
- Child:
- 14:e6515b19f5a0
--- a/Widgets/BitmapWidget.cpp Fri Apr 22 16:12:42 2016 +0000 +++ b/Widgets/BitmapWidget.cpp Sun May 08 14:42:08 2016 +0000 @@ -1,16 +1,17 @@ #include "BitmapWidget.h" -BitmapWidget::BitmapWidget(GUI* gui) : Widget(gui), _monochrome(false) +BitmapWidget::BitmapWidget(GraphicsContext *context) : Widget(context), _monochrome(false) { } -BitmapWidget::BitmapWidget(GUI* gui, bool monochrome) : Widget(gui), _monochrome(monochrome) +BitmapWidget::BitmapWidget(GraphicsContext *context, bool monochrome) : Widget(context), _monochrome(monochrome) { } void BitmapWidget::setMonochrome(bool enabled) { _monochrome = enabled; + dirty(); } bool BitmapWidget::isMonochrome() @@ -19,24 +20,23 @@ } -void BitmapWidget::setBitmap(unsigned char* bitmap) +void BitmapWidget::setBitmap(unsigned char* bitmap, int width, int height) { _bitmap = bitmap; + // Adjust overall size so that the inner window fits the bitmap + // Really we should just clip, but that's too hard for now + setSize(((_padding + _borderWidth) * 2) + width, ((_padding + _borderWidth) * 2) + height); + dirty(); } void BitmapWidget::_draw() { - - _gui->display()->setForeground(_fg); - _gui->display()->setBackground(_bg); + display()->setForeground(_fg); + display()->setBackground(_bg); if(_monochrome) { - _gui->display()->Bitmap_FG_BG(_x, _y, _width, _height, _bitmap); + display()->Bitmap_FG_BG(_inner.x, _inner.y, _inner.width, _inner.height, _bitmap); } else { - _gui->display()->Bitmap(_x, _y, _width, _height, _bitmap); + display()->Bitmap(_inner.x, _inner.y, _inner.width, _inner.height, _bitmap); } -} - -void BitmapWidget::_clear() { - _gui->display()->fillrect(_x, _y, _x+_width, _y+_height, _gui->display()->getBackground()); } \ No newline at end of file