34 const float M_PI = 3.141593f;
45 void ControllerEdgeHide::prepareItem(
Widget* _widget)
47 recalculateTime(_widget);
52 bool ControllerEdgeHide::addTime(Widget* _widget,
float _time)
57 while ((keyFocus !=
nullptr) && (_widget != keyFocus))
59 while ((mouseFocus !=
nullptr) && (_widget != mouseFocus))
63 bool haveFocus = ((keyFocus !=
nullptr) || (mouseFocus !=
nullptr)) || (_widget->isVisible() ==
false);
65 mElapsedTime += (1 - 2*haveFocus) * _time;
67 if (mElapsedTime >= mTime)
71 if (mElapsedTime <= 0)
77 float k = sin(
M_PI * mElapsedTime/mTime -
M_PI/2);
78 if (k<0) k = (-pow(-k, 0.7f) + 1)/2;
79 else k = (pow(k, 0.7f) + 1)/2;
83 if (coord != mLastCoord)
89 recalculateTime(_widget);
93 if (_widget->getCroppedParent() ==
nullptr)
94 view_size = _widget->getLayer()->getSize();
96 view_size = ((Widget*)_widget->getCroppedParent())->getSize();
98 bool nearBorder =
false;
100 if ((coord.
left <= 0) && !(coord.
right() >= view_size.width - 1))
102 coord.
left = - int(
float(coord.
width - mRemainPixels - mShadowSize) * k);
105 else if ((coord.
top <= 0) && !(coord.
bottom() >= view_size.height - 1))
107 coord.
top = - int(
float(coord.
height - mRemainPixels - mShadowSize) * k);
110 else if ((coord.
right() >= view_size.width - 1) && !(coord.
left <= 0))
112 coord.
left = int(
float(view_size.width - 1) -
float(mRemainPixels)*k -
float(coord.
width) * (1.f - k));
115 else if ((coord.
bottom() >= view_size.height-1) && !(coord.
top <= 0))
117 coord.
top = int(
float(view_size.height-1) -
float(mRemainPixels)*k -
float(coord.
height) * (1.f - k));
123 _widget->setCoord(coord);
138 if (_key ==
"Time")
setTime(utility::parseValue<float>(_value));
139 else if (_key ==
"RemainPixels")
setRemainPixels(utility::parseValue<int>(_value));
140 else if (_key ==
"ShadowSize")
setShadowSize(utility::parseValue<int>(_value));
143 void ControllerEdgeHide::recalculateTime(
Widget* _widget)
156 k = - (float) coord.
left / (coord.
width - mRemainPixels - mShadowSize);
158 else if ((coord.
top <= 0) && !(coord.
bottom() >= view_size.
height - 1))
160 k = - (float)coord.
top / (coord.
height - mRemainPixels - mShadowSize);
162 else if ((coord.
right() >= view_size.
width - 1) && !(coord.
left <= 0))
164 k = (float)(coord.
right() - view_size.
width + 1 ) / (coord.
width - mRemainPixels);
166 else if ((coord.
bottom() >= view_size.
height - 1) && !(coord.
top <= 0))
174 mElapsedTime = (asin( pow( 2*k - 1, 1/0.7f))/
M_PI + 1.f/2) * mTime;
176 mElapsedTime = (asin(-pow(-2*k + 1, 1/0.7f))/
M_PI + 1.f/2) * mTime;