35 (std::numeric_limits<int>::min)(),
36 (std::numeric_limits<int>::min)(),
37 (std::numeric_limits<int>::max)(),
38 (std::numeric_limits<int>::max)());
40 bool main_move =
false;
60 if (mWidgetCaption !=
nullptr)
69 for (
auto& button : buttons)
75 for (
auto& action : actions)
83 constexpr size_t countNames = 8;
84 const std::array<std::pair<std::string_view, std::string_view>, countNames> resizers{
85 {{
"ResizeLeftTop",
"Left Top"},
87 {
"ResizeRightTop",
"Right Top"},
88 {
"ResizeRight",
"Right"},
89 {
"ResizeRightBottom",
"Right Bottom"},
90 {
"ResizeBottom",
"Bottom"},
91 {
"ResizeLeftBottom",
"Left Bottom"},
92 {
"ResizeLeft",
"Left"}}};
94 for (
const auto& resizer : resizers)
98 if (widget !=
nullptr)
111 mWidgetCaption =
nullptr;
118 mMouseRootFocus = _focus;
126 mKeyRootFocus = _focus;
159 mCurrentActionScale = _getActionScale(_sender);
175 IntCoord coord = mCurrentActionScale;
177 coord.
top *= (_top - point.
top);
184 if (coord.
left == 0 && coord.
top == 0)
185 setSize((mPreActionCoord + coord).size());
203 else if (mMouseRootFocus)
214 mIsAutoAlpha = _auto;
221 else if (mMouseRootFocus)
235 getSnappedCoord(coord, Snap::Position);
236 point = coord.
point();
261 getSnappedCoord(coord, Snap::Size);
314 getSnappedCoord(coord, Snap::Size);
325 if (mWidgetCaption !=
nullptr)
333 if (mWidgetCaption !=
nullptr)
350 mAnimateSmooth =
false;
361 mAnimateSmooth =
false;
367 float Window::getAlphaVisible()
const
372 void Window::getSnappedCoord(
IntCoord& _coord, Snap snapMode)
const
378 bool nearBottomSide = abs(_coord.top + _coord.height - view_size.height) <=
WINDOW_SNAP_DISTANSE;
389 _coord.left = view_size.width - _coord.width;
391 _coord.top = view_size.height - _coord.height;
396 _coord.width = _coord.right();
401 _coord.height = _coord.bottom();
406 _coord.width = view_size.width - _coord.left;
408 _coord.height = view_size.height - _coord.top;
415 mAnimateSmooth =
true;
439 ControllerFadeAlpha* Window::createControllerFadeAlpha(
float _alpha,
float _coef,
bool _enable)
459 return {mMinmax.
left, mMinmax.
top};
476 if (_key ==
"AutoAlpha")
480 else if (_key ==
"Snap")
484 else if (_key ==
"MinSize")
488 else if (_key ==
"MaxSize")
492 else if (_key ==
"Movable")
506 return mCurrentActionScale;
516 return mWidgetCaption;
543 mCurrentActionScale.
clear();
553 if (result ==
IntCoord(1, 1, 0, 0) && !mMovable)
561 if (action ==
"Move")
576 else if (align.isRight())
586 else if (align.isBottom())
static std::string_view getClassTypeName()
void setAlpha(float _value)
void setCoef(float _value)
void setEnabled(bool _value)
EventPairAddParameter< EventHandle_WidgetPtr, EventHandle_WidgetPtrControllerItemPtr > eventPostAction
ControllerItem * createItem(std::string_view _type)
static ControllerManager & getInstance()
void removeItem(Widget *_widget)
void addItem(Widget *_widget, ControllerItem *_item)
Type * castType(bool _throw=true)
widget description should be here.
virtual void setCaption(const UString &_caption)
virtual const UString & getCaption() const
A UTF-16 string with implicit conversion to/from std::string and std::wstring.
bool isUserString(std::string_view _key) const
void setUserString(std::string_view _key, std::string_view _value)
std::string_view getUserString(std::string_view _key) const
void setPosition(const IntPoint &_point) override
void setVisibleSmooth(bool _visible)
void onKeyChangeRootFocus(bool _focus) override
void setMovable(bool _value)
void setSize(const IntSize &_size) override
void setSnap(bool _value)
EventPair< EventHandle_WidgetVoid, EventHandle_WindowPtr > eventWindowChangeCoord
void onMouseButtonReleased(int _left, int _top, MouseButton _id) override
IntSize getMaxSize() const
void setMinSize(const IntSize &_value)
void notifyMousePressed(MyGUI::Widget *_sender, int _left, int _top, MouseButton _id)
const UString & getCaption() const override
void animateStop(Widget *_widget, ControllerItem *_controller)
void notifyPressedButtonEvent(MyGUI::Widget *_sender)
void onMouseButtonPressed(int _left, int _top, MouseButton _id) override
const IntCoord & getActionScale() const
void setMaxSize(const IntSize &_value)
void onMouseChangeRootFocus(bool _focus) override
void notifyMouseReleased(MyGUI::Widget *_sender, int _left, int _top, MouseButton _id)
TextBox * getCaptionWidget() const
void notifyMouseDrag(MyGUI::Widget *_sender, int _left, int _top, MouseButton _id)
void setVisible(bool _visible) override
void setAutoAlpha(bool _auto)
void notifyMouseWheel(MyGUI::Widget *_sender, int _rel)
void onMouseDrag(int _left, int _top, MouseButton _id) override
void shutdownOverride() override
EventPair< EventHandle_WidgetString, EventHandle_WindowPtrCStringRef > eventWindowButtonPressed
void setCaption(const UString &_caption) override
void initialiseOverride() override
void setCoord(const IntCoord &_coord) override
IntSize getMinSize() const
void setPropertyOverride(std::string_view _key, std::string_view _value) override
bool getAutoAlpha() const
void actionWidgetDestroy(Widget *_widget, ControllerItem *_controller)
void actionWidgetHide(Widget *_widget, ControllerItem *_controller)
T parseValue(std::string_view _value)
constexpr float ALPHA_MAX
constexpr float ALPHA_MIN
const float WINDOW_ALPHA_FOCUS
const float WINDOW_SPEED_COEF
const float WINDOW_ALPHA_ACTIVE
const float WINDOW_ALPHA_DEACTIVE
types::TCoord< int > IntCoord
types::TSize< int > IntSize
const int WINDOW_SNAP_DISTANSE
delegates::DelegateFunction< Args... > * newDelegate(void(*_func)(Args... args))
std::vector< Widget * > VectorWidgetPtr
static Align parse(std::string_view _value)
static TCoord< int > parse(std::string_view _value)
TPoint< T > point() const
void set(T const &_left, T const &_top, T const &_right, T const &_bottom)