| 236 | } |
| 237 | |
| 238 | void ScrollViewBar::onScrolled(const Vec2& outOfBoundary) |
| 239 | { |
| 240 | if (_autoHideEnabled) |
| 241 | { |
| 242 | _autoHideRemainingTime = _autoHideTime; |
| 243 | ProtectedNode::setOpacity(_opacity); |
| 244 | } |
| 245 | |
| 246 | Layout* innerContainer = _parent->getInnerContainer(); |
| 247 | |
| 248 | float innerContainerMeasure = 0; |
| 249 | float scrollViewMeasure = 0; |
| 250 | float outOfBoundaryValue = 0; |
| 251 | float innerContainerPosition = 0; |
| 252 | if (_direction == ScrollView::Direction::VERTICAL) |
| 253 | { |
| 254 | innerContainerMeasure = innerContainer->getContentSize().height; |
| 255 | scrollViewMeasure = _parent->getContentSize().height; |
| 256 | outOfBoundaryValue = outOfBoundary.y; |
| 257 | innerContainerPosition = -innerContainer->getPositionY(); |
| 258 | } |
| 259 | else if (_direction == ScrollView::Direction::HORIZONTAL) |
| 260 | { |
| 261 | innerContainerMeasure = innerContainer->getContentSize().width; |
| 262 | scrollViewMeasure = _parent->getContentSize().width; |
| 263 | outOfBoundaryValue = outOfBoundary.x; |
| 264 | innerContainerPosition = -innerContainer->getPositionX(); |
| 265 | } |
| 266 | |
| 267 | float length = calculateLength(innerContainerMeasure, scrollViewMeasure, outOfBoundaryValue); |
| 268 | Vec2 position = |
| 269 | calculatePosition(innerContainerMeasure, scrollViewMeasure, innerContainerPosition, outOfBoundaryValue, length); |
| 270 | updateLength(length); |
| 271 | setPosition(position); |
| 272 | } |
| 273 | |
| 274 | float ScrollViewBar::calculateLength(float innerContainerMeasure, float scrollViewMeasure, float outOfBoundaryValue) |
| 275 | { |
no test coverage detected