146 lines
4.4 KiB
C++
146 lines
4.4 KiB
C++
#include "TButton.h"
|
|
|
|
#include "stdio.h"
|
|
#include "stdlib.h"
|
|
#include "string.h"
|
|
|
|
#include "gType.h"
|
|
#include "GraphLow.h"
|
|
|
|
void TButton::Init(int aX, int aY, int aW, int aH, int OwnerX, int OwnerY, u32 aBorderWidth, u32 aBorderColor)
|
|
{
|
|
unsigned short Left,Right,Top,Bottom;
|
|
Bound.SetBySize(aX+OwnerX, aY+OwnerY, aW, aH);
|
|
OwnerLeftTop.x = OwnerX;
|
|
OwnerLeftTop.y = OwnerY;
|
|
Border.Width = aBorderWidth;
|
|
Border.Color = aBorderColor;
|
|
|
|
Left = Bound.Left + 2;
|
|
Right = Bound.Right - 2;
|
|
Top = Bound.Top + 2;
|
|
Bottom = Bound.Bottom - 2;
|
|
|
|
Content.Set(Left,Top,Right,Bottom);
|
|
|
|
Color = clNearWhite;
|
|
TextColor = clNearBlack;
|
|
|
|
SelectedColor = clAqua;
|
|
SelectedTextColor = clNearBlack;
|
|
|
|
DisableColor = clFrmFace;
|
|
DisableTextColor = clSilver;
|
|
|
|
SetCaption("Button xx", 24);
|
|
|
|
Enable = true;
|
|
Selected =0;
|
|
}
|
|
|
|
|
|
void TButton::SetCaption(const char *p, unsigned int aFontSize)
|
|
{
|
|
s16 len, i;
|
|
s16 PixelWidth;
|
|
|
|
len = sizeof(p);
|
|
if(len>30)len = 30;
|
|
Caption.FromStr(p);
|
|
FontSize = aFontSize;
|
|
PixelWidth = GetFontWidth(aFontSize);
|
|
if( (aFontSize==16) || (aFontSize == 24) ) PixelWidth = PixelWidth * len;
|
|
CaptionLeftSpacing = (Bound.Width-PixelWidth) / 2;
|
|
}
|
|
|
|
void TButton::SetColor(unsigned int aClr)
|
|
{
|
|
Color = aClr;
|
|
}
|
|
|
|
void TButton::SetTextColor(unsigned int aClr)
|
|
{
|
|
TextColor = aClr;
|
|
}
|
|
|
|
void TButton::SetCaptionLeftSpacing(u16 spc)
|
|
{
|
|
CaptionLeftSpacing = spc;
|
|
}
|
|
|
|
void TButton::Draw(void)
|
|
{
|
|
VertLineRender(Bound.Left+1, Bound.Top+1, Bound.Height-2, 0xFF808080);
|
|
VertLineRender(Bound.Right-1, Bound.Top+1, Bound.Height-2, 0xFF808080);
|
|
VertLineRender(Bound.Left, Bound.Top, Bound.Height, 0xFF000000);
|
|
VertLineRender(Bound.Right, Bound.Top, Bound.Height, 0xFF404040);
|
|
|
|
HorizLineRender(Bound.Left+1, Bound.Top+1, Bound.Width - 2, 0xFF808080);
|
|
HorizLineRender(Bound.Left+1, Bound.Bottom-1, Bound.Width - 2, 0xFF808080);
|
|
HorizLineRender(Bound.Left, Bound.Top, Bound.Width, 0xFF000000);
|
|
HorizLineRender(Bound.Left, Bound.Bottom, Bound.Width, 0xFF000000);
|
|
|
|
RectFillRender(Content.Left, Content.Top, Content.Right, Content.Bottom, Color);
|
|
TextRender_string24(Content.Left + 1 + CaptionLeftSpacing , Content.Top + 2, TextColor, Caption.Text);
|
|
}
|
|
|
|
void TButton::Draw2(void)
|
|
{
|
|
if(Enable){
|
|
if(Selected)
|
|
RectFillRender(Bound.Left, Bound.Top, Bound.Right, Bound.Bottom, SelectedColor);
|
|
else
|
|
RectFillRender(Bound.Left, Bound.Top, Bound.Right, Bound.Bottom, Color);
|
|
}else{
|
|
RectFillRender(Bound.Left, Bound.Top, Bound.Right, Bound.Bottom, DisableColor);
|
|
}
|
|
|
|
VertLineRender(Bound.Left, Bound.Top, Bound.Height -1, 0xFFFFFFFF);
|
|
VertLineRender(Bound.Right -1, Bound.Top +1, Bound.Height -2, 0xFF808080);
|
|
VertLineRender(Bound.Right, Bound.Top, Bound.Height, 0xFF404040);
|
|
|
|
HorizLineRender(Bound.Left, Bound.Top, Bound.Width - 1, 0xFFFFFFFF);
|
|
HorizLineRender(Bound.Left +1, Bound.Bottom -1, Bound.Width - 2, 0xFF808080);
|
|
HorizLineRender(Bound.Left, Bound.Bottom, Bound.Width, 0xFF404040);
|
|
|
|
if(Enable){
|
|
if(Selected)
|
|
TextRender_string24( (Content.Left + 1 + CaptionLeftSpacing) , (Content.Top + 2) , SelectedTextColor, Caption.Text);
|
|
else
|
|
TextRender_string24( (Content.Left + 1 + CaptionLeftSpacing) , (Content.Top + 2) , TextColor, Caption.Text);
|
|
}else{
|
|
TextRender_string24( (Content.Left + 1 + CaptionLeftSpacing) , (Content.Top + 2) , DisableTextColor, Caption.Text);
|
|
}
|
|
|
|
}
|
|
|
|
void TButton::DrawInPress(void)
|
|
{
|
|
if(Selected)
|
|
RectFillRender(Bound.Left, Bound.Top, Bound.Right, Bound.Bottom, SelectedColor);
|
|
else
|
|
RectFillRender(Bound.Left, Bound.Top, Bound.Right, Bound.Bottom, Color);
|
|
|
|
VertLineRender(Bound.Left+1, Bound.Top+1, Bound.Height-2, 0xFF808080);
|
|
VertLineRender(Bound.Right-1, Bound.Top+1, Bound.Height-2, 0xFF808080);
|
|
VertLineRender(Bound.Left, Bound.Top, Bound.Height, 0xFF000000);
|
|
VertLineRender(Bound.Right, Bound.Top, Bound.Height, 0xFF000000);
|
|
|
|
HorizLineRender(Bound.Left+1, Bound.Top+1, Bound.Width - 2, 0xFF808080);
|
|
HorizLineRender(Bound.Left+1, Bound.Bottom-1, Bound.Width - 2, 0xFF808080);
|
|
HorizLineRender(Bound.Left, Bound.Top, Bound.Width, 0xFF000000);
|
|
HorizLineRender(Bound.Left, Bound.Bottom, Bound.Width, 0xFF000000);
|
|
|
|
if(Selected)
|
|
TextRender_string24( (Content.Left + 1 + CaptionLeftSpacing) , (Content.Top + 2) , SelectedTextColor, Caption.Text);
|
|
else
|
|
TextRender_string24( (Content.Left + 1 + CaptionLeftSpacing) , (Content.Top + 2) , TextColor, Caption.Text);
|
|
}
|
|
|
|
void TButton::Show(void)
|
|
{
|
|
Draw2();
|
|
}
|
|
|
|
|