comparison view/View.cpp @ 1183:57d192e26331 zoom

Some hackery toward having a zoomlevel type
author Chris Cannam
date Mon, 12 Dec 2016 15:18:52 +0000
parents 52675a1f662c
children 13d9b422f7fe
comparison
equal deleted inserted replaced
1182:6605984fa98f 1183:57d192e26331
442 if (minf == maxf) return 0; 442 if (minf == maxf) return 0;
443 return minf + ((h - y) * (maxf - minf)) / h; 443 return minf + ((h - y) * (maxf - minf)) / h;
444 } 444 }
445 } 445 }
446 446
447 int 447 ZoomLevel
448 View::getZoomLevel() const 448 View::getZoomLevel() const
449 { 449 {
450 #ifdef DEBUG_VIEW_WIDGET_PAINT 450 #ifdef DEBUG_VIEW_WIDGET_PAINT
451 // cout << "zoom level: " << m_zoomLevel << endl; 451 // cout << "zoom level: " << m_zoomLevel << endl;
452 #endif 452 #endif
471 return 1; 471 return 1;
472 #endif 472 #endif
473 } 473 }
474 474
475 void 475 void
476 View::setZoomLevel(int z) 476 View::setZoomLevel(ZoomLevel z)
477 { 477 {
478 int dpratio = effectiveDevicePixelRatio(); 478 int dpratio = effectiveDevicePixelRatio();
479 if (z < dpratio) return; 479 if (z < dpratio) return;
480 if (z < 1) z = 1; 480 if (z < 1) z = 1;
481 if (m_zoomLevel != int(z)) { 481 if (m_zoomLevel != int(z)) {
719 { 719 {
720 if (m_manager) { 720 if (m_manager) {
721 m_manager->disconnect(this, SLOT(globalCentreFrameChanged(sv_frame_t))); 721 m_manager->disconnect(this, SLOT(globalCentreFrameChanged(sv_frame_t)));
722 m_manager->disconnect(this, SLOT(viewCentreFrameChanged(View *, sv_frame_t))); 722 m_manager->disconnect(this, SLOT(viewCentreFrameChanged(View *, sv_frame_t)));
723 m_manager->disconnect(this, SLOT(viewManagerPlaybackFrameChanged(sv_frame_t))); 723 m_manager->disconnect(this, SLOT(viewManagerPlaybackFrameChanged(sv_frame_t)));
724 m_manager->disconnect(this, SLOT(viewZoomLevelChanged(View *, int, bool))); 724 m_manager->disconnect(this, SLOT(viewZoomLevelChanged(View *, ZoomLevel, bool)));
725 m_manager->disconnect(this, SLOT(toolModeChanged())); 725 m_manager->disconnect(this, SLOT(toolModeChanged()));
726 m_manager->disconnect(this, SLOT(selectionChanged())); 726 m_manager->disconnect(this, SLOT(selectionChanged()));
727 m_manager->disconnect(this, SLOT(overlayModeChanged())); 727 m_manager->disconnect(this, SLOT(overlayModeChanged()));
728 m_manager->disconnect(this, SLOT(zoomWheelsEnabledChanged())); 728 m_manager->disconnect(this, SLOT(zoomWheelsEnabledChanged()));
729 disconnect(m_manager, SLOT(viewCentreFrameChanged(sv_frame_t, bool, PlaybackFollowMode))); 729 disconnect(m_manager, SLOT(viewCentreFrameChanged(sv_frame_t, bool, PlaybackFollowMode)));
730 disconnect(m_manager, SLOT(zoomLevelChanged(int, bool))); 730 disconnect(m_manager, SLOT(zoomLevelChanged(ZoomLevel, bool)));
731 } 731 }
732 732
733 m_manager = manager; 733 m_manager = manager;
734 734
735 connect(m_manager, SIGNAL(globalCentreFrameChanged(sv_frame_t)), 735 connect(m_manager, SIGNAL(globalCentreFrameChanged(sv_frame_t)),
737 connect(m_manager, SIGNAL(viewCentreFrameChanged(View *, sv_frame_t)), 737 connect(m_manager, SIGNAL(viewCentreFrameChanged(View *, sv_frame_t)),
738 this, SLOT(viewCentreFrameChanged(View *, sv_frame_t))); 738 this, SLOT(viewCentreFrameChanged(View *, sv_frame_t)));
739 connect(m_manager, SIGNAL(playbackFrameChanged(sv_frame_t)), 739 connect(m_manager, SIGNAL(playbackFrameChanged(sv_frame_t)),
740 this, SLOT(viewManagerPlaybackFrameChanged(sv_frame_t))); 740 this, SLOT(viewManagerPlaybackFrameChanged(sv_frame_t)));
741 741
742 connect(m_manager, SIGNAL(viewZoomLevelChanged(View *, int, bool)), 742 connect(m_manager, SIGNAL(viewZoomLevelChanged(View *, ZoomLevel, bool)),
743 this, SLOT(viewZoomLevelChanged(View *, int, bool))); 743 this, SLOT(viewZoomLevelChanged(View *, ZoomLevel, bool)));
744 744
745 connect(m_manager, SIGNAL(toolModeChanged()), 745 connect(m_manager, SIGNAL(toolModeChanged()),
746 this, SLOT(toolModeChanged())); 746 this, SLOT(toolModeChanged()));
747 connect(m_manager, SIGNAL(selectionChanged()), 747 connect(m_manager, SIGNAL(selectionChanged()),
748 this, SLOT(selectionChanged())); 748 this, SLOT(selectionChanged()));
758 connect(this, SIGNAL(centreFrameChanged(sv_frame_t, bool, 758 connect(this, SIGNAL(centreFrameChanged(sv_frame_t, bool,
759 PlaybackFollowMode)), 759 PlaybackFollowMode)),
760 m_manager, SLOT(viewCentreFrameChanged(sv_frame_t, bool, 760 m_manager, SLOT(viewCentreFrameChanged(sv_frame_t, bool,
761 PlaybackFollowMode))); 761 PlaybackFollowMode)));
762 762
763 connect(this, SIGNAL(zoomLevelChanged(int, bool)), 763 connect(this, SIGNAL(zoomLevelChanged(ZoomLevel, bool)),
764 m_manager, SLOT(viewZoomLevelChanged(int, bool))); 764 m_manager, SLOT(viewZoomLevelChanged(ZoomLevel, bool)));
765 765
766 switch (m_followPlay) { 766 switch (m_followPlay) {
767 767
768 case PlaybackScrollPage: 768 case PlaybackScrollPage:
769 case PlaybackScrollPageWithCentre: 769 case PlaybackScrollPageWithCentre:
1121 break; 1121 break;
1122 } 1122 }
1123 } 1123 }
1124 1124
1125 void 1125 void
1126 View::viewZoomLevelChanged(View *p, int z, bool locked) 1126 View::viewZoomLevelChanged(View *p, ZoomLevel z, bool locked)
1127 { 1127 {
1128 #ifdef DEBUG_VIEW_WIDGET_PAINT 1128 #ifdef DEBUG_VIEW_WIDGET_PAINT
1129 cerr << "View[" << this << "]: viewZoomLevelChanged(" << p << ", " << z << ", " << locked << ")" << endl; 1129 cerr << "View[" << this << "]: viewZoomLevelChanged(" << p << ", " << z << ", " << locked << ")" << endl;
1130 #endif 1130 #endif
1131 if (m_followZoom && p != this && locked) { 1131 if (m_followZoom && p != this && locked) {
1448 } 1448 }
1449 1449
1450 void 1450 void
1451 View::zoom(bool in) 1451 View::zoom(bool in)
1452 { 1452 {
1453 int newZoomLevel = m_zoomLevel; 1453 ZoomLevel newZoomLevel = m_zoomLevel;
1454 1454
1455 if (in) { 1455 if (in) {
1456 newZoomLevel = getZoomConstraintBlockSize(newZoomLevel - 1, 1456 newZoomLevel = getZoomConstraintLevel(m_zoomLevel.decremented(),
1457 ZoomConstraint::RoundDown); 1457 ZoomConstraint::RoundDown);
1458 } else { 1458 } else {
1459 newZoomLevel = getZoomConstraintBlockSize(newZoomLevel + 1, 1459 newZoomLevel = getZoomConstraintLevel(m_zoomLevel.incremented(),
1460 ZoomConstraint::RoundUp); 1460 ZoomConstraint::RoundUp);
1461 } 1461 }
1462 1462
1463 if (newZoomLevel != m_zoomLevel) { 1463 if (newZoomLevel != m_zoomLevel) {
1464 setZoomLevel(newZoomLevel); 1464 setZoomLevel(newZoomLevel);
1465 } 1465 }