Lots of minor updates. Touched up the check-box quite a lot.
This was SVN commit r2532.
This commit is contained in:
parent
65abb78611
commit
b5f6d19332
@ -8,6 +8,9 @@ gee@pyro.nu
|
|||||||
#include "GUI.h"
|
#include "GUI.h"
|
||||||
#include "CCheckBox.h"
|
#include "CCheckBox.h"
|
||||||
|
|
||||||
|
#include "ps/Font.h"
|
||||||
|
#include "ps/CLogger.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
@ -15,28 +18,11 @@ using namespace std;
|
|||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
CCheckBox::CCheckBox()
|
CCheckBox::CCheckBox()
|
||||||
{
|
{
|
||||||
/* bool m_Checked;
|
AddSetting(GUIST_float, "buffer_zone");
|
||||||
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;
|
|
||||||
*/
|
|
||||||
AddSetting(GUIST_CGUIString, "caption");
|
AddSetting(GUIST_CGUIString, "caption");
|
||||||
|
AddSetting(GUIST_int, "cell_id");
|
||||||
AddSetting(GUIST_bool, "checked");
|
AddSetting(GUIST_bool, "checked");
|
||||||
|
AddSetting(GUIST_CStr, "font");
|
||||||
AddSetting(GUIST_CGUISpriteInstance, "sprite");
|
AddSetting(GUIST_CGUISpriteInstance, "sprite");
|
||||||
AddSetting(GUIST_CGUISpriteInstance, "sprite_over");
|
AddSetting(GUIST_CGUISpriteInstance, "sprite_over");
|
||||||
AddSetting(GUIST_CGUISpriteInstance, "sprite_pressed");
|
AddSetting(GUIST_CGUISpriteInstance, "sprite_pressed");
|
||||||
@ -45,7 +31,11 @@ CCheckBox::CCheckBox()
|
|||||||
AddSetting(GUIST_CGUISpriteInstance, "sprite2_over");
|
AddSetting(GUIST_CGUISpriteInstance, "sprite2_over");
|
||||||
AddSetting(GUIST_CGUISpriteInstance, "sprite2_pressed");
|
AddSetting(GUIST_CGUISpriteInstance, "sprite2_pressed");
|
||||||
AddSetting(GUIST_CGUISpriteInstance, "sprite2_disabled");
|
AddSetting(GUIST_CGUISpriteInstance, "sprite2_disabled");
|
||||||
AddSetting(GUIST_int, "square_side");
|
AddSetting(GUIST_float, "square_side");
|
||||||
|
AddSetting(GUIST_CColor, "textcolor");
|
||||||
|
AddSetting(GUIST_CColor, "textcolor_over");
|
||||||
|
AddSetting(GUIST_CColor, "textcolor_pressed");
|
||||||
|
AddSetting(GUIST_CColor, "textcolor_disabled");
|
||||||
AddSetting(GUIST_CStr, "tooltip");
|
AddSetting(GUIST_CStr, "tooltip");
|
||||||
AddSetting(GUIST_CStr, "tooltip_style");
|
AddSetting(GUIST_CStr, "tooltip_style");
|
||||||
|
|
||||||
@ -65,25 +55,27 @@ void CCheckBox::SetupText()
|
|||||||
debug_assert(m_GeneratedTexts.size()>=1);
|
debug_assert(m_GeneratedTexts.size()>=1);
|
||||||
|
|
||||||
CStr font;
|
CStr font;
|
||||||
|
if (GUI<CStr>::GetSetting(this, "font", font) != PS_OK || font.Length()==0)
|
||||||
|
// Use the default if none is specified
|
||||||
|
// TODO Gee: (2004-08-14) Default should not be hard-coded, but be in styles!
|
||||||
|
font = "default";
|
||||||
|
|
||||||
|
float square_side;
|
||||||
|
GUI<float>::GetSetting(this, "square_side", square_side);
|
||||||
|
|
||||||
CGUIString caption;
|
CGUIString caption;
|
||||||
//int square_side;
|
|
||||||
GUI<CGUIString>::GetSetting(this, "caption", caption);
|
GUI<CGUIString>::GetSetting(this, "caption", caption);
|
||||||
//GUI<CGUIString>::GetSetting(this, "square_side", square_side);
|
|
||||||
|
|
||||||
// TODO Gee: Establish buffer zones
|
float buffer_zone=0.f;
|
||||||
// TODO Gee: research if even "default" should be hardcoded.
|
GUI<float>::GetSetting(this, "buffer_zone", buffer_zone);
|
||||||
*m_GeneratedTexts[0] = GetGUI()->GenerateText(caption, CStr("default"), m_CachedActualSize.GetWidth()-20, 0);
|
*m_GeneratedTexts[0] = GetGUI()->GenerateText(caption, font, m_CachedActualSize.GetWidth()-square_side, 0.f, this);
|
||||||
|
|
||||||
// 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)
|
void CCheckBox::HandleMessage(const SGUIMessage &Message)
|
||||||
{
|
{
|
||||||
// Important
|
// Important
|
||||||
IGUIButtonBehavior::HandleMessage(Message);
|
IGUIButtonBehavior::HandleMessage(Message);
|
||||||
|
IGUITextOwner::HandleMessage(Message);
|
||||||
|
|
||||||
switch (Message.type)
|
switch (Message.type)
|
||||||
{
|
{
|
||||||
@ -108,22 +100,34 @@ void CCheckBox::Draw()
|
|||||||
glDisable(GL_TEXTURE_2D);
|
glDisable(GL_TEXTURE_2D);
|
||||||
//////////
|
//////////
|
||||||
|
|
||||||
int square_side;
|
float square_side, buffer_zone;
|
||||||
GUI<int>::GetSetting(this, "square_side", square_side);
|
CStr font_name;
|
||||||
|
bool checked;
|
||||||
|
int cell_id;
|
||||||
|
GUI<float>::GetSetting(this, "square_side", square_side);
|
||||||
|
GUI<float>::GetSetting(this, "buffer_zone", buffer_zone);
|
||||||
|
GUI<CStr>::GetSetting(this, "font", font_name);
|
||||||
|
GUI<bool>::GetSetting(this, "checked", checked);
|
||||||
|
GUI<int>::GetSetting(this, "cell_id", cell_id);
|
||||||
|
|
||||||
|
// Get line height
|
||||||
|
CFont font (font_name);
|
||||||
|
float line_height = (float)font.GetHeight();
|
||||||
|
|
||||||
float bz = GetBufferedZ();
|
float bz = GetBufferedZ();
|
||||||
|
|
||||||
// Get square
|
// Get square
|
||||||
// TODO Gee: edit below when CRect has got "height()"
|
|
||||||
float middle = (m_CachedActualSize.bottom - m_CachedActualSize.top)/2;
|
|
||||||
CRect rect;
|
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;
|
rect.left = m_CachedActualSize.left;
|
||||||
GUI<bool>::GetSetting(this, "checked", checked);
|
rect.right = rect.left + square_side;
|
||||||
|
|
||||||
|
if (square_side >= line_height)
|
||||||
|
rect.top = m_CachedActualSize.top;
|
||||||
|
else
|
||||||
|
rect.top = m_CachedActualSize.top + line_height/2.f - square_side/2.f;
|
||||||
|
|
||||||
|
rect.bottom = rect.top + square_side;
|
||||||
|
|
||||||
CGUISpriteInstance *sprite, *sprite_over, *sprite_pressed, *sprite_disabled;
|
CGUISpriteInstance *sprite, *sprite_over, *sprite_pressed, *sprite_disabled;
|
||||||
|
|
||||||
@ -148,9 +152,14 @@ void CCheckBox::Draw()
|
|||||||
*sprite_over,
|
*sprite_over,
|
||||||
*sprite_pressed,
|
*sprite_pressed,
|
||||||
*sprite_disabled,
|
*sprite_disabled,
|
||||||
0);
|
cell_id);
|
||||||
|
|
||||||
CColor color = ChooseColor();
|
CColor color = ChooseColor();
|
||||||
|
|
||||||
// IGUITextOwner::Draw(0, color, m_TextPos, bz+0.1f);
|
CPos text_pos(m_CachedActualSize.left + square_side + buffer_zone, m_CachedActualSize.top);
|
||||||
|
|
||||||
|
if (square_side > line_height)
|
||||||
|
text_pos.y += square_side/2.f - line_height/2.f;
|
||||||
|
|
||||||
|
IGUITextOwner::Draw(0, color, text_pos, bz+0.1f, m_CachedActualSize);
|
||||||
}
|
}
|
||||||
|
@ -319,10 +319,13 @@ void CDropDown::Draw()
|
|||||||
|
|
||||||
if (selected != -1) // TODO: Maybe check validity completely?
|
if (selected != -1) // TODO: Maybe check validity completely?
|
||||||
{
|
{
|
||||||
CPos pos(m_CachedActualSize.left, m_CachedActualSize.top);
|
// figure out clipping rectangle
|
||||||
IGUITextOwner::Draw(selected, color, pos, bz+0.1f);
|
CRect cliparea(m_CachedActualSize.left, m_CachedActualSize.top,
|
||||||
}
|
m_CachedActualSize.right-button_width, m_CachedActualSize.bottom);
|
||||||
|
|
||||||
|
CPos pos(m_CachedActualSize.left, m_CachedActualSize.top);
|
||||||
|
IGUITextOwner::Draw(selected, color, pos, bz+0.1f, cliparea);
|
||||||
|
}
|
||||||
|
|
||||||
bool *scrollbar=NULL, old;
|
bool *scrollbar=NULL, old;
|
||||||
GUI<bool>::GetSettingPointer(this, "scrollbar", scrollbar);
|
GUI<bool>::GetSettingPointer(this, "scrollbar", scrollbar);
|
||||||
|
@ -941,8 +941,11 @@ void CGUI::DrawText(SGUIText &Text, const CColor &DefaultColor,
|
|||||||
|
|
||||||
// TODO To whom it may concern: Thing were not reset, so
|
// TODO To whom it may concern: Thing were not reset, so
|
||||||
// I added this line, modify if incorrect --
|
// I added this line, modify if incorrect --
|
||||||
|
if (clipping != CRect())
|
||||||
|
{
|
||||||
for (int i=0; i<4; ++i)
|
for (int i=0; i<4; ++i)
|
||||||
glDisable(GL_CLIP_PLANE0+i);
|
glDisable(GL_CLIP_PLANE0+i);
|
||||||
|
}
|
||||||
glDisable(GL_TEXTURE_2D);
|
glDisable(GL_TEXTURE_2D);
|
||||||
// -- GL
|
// -- GL
|
||||||
}
|
}
|
||||||
|
@ -357,7 +357,6 @@ void CList::DrawList(const int &selected,
|
|||||||
if (scrollbar)
|
if (scrollbar)
|
||||||
{
|
{
|
||||||
// Remove any overlapping area of the scrollbar.
|
// Remove any overlapping area of the scrollbar.
|
||||||
|
|
||||||
if (rect_sel.right > GetScrollBar(0).GetOuterRect().left &&
|
if (rect_sel.right > GetScrollBar(0).GetOuterRect().left &&
|
||||||
rect_sel.right <= GetScrollBar(0).GetOuterRect().right)
|
rect_sel.right <= GetScrollBar(0).GetOuterRect().right)
|
||||||
rect_sel.right = GetScrollBar(0).GetOuterRect().left;
|
rect_sel.right = GetScrollBar(0).GetOuterRect().left;
|
||||||
@ -380,8 +379,22 @@ void CList::DrawList(const int &selected,
|
|||||||
m_ItemsYPositions[i] - scroll > rect.GetHeight())
|
m_ItemsYPositions[i] - scroll > rect.GetHeight())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
IGUITextOwner::Draw(i, color, rect.TopLeft() - CPos(0.f, scroll - m_ItemsYPositions[i]), bz+0.1f,
|
// Clipping area (we'll have to substract the scrollbar)
|
||||||
GetListRect());
|
CRect cliparea = GetListRect();
|
||||||
|
|
||||||
|
if (scrollbar)
|
||||||
|
{
|
||||||
|
if (cliparea.right > GetScrollBar(0).GetOuterRect().left &&
|
||||||
|
cliparea.right <= GetScrollBar(0).GetOuterRect().right)
|
||||||
|
cliparea.right = GetScrollBar(0).GetOuterRect().left;
|
||||||
|
|
||||||
|
if (cliparea.left >= GetScrollBar(0).GetOuterRect().left &&
|
||||||
|
cliparea.left < GetScrollBar(0).GetOuterRect().right)
|
||||||
|
cliparea.left = GetScrollBar(0).GetOuterRect().right;
|
||||||
|
}
|
||||||
|
|
||||||
|
IGUITextOwner::Draw(i, color, rect.TopLeft() - CPos(0.f, scroll - m_ItemsYPositions[i]),
|
||||||
|
bz+0.1f, cliparea);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ void CRadioButton::HandleMessage(const SGUIMessage &Message)
|
|||||||
{
|
{
|
||||||
// Important
|
// Important
|
||||||
IGUIButtonBehavior::HandleMessage(Message);
|
IGUIButtonBehavior::HandleMessage(Message);
|
||||||
|
IGUITextOwner::HandleMessage(Message);
|
||||||
|
|
||||||
switch (Message.type)
|
switch (Message.type)
|
||||||
{
|
{
|
||||||
|
@ -22,11 +22,11 @@ CText::CText()
|
|||||||
{
|
{
|
||||||
AddSetting(GUIST_float, "buffer_zone");
|
AddSetting(GUIST_float, "buffer_zone");
|
||||||
AddSetting(GUIST_CGUIString, "caption");
|
AddSetting(GUIST_CGUIString, "caption");
|
||||||
|
AddSetting(GUIST_int, "cell_id");
|
||||||
AddSetting(GUIST_CStr, "font");
|
AddSetting(GUIST_CStr, "font");
|
||||||
AddSetting(GUIST_bool, "scrollbar");
|
AddSetting(GUIST_bool, "scrollbar");
|
||||||
AddSetting(GUIST_CStr, "scrollbar_style");
|
AddSetting(GUIST_CStr, "scrollbar_style");
|
||||||
AddSetting(GUIST_CGUISpriteInstance, "sprite");
|
AddSetting(GUIST_CGUISpriteInstance, "sprite");
|
||||||
AddSetting(GUIST_int, "cell_id");
|
|
||||||
AddSetting(GUIST_EAlign, "text_align");
|
AddSetting(GUIST_EAlign, "text_align");
|
||||||
AddSetting(GUIST_EVAlign, "text_valign");
|
AddSetting(GUIST_EVAlign, "text_valign");
|
||||||
AddSetting(GUIST_CColor, "textcolor");
|
AddSetting(GUIST_CColor, "textcolor");
|
||||||
@ -189,10 +189,22 @@ void CText::Draw()
|
|||||||
|
|
||||||
GetGUI()->DrawSprite(*sprite, cell_id, bz, m_CachedActualSize);
|
GetGUI()->DrawSprite(*sprite, cell_id, bz, m_CachedActualSize);
|
||||||
|
|
||||||
|
// Clipping area (we'll have to substract the scrollbar)
|
||||||
|
CRect cliparea = m_CachedActualSize;
|
||||||
|
|
||||||
float scroll=0.f;
|
float scroll=0.f;
|
||||||
if (scrollbar)
|
if (scrollbar)
|
||||||
{
|
{
|
||||||
scroll = GetScrollBar(0).GetPos();
|
scroll = GetScrollBar(0).GetPos();
|
||||||
|
|
||||||
|
// substract scrollbar from cliparea
|
||||||
|
if (cliparea.right > GetScrollBar(0).GetOuterRect().left &&
|
||||||
|
cliparea.right <= GetScrollBar(0).GetOuterRect().right)
|
||||||
|
cliparea.right = GetScrollBar(0).GetOuterRect().left;
|
||||||
|
|
||||||
|
if (cliparea.left >= GetScrollBar(0).GetOuterRect().left &&
|
||||||
|
cliparea.left < GetScrollBar(0).GetOuterRect().right)
|
||||||
|
cliparea.left = GetScrollBar(0).GetOuterRect().right;
|
||||||
}
|
}
|
||||||
|
|
||||||
CColor color;
|
CColor color;
|
||||||
@ -200,8 +212,8 @@ void CText::Draw()
|
|||||||
|
|
||||||
// Draw text
|
// Draw text
|
||||||
if (scrollbar)
|
if (scrollbar)
|
||||||
IGUITextOwner::Draw(0, color, m_CachedActualSize.TopLeft() - CPos(0.f, scroll), bz+0.1f);
|
IGUITextOwner::Draw(0, color, m_CachedActualSize.TopLeft() - CPos(0.f, scroll), bz+0.1f, m_CachedActualSize);
|
||||||
else
|
else
|
||||||
IGUITextOwner::Draw(0, color, m_TextPos, bz+0.1f);
|
IGUITextOwner::Draw(0, color, m_TextPos, bz+0.1f, m_CachedActualSize);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user