Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: TouchScreenGUIDemo
Font/UGFont/UGFont.cpp@18:d849f3ada858, 2016-05-28 (annotated)
- 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?
User | Revision | Line number | New 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 | } |