| 230 | } |
| 231 | |
| 232 | Vec2I ScrollBar::offsetFromThumbPosition(Vec2I const& thumbPosition) const { |
| 233 | auto scrollArea = convert<ScrollArea>(m_parent); |
| 234 | if (m_direction == GuiDirection::Vertical) { |
| 235 | int scrollSpan = trackSize() - m_thumb->size()[1]; |
| 236 | int scrollOffset = clamp((thumbPosition[1] - ScrollButtonStackSize), 0, scrollSpan); |
| 237 | float scrollRatio = (float)scrollOffset / (float)scrollSpan; |
| 238 | return {scrollArea->scrollOffset()[0], ceil(scrollArea->maxScrollPosition()[1] * scrollRatio)}; |
| 239 | } else { |
| 240 | int scrollSpan = trackSize() - m_thumb->size()[0]; |
| 241 | int scrollOffset = clamp((thumbPosition[0] - ScrollButtonStackSize), 0, scrollSpan); |
| 242 | float scrollRatio = (float)scrollOffset / (float)scrollSpan; |
| 243 | return {(int)ceil(scrollArea->maxScrollPosition()[0] * scrollRatio), scrollArea->scrollOffset()[1]}; |
| 244 | } |
| 245 | } |
| 246 | |
| 247 | ScrollArea::ScrollArea() { |
| 248 | auto assets = Root::singleton().assets(); |
no test coverage detected