sp
Label.cpp@0:4e245f4bc8ac, 2019-06-07 (annotated)
- Committer:
- phungductung
- Date:
- Fri Jun 07 05:06:42 2019 +0000
- Revision:
- 0:4e245f4bc8ac
spkt
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
phungductung | 0:4e245f4bc8ac | 1 | //----------------------------------------------------------- |
phungductung | 0:4e245f4bc8ac | 2 | // Label class |
phungductung | 0:4e245f4bc8ac | 3 | // |
phungductung | 0:4e245f4bc8ac | 4 | // 2016/04/24, Copyright (c) 2016 MIKAMI, Naoki |
phungductung | 0:4e245f4bc8ac | 5 | //----------------------------------------------------------- |
phungductung | 0:4e245f4bc8ac | 6 | |
phungductung | 0:4e245f4bc8ac | 7 | #include "Label.hpp" |
phungductung | 0:4e245f4bc8ac | 8 | |
phungductung | 0:4e245f4bc8ac | 9 | namespace Mikami |
phungductung | 0:4e245f4bc8ac | 10 | { |
phungductung | 0:4e245f4bc8ac | 11 | // Constructor |
phungductung | 0:4e245f4bc8ac | 12 | Label::Label(uint16_t x, uint16_t y, |
phungductung | 0:4e245f4bc8ac | 13 | const string str, TextAlignMode mode, sFONT &fonts, |
phungductung | 0:4e245f4bc8ac | 14 | uint32_t textColor, uint32_t backColor) |
phungductung | 0:4e245f4bc8ac | 15 | : GuiBase(x, y, fonts, textColor, backColor), |
phungductung | 0:4e245f4bc8ac | 16 | MODE_(mode), STR_(str) |
phungductung | 0:4e245f4bc8ac | 17 | { |
phungductung | 0:4e245f4bc8ac | 18 | length_ = str.length(); |
phungductung | 0:4e245f4bc8ac | 19 | lcd_.SetBackColor(backColor); |
phungductung | 0:4e245f4bc8ac | 20 | lcd_.SetTextColor(textColor); |
phungductung | 0:4e245f4bc8ac | 21 | lcd_.SetFont(&fonts); |
phungductung | 0:4e245f4bc8ac | 22 | DrawString(PosX(x), y, str); |
phungductung | 0:4e245f4bc8ac | 23 | } |
phungductung | 0:4e245f4bc8ac | 24 | |
phungductung | 0:4e245f4bc8ac | 25 | void Label::Draw(const string str, uint32_t textColor) |
phungductung | 0:4e245f4bc8ac | 26 | { |
phungductung | 0:4e245f4bc8ac | 27 | // Erase previously-drawn string |
phungductung | 0:4e245f4bc8ac | 28 | lcd_.SetTextColor(BACK_COLOR_); |
phungductung | 0:4e245f4bc8ac | 29 | length_ = (length_ > str.length()) ? length_ : str.length(); |
phungductung | 0:4e245f4bc8ac | 30 | lcd_.FillRect(PosX(X_), Y_, FONTS_->Width*length_+1, FONTS_->Height); |
phungductung | 0:4e245f4bc8ac | 31 | |
phungductung | 0:4e245f4bc8ac | 32 | // Draw new string |
phungductung | 0:4e245f4bc8ac | 33 | length_ = str.length(); |
phungductung | 0:4e245f4bc8ac | 34 | lcd_.SetFont(FONTS_); |
phungductung | 0:4e245f4bc8ac | 35 | lcd_.SetTextColor(textColor); |
phungductung | 0:4e245f4bc8ac | 36 | DrawString(PosX(X_), Y_, str); |
phungductung | 0:4e245f4bc8ac | 37 | } |
phungductung | 0:4e245f4bc8ac | 38 | |
phungductung | 0:4e245f4bc8ac | 39 | uint16_t Label::PosX(uint16_t x) |
phungductung | 0:4e245f4bc8ac | 40 | { |
phungductung | 0:4e245f4bc8ac | 41 | if (MODE_ == LEFT) return x; |
phungductung | 0:4e245f4bc8ac | 42 | else |
phungductung | 0:4e245f4bc8ac | 43 | { |
phungductung | 0:4e245f4bc8ac | 44 | if (MODE_ == CENTER) |
phungductung | 0:4e245f4bc8ac | 45 | return x - length_*FONTS_->Width/2; |
phungductung | 0:4e245f4bc8ac | 46 | else |
phungductung | 0:4e245f4bc8ac | 47 | return x - length_*FONTS_->Width; |
phungductung | 0:4e245f4bc8ac | 48 | } |
phungductung | 0:4e245f4bc8ac | 49 | } |
phungductung | 0:4e245f4bc8ac | 50 | } |