OROCHI
 
Loading...
Searching...
No Matches
GxGuiDockingWindow.h
Go to the documentation of this file.
1//===========================================================================
9//===========================================================================
10#pragma once
11
12#if GX_EDITOR
13
14GX_CORE_NAMESPACE_BEGIN()
15class GxGuiTab;
16
17//===========================================================================
19//===========================================================================
20class GxGuiDockingWindow : public GxGuiWindow
21{
22 //-----------------------------------------------------------
24 //-----------------------------------------------------------
26public:
27 GX_RTTI_CLASS_ICON(GxGuiDockingWindow, GxGuiWindow, GxRtti::ICON_TYPE::OROCHI)
28 // GxClassBaseReference継承クラス用禁止宣言
29 GX_PROHIBIT_CLASS_BASE_REFERENCE(GxGuiDockingWindow)
30
31protected:
32 class GxGuiDockingGuide;
33
35 //-----------------------------------------------------------
37 //-----------------------------------------------------------
39private:
41 GxGuiDockingWindow(void) {}
42public:
44 GxGuiDockingWindow(b32 useCloseWindowButton, b32 useMinWindowButton, b32 useMaxWindowButton, b32 isOutsideWindow);
46 b32 initialize(void) override;
47
49 //-----------------------------------------------------------
51 //-----------------------------------------------------------
53public:
55 void update(void) override;
57 void setDockingMode(DOCKING_MODE mode);
59 constexpr DOCKING_MODE getDockingMode(void) const { return _dockingMode; }
61 void addSplitter(GxGuiDockingWindow* pWindow, DOCKING_MODE mode, s32 splitOffset = -1);
63 void removeSplitter(void);
64
66 void addWindow(GxToolBase* pTool, b32 isCurrent = true);
68 void removeWindow(GxToolBase* pTool);
70 void eventCloseTab(void* pTool);
71
72protected:
74 void controlWindow(void) override;
75
77 void closeAll (void)override;
79 void eventClose(void);
80
82 void onMouseDown(const GxPoint2& position, u32 button) override;
84 void onMouseUp(const GxPoint2& position, u32 button) override;
86 void onMouseEnter(void) override;
88 void onMouseLeave(void) override;
89
92 DOCKING_MODE getDockingModeFromGuide(void) const override;
93private:
95 void createDockingGuide(void);
96
98 void clearDockingGuide(void);
99
101 //-----------------------------------------------------------
103 //-----------------------------------------------------------
105public:
107 static GxGuiDockingWindow* getDockingWindow(GxToolBase* pTool);
109 GxToolBase* getTool(u32 index = 0) const;
111 constexpr GxGuiTab* getTab(void) const { return _pTab; }
112
114 GX_FORCE_INLINE b32 isNormalWindow(void) const override { return Super::isNormalWindow() && _dockingMode == DOCKING_MODE::OFF; }
115
118 static GX_HANDLE getDockingIcon(DOCKING_MODE mode);
119
121 //-----------------------------------------------------------
123 //-----------------------------------------------------------
125protected:
126 GxGuiTab* _pTab;
127 GxGuiDockingGuide* _pGuiDockingGuide[static_cast<u32>(DOCKING_MODE::MAX)];
128
129 DOCKING_MODE _dockingMode;
130
132};
133
134//===========================================================================
136//===========================================================================
137class GxGuiDockingWindow::GxGuiDockingGuide : public GxGuiBase
138{
139 //-----------------------------------------------------------
141 //-----------------------------------------------------------
143public:
144 GX_RTTI_CLASS(GxGuiDockingGuide, GxGuiBase)
145 // GxClassBaseReference継承クラス用禁止宣言
146 GX_PROHIBIT_CLASS_BASE_REFERENCE(GxGuiDockingGuide)
147
148
149 static constexpr s32 DISTANCE_IN = 48;
151 static constexpr s32 DISTANCE_OUT = 48;
152
154 //-----------------------------------------------------------
156 //-----------------------------------------------------------
158public:
160 GxGuiDockingGuide(void);
161
163 b32 initialize(void) override;
164
166 //-----------------------------------------------------------
168 //-----------------------------------------------------------
170public:
172 void setDockingMode(DOCKING_MODE type, b32 isCentor, s32 num);
173
175 constexpr DOCKING_MODE getDockingMode(void) const { return _dockingMode; }
176
178 constexpr void setDockingIcon(GX_HANDLE hIcon) { _handleDockingIcon = hIcon; }
179
181 GX_FORCE_INLINE b32 isSelect(void) const { return _isSelect; }
182private:
184 static GxGuiGraphics::ICON_DOCKING_TYPE getDockingIcon(DOCKING_MODE mode);
185
187 //-----------------------------------------------------------
189 //-----------------------------------------------------------
191public:
193 void onDraw(void) override;
194
196 GX_FORCE_INLINE void onMouseEnter(void) override { Super::onMouseEnter(); _isSelect = true; }
197
199 GX_FORCE_INLINE void onMouseLeave(void) override { Super::onMouseLeave(); _isSelect = false; }
200
202 void setRegion(const GxRect& rect, b32 force = false) override;
203
205 //-----------------------------------------------------------
207 //-----------------------------------------------------------
209public:
210 GxPoint2 _iconCentor;
211 DOCKING_MODE _dockingMode;
212 GX_HANDLE _handleDockingIcon;
213 b32 _isSelect;
214
216};
217
218GX_CORE_NAMESPACE_END()
219
220#endif // GX_EDITOR
#define GX_PROHIBIT_CLASS_BASE_REFERENCE(__CLASS__)
GxClassBaseReference継承の禁止宣言(new以外の生成禁止 + コピー禁止)
Definition GxBase.h:244
u32 GX_HANDLE
ハンドル
Definition GxDefine.h:214
座標
Definition GxStruct.h:867
矩形
Definition GxStruct.h:951
32bitブーリアン
Definition GxDefine.h:173