Initial commit

This commit is contained in:
2026-04-06 19:02:09 +08:00
commit d186d7dcc7
743 changed files with 521821 additions and 0 deletions

145
MyCode/Gui/TButton.cpp Normal file
View File

@@ -0,0 +1,145 @@
#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();
}