73 lines
1.4 KiB
C++
73 lines
1.4 KiB
C++
#include "Icon.h"
|
|
|
|
|
|
void TIcon::Init(u16 aX, u16 aY, u16 aW, u16 aH, u16 OwnerX, u16 OwnerY, u32 aSize, u32 aColor)
|
|
{
|
|
Bound.SetBySize(aX+OwnerX, aY+OwnerY, aW, aH);
|
|
Content.SetBySize(aX+OwnerX+1,aY+OwnerY+1,aW-2,aH-2);
|
|
|
|
OwnerLeftTop.x = OwnerX;
|
|
OwnerLeftTop.y = OwnerY;
|
|
|
|
iSize = aSize;
|
|
Color = aColor;
|
|
BorderColor = clFrmFace;
|
|
|
|
Dx = (Bound.Width - aSize)/2 + Bound.Left;
|
|
Dy = (Bound.Height - aSize)/2 + Bound.Top;
|
|
Active = true;
|
|
}
|
|
|
|
void TIcon::SetActive(void)
|
|
{
|
|
Active = 1;
|
|
}
|
|
|
|
void TIcon::SetDeActive(void)
|
|
{
|
|
Active = 0;
|
|
}
|
|
|
|
void TIcon::SetActiveIndex(unsigned int aIndex)
|
|
{
|
|
ActiveImageIndex = aIndex;
|
|
}
|
|
|
|
void TIcon::SetDeActiveIndex(unsigned int aIndex)
|
|
{
|
|
DeActiveImageIndex = aIndex;
|
|
}
|
|
|
|
void TIcon::DrawBorder(void)
|
|
{
|
|
VertLineRender(Bound.Left, Bound.Top, Bound.Height, BorderColor);
|
|
VertLineRender(Bound.Right, Bound.Top, Bound.Height, BorderColor);
|
|
HorizLineRender(Bound.Left, Bound.Top, Bound.Width , BorderColor);
|
|
HorizLineRender(Bound.Left, Bound.Bottom, Bound.Width , BorderColor);
|
|
}
|
|
|
|
void TIcon::DrawContent(void)
|
|
{
|
|
RectFillRender(Content.Left, Content.Top, Content.Right, Content.Bottom, Color);
|
|
}
|
|
|
|
void TIcon::DrawIcon(void)
|
|
{
|
|
if(IconList != nullptr) {
|
|
if(Active)
|
|
IconList->Render(iSize, ActiveImageIndex, Dx, Dy);
|
|
else
|
|
IconList->Render(iSize, DeActiveImageIndex, Dx, Dy);
|
|
}
|
|
}
|
|
|
|
void TIcon::Show(void)
|
|
{
|
|
DrawBorder();
|
|
DrawContent();
|
|
DrawIcon();
|
|
}
|
|
|
|
|
|
|