00001 /************************************************************************/ 00002 /* ExNihilo Engine by Hermanns Christophe */ 00003 /************************************************************************/ 00004 /* This program is free software; you can redistribute it and/or */ 00005 /* modify it under the terms of the GNU General Public License */ 00006 /* as published by the Free Software Foundation; either version 2 */ 00007 /* of the License, or (at your option) any later version. */ 00008 /* */ 00009 /* This program is distributed in the hope that it will be useful, */ 00010 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */ 00011 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ 00012 /* */ 00013 /* See the GNU General Public License for more details. */ 00014 /* */ 00015 /* You should have received a copy of the GNU General Public License */ 00016 /* along with this program; if not, write to the Free Software */ 00017 /* Foundation, Inc., 59 Temple Place - Suite 330, */ 00018 /* Boston, MA 02111-1307, USA. */ 00019 /* */ 00020 /* If you use a important part of this code please send me a mail */ 00021 /* I just want to see where my code go thks :) */ 00022 /************************************************************************/ 00023 00024 /************************************************************************/ 00025 /* Contact */ 00026 /************************************************************************/ 00027 /* ExNihilo Website :www.ploksoftware.org */ 00028 /* */ 00029 /* Hermanns Christophe ExNihilo creator and main programmer */ 00030 /* */ 00031 /* Mail : Data@ploksoftware.org */ 00032 /* ICQ : 8030901 */ 00033 /* MSN Messenger : Data_7@hotmail.com */ 00034 /* */ 00035 /* */ 00036 /************************************************************************/ 00037 00038 /************************************************************************/ 00039 /* File Description */ 00040 /************************************************************************/ 00041 /* File Name :ExCWindow.h */ 00042 /* */ 00043 /* Star Date :03/14/2003 */ 00044 /* */ 00045 /* Last Update :06/20/2003 */ 00046 /* */ 00047 /* File Description : */ 00048 /* */ 00049 /* For update of this file check : www.ploksoftware.org */ 00050 /************************************************************************/ 00051 00052 #ifndef __EXCWINDOW_H__ 00053 #define __EXCWINDOW_H__ 00054 //------------------------------------------------------------------------ 00055 //Includes 00056 //------------------------------------------------------------------------ 00057 #include "ExDefine.h" 00058 //------------------------------------------------------------------------ 00059 #include "Math/ExMath.h" 00060 //------------------------------------------------------------------------ 00061 #include "Manager/ExManagerWindow.h" 00062 //------------------------------------------------------------------------ 00063 #include "Manager/ManagerObject/ExManagerTexture.h" 00064 //------------------------------------------------------------------------ 00065 #include "Object/Object2D/WindowObject/ExCWindowObject.h" 00066 #include "Object/Object2D/WindowObject/ExCWindowControl.h" 00067 #include "Object/Object2D/WindowObject/ExCWindowButton.h" 00068 #include "Object/Object2D/WindowObject/ExCWindowButtonSwitch.h" 00069 #include "Object/Object2D/WindowObject/ExCWindowButtonSwitchOnMouse.h" 00070 #include "Object/Object2D/WindowObject/ExCWindowLabel.h" 00071 #include "Object/Object2D/WindowObject/ExCWindowEditLabel.h" 00072 #include "Object/Object2D/WindowObject/ExCWindowTitleBar.h" 00073 #include "Object/Object2D/WindowObject/ExCWindowContent.h" 00074 //------------------------------------------------------------------------ 00075 class ExCWindow :public ExCWindowContent 00076 { 00077 //------------------------------------------------------------------------ 00078 // Variable 00079 //------------------------------------------------------------------------ 00080 protected: 00081 //Title Bar 00082 ExCWindowTitleBar m_TitleBar; 00083 //Window content 00084 ExCWindowObject m_Window; 00085 00086 //Window state 00087 bool m_CanMouve; 00088 bool m_Mouving; 00089 bool m_Reduced; 00090 bool m_Maximized; 00091 bool m_ShowWindow; 00092 bool m_Active; //if windows is the active windows 00093 00094 bool m_RequestFocus; 00095 00096 00097 void Init(void); 00098 public: 00099 00100 //-------------------------------- 00101 // Constructor // Destructor 00102 //-------------------------------- 00103 ExCWindow(void); 00104 ExCWindow(ExCVec2D Size); 00105 //inline ExCWindow(float x,float y){ExCWindow(ExCVec2D(x,y));}; 00106 ExCWindow(ExCVec2D Size,ExCVec2D Position); 00107 /*inline ExCWindow(float x,float y,float xp,float yp) 00108 {ExCWindow(ExCVec2D(x,y),ExCVec2D(xp,yp));};*/ 00109 ExCWindow(ExCVec2D Size,ExCVec2D Position,std::string Title); 00110 /*inline ExCWindow(float x,float y,float xp,float yp,std::string Title) 00111 {ExCWindow(ExCVec2D(x,y),ExCVec2D(xp,yp),Title);}*/ 00112 ~ExCWindow(void); 00113 //-------------------------------- 00114 // Methode 00115 //-------------------------------- 00116 //State 00117 inline bool IsMouving(void){return m_Mouving;} 00118 inline void SetMouving(bool status){m_Mouving=status;} 00119 inline bool GetCanMouve(void){return m_CanMouve;} 00120 inline void SetCanMouve(bool status){m_CanMouve=status;} 00121 inline bool IsReduced(void){return m_Reduced;} 00122 inline void SetMaximized(bool status){m_Maximized=status;} 00123 inline bool IsMaximized(void){return m_Maximized;} 00124 inline void SetReduced(bool status){m_Reduced=status;} 00125 inline bool IsShowWindow(void){return m_ShowWindow;} 00126 inline void SetShowWindow(bool status){m_ShowWindow=status;} 00127 inline bool IsActive(void){return m_Active;} 00128 inline void SetActive(bool status){m_Active=status;} 00129 00130 void RefreshPosotion(void); 00131 void RefreshSize(void); 00132 bool m_BeClosed; 00133 void SetManagerTexture(ExManagerTexture * Texture); 00134 void Draw(void); 00135 virtual ExCAction InputAction(ExCAction Action); 00136 virtual ExCAction InputCommand(ExCCommand Command); 00137 //GetPointer 00138 ExCWindowObject *GetWindowContentPointer(void){return &m_Window;} 00139 ExCWindowObject *GetWindowBarPointer(void){return &m_TitleBar;} 00140 ExCWindowButton *GetButtonClose(void){return m_CloseButton;} 00141 ExCWindowButton *GetButtonMaximize(void){return m_MaximizeButton;} 00142 ExCWindowButton *GetButtonMinimize(void){return m_MinimizeButton;} 00143 ExCWindowButton *GetButtonMinimizeToBar(void){return m_MinimizeToBarButton;} 00144 00145 //Position and size 00146 void SetWindowSize(ExCVec2D vec);//{m_WindowSize=vec;} 00147 //inline ExCVec2D GetWindowSize(void){return m_WindowSize;} 00148 void SetOldWindowSize(ExCVec2D vec);//{m_OldSize=vec;} 00149 //inline ExCVec2D GetOldWindowSize(void){return m_OldSize;} 00150 void SetOldPosition(ExCVec2D vec);//{m_OldPosition=vec;} 00151 //inline ExCVec2D GetOldPosition(void){return m_OldPosition;} 00152 void SetTitleBarSize(float size);//{m_TitleBarSize=size;} 00153 //inline float GetTitleBarSize(void){return m_TitleBarSize;} 00154 void SetWindowPosition(ExCVec2D vec); 00155 inline bool IsShowWindowContent(void){return m_Window.IsShowWindow();} 00156 inline void SetShowWindowContent(bool status){m_Window.SetShowWindow(status);} 00157 inline bool IsShowWindowBar(void){return m_TitleBar.IsShowWindow();} 00158 inline void SetShowWindowBar(bool status){m_TitleBar.SetShowWindow(status);} 00159 //Title 00160 void SetWindowTitle(std::string Title); 00161 std::string GetWindowTitle(void); 00162 void SetWindowOldTitle(std::string Title); 00163 std::string GetWindowOldTitle(void); 00164 void SetWindowTitleColor(ExCVec3D Color); 00165 ExCVec3D GetWindowTitleColor(void); 00166 00167 bool PointInWindow(ExCVec2D point); 00168 00169 bool LoadFile(std::string FileName); 00170 void ReadWindowSubObject(ExCWindow *win,std::string FileName); 00171 ExCWindowControl * ReadWindowControlObject(ExCWindowObject *win,std::string FileName); 00172 }; 00173 //------------------------------------------------------------------------ 00174 #endif //__EXCWINDOW_H__