Use CGUI& instead of CGUI* so that the 50+ users stop wondering whether or not that is null and can't even be mistaken to add redundant null checks preemptively.

Remove the remaining of such checks after d3e56f0f57 removed 21 of them
already.
2c47fbd66a initialized the pointer at construction time rather than at
random conditional events later.

Differential Revision: https://code.wildfiregames.com/D2205
Comments By: Vladislav, wraitii
Tested on: gcc 9.1.0, clang 8.0.1

This was SVN commit r22741.
This commit is contained in:
elexis 2019-08-21 10:12:33 +00:00
parent 632f687ab6
commit e1014aad3b
58 changed files with 168 additions and 185 deletions

View file

@ -22,7 +22,7 @@
#include "gui/CGUIColor.h"
#include "lib/ogl.h"
CButton::CButton(CGUI* pGUI)
CButton::CButton(CGUI& pGUI)
: IGUIObject(pGUI), IGUIButtonBehavior(pGUI), IGUITextOwner(pGUI)
{
AddSetting<float>("buffer_zone");

View file

@ -31,7 +31,7 @@ class CButton : public IGUIButtonBehavior, public IGUITextOwner
GUI_OBJECT(CButton)
public:
CButton(CGUI* pGUI);
CButton(CGUI& pGUI);
virtual ~CButton();
/**

View file

@ -31,7 +31,7 @@
#include <cmath>
CChart::CChart(CGUI* pGUI)
CChart::CChart(CGUI& pGUI)
: IGUIObject(pGUI), IGUITextOwner(pGUI)
{
AddSetting<CGUIColor>("axis_color");

View file

@ -46,7 +46,7 @@ class CChart : public IGUITextOwner
GUI_OBJECT(CChart)
public:
CChart(CGUI* pGUI);
CChart(CGUI& pGUI);
virtual ~CChart();
protected:

View file

@ -28,7 +28,7 @@
* TODO: Since there is no call to DrawText, the checkbox won't render any text.
* Thus the font, caption, textcolor and other settings have no effect.
*/
CCheckBox::CCheckBox(CGUI* pGUI)
CCheckBox::CCheckBox(CGUI& pGUI)
: IGUIObject(pGUI), IGUITextOwner(pGUI), IGUIButtonBehavior(pGUI)
{
AddSetting<float>("buffer_zone");

View file

@ -32,7 +32,7 @@ class CCheckBox : public IGUIButtonBehavior, public IGUITextOwner
GUI_OBJECT(CCheckBox)
public:
CCheckBox(CGUI* pGUI);
CCheckBox(CGUI& pGUI);
virtual ~CCheckBox();
/**

View file

@ -26,7 +26,7 @@
#include "ps/CLogger.h"
#include "soundmanager/ISoundManager.h"
CDropDown::CDropDown(CGUI* pGUI)
CDropDown::CDropDown(CGUI& pGUI)
: CList(pGUI), IGUIObject(pGUI),
m_Open(false), m_HideScrollBar(false), m_ElementHighlight(-1)
{
@ -103,7 +103,7 @@ void CDropDown::HandleMessage(SGUIMessage& Message)
if (!m_Open)
break;
CPos mouse = m_pGUI->GetMousePos();
CPos mouse = m_pGUI.GetMousePos();
if (!GetListRect().PointInside(mouse))
break;
@ -203,7 +203,7 @@ void CDropDown::HandleMessage(SGUIMessage& Message)
}
else
{
const CPos& mouse = m_pGUI->GetMousePos();
const CPos& mouse = m_pGUI.GetMousePos();
// If the regular area is pressed, then abort, and close.
if (m_CachedActualSize.PointInside(mouse))
@ -461,10 +461,10 @@ bool CDropDown::MouseOver()
{
CRect rect(m_CachedActualSize.left, std::min(m_CachedActualSize.top, GetListRect().top),
m_CachedActualSize.right, std::max(m_CachedActualSize.bottom, GetListRect().bottom));
return rect.PointInside(m_pGUI->GetMousePos());
return rect.PointInside(m_pGUI.GetMousePos());
}
else
return m_CachedActualSize.PointInside(m_pGUI->GetMousePos());
return m_CachedActualSize.PointInside(m_pGUI.GetMousePos());
}
void CDropDown::Draw()
@ -486,7 +486,7 @@ void CDropDown::Draw()
GUI<int>::GetSetting(this, "cell_id", cell_id);
GUI<int>::GetSetting(this, "selected", selected);
m_pGUI->DrawSprite(sprite, cell_id, bz, m_CachedActualSize);
m_pGUI.DrawSprite(sprite, cell_id, bz, m_CachedActualSize);
if (button_width > 0.f)
{
@ -496,20 +496,20 @@ void CDropDown::Draw()
if (!enabled)
{
CGUISpriteInstance& sprite2_second = GUI<CGUISpriteInstance>::GetSetting(this, "sprite2_disabled");
m_pGUI->DrawSprite(sprite2_second || sprite2, cell_id, bz + 0.05f, rect);
m_pGUI.DrawSprite(sprite2_second || sprite2, cell_id, bz + 0.05f, rect);
}
else if (m_Open)
{
CGUISpriteInstance& sprite2_second = GUI<CGUISpriteInstance>::GetSetting(this, "sprite2_pressed");
m_pGUI->DrawSprite(sprite2_second || sprite2, cell_id, bz + 0.05f, rect);
m_pGUI.DrawSprite(sprite2_second || sprite2, cell_id, bz + 0.05f, rect);
}
else if (m_MouseHovering)
{
CGUISpriteInstance& sprite2_second = GUI<CGUISpriteInstance>::GetSetting(this, "sprite2_over");
m_pGUI->DrawSprite(sprite2_second || sprite2, cell_id, bz + 0.05f, rect);
m_pGUI.DrawSprite(sprite2_second || sprite2, cell_id, bz + 0.05f, rect);
}
else
m_pGUI->DrawSprite(sprite2, cell_id, bz + 0.05f, rect);
m_pGUI.DrawSprite(sprite2, cell_id, bz + 0.05f, rect);
}
if (selected != -1) // TODO: Maybe check validity completely?

View file

@ -50,7 +50,7 @@ class CDropDown : public CList
GUI_OBJECT(CDropDown)
public:
CDropDown(CGUI* pGUI);
CDropDown(CGUI& pGUI);
virtual ~CDropDown();
// virtual void ResetStates() { IGUIButtonBehavior::ResetStates(); }

View file

@ -261,7 +261,7 @@ void CGUI::TickObjects()
GUI<CStr>::RecurseObject(0, m_BaseObject,
&IGUIObject::ScriptEvent, action);
m_Tooltip.Update(FindObjectUnderMouse(), m_MousePos, this);
m_Tooltip.Update(FindObjectUnderMouse(), m_MousePos, *this);
}
void CGUI::SendEventToAll(const CStr& EventName)
@ -290,7 +290,7 @@ CGUI::CGUI(const shared_ptr<ScriptRuntime>& runtime)
GuiScriptingInit(*m_ScriptInterface);
m_ScriptInterface->LoadGlobalScripts();
m_BaseObject = new CGUIDummyObject(this);
m_BaseObject = new CGUIDummyObject(*this);
}
CGUI::~CGUI()
@ -304,7 +304,7 @@ CGUI::~CGUI()
IGUIObject* CGUI::ConstructObject(const CStr& str)
{
if (m_ObjectTypes.count(str) > 0)
return (*m_ObjectTypes[str])(this);
return (*m_ObjectTypes[str])(*this);
// Error reporting will be handled with the nullptr return.
return nullptr;
@ -358,7 +358,7 @@ void CGUI::DrawSprite(const CGUISpriteInstance& Sprite, int CellID, const float&
// TODO: Clipping?
Sprite.Draw(this, Rect, CellID, m_Sprites, Z);
Sprite.Draw(*this, Rect, CellID, m_Sprites, Z);
}
void CGUI::Destroy()
@ -740,7 +740,7 @@ void CGUI::Xeromyces_ReadObject(XMBElement Element, CXeromyces* pFile, IGUIObjec
CStr action = CStr(child.GetAttributes().GetNamedItem(attr_on));
object->RegisterScriptHandler(action.LowerCase(), code, this);
object->RegisterScriptHandler(action.LowerCase(), code, *this);
}
else if (element_name == elmt_repeat)
{
@ -1159,7 +1159,7 @@ void CGUI::Xeromyces_ReadEffects(XMBElement Element, CXeromyces* pFile, SGUIImag
if (attr_name == "add_color")
{
if (!effects.m_AddColor.ParseString(this, attr.Value, 0))
if (!effects.m_AddColor.ParseString(*this, attr.Value, 0))
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, attr.Value);
}
else if (attr_name == "grayscale")
@ -1316,7 +1316,7 @@ void CGUI::Xeromyces_ReadIcon(XMBElement Element, CXeromyces* pFile)
void CGUI::Xeromyces_ReadTooltip(XMBElement Element, CXeromyces* pFile)
{
IGUIObject* object = new CTooltip(this);
IGUIObject* object = new CTooltip(*this);
for (XMBAttribute attr : Element.GetAttributes())
{

View file

@ -73,7 +73,7 @@ class CGUI
private:
// Private typedefs
using ConstructObjectFunction = IGUIObject* (*)(CGUI*);
using ConstructObjectFunction = IGUIObject* (*)(CGUI&);
public:
CGUI(const shared_ptr<ScriptRuntime>& runtime);

View file

@ -21,11 +21,11 @@
#include "ps/CStr.h"
#include "gui/CGUI.h"
bool CGUIColor::ParseString(const CGUI* pGUI, const CStr& value, int defaultAlpha)
bool CGUIColor::ParseString(const CGUI& pGUI, const CStr& value, int defaultAlpha)
{
if (pGUI != nullptr && pGUI->HasPreDefinedColor(value))
if (pGUI.HasPreDefinedColor(value))
{
const CGUIColor& color = pGUI->GetPreDefinedColor(value);
const CGUIColor& color = pGUI.GetPreDefinedColor(value);
// Explicit copy assignment
r = color.r;

View file

@ -51,7 +51,7 @@ struct CGUIColor : CColor
/**
* Load color depending on current GUI page.
*/
bool ParseString(const CGUI* pGUI, const CStr& value, int defaultAlpha = 255);
bool ParseString(const CGUI& pGUI, const CStr& value, int defaultAlpha = 255);
/**
* Ensure that all users check for predefined colors.

View file

@ -24,7 +24,7 @@
#include "ps/CLogger.h"
CGUIScrollBarVertical::CGUIScrollBarVertical(CGUI* pGUI)
CGUIScrollBarVertical::CGUIScrollBarVertical(CGUI& pGUI)
: IGUIScrollBar(pGUI)
{
}
@ -61,7 +61,7 @@ void CGUIScrollBarVertical::Draw()
{
CRect outline = GetOuterRect();
m_pGUI->DrawSprite(
m_pGUI.DrawSprite(
GetStyle()->m_SpriteBackVertical,
0,
m_Z+0.1f,
@ -98,7 +98,7 @@ void CGUIScrollBarVertical::Draw()
else
button_bottom = &GetStyle()->m_SpriteButtonBottom;
m_pGUI->DrawSprite(
m_pGUI.DrawSprite(
*button_top,
0,
m_Z+0.2f,
@ -110,7 +110,7 @@ void CGUIScrollBarVertical::Draw()
)
);
m_pGUI->DrawSprite(
m_pGUI.DrawSprite(
*button_bottom,
0,
m_Z+0.2f,
@ -123,7 +123,7 @@ void CGUIScrollBarVertical::Draw()
);
}
m_pGUI->DrawSprite(
m_pGUI.DrawSprite(
GetStyle()->m_SpriteBarVertical,
0,
m_Z + 0.2f,

View file

@ -48,7 +48,7 @@ A GUI ScrollBar
class CGUIScrollBarVertical : public IGUIScrollBar
{
public:
CGUIScrollBarVertical(CGUI* pGUI);
CGUIScrollBarVertical(CGUI& pGUI);
virtual ~CGUIScrollBarVertical();
public:

View file

@ -30,7 +30,7 @@ void CGUISprite::AddImage(SGUIImage* image)
m_Images.push_back(image);
}
void CGUISpriteInstance::Draw(const CGUI* pGUI, const CRect& Size, int CellID, std::map<CStr, const CGUISprite*>& Sprites, float Z) const
void CGUISpriteInstance::Draw(CGUI& pGUI, const CRect& Size, int CellID, std::map<CStr, const CGUISprite*>& Sprites, float Z) const
{
if (m_CachedSize != Size || m_CachedCellID != CellID)
{

View file

@ -146,7 +146,7 @@ public:
CGUISpriteInstance();
CGUISpriteInstance(const CStr& SpriteName);
void Draw(const CGUI* pGUI, const CRect& Size, int CellID, std::map<CStr, const CGUISprite*>& Sprites, float Z) const;
void Draw(CGUI& pGUI, const CRect& Size, int CellID, std::map<CStr, const CGUISprite*>& Sprites, float Z) const;
/**
* Whether this Sprite has no texture name set.

View file

@ -49,7 +49,7 @@ void CGUIString::SFeedback::Reset()
m_NewLine = false;
}
void CGUIString::GenerateTextCall(const CGUI* pGUI, SFeedback& Feedback, CStrIntern DefaultFont, const int& from, const int& to, const bool FirstLine, const IGUIObject* pObject) const
void CGUIString::GenerateTextCall(const CGUI& pGUI, SFeedback& Feedback, CStrIntern DefaultFont, const int& from, const int& to, const bool FirstLine, const IGUIObject* pObject) const
{
// Reset width and height, because they will be determined with incrementation
// or comparisons.
@ -99,7 +99,7 @@ void CGUIString::GenerateTextCall(const CGUI* pGUI, SFeedback& Feedback, CStrInt
tag.m_TagType == TextChunk::Tag::TAG_ICON);
const std::string& path = utf8_from_wstring(tag.m_TagValue);
if (!pGUI->HasIcon(path))
if (!pGUI.HasIcon(path))
{
if (pObject)
LOGERROR("Trying to use an icon, imgleft or imgright-tag with an undefined icon (\"%s\").", path.c_str());
@ -126,7 +126,7 @@ void CGUIString::GenerateTextCall(const CGUI* pGUI, SFeedback& Feedback, CStrInt
CGUIText::SSpriteCall SpriteCall;
// Get Icon from icon database in pGUI
const SGUIIcon& icon = pGUI->GetIcon(path);
const SGUIIcon& icon = pGUI.GetIcon(path);
const CSize& size = icon.m_Size;
@ -146,7 +146,7 @@ void CGUIString::GenerateTextCall(const CGUI* pGUI, SFeedback& Feedback, CStrInt
// Displace the sprite
CSize displacement;
// Parse the value
if (!GUI<CSize>::ParseString(pGUI, tagAttrib.value, displacement))
if (!GUI<CSize>::ParseString(&pGUI, tagAttrib.value, displacement))
LOGERROR("Error parsing 'displace' value for tag [ICON]");
else
SpriteCall.m_Area += displacement;
@ -192,7 +192,7 @@ void CGUIString::GenerateTextCall(const CGUI* pGUI, SFeedback& Feedback, CStrInt
case TextChunk::Tag::TAG_COLOR:
TextCall.m_UseCustomColor = true;
if (!GUI<CGUIColor>::ParseString(pGUI, tag.m_TagValue, TextCall.m_Color) && pObject)
if (!GUI<CGUIColor>::ParseString(&pGUI, tag.m_TagValue, TextCall.m_Color) && pObject)
LOGERROR("Error parsing the value of a [color]-tag in GUI text when reading object \"%s\".", pObject->GetPresentableName().c_str());
break;
case TextChunk::Tag::TAG_FONT:

View file

@ -193,7 +193,7 @@ public:
* to make several GenerateTextCall in different phases,
* it avoids duplicates.
*/
void GenerateTextCall(const CGUI* pGUI, SFeedback& Feedback, CStrIntern DefaultFont, const int& from, const int& to, const bool FirstLine, const IGUIObject* pObject = NULL) const;
void GenerateTextCall(const CGUI& pGUI, SFeedback& Feedback, CStrIntern DefaultFont, const int& from, const int& to, const bool FirstLine, const IGUIObject* pObject = NULL) const;
/**
* Words

View file

@ -58,7 +58,7 @@ void SGenerateTextImage::SetupSpriteCall(
m_Indentation = Size.cx + BufferZone * 2;
}
CGUIText::CGUIText(const CGUI* pGUI, const CGUIString& string, const CStrW& FontW, const float Width, const float BufferZone, const IGUIObject* pObject)
CGUIText::CGUIText(const CGUI& pGUI, const CGUIString& string, const CStrW& FontW, const float Width, const float BufferZone, const IGUIObject* pObject)
{
if (string.m_Words.empty())
return;
@ -113,7 +113,7 @@ CGUIText::CGUIText(const CGUI* pGUI, const CGUIString& string, const CStrW& Font
// Loop through our images queues, to see if images have been added.
void CGUIText::SetupSpriteCalls(
const CGUI* pGUI,
const CGUI& pGUI,
const std::array<std::vector<CStr>, 2>& FeedbackImages,
const float y,
const float Width,
@ -142,7 +142,7 @@ void CGUIText::SetupSpriteCalls(
else
_y = y;
const SGUIIcon& icon = pGUI->GetIcon(imgname);
const SGUIIcon& icon = pGUI.GetIcon(imgname);
Image.SetupSpriteCall(j == CGUIString::SFeedback::Left, SpriteCall, Width, _y, icon.m_Size, icon.m_SpriteName, BufferZone, icon.m_CellID);
// Check if image is the lowest thing.
@ -161,7 +161,7 @@ void CGUIText::SetupSpriteCalls(
// if all characters processed, will actually be involved
// in that line.
void CGUIText::ComputeLineSize(
const CGUI* pGUI,
const CGUI& pGUI,
const CGUIString& string,
const CStrIntern& Font,
const bool FirstLine,
@ -210,7 +210,7 @@ void CGUIText::ComputeLineSize(
}
bool CGUIText::ProcessLine(
const CGUI* pGUI,
const CGUI& pGUI,
const CGUIString& string,
const CStrIntern& Font,
const IGUIObject* pObject,
@ -335,7 +335,7 @@ float CGUIText::GetLineOffset(
}
bool CGUIText::AssembleCalls(
const CGUI* pGUI,
const CGUI& pGUI,
const CGUIString& string,
const CStrIntern& Font,
const IGUIObject* pObject,
@ -425,7 +425,7 @@ bool CGUIText::AssembleCalls(
return done;
}
void CGUIText::Draw(CGUI* pGUI, const CGUIColor& DefaultColor, const CPos& pos, const float z, const CRect& clipping) const
void CGUIText::Draw(CGUI& pGUI, const CGUIColor& DefaultColor, const CPos& pos, const float z, const CRect& clipping) const
{
CShaderTechniquePtr tech = g_Renderer.GetShaderManager().LoadEffect(str_gui_text);
@ -460,7 +460,7 @@ void CGUIText::Draw(CGUI* pGUI, const CGUIColor& DefaultColor, const CPos& pos,
textRenderer.Render();
for (const SSpriteCall& sc : m_SpriteCalls)
pGUI->DrawSprite(sc.m_Sprite, sc.m_CellID, z, sc.m_Area + pos);
pGUI.DrawSprite(sc.m_Sprite, sc.m_CellID, z, sc.m_Area + pos);
if (isClipped)
glDisable(GL_SCISSOR_TEST);

View file

@ -165,12 +165,12 @@ public:
* @param pObject Optional parameter for error output. Used *only* if error parsing fails,
* and we need to be able to output which object the error occurred in to aid the user.
*/
CGUIText(const CGUI* pGUI, const CGUIString& string, const CStrW& FontW, const float Width, const float BufferZone, const IGUIObject* pObject = nullptr);
CGUIText(const CGUI& pGUI, const CGUIString& string, const CStrW& FontW, const float Width, const float BufferZone, const IGUIObject* pObject = nullptr);
/**
* Draw this CGUIText object
*/
void Draw(CGUI* pGUI, const CGUIColor& DefaultColor, const CPos& pos, const float z, const CRect& clipping) const;
void Draw(CGUI& pGUI, const CGUIColor& DefaultColor, const CPos& pos, const float z, const CRect& clipping) const;
const CSize& GetSize() const { return m_Size; }
@ -180,7 +180,7 @@ public:
// Helper functions of the constructor
bool ProcessLine(
const CGUI* pGUI,
const CGUI& pGUI,
const CGUIString& string,
const CStrIntern& Font,
const IGUIObject* pObject,
@ -196,7 +196,7 @@ public:
int& from);
void SetupSpriteCalls(
const CGUI* pGUI,
const CGUI& pGUI,
const std::array<std::vector<CStr>, 2>& FeedbackImages,
const float y,
const float Width,
@ -220,7 +220,7 @@ public:
float& width_range_to) const;
void ComputeLineSize(
const CGUI* pGUI,
const CGUI& pGUI,
const CGUIString& string,
const CStrIntern& Font,
const bool FirstLine,
@ -232,7 +232,7 @@ public:
CSize& line_size) const;
bool AssembleCalls(
const CGUI* pGUI,
const CGUI& pGUI,
const CGUIString& string,
const CStrIntern& Font,
const IGUIObject* pObject,

View file

@ -23,7 +23,7 @@
#include "lib/ogl.h"
CImage::CImage(CGUI* pGUI)
CImage::CImage(CGUI& pGUI)
: IGUIObject(pGUI)
{
AddSetting<CGUISpriteInstance>("sprite");
@ -44,5 +44,5 @@ void CImage::Draw()
GUI<int>::GetSetting(this, "cell_id", cell_id);
CGUISpriteInstance& sprite = GUI<CGUISpriteInstance>::GetSetting(this, "sprite");
m_pGUI->DrawSprite(sprite, cell_id, bz, m_CachedActualSize);
m_pGUI.DrawSprite(sprite, cell_id, bz, m_CachedActualSize);
}

View file

@ -37,7 +37,7 @@ class CImage : public IGUIObject
GUI_OBJECT(CImage)
public:
CImage(CGUI* pGUI);
CImage(CGUI& pGUI);
virtual ~CImage();
protected:

View file

@ -39,7 +39,7 @@
extern int g_yres;
CInput::CInput(CGUI* pGUI)
CInput::CInput(CGUI& pGUI)
: IGUIObject(pGUI), IGUIScrollBarOwner(pGUI),
m_iBufferPos(-1), m_iBufferPos_Tail(-1), m_SelectingText(false), m_HorizontalScroll(0.f),
m_PrevTime(0.0), m_CursorVisState(true), m_CursorBlinkRate(0.5), m_ComposingText(false),
@ -910,7 +910,7 @@ void CInput::HandleMessage(SGUIMessage& Message)
// Check if we're selecting the scrollbar
if (GetScrollBar(0).GetStyle() && multiline)
{
if (m_pGUI->GetMousePos().x > m_CachedActualSize.right - GetScrollBar(0).GetStyle()->m_Width)
if (m_pGUI.GetMousePos().x > m_CachedActualSize.right - GetScrollBar(0).GetStyle()->m_Width)
break;
}
@ -1197,7 +1197,7 @@ void CInput::Draw()
int cell_id;
GUI<int>::GetSetting(this, "cell_id", cell_id);
m_pGUI->DrawSprite(sprite, cell_id, bz, m_CachedActualSize);
m_pGUI.DrawSprite(sprite, cell_id, bz, m_CachedActualSize);
float scroll = 0.f;
if (scrollbar && multiline)
@ -1386,7 +1386,7 @@ void CInput::Draw()
rect.right = m_CachedActualSize.right;
}
m_pGUI->DrawSprite(sprite_selectarea, cell_id, bz+0.05f, rect);
m_pGUI.DrawSprite(sprite_selectarea, cell_id, bz + 0.05f, rect);
}
if (i < (int)it->m_ListOfX.size())
@ -1892,7 +1892,7 @@ int CInput::GetMouseHoveringTextPosition() const
std::list<SRow>::const_iterator current = m_CharacterPositions.begin();
CPos mouse = m_pGUI->GetMousePos();
CPos mouse = m_pGUI.GetMousePos();
if (multiline)
{

View file

@ -38,7 +38,7 @@ protected: // forwards
struct SRow;
public:
CInput(CGUI* pGUI);
CInput(CGUI& pGUI);
virtual ~CInput();
/**

View file

@ -27,7 +27,7 @@
#include "soundmanager/ISoundManager.h"
CList::CList(CGUI* pGUI)
CList::CList(CGUI& pGUI)
: IGUIObject(pGUI), IGUITextOwner(pGUI), IGUIScrollBarOwner(pGUI),
m_Modified(false), m_PrevSelectedItem(-1), m_LastItemClickTime(0)
{
@ -325,7 +325,6 @@ void CList::DrawList(const int& selected, const CStr& _sprite, const CStr& _spri
if (scrollbar)
IGUIScrollBarOwner::Draw();
if (GetGUI())
{
CRect rect = GetListRect();
@ -333,7 +332,7 @@ void CList::DrawList(const int& selected, const CStr& _sprite, const CStr& _spri
CGUISpriteInstance& sprite_selectarea = GUI<CGUISpriteInstance>::GetSetting(this, _sprite_selected);
const int cell_id = GUI<int>::GetSetting(this, "cell_id");
m_pGUI->DrawSprite(sprite, cell_id, bz, rect);
m_pGUI.DrawSprite(sprite, cell_id, bz, rect);
float scroll = 0.f;
if (scrollbar)
@ -365,7 +364,7 @@ void CList::DrawList(const int& selected, const CStr& _sprite, const CStr& _spri
rect_sel.left = GetScrollBar(0).GetOuterRect().right;
}
m_pGUI->DrawSprite(sprite_selectarea, cell_id, bz+0.05f, rect_sel);
m_pGUI.DrawSprite(sprite_selectarea, cell_id, bz+0.05f, rect_sel);
}
}
@ -506,7 +505,7 @@ int CList::GetHoveredItem()
const float scroll = scrollbar ? GetScrollBar(0).GetPos() : 0.f;
const CRect& rect = GetListRect();
CPos mouse = m_pGUI->GetMousePos();
CPos mouse = m_pGUI.GetMousePos();
mouse.y += scroll;
// Mouse is over scrollbar

View file

@ -34,7 +34,7 @@ class CList : public IGUIScrollBarOwner, public IGUITextOwner
GUI_OBJECT(CList)
public:
CList(CGUI* pGUI);
CList(CGUI& pGUI);
virtual ~CList();
/**

View file

@ -27,7 +27,7 @@
const float SORT_SPRITE_DIM = 16.0f;
const CPos COLUMN_SHIFT = CPos(0, 4);
COList::COList(CGUI* pGUI)
COList::COList(CGUI& pGUI)
: CList(pGUI), IGUIObject(pGUI)
{
AddSetting<CGUISpriteInstance>("sprite_heading");
@ -144,7 +144,7 @@ void COList::HandleMessage(SGUIMessage& Message)
if (!sortable)
return;
const CPos& mouse = m_pGUI->GetMousePos();
const CPos& mouse = m_pGUI.GetMousePos();
if (!m_CachedActualSize.PointInside(mouse))
return;
@ -223,7 +223,7 @@ bool COList::HandleAdditionalChildren(const XMBElement& child, CXeromyces* pFile
if (attr_name == "color")
{
if (!GUI<CGUIColor>::ParseString(m_pGUI, attr_value.FromUTF8(), column.m_TextColor))
if (!GUI<CGUIColor>::ParseString(&m_pGUI, attr_value.FromUTF8(), column.m_TextColor))
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name.c_str(), attr_value.c_str());
}
else if (attr_name == "id")
@ -232,13 +232,13 @@ bool COList::HandleAdditionalChildren(const XMBElement& child, CXeromyces* pFile
}
else if (attr_name == "hidden")
{
if (!GUI<bool>::ParseString(m_pGUI, attr_value.FromUTF8(), hidden))
if (!GUI<bool>::ParseString(&m_pGUI, attr_value.FromUTF8(), hidden))
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name.c_str(), attr_value.c_str());
}
else if (attr_name == "width")
{
float width;
if (!GUI<float>::ParseString(m_pGUI, attr_value.FromUTF8(), width))
if (!GUI<float>::ParseString(&m_pGUI, attr_value.FromUTF8(), width))
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name.c_str(), attr_value.c_str());
else
{
@ -316,7 +316,7 @@ void COList::DrawList(const int& selected, const CStr& _sprite, const CStr& _spr
int cell_id;
GUI<int>::GetSetting(this, "cell_id", cell_id);
m_pGUI->DrawSprite(sprite, cell_id, bz, rect);
m_pGUI.DrawSprite(sprite, cell_id, bz, rect);
float scroll = 0.f;
if (scrollbar)
@ -352,7 +352,7 @@ void COList::DrawList(const int& selected, const CStr& _sprite, const CStr& _spr
}
// Draw item selection
m_pGUI->DrawSprite(sprite_selectarea, cell_id, bz+0.05f, rect_sel);
m_pGUI.DrawSprite(sprite_selectarea, cell_id, bz+0.05f, rect_sel);
}
}
@ -360,7 +360,7 @@ void COList::DrawList(const int& selected, const CStr& _sprite, const CStr& _spr
CGUISpriteInstance& sprite_heading = GUI<CGUISpriteInstance>::GetSetting(this, "sprite_heading");
CRect rect_head(m_CachedActualSize.left, m_CachedActualSize.top, m_CachedActualSize.right,
m_CachedActualSize.top + m_HeadingHeight);
m_pGUI->DrawSprite(sprite_heading, cell_id, bz, rect_head);
m_pGUI.DrawSprite(sprite_heading, cell_id, bz, rect_head);
// Draw column headers
bool sortable;
@ -407,7 +407,7 @@ void COList::DrawList(const int& selected, const CStr& _sprite, const CStr& _spr
spriteName = "sprite_not_sorted";
CGUISpriteInstance& sprite = GUI<CGUISpriteInstance>::GetSetting(this, spriteName);
m_pGUI->DrawSprite(sprite, cell_id, bz + 0.1f, CRect(leftTopCorner + CPos(width - SORT_SPRITE_DIM, 0), leftTopCorner + CPos(width, SORT_SPRITE_DIM)));
m_pGUI.DrawSprite(sprite, cell_id, bz + 0.1f, CRect(leftTopCorner + CPos(width - SORT_SPRITE_DIM, 0), leftTopCorner + CPos(width, SORT_SPRITE_DIM)));
}
// Draw column header text

View file

@ -49,7 +49,7 @@ class COList : public CList
GUI_OBJECT(COList)
public:
COList(CGUI* pGUI);
COList(CGUI& pGUI);
protected:
void SetupText();

View file

@ -22,7 +22,7 @@
#include "lib/ogl.h"
CProgressBar::CProgressBar(CGUI* pGUI)
CProgressBar::CProgressBar(CGUI& pGUI)
: IGUIObject(pGUI)
{
AddSetting<CGUISpriteInstance>("sprite_background");
@ -73,10 +73,10 @@ void CProgressBar::Draw()
float value = 0;
GUI<float>::GetSetting(this, "caption", value);
m_pGUI->DrawSprite(sprite_background, cell_id, bz, m_CachedActualSize);
m_pGUI.DrawSprite(sprite_background, cell_id, bz, m_CachedActualSize);
// Get size of bar (notice it is drawn slightly closer, to appear above the background)
CRect bar_size(m_CachedActualSize.left, m_CachedActualSize.top,
m_CachedActualSize.left+m_CachedActualSize.GetWidth()*(value/100.f), m_CachedActualSize.bottom);
m_pGUI->DrawSprite(sprite_bar, cell_id, bz+0.01f, bar_size);
m_pGUI.DrawSprite(sprite_bar, cell_id, bz+0.01f, bar_size);
}

View file

@ -30,7 +30,7 @@ class CProgressBar : public IGUIObject
GUI_OBJECT(CProgressBar)
public:
CProgressBar(CGUI* pGUI);
CProgressBar(CGUI& pGUI);
virtual ~CProgressBar();
protected:

View file

@ -21,7 +21,7 @@
#include "GUI.h"
CRadioButton::CRadioButton(CGUI* pGUI)
CRadioButton::CRadioButton(CGUI& pGUI)
: CCheckBox(pGUI), IGUIObject(pGUI)
{
}

View file

@ -32,7 +32,7 @@ class CRadioButton : public CCheckBox
GUI_OBJECT(CRadioButton)
public:
CRadioButton(CGUI* pGUI);
CRadioButton(CGUI& pGUI);
/**
* @see IGUIObject#HandleMessage()

View file

@ -21,7 +21,7 @@
#include "lib/ogl.h"
#include "ps/CLogger.h"
CSlider::CSlider(CGUI* pGUI)
CSlider::CSlider(CGUI& pGUI)
: IGUIObject(pGUI), m_IsPressed(false), m_ButtonSide(0)
{
AddSetting<float>("value");
@ -83,7 +83,7 @@ void CSlider::HandleMessage(SGUIMessage& Message)
}
case GUIM_MOUSE_PRESS_LEFT:
{
m_Mouse = m_pGUI->GetMousePos();
m_Mouse = m_pGUI.GetMousePos();
m_IsPressed = true;
IncrementallyChangeValue((m_Mouse.x - GetButtonRect().CenterPoint().x) * GetSliderRatio());
@ -100,8 +100,8 @@ void CSlider::HandleMessage(SGUIMessage& Message)
m_IsPressed = false;
if (m_IsPressed)
{
float difference = float(m_pGUI->GetMousePos().x - m_Mouse.x) * GetSliderRatio();
m_Mouse = m_pGUI->GetMousePos();
float difference = float(m_pGUI.GetMousePos().x - m_Mouse.x) * GetSliderRatio();
m_Mouse = m_pGUI.GetMousePos();
IncrementallyChangeValue(difference);
}
break;
@ -123,8 +123,8 @@ void CSlider::Draw()
slider_line.left += m_ButtonSide / 2.0f;
slider_line.right -= m_ButtonSide / 2.0f;
float bz = GetBufferedZ();
m_pGUI->DrawSprite(sprite, cell_id, bz, slider_line);
m_pGUI->DrawSprite(sprite_button, cell_id, bz, GetButtonRect());
m_pGUI.DrawSprite(sprite, cell_id, bz, slider_line);
m_pGUI.DrawSprite(sprite_button, cell_id, bz, GetButtonRect());
}
void CSlider::UpdateValue()

View file

@ -26,7 +26,7 @@ class CSlider : public IGUIObject
GUI_OBJECT(CSlider)
public:
CSlider(CGUI* pGUI);
CSlider(CGUI& pGUI);
virtual ~CSlider();
protected:

View file

@ -23,7 +23,7 @@
#include "gui/GUI.h"
#include "lib/ogl.h"
CText::CText(CGUI* pGUI)
CText::CText(CGUI& pGUI)
: IGUIObject(pGUI), IGUIScrollBarOwner(pGUI), IGUITextOwner(pGUI)
{
AddSetting<float>("buffer_zone");
@ -202,7 +202,7 @@ void CText::Draw()
GUI<int>::GetSetting(this, "cell_id", cell_id);
GUI<bool>::GetSetting(this, "clip", clip);
m_pGUI->DrawSprite(sprite, cell_id, bz, m_CachedActualSize);
m_pGUI.DrawSprite(sprite, cell_id, bz, m_CachedActualSize);
float scroll = 0.f;
if (scrollbar)
@ -244,7 +244,7 @@ bool CText::MouseOverIcon()
for (const CGUIText::SSpriteCall& spritecall : guitext.GetSpriteCalls())
{
// Check mouse over sprite
if (!spritecall.m_Area.PointInside(m_pGUI->GetMousePos() - m_CachedActualSize.TopLeft()))
if (!spritecall.m_Area.PointInside(m_pGUI.GetMousePos() - m_CachedActualSize.TopLeft()))
continue;
// If tooltip exists, set the property

View file

@ -30,7 +30,7 @@ class CText : public IGUIScrollBarOwner, public IGUITextOwner
GUI_OBJECT(CText)
public:
CText(CGUI* pGUI);
CText(CGUI& pGUI);
virtual ~CText();
/**

View file

@ -22,7 +22,7 @@
#include <algorithm>
CTooltip::CTooltip(CGUI* pGUI)
CTooltip::CTooltip(CGUI& pGUI)
: IGUIObject(pGUI), IGUITextOwner(pGUI)
{
// If the tooltip is an object by itself:
@ -87,7 +87,7 @@ void CTooltip::SetupText()
GUI<bool>::GetSetting(this, "independent", independent);
if (independent)
mousepos = m_pGUI->GetMousePos();
mousepos = m_pGUI.GetMousePos();
else
GUI<CPos>::GetSetting(this, "_mousepos", mousepos);
@ -158,7 +158,7 @@ void CTooltip::Draw()
m_GeneratedTextsValid = true;
}
m_pGUI->DrawSprite(sprite, 0, z, m_CachedActualSize);
m_pGUI.DrawSprite(sprite, 0, z, m_CachedActualSize);
const CGUIColor& color = GUI<CGUIColor>::GetSetting(this, "textcolor");
DrawText(0, color, m_CachedActualSize.TopLeft(), z+0.1f);

View file

@ -28,7 +28,7 @@ class CTooltip : public IGUITextOwner
GUI_OBJECT(CTooltip)
public:
CTooltip(CGUI* pGUI);
CTooltip(CGUI& pGUI);
virtual ~CTooltip();
protected:

View file

@ -59,7 +59,7 @@ DrawCalls& DrawCalls::operator=(const DrawCalls&)
}
void GUIRenderer::UpdateDrawCallCache(const CGUI* pGUI, DrawCalls& Calls, const CStr& SpriteName, const CRect& Size, int CellID, std::map<CStr, const CGUISprite*>& Sprites)
void GUIRenderer::UpdateDrawCallCache(const CGUI& pGUI, DrawCalls& Calls, const CStr& SpriteName, const CRect& Size, int CellID, std::map<CStr, const CGUISprite*>& Sprites)
{
// This is called only when something has changed (like the size of the
// sprite), so it doesn't need to be particularly efficient.
@ -158,7 +158,7 @@ void GUIRenderer::UpdateDrawCallCache(const CGUI* pGUI, DrawCalls& Calls, const
color = &Image->m_BackColor;
// Check color is valid
if (!GUI<CGUIColor>::ParseString(pGUI, value, *color))
if (!GUI<CGUIColor>::ParseString(&pGUI, value, *color))
{
LOGERROR("GUI: Error parsing sprite 'color' (\"%s\")", utf8_from_wstring(value));
return;

View file

@ -67,7 +67,7 @@ namespace GUIRenderer
DrawCalls& operator=(const DrawCalls&);
};
void UpdateDrawCallCache(const CGUI* pGUI, DrawCalls& Calls, const CStr& SpriteName, const CRect& Size, int CellID, std::map<CStr, const CGUISprite*>& Sprites);
void UpdateDrawCallCache(const CGUI& pGUI, DrawCalls& Calls, const CStr& SpriteName, const CRect& Size, int CellID, std::map<CStr, const CGUISprite*>& Sprites);
void Draw(DrawCalls& Calls, float Z);
}

View file

@ -103,7 +103,7 @@ bool GUI<CClientArea>::ParseString(const CGUI* UNUSED(pGUI), const CStrW& Value,
template <>
bool GUI<CGUIColor>::ParseString(const CGUI* pGUI, const CStrW& Value, CGUIColor& Output)
{
return Output.ParseString(pGUI, Value.ToUTF8());
return Output.ParseString(*pGUI, Value.ToUTF8());
}
template <>

View file

@ -113,14 +113,14 @@ bool GUITooltip::GetTooltip(IGUIObject* obj, CStr& style)
return false;
}
void GUITooltip::ShowTooltip(IGUIObject* obj, const CPos& pos, const CStr& style, CGUI* gui)
void GUITooltip::ShowTooltip(IGUIObject* obj, const CPos& pos, const CStr& style, CGUI& pGUI)
{
ENSURE(obj);
if (style.empty())
return;
IGUIObject* tooltipobj = gui->FindObjectByName("__tooltip_"+style);
IGUIObject* tooltipobj = pGUI.FindObjectByName("__tooltip_" + style);
if (!tooltipobj)
{
LOGERROR("Cannot find tooltip named '%s'", style.c_str());
@ -133,7 +133,7 @@ void GUITooltip::ShowTooltip(IGUIObject* obj, const CPos& pos, const CStr& style
if (GUI<CStr>::GetSetting(tooltipobj, "use_object", usedObjectName) == PSRETURN_OK &&
!usedObjectName.empty())
{
usedobj = gui->FindObjectByName(usedObjectName);
usedobj = pGUI.FindObjectByName(usedObjectName);
if (!usedobj)
{
LOGERROR("Cannot find object named '%s' used by tooltip '%s'", usedObjectName.c_str(), style.c_str());
@ -161,12 +161,12 @@ void GUITooltip::ShowTooltip(IGUIObject* obj, const CPos& pos, const CStr& style
usedobj->HandleMessage(msg);
}
void GUITooltip::HideTooltip(const CStr& style, CGUI* gui)
void GUITooltip::HideTooltip(const CStr& style, CGUI& pGUI)
{
if (style.empty())
return;
IGUIObject* tooltipobj = gui->FindObjectByName("__tooltip_"+style);
IGUIObject* tooltipobj = pGUI.FindObjectByName("__tooltip_" + style);
if (!tooltipobj)
{
LOGERROR("Cannot find tooltip named '%s'", style.c_str());
@ -177,7 +177,7 @@ void GUITooltip::HideTooltip(const CStr& style, CGUI* gui)
if (GUI<CStr>::GetSetting(tooltipobj, "use_object", usedObjectName) == PSRETURN_OK &&
!usedObjectName.empty())
{
IGUIObject* usedobj = gui->FindObjectByName(usedObjectName);
IGUIObject* usedobj = pGUI.FindObjectByName(usedObjectName);
if (!usedobj)
{
LOGERROR("Cannot find object named '%s' used by tooltip '%s'", usedObjectName.c_str(), style.c_str());
@ -198,11 +198,11 @@ void GUITooltip::HideTooltip(const CStr& style, CGUI* gui)
GUI<bool>::SetSetting(tooltipobj, "hidden", true);
}
static int GetTooltipDelay(const CStr& style, CGUI* gui)
static int GetTooltipDelay(const CStr& style, CGUI& pGUI)
{
int delay = 500; // default value (in msec)
IGUIObject* tooltipobj = gui->FindObjectByName("__tooltip_"+style);
IGUIObject* tooltipobj = pGUI.FindObjectByName("__tooltip_" + style);
if (!tooltipobj)
{
LOGERROR("Cannot find tooltip object named '%s'", style.c_str());
@ -212,7 +212,7 @@ static int GetTooltipDelay(const CStr& style, CGUI* gui)
return delay;
}
void GUITooltip::Update(IGUIObject* Nearest, const CPos& MousePos, CGUI* GUI)
void GUITooltip::Update(IGUIObject* Nearest, const CPos& MousePos, CGUI& GUI)
{
// Called once per frame, so efficiency isn't vital
double now = timer_Time();

View file

@ -30,12 +30,12 @@ public:
NONCOPYABLE(GUITooltip);
GUITooltip();
void Update(IGUIObject* Nearest, const CPos& MousePos, CGUI* GUI);
void Update(IGUIObject* Nearest, const CPos& MousePos, CGUI& GUI);
private:
void ShowTooltip(IGUIObject* obj, const CPos& pos, const CStr& style, CGUI* gui);
void HideTooltip(const CStr& style, CGUI* gui);
void ShowTooltip(IGUIObject* obj, const CPos& pos, const CStr& style, CGUI& pGUI);
void HideTooltip(const CStr& style, CGUI& pGUI);
bool GetTooltip(IGUIObject* obj, CStr& style);
int m_State;

View file

@ -49,7 +49,7 @@ class IGUIObject;
// Setup an object's ConstructObject function
#define GUI_OBJECT(obj) \
public: \
static IGUIObject* ConstructObject(CGUI* pGUI) \
static IGUIObject* ConstructObject(CGUI& pGUI) \
{ return new obj(pGUI); }

View file

@ -34,7 +34,7 @@ bool CGUISetting<T>::FromString(const CStrW& Value, const bool& SkipMessage)
{
T settingValue;
if (!GUI<T>::ParseString(m_pObject.GetGUI(), Value, settingValue))
if (!GUI<T>::ParseString(&m_pObject.GetGUI(), Value, settingValue))
return false;
GUI<T>::SetSetting(&m_pObject, m_Name, settingValue, SkipMessage);

View file

@ -22,7 +22,7 @@
#include "ps/CLogger.h"
#include "soundmanager/ISoundManager.h"
IGUIButtonBehavior::IGUIButtonBehavior(CGUI* pGUI)
IGUIButtonBehavior::IGUIButtonBehavior(CGUI& pGUI)
: IGUIObject(pGUI), m_Pressed(false)
{
}
@ -160,14 +160,14 @@ void IGUIButtonBehavior::DrawButton(const CRect& rect, const float& z, CGUISprit
GUI<bool>::GetSetting(this, "enabled", enabled);
if (!enabled)
m_pGUI->DrawSprite(sprite_disabled || sprite, cell_id, z, rect);
m_pGUI.DrawSprite(sprite_disabled || sprite, cell_id, z, rect);
else if (m_MouseHovering)
{
if (m_Pressed)
m_pGUI->DrawSprite(sprite_pressed || sprite, cell_id, z, rect);
m_pGUI.DrawSprite(sprite_pressed || sprite, cell_id, z, rect);
else
m_pGUI->DrawSprite(sprite_over || sprite, cell_id, z, rect);
m_pGUI.DrawSprite(sprite_over || sprite, cell_id, z, rect);
}
else
m_pGUI->DrawSprite(sprite, cell_id, z, rect);
m_pGUI.DrawSprite(sprite, cell_id, z, rect);
}

View file

@ -49,7 +49,7 @@ class CGUISpriteInstance;
class IGUIButtonBehavior : virtual public IGUIObject
{
public:
IGUIButtonBehavior(CGUI* pGUI);
IGUIButtonBehavior(CGUI& pGUI);
virtual ~IGUIButtonBehavior();
/**

View file

@ -27,7 +27,7 @@
#include "ps/Profile.h"
#include "scriptinterface/ScriptInterface.h"
IGUIObject::IGUIObject(CGUI* pGUI)
IGUIObject::IGUIObject(CGUI& pGUI)
: m_pGUI(pGUI), m_pParent(NULL), m_MouseHovering(false), m_LastClickTime()
{
AddSetting<bool>("enabled");
@ -55,7 +55,7 @@ IGUIObject::~IGUIObject()
delete p.second;
if (!m_ScriptHandlers.empty())
JS_RemoveExtraGCRootsTracer(m_pGUI->GetScriptInterface()->GetJSRuntime(), Trace, this);
JS_RemoveExtraGCRootsTracer(m_pGUI.GetScriptInterface()->GetJSRuntime(), Trace, this);
}
//-------------------------------------------------------------------
@ -76,7 +76,7 @@ void IGUIObject::AddChild(IGUIObject* pChild)
// Atomic function, if it fails it won't
// have changed anything
//UpdateObjects();
pChild->GetGUI()->UpdateObjects();
pChild->GetGUI().UpdateObjects();
}
catch (PSERROR_GUI&)
{
@ -130,7 +130,7 @@ void IGUIObject::AddSetting(const CStr& Name)
bool IGUIObject::MouseOver()
{
return m_CachedActualSize.PointInside(m_pGUI->GetMousePos());
return m_CachedActualSize.PointInside(m_pGUI.GetMousePos());
}
bool IGUIObject::MouseOverIcon()
@ -301,11 +301,11 @@ float IGUIObject::GetBufferedZ() const
}
}
void IGUIObject::RegisterScriptHandler(const CStr& Action, const CStr& Code, CGUI* pGUI)
void IGUIObject::RegisterScriptHandler(const CStr& Action, const CStr& Code, CGUI& pGUI)
{
JSContext* cx = pGUI->GetScriptInterface()->GetContext();
JSContext* cx = pGUI.GetScriptInterface()->GetContext();
JSAutoRequest rq(cx);
JS::RootedValue globalVal(cx, pGUI->GetGlobalObject());
JS::RootedValue globalVal(cx, pGUI.GetGlobalObject());
JS::RootedObject globalObj(cx, &globalVal.toObject());
const int paramCount = 1;
@ -337,10 +337,8 @@ void IGUIObject::RegisterScriptHandler(const CStr& Action, const CStr& Code, CGU
void IGUIObject::SetScriptHandler(const CStr& Action, JS::HandleObject Function)
{
ENSURE(m_pGUI && "A GUI must be associated with the GUIObject before adding ScriptHandlers!");
if (m_ScriptHandlers.empty())
JS_AddExtraGCRootsTracer(m_pGUI->GetScriptInterface()->GetJSRuntime(), Trace, this);
JS_AddExtraGCRootsTracer(m_pGUI.GetScriptInterface()->GetJSRuntime(), Trace, this);
m_ScriptHandlers[Action] = JS::Heap<JSObject*>(Function);
}
@ -365,19 +363,19 @@ void IGUIObject::ScriptEvent(const CStr& Action)
if (it == m_ScriptHandlers.end())
return;
JSContext* cx = m_pGUI->GetScriptInterface()->GetContext();
JSContext* cx = m_pGUI.GetScriptInterface()->GetContext();
JSAutoRequest rq(cx);
// Set up the 'mouse' parameter
JS::RootedValue mouse(cx);
const CPos& mousePos = m_pGUI->GetMousePos();
const CPos& mousePos = m_pGUI.GetMousePos();
m_pGUI->GetScriptInterface()->CreateObject(
m_pGUI.GetScriptInterface()->CreateObject(
&mouse,
"x", mousePos.x,
"y", mousePos.y,
"buttons", m_pGUI->GetMouseButtons());
"buttons", m_pGUI.GetMouseButtons());
JS::AutoValueVector paramData(cx);
paramData.append(mouse);
@ -398,7 +396,7 @@ void IGUIObject::ScriptEvent(const CStr& Action, JS::HandleValueArray paramData)
if (it == m_ScriptHandlers.end())
return;
JSContext* cx = m_pGUI->GetScriptInterface()->GetContext();
JSContext* cx = m_pGUI.GetScriptInterface()->GetContext();
JSAutoRequest rq(cx);
JS::RootedObject obj(cx, GetJSObject());
JS::RootedValue handlerVal(cx, JS::ObjectValue(*it->second));
@ -410,10 +408,10 @@ void IGUIObject::ScriptEvent(const CStr& Action, JS::HandleValueArray paramData)
void IGUIObject::CreateJSObject()
{
JSContext* cx = m_pGUI->GetScriptInterface()->GetContext();
JSContext* cx = m_pGUI.GetScriptInterface()->GetContext();
JSAutoRequest rq(cx);
m_JSObject.init(cx, m_pGUI->GetScriptInterface()->CreateCustomObject("GUIObject"));
m_JSObject.init(cx, m_pGUI.GetScriptInterface()->CreateCustomObject("GUIObject"));
JS_SetPrivate(m_JSObject.get(), this);
}
@ -442,17 +440,17 @@ CStr IGUIObject::GetPresentableName() const
void IGUIObject::SetFocus()
{
m_pGUI->SetFocusedObject(this);
m_pGUI.SetFocusedObject(this);
}
bool IGUIObject::IsFocused() const
{
return m_pGUI->GetFocusedObject() == this;
return m_pGUI.GetFocusedObject() == this;
}
bool IGUIObject::IsRootObject() const
{
return m_pParent == m_pGUI->GetBaseObject();
return m_pParent == m_pGUI.GetBaseObject();
}
void IGUIObject::TraceMember(JSTracer* trc)

View file

@ -62,7 +62,7 @@ class IGUIObject
public:
NONCOPYABLE(IGUIObject);
IGUIObject(CGUI* pGUI);
IGUIObject(CGUI& pGUI);
virtual ~IGUIObject();
/**
@ -185,7 +185,7 @@ public:
* @param Code Javascript code to execute when the action occurs
* @param pGUI GUI instance to associate the script with
*/
void RegisterScriptHandler(const CStr& Action, const CStr& Code, CGUI* pGUI);
void RegisterScriptHandler(const CStr& Action, const CStr& Code, CGUI& pGUI);
/**
* Creates the JS Object representing this page upon first use.
@ -289,8 +289,8 @@ protected:
public:
CGUI* GetGUI() { return m_pGUI; }
const CGUI* GetGUI() const { return m_pGUI; }
CGUI& GetGUI() { return m_pGUI; }
const CGUI& GetGUI() const { return m_pGUI; }
/**
* Take focus!
@ -457,7 +457,7 @@ public:
protected:
// An object can't function stand alone
CGUI* const m_pGUI;
CGUI& m_pGUI;
// Internal storage for registered script handlers.
std::map<CStr, JS::Heap<JSObject*> > m_ScriptHandlers;
@ -476,7 +476,7 @@ class CGUIDummyObject : public IGUIObject
GUI_OBJECT(CGUIDummyObject)
public:
CGUIDummyObject(CGUI* pGUI) : IGUIObject(pGUI) {}
CGUIDummyObject(CGUI& pGUI) : IGUIObject(pGUI) {}
virtual void Draw() {}
// Empty can never be hovered. It is only a category.

View file

@ -20,7 +20,7 @@
#include "GUI.h"
#include "maths/MathUtil.h"
IGUIScrollBar::IGUIScrollBar(CGUI* pGUI)
IGUIScrollBar::IGUIScrollBar(CGUI& pGUI)
: m_pGUI(pGUI),
m_pStyle(NULL),
m_X(300.f), m_Y(300.f),
@ -71,14 +71,6 @@ const SGUIScrollBarStyle* IGUIScrollBar::GetStyle() const
return m_pHostObject->GetScrollBarStyle(m_ScrollBarStyle);
}
CGUI* IGUIScrollBar::GetGUI() const
{
if (!m_pHostObject)
return NULL;
return m_pHostObject->GetGUI();
}
void IGUIScrollBar::UpdatePosBoundaries()
{
if (m_Pos < 0.f ||
@ -96,7 +88,7 @@ void IGUIScrollBar::HandleMessage(SGUIMessage& Message)
{
// TODO Gee: Optimizations needed!
const CPos& mouse = m_pGUI->GetMousePos();
const CPos& mouse = m_pGUI.GetMousePos();
// If bar is being dragged
if (m_BarPressed)
@ -123,7 +115,7 @@ void IGUIScrollBar::HandleMessage(SGUIMessage& Message)
if (!m_pHostObject)
break;
const CPos& mouse = m_pGUI->GetMousePos();
const CPos& mouse = m_pGUI.GetMousePos();
// if bar is pressed
if (GetBarRect().PointInside(mouse))

View file

@ -162,7 +162,7 @@ class IGUIScrollBar
public:
NONCOPYABLE(IGUIScrollBar);
IGUIScrollBar(CGUI* pGUI);
IGUIScrollBar(CGUI& pGUI);
virtual ~IGUIScrollBar();
public:
@ -247,12 +247,6 @@ public:
*/
void SetHostObject(IGUIScrollBarOwner* pOwner) { m_pHostObject = pOwner; }
/**
* Get GUI pointer
* @return CGUI pointer
*/
CGUI* GetGUI() const;
/**
* Set Width
* @param width Width
@ -402,7 +396,7 @@ protected:
/**
* Reference to CGUI object, these cannot work stand-alone
*/
CGUI *m_pGUI;
CGUI& m_pGUI;
/**
* Mouse position when bar was pressed

View file

@ -19,7 +19,7 @@
#include "GUI.h"
IGUIScrollBarOwner::IGUIScrollBarOwner(CGUI* pGUI)
IGUIScrollBarOwner::IGUIScrollBarOwner(CGUI& pGUI)
: IGUIObject(pGUI)
{
}
@ -46,7 +46,7 @@ void IGUIScrollBarOwner::AddScrollBar(IGUIScrollBar* scrollbar)
const SGUIScrollBarStyle* IGUIScrollBarOwner::GetScrollBarStyle(const CStr& style) const
{
return GetGUI()->GetScrollBarStyle(style);
return m_pGUI.GetScrollBarStyle(style);
}
void IGUIScrollBarOwner::HandleMessage(SGUIMessage& msg)

View file

@ -35,7 +35,7 @@ class IGUIScrollBarOwner : virtual public IGUIObject
friend class IGUIScrollBar;
public:
IGUIScrollBarOwner(CGUI* pGUI);
IGUIScrollBarOwner(CGUI& pGUI);
virtual ~IGUIScrollBarOwner();
virtual void Draw();

View file

@ -24,7 +24,7 @@
#include <math.h>
IGUITextOwner::IGUITextOwner(CGUI* pGUI)
IGUITextOwner::IGUITextOwner(CGUI& pGUI)
: IGUIObject(pGUI), m_GeneratedTextsValid(false)
{
}
@ -38,7 +38,7 @@ void IGUITextOwner::CreateJSObject()
IGUIObject::CreateJSObject();
JSI_IGUITextOwner::RegisterScriptFunctions(
GetGUI()->GetScriptInterface()->GetContext(), m_JSObject);
m_pGUI.GetScriptInterface()->GetContext(), m_JSObject);
}
CGUIText& IGUITextOwner::AddText()

View file

@ -48,7 +48,7 @@ class IGUITextOwner : virtual public IGUIObject
friend bool JSI_IGUITextOwner::GetTextSize(JSContext* cx, uint argc, JS::Value* vp);
public:
IGUITextOwner(CGUI* pGUI);
IGUITextOwner(CGUI& pGUI);
virtual ~IGUITextOwner();
/**

View file

@ -64,7 +64,7 @@ static unsigned int ScaleColor(unsigned int color, float x)
return (0xff000000 | b | g<<8 | r<<16);
}
CMiniMap::CMiniMap(CGUI* pGUI) :
CMiniMap::CMiniMap(CGUI& pGUI) :
IGUIObject(pGUI),
m_TerrainTexture(0), m_TerrainData(0), m_MapSize(0), m_Terrain(0), m_TerrainDirty(true), m_MapScale(1.f),
m_EntitiesDrawn(0), m_IndexArray(GL_STATIC_DRAW), m_VertexArray(GL_DYNAMIC_DRAW),
@ -192,7 +192,7 @@ void CMiniMap::HandleMessage(SGUIMessage& Message)
bool CMiniMap::MouseOver()
{
// Get the mouse position.
const CPos& mousePos = m_pGUI->GetMousePos();
const CPos& mousePos = m_pGUI.GetMousePos();
// Get the position of the center of the minimap.
CPos minimapCenter = CPos(m_CachedActualSize.left + m_CachedActualSize.GetWidth() / 2.0, m_CachedActualSize.bottom - m_CachedActualSize.GetHeight() / 2.0);
// Take the magnitude of the difference of the mouse position and minimap center.
@ -208,7 +208,7 @@ void CMiniMap::GetMouseWorldCoordinates(float& x, float& z)
{
// Determine X and Z according to proportion of mouse position and minimap
const CPos& mousePos = m_pGUI->GetMousePos();
const CPos& mousePos = m_pGUI.GetMousePos();
float px = (mousePos.x - m_CachedActualSize.left) / m_CachedActualSize.GetWidth();
float py = (m_CachedActualSize.bottom - mousePos.y) / m_CachedActualSize.GetHeight();
@ -384,7 +384,7 @@ void CMiniMap::Draw()
// The terrain isn't actually initialized until the map is loaded, which
// happens when the game is started, so abort until then.
if (!(GetGUI() && g_Game && g_Game->IsGameStarted()))
if (!g_Game || !g_Game->IsGameStarted())
return;
CSimulation2* sim = g_Game->GetSimulation2();

View file

@ -29,7 +29,7 @@ class CMiniMap : public IGUIObject
{
GUI_OBJECT(CMiniMap)
public:
CMiniMap(CGUI* pGUI);
CMiniMap(CGUI& pGUI);
virtual ~CMiniMap();
protected:
virtual void Draw();

View file

@ -199,7 +199,7 @@ bool JSI_IGUIObject::focus(JSContext* cx, uint argc, JS::Value* vp)
if (!e)
return false;
e->GetGUI()->SetFocusedObject(e);
e->GetGUI().SetFocusedObject(e);
args.rval().setUndefined();
return true;
}
@ -212,7 +212,7 @@ bool JSI_IGUIObject::blur(JSContext* cx, uint argc, JS::Value* vp)
if (!e)
return false;
e->GetGUI()->SetFocusedObject(NULL);
e->GetGUI().SetFocusedObject(nullptr);
args.rval().setUndefined();
return true;
}