no message
This was SVN commit r77.
This commit is contained in:
parent
eb2ddf4c50
commit
90bbd48a14
@ -1,13 +1,10 @@
|
|||||||
<?xml version="1.0" encoding="iso-8859-1" standalone="no" ?>
|
<?xml version="1.0" encoding="iso-8859-1" standalone="no" ?>
|
||||||
|
|
||||||
<!DOCTYPE objects SYSTEM "file:///C:/objects.dtd">
|
<!DOCTYPE objects SYSTEM "objects.dtd">
|
||||||
|
|
||||||
<objects>
|
<objects>
|
||||||
<object name="Button2" type="button" size1024="10 10 100 100" style="hello" z="10" />
|
|
||||||
|
|
||||||
<object name="Button3" type="button" size1024="120 120 220 220" style="hello" z="20">
|
<object name="Child" type="button" size="100%-50 100%-50 100%-5 100%-5" z="22">
|
||||||
<object name="Child" type="button" size1024="140 140 300 200" z="22">
|
|
||||||
<object name="ChildsChilds" type="button" size1024="200 150 400 190" z="24"> </object>
|
|
||||||
</object>
|
|
||||||
</object>
|
</object>
|
||||||
|
|
||||||
</objects>
|
</objects>
|
@ -18,7 +18,7 @@
|
|||||||
<!ATTLIST object disabled (true|false) #IMPLIED>
|
<!ATTLIST object disabled (true|false) #IMPLIED>
|
||||||
<!ATTLIST object ghost (true|false) #IMPLIED>
|
<!ATTLIST object ghost (true|false) #IMPLIED>
|
||||||
<!ATTLIST object hidden (true|false) #IMPLIED>
|
<!ATTLIST object hidden (true|false) #IMPLIED>
|
||||||
<!ATTLIST object size1024 CDATA #IMPLIED>
|
<!ATTLIST object size CDATA #IMPLIED>
|
||||||
<!ATTLIST object style CDATA #IMPLIED>
|
<!ATTLIST object style CDATA #IMPLIED>
|
||||||
<!ATTLIST object z CDATA #IMPLIED>
|
<!ATTLIST object z CDATA #IMPLIED>
|
||||||
|
|
||||||
|
@ -117,10 +117,10 @@ void CButton::Draw()
|
|||||||
if (m_Pressed)
|
if (m_Pressed)
|
||||||
glColor3f(0.7f, 0.f, 0.f);
|
glColor3f(0.7f, 0.f, 0.f);
|
||||||
else
|
else
|
||||||
glColor3f(0,1,(float)m_BaseSettings.m_Size.right/300.f);
|
glColor3f(0,1,(float)m_BaseSettings.m_Size.pixel.right/300.f);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
glColor3f((float)m_BaseSettings.m_Size.right/300.f,0,1);
|
glColor3f((float)m_BaseSettings.m_Size.pixel.right/300.f,0,1);
|
||||||
|
|
||||||
////////// Gee: janwas, this is just temp to see it
|
////////// Gee: janwas, this is just temp to see it
|
||||||
glDisable(GL_TEXTURE_2D);
|
glDisable(GL_TEXTURE_2D);
|
||||||
@ -133,11 +133,19 @@ void CButton::Draw()
|
|||||||
// Do this
|
// Do this
|
||||||
glBegin(GL_QUADS);
|
glBegin(GL_QUADS);
|
||||||
//glBegin(GL_TRIANGLES);
|
//glBegin(GL_TRIANGLES);
|
||||||
glVertex2i(GetBaseSettings().m_Size.right, GetBaseSettings().m_Size.bottom);
|
//CRect ca = GetBaseSettings().m_Size.GetClientArea(CRect(0, 0, g_xres, g_yres));
|
||||||
|
CRect ca = m_CachedActualSize;
|
||||||
|
|
||||||
|
glVertex2i(ca.right, ca.bottom);
|
||||||
|
glVertex2i(ca.left, ca.bottom);
|
||||||
|
glVertex2i(ca.left, ca.top);
|
||||||
|
glVertex2i(ca.right, ca.top);
|
||||||
|
|
||||||
|
/* glVertex2i(GetBaseSettings().m_Size.right, GetBaseSettings().m_Size.bottom);
|
||||||
glVertex2i(GetBaseSettings().m_Size.left, GetBaseSettings().m_Size.bottom);
|
glVertex2i(GetBaseSettings().m_Size.left, GetBaseSettings().m_Size.bottom);
|
||||||
glVertex2i(GetBaseSettings().m_Size.left, GetBaseSettings().m_Size.top);
|
glVertex2i(GetBaseSettings().m_Size.left, GetBaseSettings().m_Size.top);
|
||||||
glVertex2i(GetBaseSettings().m_Size.right, GetBaseSettings().m_Size.top);
|
glVertex2i(GetBaseSettings().m_Size.right, GetBaseSettings().m_Size.top);
|
||||||
/*
|
*//*
|
||||||
glVertex2i(GetBaseSettings().m_Size.right, GetBaseSettings().m_Size.bottom);
|
glVertex2i(GetBaseSettings().m_Size.right, GetBaseSettings().m_Size.bottom);
|
||||||
glVertex2i(GetBaseSettings().m_Size.left, GetBaseSettings().m_Size.bottom);
|
glVertex2i(GetBaseSettings().m_Size.left, GetBaseSettings().m_Size.bottom);
|
||||||
glVertex2i(GetBaseSettings().m_Size.left, GetBaseSettings().m_Size.top);
|
glVertex2i(GetBaseSettings().m_Size.left, GetBaseSettings().m_Size.top);
|
||||||
|
@ -239,6 +239,11 @@ void CGUI::Destroy()
|
|||||||
m_Sprites.clear();
|
m_Sprites.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CGUI::UpdateResolution()
|
||||||
|
{
|
||||||
|
GUI<>::RecurseObject(0, m_BaseObject, &IGUIObject::UpdateCachedSize );
|
||||||
|
}
|
||||||
|
|
||||||
void CGUI::AddObject(IGUIObject* pObject)
|
void CGUI::AddObject(IGUIObject* pObject)
|
||||||
{
|
{
|
||||||
/* try
|
/* try
|
||||||
|
@ -128,6 +128,17 @@ public:
|
|||||||
*/
|
*/
|
||||||
void AddObjectType(const CStr &str, ConstructObjectFunction pFunc) { m_ObjectTypes[str] = pFunc; }
|
void AddObjectType(const CStr &str, ConstructObjectFunction pFunc) { m_ObjectTypes[str] = pFunc; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update Resolution, should be called every time the resolution
|
||||||
|
* of the opengl screen has been changed, this is becuase it needs
|
||||||
|
* to re-cache all its actual sizes
|
||||||
|
*
|
||||||
|
* Needs no input since screen resolution is global.
|
||||||
|
*
|
||||||
|
* @see IGUIObject#UpdateCachedSize()
|
||||||
|
*/
|
||||||
|
void UpdateResolution();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/**
|
/**
|
||||||
* Updates the object pointers, needs to be called each
|
* Updates the object pointers, needs to be called each
|
||||||
|
@ -56,6 +56,7 @@ gee@pyro.nu
|
|||||||
//--------------------------------------------------------
|
//--------------------------------------------------------
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
//// janwas: these are very sloppy added, I don't know the etiquette
|
//// janwas: these are very sloppy added, I don't know the etiquette
|
||||||
|
@ -97,7 +97,7 @@ enum
|
|||||||
|
|
||||||
// Typedefs
|
// Typedefs
|
||||||
typedef std::map<CStr, IGUIObject*> map_pObjects;
|
typedef std::map<CStr, IGUIObject*> map_pObjects;
|
||||||
|
typedef std::vector<IGUIObject*> vector_pObjects;
|
||||||
|
|
||||||
//--------------------------------------------------------
|
//--------------------------------------------------------
|
||||||
// Error declarations
|
// Error declarations
|
||||||
|
@ -6,9 +6,149 @@ gee@pyro.nu
|
|||||||
|
|
||||||
//#include "stdafx.h"
|
//#include "stdafx.h"
|
||||||
#include "GUI.h"
|
#include "GUI.h"
|
||||||
|
#include "../ps/Parser.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
//--------------------------------------------------------
|
||||||
|
// Help Classes/Structs for the GUI implementation
|
||||||
|
//--------------------------------------------------------
|
||||||
|
|
||||||
|
CClientArea::CClientArea() : pixel(0,0,0,0), percent(0,0,0,0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
CClientArea::CClientArea(const CStr &Value)
|
||||||
|
{
|
||||||
|
SetClientArea(Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
CRect CClientArea::GetClientArea(const CRect &parent)
|
||||||
|
{
|
||||||
|
CRect client;
|
||||||
|
|
||||||
|
// This should probably be cached and not calculated all the time for every object.
|
||||||
|
client.left = int(float(parent.left) + float(parent.right-parent.left)*float(percent.left))/100.f + pixel.left;
|
||||||
|
client.top = int(float(parent.top) + float(parent.bottom-parent.top)*float(percent.top))/100.f + pixel.top;
|
||||||
|
client.right = int(float(parent.left) + float(parent.right-parent.left)*float(percent.right))/100.f + pixel.right;
|
||||||
|
client.bottom = int(float(parent.top) + float(parent.bottom-parent.top)*float(percent.bottom))/100.f + pixel.bottom;
|
||||||
|
|
||||||
|
return client;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CClientArea::SetClientArea(const CStr &Value)
|
||||||
|
{
|
||||||
|
// Get value in STL string format
|
||||||
|
string _Value = (const TCHAR*)Value;
|
||||||
|
|
||||||
|
// This might lack incredible speed, but since all XML files
|
||||||
|
// are read at startup, reading 100 client areas will be
|
||||||
|
// negligible in the loading time.
|
||||||
|
|
||||||
|
// Setup parser to parse the value
|
||||||
|
CParser parser;
|
||||||
|
|
||||||
|
// One of the for values:
|
||||||
|
// will give outputs like (in argument):
|
||||||
|
// (200) <== no percent, just the first $value
|
||||||
|
// (200) (percent) <== just the percent
|
||||||
|
// (200) (percent) (100) <== percent PLUS pixel
|
||||||
|
// (200) (percent) (-100) <== percent MINUS pixel
|
||||||
|
// (200) (percent) (100) (-100) <== Both PLUS and MINUS are used, INVALID
|
||||||
|
string one_value = "_$value[$arg(percent)%_[+_$value]_[-_$arg(_minus)$value]_]";
|
||||||
|
string four_values = one_value + "$arg(delim)" +
|
||||||
|
one_value + "$arg(delim)" +
|
||||||
|
one_value + "$arg(delim)" +
|
||||||
|
one_value + "$arg(delim)_"; // it's easier to just end with another delimiter
|
||||||
|
|
||||||
|
parser.InputTaskType("ClientArea", four_values);
|
||||||
|
|
||||||
|
CParserLine line;
|
||||||
|
line.ParseString(parser, _Value);
|
||||||
|
|
||||||
|
if (!line.m_ParseOK)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
int arg_count[4]; // argument counts for the four values
|
||||||
|
int arg_start[4] = {0,0,0,0}; // location of first argument, [0] is alwasy 0
|
||||||
|
|
||||||
|
// Divide into the four piles (delimiter is an argument named "delim")
|
||||||
|
for (int i=0, valuenr=0; i<line.GetArgCount(); ++i)
|
||||||
|
{
|
||||||
|
string str;
|
||||||
|
line.GetArgString(i, str);
|
||||||
|
if (str == "delim")
|
||||||
|
{
|
||||||
|
if (valuenr==0)
|
||||||
|
{
|
||||||
|
arg_count[0] = i;
|
||||||
|
arg_start[1] = i+1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (valuenr!=3)
|
||||||
|
{
|
||||||
|
arg_start[valuenr+1] = i+1;
|
||||||
|
arg_count[valuenr] = arg_start[valuenr+1] - arg_start[valuenr] - 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
arg_count[3] = line.GetArgCount() - arg_start[valuenr] - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
++valuenr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Iterate argument
|
||||||
|
|
||||||
|
// This is the scheme:
|
||||||
|
// 1 argument = Just pixel value
|
||||||
|
// 2 arguments = Just percent value
|
||||||
|
// 3 arguments = percent and pixel
|
||||||
|
// 4 arguments = INVALID
|
||||||
|
|
||||||
|
// Default to 0
|
||||||
|
int values[4][2] = {{0,0},{0,0},{0,0},{0,0}};
|
||||||
|
|
||||||
|
for (int v=0; v<4; ++v)
|
||||||
|
{
|
||||||
|
if (arg_count[v] == 1)
|
||||||
|
{
|
||||||
|
string str;
|
||||||
|
line.GetArgString(arg_start[v], str);
|
||||||
|
|
||||||
|
if (!line.GetArgInt(arg_start[v], values[v][1]))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (arg_count[v] == 2)
|
||||||
|
{
|
||||||
|
if (!line.GetArgInt(arg_start[v], values[v][0]))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (arg_count[v] == 3)
|
||||||
|
{
|
||||||
|
if (!line.GetArgInt(arg_start[v], values[v][0]) ||
|
||||||
|
!line.GetArgInt(arg_start[v]+2, values[v][1]))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
}
|
||||||
|
else return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now store the values[][] in the right place
|
||||||
|
pixel.left = values[0][1];
|
||||||
|
pixel.top = values[1][1];
|
||||||
|
pixel.right = values[2][1];
|
||||||
|
pixel.bottom = values[3][1];
|
||||||
|
percent.left = values[0][0];
|
||||||
|
percent.top = values[1][0];
|
||||||
|
percent.right = values[2][0];
|
||||||
|
percent.bottom = values[3][0];
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------
|
//--------------------------------------------------------
|
||||||
// Utilities implementation
|
// Utilities implementation
|
||||||
//--------------------------------------------------------
|
//--------------------------------------------------------
|
||||||
|
@ -23,6 +23,84 @@ gee@pyro.nu
|
|||||||
//--------------------------------------------------------
|
//--------------------------------------------------------
|
||||||
#include "GUI.h"
|
#include "GUI.h"
|
||||||
|
|
||||||
|
//--------------------------------------------------------
|
||||||
|
// Help Classes/Structs for the GUI
|
||||||
|
//--------------------------------------------------------
|
||||||
|
// TEMP
|
||||||
|
struct CRect
|
||||||
|
{
|
||||||
|
CRect() {}
|
||||||
|
CRect(int _l, int _t, int _r, int _b) :
|
||||||
|
left(_l),
|
||||||
|
top(_t),
|
||||||
|
right(_r),
|
||||||
|
bottom(_b) {}
|
||||||
|
int bottom, top, left, right;
|
||||||
|
|
||||||
|
bool operator ==(const CRect &rect) const
|
||||||
|
{
|
||||||
|
return (bottom==rect.bottom) &&
|
||||||
|
(top==rect.top) &&
|
||||||
|
(left==rect.left) &&
|
||||||
|
(right==rect.right);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator !=(const CRect &rect) const
|
||||||
|
{
|
||||||
|
return !(*this==rect);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Gustav Larsson
|
||||||
|
*
|
||||||
|
* Client Area is a rectangle relative to a parent rectangle
|
||||||
|
*
|
||||||
|
* You can input the whole value of the Client Area by
|
||||||
|
* string. Like used in the GUI.
|
||||||
|
*/
|
||||||
|
struct CClientArea
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CClientArea();
|
||||||
|
CClientArea(const CStr &Value);
|
||||||
|
|
||||||
|
/// Pixel modifiers
|
||||||
|
CRect pixel;
|
||||||
|
|
||||||
|
/// Percent modifiers (I'll let this be integers, I don't think a greater precision is needed)
|
||||||
|
CRect percent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get client area rectangle when the parent is given
|
||||||
|
*/
|
||||||
|
CRect GetClientArea(const CRect &parent);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The ClientArea can be set from a string looking like:
|
||||||
|
*
|
||||||
|
* @code
|
||||||
|
* "0 0 100% 100%"
|
||||||
|
* "50%-10 50%-10 50%+10 50%+10" @endcode
|
||||||
|
*
|
||||||
|
* i.e. First percent modifier, then + or - and the pixel modifier.
|
||||||
|
* Although you can use just the percent or the pixel modifier. Notice
|
||||||
|
* though that the percent modifier must always be the first when
|
||||||
|
* both modifiers are inputted.
|
||||||
|
*
|
||||||
|
* @return true if success, false if failure. If false then the client area
|
||||||
|
* will be unchanged.
|
||||||
|
*/
|
||||||
|
bool SetClientArea(const CStr &Value);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// TEMP
|
||||||
|
struct CColor
|
||||||
|
{
|
||||||
|
float r, g, b, a;
|
||||||
|
};
|
||||||
|
|
||||||
//--------------------------------------------------------
|
//--------------------------------------------------------
|
||||||
// Forward declarations
|
// Forward declarations
|
||||||
//--------------------------------------------------------
|
//--------------------------------------------------------
|
||||||
@ -154,6 +232,8 @@ public:
|
|||||||
// one with the friend relationship
|
// one with the friend relationship
|
||||||
IGUIObject *pObject = GetObjectPointer(GUIinstance, Object);
|
IGUIObject *pObject = GetObjectPointer(GUIinstance, Object);
|
||||||
|
|
||||||
|
pObject->CheckSettingsValidity();
|
||||||
|
|
||||||
return SetSetting(pObject, Setting, Value);
|
return SetSetting(pObject, Setting, Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,12 +124,9 @@ void IGUIObject::Destroy()
|
|||||||
|
|
||||||
void IGUIObject::SetupBaseSettingsInfo(map_Settings &SettingsInfo)
|
void IGUIObject::SetupBaseSettingsInfo(map_Settings &SettingsInfo)
|
||||||
{
|
{
|
||||||
SettingsInfo["hejsan"].m_Offset = 0;
|
|
||||||
|
|
||||||
|
|
||||||
_GUI_ADD_OFFSET("bool", "enabled", m_Enabled)
|
_GUI_ADD_OFFSET("bool", "enabled", m_Enabled)
|
||||||
_GUI_ADD_OFFSET("bool", "hidden", m_Hidden)
|
_GUI_ADD_OFFSET("bool", "hidden", m_Hidden)
|
||||||
_GUI_ADD_OFFSET("rect", "size1024", m_Size)
|
_GUI_ADD_OFFSET("client area", "size", m_Size)
|
||||||
_GUI_ADD_OFFSET("string", "style", m_Style)
|
_GUI_ADD_OFFSET("string", "style", m_Style)
|
||||||
_GUI_ADD_OFFSET("float", "z", m_Z)
|
_GUI_ADD_OFFSET("float", "z", m_Z)
|
||||||
_GUI_ADD_OFFSET("string", "caption", m_Caption)
|
_GUI_ADD_OFFSET("string", "caption", m_Caption)
|
||||||
@ -143,10 +140,14 @@ bool IGUIObject::MouseOver()
|
|||||||
u16 mouse_x = GetMouseX(),
|
u16 mouse_x = GetMouseX(),
|
||||||
mouse_y = GetMouseY();
|
mouse_y = GetMouseY();
|
||||||
|
|
||||||
return (mouse_x >= m_BaseSettings.m_Size.left &&
|
//CRect ca = m_BaseSettings.m_Size.GetClientArea(CRect(0,0,g_xres,g_yres));
|
||||||
mouse_x <= m_BaseSettings.m_Size.right &&
|
CRect ca = m_CachedActualSize;
|
||||||
mouse_y >= m_BaseSettings.m_Size.bottom &&
|
|
||||||
mouse_y <= m_BaseSettings.m_Size.top);
|
|
||||||
|
return (mouse_x >= ca.left &&
|
||||||
|
mouse_x <= ca.right &&
|
||||||
|
mouse_y >= ca.top &&
|
||||||
|
mouse_y <= ca.bottom);
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 IGUIObject::GetMouseX() const
|
u16 IGUIObject::GetMouseX() const
|
||||||
@ -217,9 +218,6 @@ void IGUIObject::SetSetting(const CStr &Setting, const CStr &Value)
|
|||||||
else
|
else
|
||||||
if (set.m_Type == CStr(_T("rect")))
|
if (set.m_Type == CStr(_T("rect")))
|
||||||
{
|
{
|
||||||
// TEMP
|
|
||||||
//GUI<CRect>::SetSetting(this, Setting, CRect(100,100,200,200));
|
|
||||||
|
|
||||||
// Use the parser to parse the values
|
// Use the parser to parse the values
|
||||||
CParser parser;
|
CParser parser;
|
||||||
parser.InputTaskType("", "_$value_$value_$value_$value_");
|
parser.InputTaskType("", "_$value_$value_$value_$value_");
|
||||||
@ -249,6 +247,21 @@ void IGUIObject::SetSetting(const CStr &Setting, const CStr &Value)
|
|||||||
GUI<CRect>::SetSetting(this, Setting, rect);
|
GUI<CRect>::SetSetting(this, Setting, rect);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
if (set.m_Type == CStr(_T("client area")))
|
||||||
|
{
|
||||||
|
// Get Client Area
|
||||||
|
CClientArea ca;
|
||||||
|
|
||||||
|
if (!ca.SetClientArea(Value))
|
||||||
|
{
|
||||||
|
// GeeTODO REPORT
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if valid!
|
||||||
|
|
||||||
|
GUI<CClientArea>::SetSetting(this, Setting, ca);
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
throw PS_FAIL;
|
throw PS_FAIL;
|
||||||
}
|
}
|
||||||
@ -287,9 +300,17 @@ IGUIObject *IGUIObject::GetParent()
|
|||||||
return m_pParent;
|
return m_pParent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void IGUIObject::UpdateCachedSize()
|
||||||
|
{
|
||||||
|
m_CachedActualSize = m_BaseSettings.m_Size.GetClientArea( CRect(0, 0, g_xres, g_yres) );
|
||||||
|
}
|
||||||
|
|
||||||
// GeeTODO keep this function and all???
|
// GeeTODO keep this function and all???
|
||||||
void IGUIObject::CheckSettingsValidity()
|
void IGUIObject::CheckSettingsValidity()
|
||||||
{
|
{
|
||||||
|
// Size might have been change, update cached size
|
||||||
|
UpdateCachedSize();
|
||||||
|
|
||||||
// If we hide an object, reset many of its parts
|
// If we hide an object, reset many of its parts
|
||||||
if (GetBaseSettings().m_Hidden)
|
if (GetBaseSettings().m_Hidden)
|
||||||
{
|
{
|
||||||
|
@ -48,7 +48,6 @@ class CGUI;
|
|||||||
|
|
||||||
// Map with pointers
|
// Map with pointers
|
||||||
typedef std::map<CStr, SGUISetting> map_Settings;
|
typedef std::map<CStr, SGUISetting> map_Settings;
|
||||||
typedef std::vector<IGUIObject*> vector_pObjects;
|
|
||||||
|
|
||||||
//--------------------------------------------------------
|
//--------------------------------------------------------
|
||||||
// Error declarations
|
// Error declarations
|
||||||
@ -58,36 +57,6 @@ typedef std::vector<IGUIObject*> vector_pObjects;
|
|||||||
// Declarations
|
// Declarations
|
||||||
//--------------------------------------------------------
|
//--------------------------------------------------------
|
||||||
|
|
||||||
// TEMP
|
|
||||||
struct CRect
|
|
||||||
{
|
|
||||||
CRect() {}
|
|
||||||
CRect(int _l, int _b, int _r, int _t) :
|
|
||||||
top(_t),
|
|
||||||
bottom(_b),
|
|
||||||
right(_r),
|
|
||||||
left(_l) {}
|
|
||||||
int bottom, top, left, right;
|
|
||||||
|
|
||||||
bool operator ==(const CRect &rect) const
|
|
||||||
{
|
|
||||||
return (bottom==rect.bottom) &&
|
|
||||||
(top==rect.top) &&
|
|
||||||
(left==rect.left) &&
|
|
||||||
(right==rect.right);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool operator !=(const CRect &rect) const
|
|
||||||
{
|
|
||||||
return !(*this==rect);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// TEMP
|
|
||||||
struct CColor
|
|
||||||
{
|
|
||||||
float r, g, b, a;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Text alignments
|
// Text alignments
|
||||||
enum EAlign { EAlign_Left, EAlign_Right, EAlign_Center };
|
enum EAlign { EAlign_Left, EAlign_Right, EAlign_Center };
|
||||||
@ -117,7 +86,8 @@ struct SGUIBaseSettings
|
|||||||
bool m_Hidden;
|
bool m_Hidden;
|
||||||
bool m_Enabled;
|
bool m_Enabled;
|
||||||
bool m_Absolute;
|
bool m_Absolute;
|
||||||
CRect m_Size;
|
// CRect m_Size2;
|
||||||
|
CClientArea m_Size;
|
||||||
CStr m_Style;
|
CStr m_Style;
|
||||||
float m_Z;
|
float m_Z;
|
||||||
CStr m_Caption; // Is usually set within an XML element and not in the attributes
|
CStr m_Caption; // Is usually set within an XML element and not in the attributes
|
||||||
@ -134,7 +104,7 @@ struct SGUIBaseSettings
|
|||||||
class IGUIObject
|
class IGUIObject
|
||||||
{
|
{
|
||||||
friend class CGUI;
|
friend class CGUI;
|
||||||
friend class GUI;
|
template <class T> friend class GUI;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
IGUIObject();
|
IGUIObject();
|
||||||
@ -229,6 +199,13 @@ public:
|
|||||||
*/
|
*/
|
||||||
bool SettingExists(const CStr &Setting) const;
|
bool SettingExists(const CStr &Setting) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* All sizes are relative to resolution, and the calculation
|
||||||
|
* is not wanted in real time, therefore it is cached, update
|
||||||
|
* the cached size with this function.
|
||||||
|
*/
|
||||||
|
void UpdateCachedSize();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Should be called every time the settings has been updated
|
* Should be called every time the settings has been updated
|
||||||
* will also send a message GUIM_SETTINGS_UPDATED, so that
|
* will also send a message GUIM_SETTINGS_UPDATED, so that
|
||||||
@ -321,6 +298,14 @@ protected:
|
|||||||
u16 GetMouseX() const;
|
u16 GetMouseX() const;
|
||||||
u16 GetMouseY() const;
|
u16 GetMouseY() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cached size, real size m_Size is actually dependent on resolution
|
||||||
|
* and can have different *real* outcomes, this is the real outcome
|
||||||
|
* cached to avoid slow calculations in real time.
|
||||||
|
*/
|
||||||
|
CRect m_CachedActualSize;
|
||||||
|
|
||||||
|
|
||||||
//@}
|
//@}
|
||||||
private:
|
private:
|
||||||
//--------------------------------------------------------
|
//--------------------------------------------------------
|
||||||
@ -379,7 +364,7 @@ protected:
|
|||||||
* located hardcoded, in order to acquire a pointer
|
* located hardcoded, in order to acquire a pointer
|
||||||
* for that variable... Say "frozen" gives
|
* for that variable... Say "frozen" gives
|
||||||
* the offset from IGUIObject to m_Frozen.
|
* the offset from IGUIObject to m_Frozen.
|
||||||
* <b>note!</b> <u>NOT</u> from SGUIBaseSettings to
|
* <b>note!</b> @uNOT from SGUIBaseSettings to
|
||||||
* m_Frozen!
|
* m_Frozen!
|
||||||
*/
|
*/
|
||||||
static map_Settings m_SettingsInfo;
|
static map_Settings m_SettingsInfo;
|
||||||
|
Loading…
Reference in New Issue
Block a user