Spectral analysis.

Dependencies:   Array_Matrix BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG

Dependents:   Spectrogram

Fork of F746_GUI by 不韋 呂

Label.cpp

Committer:
mladjo1993
Date:
2017-08-30
Revision:
34:671f9e9174f3
Parent:
33:f8dbcf3fee79

File content as of revision 34:671f9e9174f3:

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

#include "Label.hpp"

namespace etf
{
    // 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;
        }
    }
}