GUI parts for DISCO-F746NG. GuiBase, Button, ButtonGroup, Label, BlinkLabel, NumericLabel, SeekBar, SeekbarGroup

Dependents:   F746_SD_GraphicEqualizer_ren0620

Fork of F746_GUI by 不韋 呂

Label.cpp

Committer:
MikamiUitOpen
Date:
2016-04-24
Revision:
9:c379410bda15
Parent:
4:cbf7ed9092a3

File content as of revision 9:c379410bda15:

//-----------------------------------------------------------
//  Label class
//
//  2016/04/24, Copyright (c) 2016 MIKAMI, Naoki
//-----------------------------------------------------------

#include "Label.hpp"

namespace Mikami
{
    // Constructor
    Label::Label(uint16_t x, uint16_t y,
                 const string str, TextAlignMode mode, sFONT &fonts,
                 uint32_t textColor, uint32_t backColor)
        : GuiBase(x, y, fonts, textColor, backColor),
          MODE_(mode), STR_(str)
    {
        length_ = str.length();
        lcd_.SetBackColor(backColor);
        lcd_.SetTextColor(textColor);
        lcd_.SetFont(&fonts);
        DrawString(PosX(x), y, str);
    }

    void Label::Draw(const string str, uint32_t textColor)
    {
        // Erase previously-drawn string
        lcd_.SetTextColor(BACK_COLOR_);
        length_ = (length_ > str.length()) ? length_ : str.length();
        lcd_.FillRect(PosX(X_), Y_, FONTS_->Width*length_+1, FONTS_->Height);

        // Draw new string
        length_ = str.length();
        lcd_.SetFont(FONTS_);
        lcd_.SetTextColor(textColor);
        DrawString(PosX(X_), Y_, str);
    }

    uint16_t Label::PosX(uint16_t x)
    {
        if (MODE_ == LEFT) return x;
        else
        {
            if (MODE_ == CENTER)
                return x - length_*FONTS_->Width/2;
            else
                return x - length_*FONTS_->Width;
        }
    }
}