15GX_CORE_NAMESPACE_BEGIN()
32 GX_OPERATOR_NEW_DELETE(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP)
38 ATTRIBUTE_SHOW = (1 << 0),
39 ATTRIBUTE_DISABLE = (1 << 1),
41 ATTRIBUTE_CLIP_PARENT_CLIANT = (1 << 3),
42 ATTRIBUTE_CLIP_PARENT_WINDOW = (1 << 4),
43 ATTRIBUTE_FOLLOW_PARENT = (1 << 5),
44 ATTRIBUTE_SELECTED_FOREGROUND = (1 << 6),
47 ATTRIBUTE_ACTIVE = (1 << 12),
48 ATTRIBUTE_CAPTURED = (1 << 13),
49 ATTRIBUTE_CURSOR_IN = (1 << 14),
50 ATTRIBUTE_READONLY = (1 << 15),
51 ATTRIBUTE_READONLY_INIT = (1 << 16),
56 static constexpr s32 HOVER_EVENT_DELAY = 30;
76 GxGuiBase(
const GxRect& rect );
78 s32 release(
void )
override;
87 virtual b32 initialize(
void );
91 virtual void setRegion(
const GxRect& rect,
b32 force =
false );
93 GX_FORCE_INLINE
void updateRegion(
void ){ setRegion(_region,
true); }
95 void setPosition(
const GxPoint2& position);
97 void setSize(
const GxSize& size);
99 void setFocus(
b32 focus =
true );
101 void add(GxGuiBase* pGui );
105 void removeChild( GxGuiBase* pChild );
107 virtual b32 close(
void);
109 GX_FORCE_INLINE
virtual void closeChild(
void ){ closeChildFromRelease(); }
111 void closeChildFromRelease(
void );
114 void messageUpdate(
void );
117 void updateGuiChild(
void );
120 void updateMouse(
void );
123 void updateKey(
void );
127 GX_FORCE_INLINE
virtual void update(
void ){}
130 GX_FORCE_INLINE
virtual void postUpdate(
void ){}
133 void updateWindowRect(
void );
137 void messageDraw(
const GxRect& clipRect );
140 void drawGrid(
void );
143 void drawCursor(
void );
146 void messageScreenRender(
void );
150 virtual void onDraw(
void );
153 GX_FORCE_INLINE
virtual void onNoClientDraw(
void ){}
156 void onDrawChild(
void );
159 GX_FORCE_INLINE
virtual void preDraw(
void ){}
162 GX_FORCE_INLINE
virtual void postDraw(
void ){}
165 GX_FORCE_INLINE
virtual void screenRender(
void ){};
174 GX_FORCE_INLINE
virtual void onFocus(
b32 focus ){}
177 virtual void onDropFile( GX_CSTR pFilePath );
183 GX_FORCE_INLINE
virtual void onDragMouseUp(u32 ) {};
186 GX_FORCE_INLINE
virtual GxGuiGraphics::MOUSE_CURSOR getMouseCursor(
void ){
return GxGuiGraphics::MOUSE_CURSOR::ARROW; }
191 GX_FORCE_INLINE
virtual void onActive(
b32 ){}
194 GX_FORCE_INLINE
virtual void onCreate(
void ){}
197 GX_FORCE_INLINE
virtual void onDestroy(
void ){}
200 virtual void onAttach(
void );
203 GX_FORCE_INLINE
virtual void onDetach(
void ){}
207 GX_FORCE_INLINE
virtual void onAddGui( GxGuiBase* ){}
211 GX_FORCE_INLINE
virtual void onRemoveGui( GxGuiBase* ){};
215 GX_FORCE_INLINE
virtual void onSize(
const GxSize& ){}
220 GX_FORCE_INLINE
virtual GxRect calculateClientRect(
const GxRect& clientRect )
const {
return clientRect; }
224 GX_FORCE_INLINE
virtual void onKeyDown( GxKeyboard::KEY key ){ onKeyDownParent(key); }
228 GX_FORCE_INLINE
virtual void onKeyPress( GxKeyboard::KEY key ){ onKeyPressParent(key); }
232 GX_FORCE_INLINE
virtual void onKeyUp( GxKeyboard::KEY key ){ onKeyUpParent(key); }
237 GX_FORCE_INLINE
virtual void onClick(
const GxPoint2& , u32 ){ onClickParent(); }
242 GX_FORCE_INLINE
virtual void onNoClientClick(
const GxPoint2& ,u32 ){ onClickParent(); }
247 GX_FORCE_INLINE
virtual void onDoubleClick(
const GxPoint2& ,u32 ){ onDoubleClickParent(); }
252 GX_FORCE_INLINE
virtual void onNoClientDoubleClick(
const GxPoint2& ,u32 ){ onDoubleClickParent(); }
256 GX_FORCE_INLINE
virtual void onMouseMove(
const GxPoint2& ){ onMouseMoveParent(); }
260 GX_FORCE_INLINE
virtual void onNoClientMouseMove(
const GxPoint2& ){ onMouseMoveParent(); }
264 GX_FORCE_INLINE
virtual void onMouseHover(
const GxPoint2& ){ onMouseHoverParent(); }
268 GX_FORCE_INLINE
virtual void onNoClientMouseHover(
const GxPoint2& ){ onMouseHoverParent(); }
273 GX_FORCE_INLINE
virtual void onMouseWheel(
const GxPoint2& ,s32 ){ onMouseWheelParent(); }
278 GX_FORCE_INLINE
virtual void onNoClientMouseWheel(
const GxPoint2& ,s32 ){ onMouseWheelParent(); }
283 GX_FORCE_INLINE
virtual void onMouseDown(
const GxPoint2& ,u32 ){ onMouseDownParent(); }
288 GX_FORCE_INLINE
virtual void onNoClientMouseDown(
const GxPoint2& ,u32 ){ onMouseDownParent(); }
291 virtual void onMouseUp(
const GxPoint2& position, u32 button);
296 GX_FORCE_INLINE
virtual void onNoClientMouseUp(
const GxPoint2& ,u32 ){ onMouseUpParent(); }
299 GX_FORCE_INLINE
virtual void onMouseEnter(
void ){}
302 GX_FORCE_INLINE
virtual void onMouseLeave(
void ){}
305 void onKeyDownParent( GxKeyboard::KEY key );
308 void onKeyPressParent( GxKeyboard::KEY key );
311 void onKeyUpParent( GxKeyboard::KEY key );
314 void onClickParent(
void );
317 void onDoubleClickParent(
void );
320 void onMouseMoveParent(
void );
323 void onMouseHoverParent(
void );
326 void onMouseWheelParent(
void );
329 void onMouseDownParent(
void );
332 void onMouseUpParent(
void );
335 b32 isInWindow(
const GxPoint2& screenPosition)
const;
340 GX_FORCE_INLINE
b32 isInClient(
const GxPoint2& screenPosition )
const {
return ( (_clientRegion + _windowRect.getLeftTop()) & _drawRect ).isIncluding(screenPosition); }
345 GX_FORCE_INLINE
GxPoint2 clientToScreen(
const GxPoint2& point )
const {
return noClientToScreen( point ) + _clientRegion.getLeftTop(); }
350 GX_FORCE_INLINE
GxPoint2 screenToClient(
const GxPoint2& point )
const {
return screenToNoClient( point ) - _clientRegion.getLeftTop(); }
355 GX_FORCE_INLINE
GxPoint2 noClientToScreen(
const GxPoint2& point )
const {
return _windowRect.getLeftTop() + point; }
360 GX_FORCE_INLINE
GxPoint2 screenToNoClient(
const GxPoint2& point )
const {
return point - _windowRect.getLeftTop(); }
365 GX_FORCE_INLINE
GxPoint2 noClientToClient(
const GxPoint2& point )
const {
return point - _clientRegion.getLeftTop(); }
370 GX_FORCE_INLINE
GxPoint2 clientToNoClient(
const GxPoint2& point )
const {
return point + _clientRegion.getLeftTop(); }
373 GxColor getBackColor(
void )
const;
375 GxColor getKeyWord1Color(
void )
const;
377 GxColor getKeyWord2Color(
void )
const;
380 GxGuiBase* getPreviousFocus(
void );
383 GxGuiBase* getNextFocus(
void );
388 GX_FORCE_INLINE
virtual GxGuiBase* getBypassPreviousFocus( GxGuiBase* ) {
return nullptr; }
391 GX_FORCE_INLINE
virtual GxGuiBase* getBypassNextFocus( GxGuiBase* ) {
return nullptr; }
394 GX_FORCE_INLINE
virtual void setPropertyValueFromChild(
void ) {}
404 constexpr GxGuiBase* getNext(
void) {
return _pNext; }
408 constexpr GxGuiBase* getNext(
void)
const {
return _pNext; }
412 GxGuiBase* getTop(
void);
416 const GxGuiBase* getTop(
void)
const;
420 GxGuiBase* getTail(
void);
424 const GxGuiBase* getTail(
void)
const;
428 GX_FORCE_INLINE GxGuiBase* getPrevious(
void) {
return _pPrevious; }
432 constexpr GxGuiBase* getPrevious(
void)
const {
return _pPrevious; }
436 GX_FORCE_INLINE GxGuiBase* getParent(
void) {
return _pParent; }
440 constexpr GxGuiBase* getParent(
void)
const {
return _pParent; }
443 GxGuiWindow* getParentWindow(
b32 isTopWindow =
false)
const;
447 GX_FORCE_INLINE GxGuiBase* getChild(
void) {
return _pChild; }
451 constexpr GxGuiBase* getChild(
void)
const {
return _pChild; }
454 b32 isRoot(
const GxGuiBase* pGui)
const;
457 b32 hasChild(
const GxGuiBase* pGui)
const;
460 u32 getChildNum(
void)
const;
464 GX_FORCE_INLINE
b32 isEnable(
void)
const {
return ((_status == STATUS::CREATE) || (_status == STATUS::EXIST)); }
468 GX_FORCE_INLINE
b32 isReadOnly(
void)
const {
return isAttribute(ATTRIBUTE_READONLY); }
471 constexpr void setInvalid(
void) { _status = STATUS::INVALID; }
475 GX_FORCE_INLINE
const GxRect& getWindowRect(
void)
const {
return _windowRect; }
479 GX_FORCE_INLINE
const GxRect& getClientRegion(
void)
const {
return _clientRegion; }
483 GX_FORCE_INLINE
void setClientRegion(
const GxRect& rect) { _clientRegion = rect; }
487 GX_FORCE_INLINE
const GxRect& getDrawRect(
void)
const {
return _drawRect; }
490 void setAttribute(ATTRIBUTE attribute,
b32 on);
495 GX_FORCE_INLINE
b32 isAttribute(ATTRIBUTE attribute)
const {
return (_attribute & attribute) != 0; }
499 GX_FORCE_INLINE
const GxRect& getRegion(
void)
const {
return _region; }
503 void setActive(
b32 active =
true);
506 void setForeground(
void);
509 GX_FORCE_INLINE
virtual void updateAnimation(
void) {}
513 GX_FORCE_INLINE
b32 isFocused(
void)
const {
return getGxGuiSystem()->getFocus() ==
this; }
517 GX_FORCE_INLINE
b32 isActive(
void)
const {
return isAttribute(ATTRIBUTE_ACTIVE); }
522 GX_FORCE_INLINE
virtual GxSize getClampedRegionSize(
const GxSize& size)
const {
return size; }
529 virtual GxGuiBase* getGui(
const GxPoint2& position,
const GxRect& clipRect);
532 void setModalMode(
b32 on);
541 GxGuiBase* _pPrevious;
551 s32 _hoverDelayTimer;
562#define GX_UPDATE_GUI_POINTER(__POINTER__) if( (__POINTER__) && (!(__POINTER__)->isEnable()) ) { (__POINTER__) = nullptr; }
564GX_CORE_NAMESPACE_END()
#define GX_PROHIBIT_CLASS_BASE_REFERENCE(__CLASS__)
GxClassBaseReference継承の禁止宣言(new以外の生成禁止 + コピー禁止)
Definition GxBase.h:244
void GxTypedObject
その他
Definition GxDefine.h:213
参照オブジェクト基底クラス
Definition GxBase.h:122
プロパティクラス
Definition GxProperty.h:48
実行時型情報クラス
Definition GxRtti.h:154
ユニット基礎クラス
Definition GxUnitBase.h:45
座標
Definition GxStruct.h:867
static const GxPoint2 ZERO
原点座標
Definition GxStruct.h:876
矩形
Definition GxStruct.h:951
サイズ
Definition GxStruct.h:730
static const GxSize ZERO
0
Definition GxStruct.h:743
32bitブーリアン
Definition GxDefine.h:173