Duncan McIntyre / SimpleGUI

Dependents:   TouchScreenGUIDemo

Committer:
duncanFrance
Date:
Sat May 28 14:50:14 2016 +0000
Revision:
18:d849f3ada858
Parent:
8:a460cabc85ac
Moved the event queue into the EventDispatcher; Improved event handling across Window/Widget

Who changed what in which revision?

UserRevisionLine numberNew contents of line
duncanFrance 8:a460cabc85ac 1 #include "UGFont.h"
duncanFrance 8:a460cabc85ac 2
duncanFrance 8:a460cabc85ac 3 UGFont::UGFont(uint8_t* font, const uint8_t firstAsciiCode, const uint8_t lastAsciiCode, const bool proportional)
duncanFrance 8:a460cabc85ac 4 : Font(), _font(&font[UNIGRAPHIC_FONT_DATA_OFFSET]), _firstAscii(firstAsciiCode), _lastAscii(lastAsciiCode), _proportional(proportional)
duncanFrance 8:a460cabc85ac 5 {
duncanFrance 8:a460cabc85ac 6 // read font parameter from start of array in format understood by UniGraphics.
duncanFrance 8:a460cabc85ac 7 // font[0] and font[3] are unused.
duncanFrance 8:a460cabc85ac 8 // Data starts at font[4]
duncanFrance 8:a460cabc85ac 9 // Data is laid out in column-order
duncanFrance 8:a460cabc85ac 10 _width = font[1];
duncanFrance 8:a460cabc85ac 11 _height = font[2];
duncanFrance 8:a460cabc85ac 12 _bytesPerCol = (_height + 7) >> 3; // bytes per column
duncanFrance 8:a460cabc85ac 13 _bytesPerGlyph = 1 + (_width * _bytesPerCol); // 1 byte for the width + actual data
duncanFrance 8:a460cabc85ac 14 }
duncanFrance 8:a460cabc85ac 15
duncanFrance 8:a460cabc85ac 16 uint8_t UGFont::firstAscii()
duncanFrance 8:a460cabc85ac 17 {
duncanFrance 8:a460cabc85ac 18 return _firstAscii;
duncanFrance 8:a460cabc85ac 19 }
duncanFrance 8:a460cabc85ac 20
duncanFrance 8:a460cabc85ac 21 uint8_t UGFont::lastAscii()
duncanFrance 8:a460cabc85ac 22 {
duncanFrance 8:a460cabc85ac 23 return _lastAscii;
duncanFrance 8:a460cabc85ac 24 }
duncanFrance 8:a460cabc85ac 25
duncanFrance 8:a460cabc85ac 26 uint8_t UGFont::widthOf(char c)
duncanFrance 8:a460cabc85ac 27 {
duncanFrance 8:a460cabc85ac 28
duncanFrance 8:a460cabc85ac 29 if(c < _firstAscii || c > _lastAscii) {
duncanFrance 8:a460cabc85ac 30 return 0;
duncanFrance 8:a460cabc85ac 31 }
duncanFrance 8:a460cabc85ac 32
duncanFrance 8:a460cabc85ac 33 return _font[((c - _firstAscii) * _bytesPerGlyph)];
duncanFrance 8:a460cabc85ac 34 }
duncanFrance 8:a460cabc85ac 35
duncanFrance 8:a460cabc85ac 36 uint8_t UGFont::zoomedWidthOf(char c)
duncanFrance 8:a460cabc85ac 37 {
duncanFrance 8:a460cabc85ac 38
duncanFrance 8:a460cabc85ac 39 if(!_proportional) {
duncanFrance 8:a460cabc85ac 40 return _width * _zoomX;
duncanFrance 8:a460cabc85ac 41 }
duncanFrance 8:a460cabc85ac 42
duncanFrance 8:a460cabc85ac 43 return widthOf(c) * _zoomX;
duncanFrance 8:a460cabc85ac 44 }
duncanFrance 8:a460cabc85ac 45
duncanFrance 8:a460cabc85ac 46 uint8_t UGFont::height()
duncanFrance 8:a460cabc85ac 47 {
duncanFrance 8:a460cabc85ac 48 return _height;
duncanFrance 8:a460cabc85ac 49 }
duncanFrance 8:a460cabc85ac 50
duncanFrance 8:a460cabc85ac 51 uint8_t UGFont::zoomedHeight()
duncanFrance 8:a460cabc85ac 52 {
duncanFrance 8:a460cabc85ac 53 return _zoomY * _height;
duncanFrance 8:a460cabc85ac 54 }
duncanFrance 8:a460cabc85ac 55
duncanFrance 8:a460cabc85ac 56 bool UGFont::isProportional() {
duncanFrance 8:a460cabc85ac 57 return _proportional;
duncanFrance 8:a460cabc85ac 58 }
duncanFrance 8:a460cabc85ac 59
duncanFrance 8:a460cabc85ac 60 uint8_t* UGFont::getGlyphData(char c)
duncanFrance 8:a460cabc85ac 61 {
duncanFrance 8:a460cabc85ac 62 if(c < _firstAscii || c > _lastAscii) {
duncanFrance 8:a460cabc85ac 63 return NULL;
duncanFrance 8:a460cabc85ac 64 }
duncanFrance 8:a460cabc85ac 65 return &_font[((c - _firstAscii) * _bytesPerGlyph) + 1];
duncanFrance 8:a460cabc85ac 66 }
duncanFrance 8:a460cabc85ac 67
duncanFrance 8:a460cabc85ac 68 uint8_t UGFont::bytesPerCol()
duncanFrance 8:a460cabc85ac 69 {
duncanFrance 8:a460cabc85ac 70 return _bytesPerCol;
duncanFrance 8:a460cabc85ac 71 }
duncanFrance 8:a460cabc85ac 72
duncanFrance 8:a460cabc85ac 73 uint8_t UGFont::bytesPerGlyph()
duncanFrance 8:a460cabc85ac 74 {
duncanFrance 8:a460cabc85ac 75 return _bytesPerGlyph;
duncanFrance 8:a460cabc85ac 76 }