1
0
forked from 0ad/0ad

Lots of minor updates. Touched up the check-box quite a lot.

This was SVN commit r2532.
This commit is contained in:
Gee 2005-07-24 08:29:02 +00:00
parent 65abb78611
commit b5f6d19332
6 changed files with 95 additions and 54 deletions

View File

@ -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);
} }

View File

@ -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);

View File

@ -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 --
for (int i=0; i<4; ++i) if (clipping != CRect())
glDisable(GL_CLIP_PLANE0+i); {
for (int i=0; i<4; ++i)
glDisable(GL_CLIP_PLANE0+i);
}
glDisable(GL_TEXTURE_2D); glDisable(GL_TEXTURE_2D);
// -- GL // -- GL
} }

View File

@ -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);
} }
} }
} }

View File

@ -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)
{ {

View File

@ -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);
} }
} }