Foundation classes for a basic GUI implementing simple widgets and events. (Fork for custom changes.)
Fork of SimpleGUI by
Font/FontRenderer.h@20:ef07d42ea062, 2016-10-18 (annotated)
- Committer:
- elh
- Date:
- Tue Oct 18 19:43:15 2016 +0000
- Revision:
- 20:ef07d42ea062
- Parent:
- 8:a460cabc85ac
Initialize Textwidgets _text to NULL preventing crash if widget is draw until a text was set.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
duncanFrance | 8:a460cabc85ac | 1 | #ifndef SIMPLEGUI_FONT_RENDERER_H |
duncanFrance | 8:a460cabc85ac | 2 | #define SIMPLEGUI_FONT_RENDERER_H |
duncanFrance | 8:a460cabc85ac | 3 | |
duncanFrance | 8:a460cabc85ac | 4 | #include "Font.h" |
duncanFrance | 8:a460cabc85ac | 5 | #include "GraphicsDisplay.h" |
duncanFrance | 8:a460cabc85ac | 6 | /** |
duncanFrance | 8:a460cabc85ac | 7 | * Abstract base class defining the interface for class which can render fonts to a GraphicsDisplay |
duncanFrance | 8:a460cabc85ac | 8 | * Should probably use some template wizardy to specify the covariant Font type.... |
duncanFrance | 8:a460cabc85ac | 9 | **/ |
duncanFrance | 8:a460cabc85ac | 10 | class FontRenderer { |
duncanFrance | 8:a460cabc85ac | 11 | public: |
duncanFrance | 8:a460cabc85ac | 12 | |
duncanFrance | 8:a460cabc85ac | 13 | FontRenderer() : _foreground(0xffff), _background(0) |
duncanFrance | 8:a460cabc85ac | 14 | |
duncanFrance | 8:a460cabc85ac | 15 | { |
duncanFrance | 8:a460cabc85ac | 16 | window(0,0,0,0,true); |
duncanFrance | 8:a460cabc85ac | 17 | } |
duncanFrance | 8:a460cabc85ac | 18 | // You need to implement this.. |
duncanFrance | 8:a460cabc85ac | 19 | //virtual void setFont(Font* font) =0; |
duncanFrance | 8:a460cabc85ac | 20 | |
duncanFrance | 8:a460cabc85ac | 21 | /** |
duncanFrance | 8:a460cabc85ac | 22 | * Render a single character at the current cursor location, advance the cursor |
duncanFrance | 8:a460cabc85ac | 23 | * Clip/wrap as necessary |
duncanFrance | 8:a460cabc85ac | 24 | **/ |
duncanFrance | 8:a460cabc85ac | 25 | virtual void putc(const char c, GraphicsDisplay* display, Font* font) =0; |
duncanFrance | 8:a460cabc85ac | 26 | /** |
duncanFrance | 8:a460cabc85ac | 27 | * Render a string at the current cursor location, advance the cursor |
duncanFrance | 8:a460cabc85ac | 28 | * Clip/wrap as necessary |
duncanFrance | 8:a460cabc85ac | 29 | **/ |
duncanFrance | 8:a460cabc85ac | 30 | virtual void puts(const char* s, GraphicsDisplay* display, Font* font) =0; |
duncanFrance | 8:a460cabc85ac | 31 | |
duncanFrance | 8:a460cabc85ac | 32 | void setForeground(uint16_t foreground) { |
duncanFrance | 8:a460cabc85ac | 33 | _foreground = foreground; |
duncanFrance | 8:a460cabc85ac | 34 | } |
duncanFrance | 8:a460cabc85ac | 35 | |
duncanFrance | 8:a460cabc85ac | 36 | void setBackground(uint16_t background) { |
duncanFrance | 8:a460cabc85ac | 37 | _background = background; |
duncanFrance | 8:a460cabc85ac | 38 | } |
duncanFrance | 8:a460cabc85ac | 39 | |
duncanFrance | 8:a460cabc85ac | 40 | /** |
duncanFrance | 8:a460cabc85ac | 41 | * Sets the window into which to render. placing the cursor at (x,y) |
duncanFrance | 8:a460cabc85ac | 42 | **/ |
duncanFrance | 8:a460cabc85ac | 43 | void window(int x, int y, int width, int height, bool clip) { |
duncanFrance | 8:a460cabc85ac | 44 | _wx0 = x; |
duncanFrance | 8:a460cabc85ac | 45 | _wy0 = y; |
duncanFrance | 8:a460cabc85ac | 46 | _wx1 = x + width; |
duncanFrance | 8:a460cabc85ac | 47 | _wy1 = y + height; |
duncanFrance | 8:a460cabc85ac | 48 | |
duncanFrance | 8:a460cabc85ac | 49 | if(_wx0 > _wx1) { |
duncanFrance | 8:a460cabc85ac | 50 | int tmp = _wx0; |
duncanFrance | 8:a460cabc85ac | 51 | _wx0 = _wx1; |
duncanFrance | 8:a460cabc85ac | 52 | _wx1 = tmp; |
duncanFrance | 8:a460cabc85ac | 53 | } |
duncanFrance | 8:a460cabc85ac | 54 | |
duncanFrance | 8:a460cabc85ac | 55 | if(_wy0 > _wy1) { |
duncanFrance | 8:a460cabc85ac | 56 | int tmp = _wy0; |
duncanFrance | 8:a460cabc85ac | 57 | _wy0 = _wy1; |
duncanFrance | 8:a460cabc85ac | 58 | _wy1 = tmp; |
duncanFrance | 8:a460cabc85ac | 59 | } |
duncanFrance | 8:a460cabc85ac | 60 | |
duncanFrance | 8:a460cabc85ac | 61 | _cx = _wx0; |
duncanFrance | 8:a460cabc85ac | 62 | _cy = _wy0; |
duncanFrance | 8:a460cabc85ac | 63 | _clip = clip; |
duncanFrance | 8:a460cabc85ac | 64 | } |
duncanFrance | 8:a460cabc85ac | 65 | |
duncanFrance | 8:a460cabc85ac | 66 | protected: |
duncanFrance | 8:a460cabc85ac | 67 | uint16_t _foreground, _background; |
duncanFrance | 8:a460cabc85ac | 68 | int _wx0, _wx1, _wy0, _wy1, _cx, _cy; |
duncanFrance | 8:a460cabc85ac | 69 | bool _clip; |
duncanFrance | 8:a460cabc85ac | 70 | }; |
duncanFrance | 8:a460cabc85ac | 71 | |
duncanFrance | 8:a460cabc85ac | 72 | #endif |