VGUI: UIButton now resizes when an image is set that's larger than the button area. Also add method SetIconColor()

This commit is contained in:
Marco Cawthorne 2022-05-20 16:35:36 -07:00
parent 8e96fb27c6
commit 5f3570f140
Signed by: eukara
GPG Key ID: CE2032F0A2882A22
2 changed files with 21 additions and 2 deletions

View File

@ -24,7 +24,9 @@ enumflags
class CUIButton:CUIWidget
{
vector m_vecIMGSize;
vector m_vecColor;
vector m_vecIconColor;
float m_flAlpha;
vector m_vecSize;
string m_strTitle;
@ -55,6 +57,7 @@ CUIButton::CUIButton(void)
m_vecColor = UI_MAINCOLOR;
m_flAlpha = 1.0f;
m_vecSize = [96,24];
m_vecIconColor = [1,1,1];
m_iFlags = BUTTON_VISIBLE;
}
@ -64,6 +67,12 @@ CUIButton::SetColor(vector vecColor)
m_vecColor = vecColor;
}
void
CUIButton::SetIconColor(vector vecColor)
{
m_vecIconColor = vecColor;
};
void
CUIButton::SetSize(vector vecSize)
{
@ -104,7 +113,13 @@ CUIButton::SetTitle(string strName)
void
CUIButton::SetIcon(string strName)
{
vector vecImgSize;
m_strIcon = strName;
m_vecIMGSize = drawgetimagesize(strName);
if (vlen(GetSize()) < vlen(m_vecIMGSize)) {
SetSize(m_vecIMGSize + [4,4]);
}
}
void
CUIButton::SetFunc(void(void) vFunc)
@ -166,7 +181,10 @@ CUIButton::Draw(void)
}
}
if (m_strIcon) {
drawpic(m_parent.m_vecOrigin + m_vecOrigin + [2,2], m_strIcon, [16,16], m_vecColor, 1.0f, 0);
if (m_iFlags & BUTTON_DOWN)
drawpic(m_parent.m_vecOrigin + m_vecOrigin + [2,2], m_strIcon, m_vecIMGSize, m_vecIconColor * 0.25, 1.0f, 0);
else
drawpic(m_parent.m_vecOrigin + m_vecOrigin + [2,2], m_strIcon, m_vecIMGSize, m_vecIconColor, 1.0f, 0);
}
}

View File

@ -81,7 +81,8 @@ void CUIWindow::CUIWindow(void)
m_btnClose = spawn(CUIButton);
m_btnClose.SetTitle(__NULL__);
m_btnClose.m_strIcon = "textures/ui/steam/icon_close";
m_btnClose.SetIcon("textures/ui/steam/icon_close");
m_btnClose.SetIconColor(m_vecColor);
m_btnClose.SetColor(m_vecColor);
m_btnClose.SetFunc(WindowButtonClose);
m_btnClose.SetSize([20,20]);