Main Page | Class Hierarchy | Class List | File List | Class Members | Related Pages

D:/Programming/GUI Editor (Source)/GUI.cpp

00001 #include "StdAfx.h" 00002 #include "GUI.h" 00003 00004 CGUI::CGUI() 00005 { 00006 SetEntityType(Entity_GUI); 00007 Initialize(); 00008 } 00009 00010 CGUI::~CGUI() 00011 { 00012 Destroy(); 00013 } 00014 00015 void CGUI::Initialize() 00016 { 00017 m_dwFlags = 0; 00018 m_pActiveElement = NULL; 00019 SetType(GUI); 00020 m_bSelectInvisible = true; 00021 00022 Unlock(); 00023 00024 m_strElementType = "GUI"; 00025 } 00026 00027 int CGUI::PostMessage(CGUIElement *pSender, CGUIElement *pReceiver, eGUIMessage eMessage, DWORD lParam, DWORD wParam, UINT uiTimeoutMs) 00028 { 00029 return m_EventHandler.PostMessage(pSender, pReceiver, eMessage, lParam, wParam, uiTimeoutMs); 00030 } 00031 00032 int CGUI::Create() 00033 { 00034 //Resize(tRect(0, 800, 600, 0)); 00035 return 1; 00036 } 00037 00038 int CGUI::LoadXML(TiXmlNode *pDataNode, CString strFilename) 00039 { 00040 TiXmlElement* pXMLElement = NULL; 00041 const char *pcValue = NULL; 00042 00043 int iRetValue = CGUIElement::LoadXML(pDataNode, strFilename); // LoadXML the data of derivative 00044 if(iRetValue !=1) 00045 return iRetValue; 00046 00047 pXMLElement = m_pXMLElement; 00048 00049 return 1; 00050 } 00051 00052 int CGUI::SaveXML(TiXmlNode *pDataNode, CString strFilename) 00053 { 00054 // Nowhere to save! Nothing to save! 00055 if(pDataNode == NULL && strFilename == "") 00056 return -1; 00057 00058 char Buf[128] = ""; 00059 TiXmlElement *pSaveXMLElement = NULL; 00060 00061 if(pDataNode != NULL) 00062 pSaveXMLElement = pDataNode->ToElement(); 00063 else 00064 pSaveXMLElement = new TiXmlElement("GUI"); 00065 00066 int iRetValue = CGUIElement::SaveXML(pSaveXMLElement, strFilename); 00067 00068 if(pDataNode == NULL && strFilename !="") 00069 { 00070 TiXmlDocument SaveDoc; 00071 SaveDoc.InsertEndChild(*pSaveXMLElement); 00072 int iRetValue = SaveDoc.SaveFile(strFilename); 00073 SAFEDEL(pSaveXMLElement) 00074 00075 return iRetValue; 00076 } 00077 00078 if(pDataNode == NULL) 00079 SAFEDEL(pSaveXMLElement) 00080 00081 return iRetValue; 00082 } 00083 00084 void CGUI::Update() 00085 { 00086 bool LMouseButtonDown = CInputEngine::GetSingleton().GetMouse()->IsButtonDown(VK_LBUTTON); 00087 bool LMouseButtonUp = CInputEngine::GetSingleton().GetMouse()->IsButtonUp(VK_LBUTTON); 00088 00089 if(LMouseButtonDown && (IsLocked() == false)) 00090 OnLMouseDown( CInputEngine::GetSingleton().GetMouse()->GetCursorPos().x, 00091 CInputEngine::GetSingleton().GetMouse()->GetCursorPos().y); 00092 else if(LMouseButtonUp && (IsLocked() == true)) 00093 { 00094 OnLMouseUp( CInputEngine::GetSingleton().GetMouse()->GetCursorPos().x, 00095 CInputEngine::GetSingleton().GetMouse()->GetCursorPos().y); 00096 00097 Unlock(); 00098 } 00099 00100 tVERTEX2d MousePos = CInputEngine::GetSingleton().GetMouse()->GetCursorPos(); 00101 tVERTEX2d PrevMousePos = CInputEngine::GetSingleton().GetMouse()->GetPrevCursorPos(); 00102 00103 if(((MousePos.x - PrevMousePos.x) !=0) || ((MousePos.y - PrevMousePos.y) !=0)) 00104 OnMouseMove(MousePos.x, MousePos.y); 00105 00106 ProcessMessages(); 00107 m_EventHandler.Flush(); 00108 } 00109 00110 void CGUI::Draw() 00111 { 00112 CGUIElement::Draw(); 00113 } 00114 00115 void CGUI::SetActiveElement(CGUIElement *pElement) 00116 { 00117 m_pActiveElement = pElement; 00118 } 00119 00120 CGUIElement *CGUI::GetActiveElement() 00121 { 00122 return m_pActiveElement; 00123 } 00124 00125 tGUIMessage *CGUI::GetMessage(UINT uiMessage) 00126 { 00127 return m_EventHandler.GetMessage(uiMessage); 00128 } 00129 00130 UINT CGUI::GetMessageCount() 00131 { 00132 return m_EventHandler.GetMessageCount(); 00133 } 00134 00135 void CGUI::Destroy() 00136 { 00137 CGUIElement::Destroy(); 00138 m_EventHandler.Destroy(); 00139 } 00140 00141 void CGUI::ProcessMessage(tGUIMessage& Message) 00142 { 00143 switch(Message.uiMessage) 00144 { 00145 case GUI_Message_AquireFocus: 00146 if(!Message.pSender->Visible()) 00147 { 00148 if(IsInvisibleSelectable()) 00149 SetActiveElement(Message.pSender); 00150 } 00151 else 00152 SetActiveElement(Message.pSender); 00153 break; 00154 } 00155 } 00156 00157 void CGUI::ProcessMessages() 00158 { 00159 for (UINT i=0; i<m_EventHandler.GetMessageCount(); i++) 00160 ProcessMessage(*m_EventHandler.GetMessage(i)); 00161 00162 CGUIElement *pIterElement = begin(); 00163 set_ptr(pIterElement); 00164 00165 while(pIterElement !=NULL) 00166 { 00167 pIterElement->ProcessMessages(); 00168 pIterElement = next(); 00169 } 00170 } 00171 00172 bool CGUI::PropertyChanging( const void* pvProperty , void* pvNewValue ) 00173 { 00174 bool bChangeOK = CGUIElement::PropertyChanging(pvProperty, pvNewValue); 00175 00176 return bChangeOK; 00177 } 00178 00179 void CGUI::GetProperties( EPropList& PropList ) 00180 { 00181 CGUIElement::GetProperties(PropList); 00182 00183 PropList.AddTab("GUI"); 00184 PropList.AddPropCheck(this, "Select Invis.", &m_bSelectInvisible); 00185 } 00186 00187 void CGUI::SelectInvisible(bool bShow) 00188 { 00189 m_bSelectInvisible = Show; 00190 } 00191 00192 bool CGUI::IsInvisibleSelectable() 00193 { 00194 return m_bSelectInvisible; 00195 } 00196 00197 int CGUI::OnLMouseDown(UINT x, UINT y) 00198 { 00199 int iRetValue = CGUIElement::OnLMouseDown(x, y); 00200 if(iRetValue == 0) 00201 Lock(); 00202 00203 return iRetValue; 00204 } 00205 00206 int CGUI::OnLMouseUp(UINT x, UINT y) 00207 { 00208 int iRetValue = CGUIElement::OnLMouseUp(x, y); 00209 00210 if(iRetValue == 0) 00211 SetActiveElement(this); 00212 00213 return iRetValue; 00214 } 00215 00216 bool CGUI::IsOfType(eEntityType eType) 00217 { 00218 if(eType == Entity_GUI) 00219 return true; 00220 00221 return CGUIElement::IsOfType(eType); 00222 } 00223 00224 bool PointInRect(tRect& Rect, int X, int Y) 00225 { 00226 bool GoodX = (X >= Rect.left) & (X <= Rect.right); 00227 bool GoodY = (Y >= Rect.bottom) & (Y <= Rect.top); 00228 00229 return GoodX & GoodY; 00230 }

Generated on Sun Jul 17 21:34:26 2005 for OpenGL GUI by doxygen 1.3.8