1
0
forked from 0ad/0ad
0ad/source/gui/CCheckBox.cpp

154 lines
3.9 KiB
C++
Raw Normal View History

2004-05-29 06:06:50 +02:00
/*
CCheckBox
by Gustav Larsson
gee@pyro.nu
*/
#include "precompiled.h"
2004-05-29 06:06:50 +02:00
#include "GUI.h"
#include "CCheckBox.h"
using namespace std;
//-------------------------------------------------------------------
// Constructor / Destructor
//-------------------------------------------------------------------
CCheckBox::CCheckBox()
{
/* bool m_Checked;
CStr m_Font;
CGUISpriteInstance m_Sprite;
CGUISpriteInstance m_SpriteDisabled;
CGUISpriteInstance m_SpriteOver;
CGUISpriteInstance m_SpritePressed;
CGUISpriteInstance m_Sprite2;
CGUISpriteInstance m_Sprite2Disabled;
CGUISpriteInstance m_Sprite2Over;
CGUISpriteInstance m_Sprite2Pressed;
int m_SquareSide;
EAlign m_TextAlign;
CColor m_TextColor;
CColor m_TextColorDisabled;
CColor m_TextColorOver;
CColor m_TextColorPressed;
EVAlign m_TextValign;
CStr m_ToolTip;
CStr m_ToolTipStyle;
2004-05-29 06:06:50 +02:00
*/
AddSetting(GUIST_CGUIString, "caption");
AddSetting(GUIST_bool, "checked");
AddSetting(GUIST_CGUISpriteInstance,"sprite");
AddSetting(GUIST_CGUISpriteInstance,"sprite-over");
AddSetting(GUIST_CGUISpriteInstance,"sprite-pressed");
AddSetting(GUIST_CGUISpriteInstance,"sprite-disabled");
AddSetting(GUIST_CGUISpriteInstance,"sprite2");
AddSetting(GUIST_CGUISpriteInstance,"sprite2-over");
AddSetting(GUIST_CGUISpriteInstance,"sprite2-pressed");
AddSetting(GUIST_CGUISpriteInstance,"sprite2-disabled");
2004-05-29 06:06:50 +02:00
AddSetting(GUIST_int, "square-side");
// Add text
AddText(new SGUIText());
}
CCheckBox::~CCheckBox()
{
}
void CCheckBox::SetupText()
{
if (!GetGUI())
return;
assert(m_GeneratedTexts.size()>=1);
CStr font;
CGUIString caption;
//int square_side;
GUI<CGUIString>::GetSetting(this, "caption", caption);
//GUI<CGUIString>::GetSetting(this, "square-side", square_side);
// TODO Gee: Establish buffer zones
// TODO Gee: research if even "default" should be hardcoded.
*m_GeneratedTexts[0] = GetGUI()->GenerateText(caption, CStr("default"), m_CachedActualSize.GetWidth()-20, 0);
2004-05-29 06:06:50 +02:00
// Set position of text
// TODO Gee: Big TODO
// m_TextPos.x = m_CachedActualSize.left + 20;
// m_TextPos.y = m_CachedActualSize.top;
}
void CCheckBox::HandleMessage(const SGUIMessage &Message)
{
// Important
IGUIButtonBehavior::HandleMessage(Message);
switch (Message.type)
{
case GUIM_PRESSED:
{
bool checked;
GUI<bool>::GetSetting(this, "checked", checked);
checked = !checked;
GUI<bool>::SetSetting(this, "checked", checked);
} break;
default:
break;
}
}
void CCheckBox::Draw()
{
////////// Gee: janwas, this is just temp to see it
glDisable(GL_TEXTURE_2D);
//////////
int square_side;
GUI<int>::GetSetting(this, "square-side", square_side);
float bz = GetBufferedZ();
// Get square
// TODO Gee: edit below when CRect has got "height()"
float middle = (m_CachedActualSize.bottom - m_CachedActualSize.top)/2;
2004-05-29 06:06:50 +02:00
CRect rect;
rect.left = m_CachedActualSize.left + middle - square_side/2;
rect.right = rect.left + square_side;
rect.top = m_CachedActualSize.top + middle - square_side/2;
rect.bottom = rect.top + square_side;
bool checked;
GUI<bool>::GetSetting(this, "checked", checked);
CGUISpriteInstance sprite, sprite_over, sprite_pressed, sprite_disabled;
2004-05-29 06:06:50 +02:00
if (checked)
{
GUI<CGUISpriteInstance>::GetSetting(this, "sprite2", sprite);
GUI<CGUISpriteInstance>::GetSetting(this, "sprite2-over", sprite_over);
GUI<CGUISpriteInstance>::GetSetting(this, "sprite2-pressed", sprite_pressed);
GUI<CGUISpriteInstance>::GetSetting(this, "sprite2-disabled", sprite_disabled);
}
2004-05-29 06:06:50 +02:00
else
{
GUI<CGUISpriteInstance>::GetSetting(this, "sprite", sprite);
GUI<CGUISpriteInstance>::GetSetting(this, "sprite-over", sprite_over);
GUI<CGUISpriteInstance>::GetSetting(this, "sprite-pressed", sprite_pressed);
GUI<CGUISpriteInstance>::GetSetting(this, "sprite-disabled", sprite_disabled);
2004-05-29 06:06:50 +02:00
}
DrawButton( rect,
bz,
sprite,
sprite_over,
sprite_pressed,
sprite_disabled);
CColor color = ChooseColor();
// IGUITextOwner::Draw(0, color, m_TextPos, bz+0.1f);
}