OpenBarnyard
 
Loading...
Searching...
No Matches
AGUI2Dialog.cpp
Go to the documentation of this file.
1#include "pch.h"
2#include "AGUI2Dialog.h"
3#include "AGUI2.h"
5
6//-----------------------------------------------------------------------------
7// Enables memory debugging.
8// Note: Should be the last include!
9//-----------------------------------------------------------------------------
10#include <Core/TMemoryDebugOn.h>
11
13
15{
16 m_pFocusElement = TNULL;
17 m_bUseScissor = TFALSE;
18}
19
23
25{
26 AGUI2Renderer* pRenderer = AGUI2::GetRenderer();
27
28 for ( AGUI2Element* it = ChildRBegin(); it != TNULL; it = GetPrevChild( it ) )
29 {
30 if ( it->IsVisible() )
31 {
32 it->PreRender();
33
34 if ( m_bUseScissor && it != &m_aRectangles[ AGUI2ATTACHMENT_MIDDLECENTER ] )
35 {
36 TFLOAT fWidth, fHeight;
37 it->GetDimensions( fWidth, fHeight );
38
39 TFLOAT fHalfWidth = fWidth * 0.5f;
40 TFLOAT fHalfHeight = fHeight * 0.5f;
41
42 pRenderer->SetScissor( -fHalfWidth, fHalfHeight, fHalfWidth, -fHalfHeight );
43 }
44
45 it->Render();
46
47 if ( m_bUseScissor && it != &m_aRectangles[ AGUI2ATTACHMENT_MIDDLECENTER ] )
48 pRenderer->ClearScissor();
49
50 it->PostRender();
51 }
52 }
53}
54
55void AGUI2Dialog::SetDimensions( TFLOAT a_fWidth, TFLOAT a_fHeight )
56{
57 SetDialogSize( a_fWidth, a_fHeight );
58}
59
61{
62 for ( TINT i = 0; i < AGUI2ATTACHMENT_NUMOF; i++ )
63 {
64 m_aRectangles->SetColour( a_uiColour );
65 }
66
67 AGUI2Element::SetColour( a_uiColour );
68}
69
71{
72 for ( TINT i = 0; i < AGUI2ATTACHMENT_NUMOF; i++ )
73 {
74 m_aRectangles->SetAlpha( a_fAlpha );
75 }
76
77 AGUI2Element::SetAlpha( a_fAlpha );
78}
79
80void AGUI2Dialog::SetFocus( TBOOL a_bFocused )
81{
82 if ( m_pFocusElement )
83 m_pFocusElement->SetFocus( a_bFocused );
84
85 AGUI2Element::SetFocus( a_bFocused );
86}
87
88void AGUI2Dialog::Create( const TCHAR* a_szTopLeft, const TCHAR* a_szTopCenter, const TCHAR* a_szTopRight, const TCHAR* a_szMiddleLeft, const TCHAR* a_szMiddleCenter, const TCHAR* a_szMiddleRight, const TCHAR* a_szBottomLeft, const TCHAR* a_szBottomCenter, const TCHAR* a_szBottomRight )
89{
93
97
101
102 for ( TINT i = 0; i < AGUI2ATTACHMENT_NUMOF; i++ )
103 {
104 m_aRectangles[ i ].SetDimensions( m_apTexTiles[ i ]->GetWidth(), m_apTexTiles[ i ]->GetHeight() );
105 m_aRectangles[ i ].SetTextureSection( m_apTexTiles[ i ] );
106 m_aRectangles[ i ].SetAttachment( (AGUI2ATTACHMENT)i, (AGUI2ATTACHMENT)i );
107
108 AddChildTail( m_aRectangles[ i ] );
109 }
110
111 AddChildTail( m_aRectangles[ AGUI2ATTACHMENT_MIDDLECENTER ] );
112}
113
114void AGUI2Dialog::SetDialogSize( TFLOAT a_fWidth, TFLOAT a_fHeight )
115{
116 TFLOAT fBorderWidth = ( m_apTexTiles[ AGUI2ATTACHMENT_MIDDLELEFT ]->GetWidth() + m_apTexTiles[ AGUI2ATTACHMENT_MIDDLERIGHT ]->GetWidth() ) * 0.5f;
117 TFLOAT fBorderHeight = ( m_apTexTiles[ AGUI2ATTACHMENT_TOPCENTER ]->GetHeight() + m_apTexTiles[ AGUI2ATTACHMENT_BOTTOMCENTER ]->GetHeight() ) * 0.5f;
118
119 TFLOAT fContentWidth = a_fWidth - ( fBorderWidth + fBorderWidth );
120 TFLOAT fContentHeight = a_fHeight - ( fBorderHeight + fBorderHeight );
121
122 m_aRectangles[ AGUI2ATTACHMENT_TOPLEFT ].SetDimensions( fBorderWidth, fBorderHeight );
123 m_aRectangles[ AGUI2ATTACHMENT_TOPCENTER ].SetDimensions( fContentWidth, fBorderHeight );
124 m_aRectangles[ AGUI2ATTACHMENT_TOPRIGHT ].SetDimensions( fBorderWidth, fBorderHeight );
125
126 m_aRectangles[ AGUI2ATTACHMENT_MIDDLELEFT ].SetDimensions( fBorderWidth, fContentHeight );
127 m_aRectangles[ AGUI2ATTACHMENT_MIDDLECENTER ].SetDimensions( a_fWidth - fBorderWidth, a_fHeight - fBorderHeight );
128 m_aRectangles[ AGUI2ATTACHMENT_MIDDLERIGHT ].SetDimensions( fBorderWidth, fContentHeight );
129
130 m_aRectangles[ AGUI2ATTACHMENT_BOTTOMLEFT ].SetDimensions( fBorderWidth, fBorderHeight );
131 m_aRectangles[ AGUI2ATTACHMENT_BOTTOMCENTER ].SetDimensions( fContentWidth, fBorderHeight );
132 m_aRectangles[ AGUI2ATTACHMENT_BOTTOMRIGHT ].SetDimensions( fBorderWidth, fBorderHeight );
133
134 AGUI2Element::SetDimensions( a_fWidth, a_fHeight );
135 AddChildHead( m_aRectangles[ AGUI2ATTACHMENT_MIDDLECENTER ] );
136}
#define TOSHI_NAMESPACE_USING
Definition Defines.h:46
char TCHAR
Definition Typedefs.h:20
float TFLOAT
Definition Typedefs.h:4
#define TNULL
Definition Typedefs.h:23
uint32_t TUINT32
Definition Typedefs.h:13
int TINT
Definition Typedefs.h:7
#define TFALSE
Definition Typedefs.h:24
bool TBOOL
Definition Typedefs.h:6
AGUI2ATTACHMENT
@ AGUI2ATTACHMENT_TOPLEFT
@ AGUI2ATTACHMENT_MIDDLELEFT
@ AGUI2ATTACHMENT_MIDDLECENTER
@ AGUI2ATTACHMENT_BOTTOMLEFT
@ AGUI2ATTACHMENT_MIDDLERIGHT
@ AGUI2ATTACHMENT_BOTTOMRIGHT
@ AGUI2ATTACHMENT_NUMOF
@ AGUI2ATTACHMENT_TOPRIGHT
@ AGUI2ATTACHMENT_BOTTOMCENTER
@ AGUI2ATTACHMENT_TOPCENTER
static AGUI2Renderer * GetRenderer()
Definition AGUI2.cpp:239
virtual void Render() OVERRIDE
virtual void SetAlpha(TFLOAT a_fAlpha) OVERRIDE
virtual void SetColour(TUINT32 a_uiColour) OVERRIDE
void SetDialogSize(TFLOAT a_fWidth, TFLOAT a_fHeight)
virtual void SetDimensions(TFLOAT a_fWidth, TFLOAT a_fHeight) OVERRIDE
virtual void SetFocus(TBOOL a_bFocused) OVERRIDE
void Create(const TCHAR *a_szTopLeft="Border_Top_Left", const TCHAR *a_szTopCenter="Border_Horizontal", const TCHAR *a_szTopRight="Border_Top_Right", const TCHAR *a_szMiddleLeft="Border_Vertical", const TCHAR *a_szMiddleCenter="Border_Middle", const TCHAR *a_szMiddleRight="Border_Vertical", const TCHAR *a_szBottomLeft="Border_Bottom_Left", const TCHAR *a_szBottomCenter="Border_Horizontal", const TCHAR *a_szBottomRight="Border_Bottom_Right")
void AddChildTail(AGUI2Element &a_rElement)
virtual TFLOAT GetHeight()
virtual TFLOAT GetWidth()
AGUI2Element * GetPrevChild(AGUI2Element *a_pCurrentChild)
virtual void SetColour(TUINT32 a_uiColour)
AGUI2Element * ChildRBegin() const
virtual void SetDimensions(TFLOAT a_fWidth, TFLOAT a_fHeight)
void AddChildHead(AGUI2Element &a_rElement)
virtual void SetFocus(TBOOL a_bFocused)
virtual void SetAlpha(TFLOAT a_fAlpha)
virtual void ClearScissor()=0
virtual void SetScissor(TFLOAT a_fVal1, TFLOAT a_fVal2, TFLOAT a_fVal3, TFLOAT a_fVal4)=0
static AGUI2TextureSection * GetTextureSection(const TCHAR *a_szSectionName)