Files

134 lines
4.8 KiB
C++

#ifndef _CWINDOW_HPP_
#define _CWINDOW_HPP_
/*** C++ STL Files ***/
#include <vector>
/*** SDL Header Files ***/
#include <SDL.h>
/*** Custom Header Files ***/
#include "GUIHelpers/cObject.hpp"
#include "GUIHelpers/Enums.hpp"
#include "GUIHelpers/GUIUtility.hpp"
/*** DLL Header File ***/
#include "dllExport.h"
/*** Custom Header Files ***/
#include "../UtilityEngine/cString.hpp"
using UtilityEngine::cString;
namespace GUIEngine {
class EXPORT_FROM_MYDLL cWindow : public GUIHelpers::cObject
{
protected:
static const UtilityEngine::cString sNAME; /*= "windows";*/
static GUIHelpers::Position sPOSITION; /*= Position(0, 0);*/
static GUIHelpers::Size sSIZE; /*= Size(0, 0);*/
static GUIHelpers::Padding sPADDING; /*= Padding(5, 5, 5, 5);*/
static GUIHelpers::RGBA sCOLOUR; /*= { 100, 100, 100, 255 };*/
static GUIHelpers::eAlign sALIGN; /*= GUIHelpers::eAlign::CENTER;*/
static GUIHelpers::eLayout sLAYOUT; /*= FILL_PARENT*/
static GUIHelpers::eOrientation sORIENTATION; /*= GUIHelpers::eOrientation::NONE;*/
protected:
cWindow( cWindow* parent = nullptr, const signed int id = -1, const GUIHelpers::eOrientation orientation = sORIENTATION, const GUIHelpers::eAlign align = sALIGN,
const GUIHelpers::eLayout layout = sLAYOUT, const GUIHelpers::Position& pos = sPOSITION, const GUIHelpers::Size& size = sSIZE,
const GUIHelpers::Padding& padding = sPADDING, const cString& name = sNAME );
public:
virtual ~cWindow();
protected:
virtual void Create( cWindow* parent = nullptr, const signed int id = -1, const GUIHelpers::eOrientation orientation = sORIENTATION, const GUIHelpers::eAlign align = sALIGN,
const GUIHelpers::eLayout layout = sLAYOUT, const GUIHelpers::Position& pos = sPOSITION, const GUIHelpers::Size& size = sSIZE,
const GUIHelpers::Padding& padding = sPADDING, const cString& name = sNAME );
public:
/// Functions
virtual void Display();
const bool Inside( const MathEngine::iVector2& location ) const;
void AddChild( cWindow* obj );
const bool RemoveChild( cWindow* obj );
/// Sets
static void PositionDefault( const GUIHelpers::Position& pos );
static void SizeDefault( const GUIHelpers::Size& size );
static void PaddingDefault( const GUIHelpers::Padding& pad );
static void AlignDefault( const GUIHelpers::eAlign align );
static void LayoutDefault( const GUIHelpers::eLayout layout );
static void OrientationDefault( const GUIHelpers::eOrientation orientation );
void setOrientation( const GUIHelpers::eOrientation orientation = sORIENTATION );
void setAlign( const GUIHelpers::eAlign align = sALIGN );
void setLayout( const GUIHelpers::eLayout layout = sLAYOUT );
void setPosition( const GUIHelpers::Position& pos = sPOSITION );
void setSize( const GUIHelpers::Size& size = sSIZE );
void setPadding( const GUIHelpers::Padding& padding = sPADDING );
void setContentSize( const GUIHelpers::Size& content );
void setName( const cString& name = sNAME );
void setParent( cWindow* parent );
/// Gets
const GUIHelpers::Position getCenter( const bool pad = true ) const;
const GUIHelpers::eOrientation getOrientation() const;
const GUIHelpers::eAlign getAlign() const;
const GUIHelpers::eLayout getLayout() const;
const GUIHelpers::Position getPosition( const bool pad = true ) const;
const GUIHelpers::Size getSize( const bool pad = true ) const;
const GUIHelpers::Area getArea( const bool pad = false ) const;
const GUIHelpers::Padding& getPadding() const;
const GUIHelpers::Size& getContentSize() const;
const cString& getName() const;
const GUIHelpers::Size getChildrenSize( const cWindow* ignore = nullptr );
cWindow* getParent();
const unsigned long int getFillParentSize();
virtual const GUIHelpers::eType getType() const;
virtual void Resize();
virtual void RebuildLayout( const GUIHelpers::eLayout layout );
virtual void RePos();
virtual void RebuildPos();
virtual const GUIHelpers::RGBA& getDebugColour() const;
/*protected:*/
std::vector<cWindow*>& getChildren();
private:
void Rebuild( cWindow* const parent, const GUIHelpers::eLayout layout );
void AddSize( const int x, const int y, GUIHelpers::Size& mySize ) const;
void DebugDisplay() const;
private:
/// Variables
GUIHelpers::eOrientation m_orientation;/// = GUIHelper::eOrientation::NONE;
GUIHelpers::eAlign m_align;/// = GUIHelper::eAlign::CENTER;
GUIHelpers::eLayout m_layout;/// = GUIHelper::eLayout::FILL_PARENT;
GUIHelpers::Position m_pos;/// = POSITION;
GUIHelpers::Size m_size;/// = SIZE;
GUIHelpers::Padding m_padding;/// = PADDING;
GUIHelpers::Size m_content;/// = m_size;
cString m_name;/// = sNAME;
std::vector<cWindow*> m_children;
cWindow* mp_parent;/// = nullptr;
};/// END CLASS DEFINITION cBoxSizer
}/// END NAMESPACE DEFINITION GUIEngine
#endif/// END IFNDEF _CBOXSIZER_HPP_