| 415 | } |
| 416 | |
| 417 | bool UserEventStream::OnSetCenter(ref_ptr<SetCenterEvent> centerEvent) |
| 418 | { |
| 419 | m2::PointD const & center = centerEvent->GetCenter(); |
| 420 | auto const zoom = centerEvent->GetZoom(); |
| 421 | auto const scaleFactor = centerEvent->GetScaleFactor(); |
| 422 | |
| 423 | if (centerEvent->TrackVisibleViewport()) |
| 424 | { |
| 425 | m_needTrackCenter = true; |
| 426 | m_trackedCenter = center; |
| 427 | } |
| 428 | |
| 429 | ScreenBase screen = GetCurrentScreen(); |
| 430 | |
| 431 | if (zoom != kDoNotChangeZoom) |
| 432 | { |
| 433 | screen.SetFromParams(center, screen.GetAngle(), GetScreenScale(zoom)); |
| 434 | screen.MatchGandP3d(center, m_visibleViewport.Center()); |
| 435 | } |
| 436 | else if (scaleFactor > 0.0) |
| 437 | { |
| 438 | screen.SetOrg(center); |
| 439 | ApplyScale(m_visibleViewport.Center(), scaleFactor, screen); |
| 440 | } |
| 441 | else |
| 442 | { |
| 443 | GetTargetScreen(screen); |
| 444 | screen.MatchGandP3d(center, m_visibleViewport.Center()); |
| 445 | } |
| 446 | |
| 447 | ShrinkAndScaleInto(screen, df::GetWorldRect()); |
| 448 | |
| 449 | return SetScreen(screen, centerEvent->IsAnim(), centerEvent->GetParallelAnimCreator()); |
| 450 | } |
| 451 | |
| 452 | bool UserEventStream::OnRotate(ref_ptr<RotateEvent> rotateEvent) |
| 453 | { |
nothing calls this directly
no test coverage detected