comparison view/Pane.cpp @ 810:b68af2be4545 tonioni

Merge from branch warnfix_no_size_t
author Chris Cannam
date Wed, 18 Jun 2014 13:42:25 +0100
parents 40c6c9344ff6
children 43256b925e15
comparison
equal deleted inserted replaced
802:584b11df8e4f 810:b68af2be4545
544 } 544 }
545 545
546 paint.end(); 546 paint.end();
547 } 547 }
548 548
549 size_t 549 int
550 Pane::getVerticalScaleWidth() const 550 Pane::getVerticalScaleWidth() const
551 { 551 {
552 if (m_scaleWidth > 0) return m_scaleWidth; 552 if (m_scaleWidth > 0) return m_scaleWidth;
553 else return 0; 553 else return 0;
554 } 554 }
965 void 965 void
966 Pane::drawEditingSelection(QPainter &paint) 966 Pane::drawEditingSelection(QPainter &paint)
967 { 967 {
968 int offset = m_mousePos.x() - m_clickPos.x(); 968 int offset = m_mousePos.x() - m_clickPos.x();
969 969
970 long origStart = m_editingSelection.getStartFrame(); 970 int origStart = m_editingSelection.getStartFrame();
971 971
972 int p0 = getXForFrame(origStart) + offset; 972 int p0 = getXForFrame(origStart) + offset;
973 int p1 = getXForFrame(m_editingSelection.getEndFrame()) + offset; 973 int p1 = getXForFrame(m_editingSelection.getEndFrame()) + offset;
974 974
975 if (m_editingSelectionEdge < 0) { 975 if (m_editingSelectionEdge < 0) {
976 p1 = getXForFrame(m_editingSelection.getEndFrame()); 976 p1 = getXForFrame(m_editingSelection.getEndFrame());
977 } else if (m_editingSelectionEdge > 0) { 977 } else if (m_editingSelectionEdge > 0) {
978 p0 = getXForFrame(m_editingSelection.getStartFrame()); 978 p0 = getXForFrame(m_editingSelection.getStartFrame());
979 } 979 }
980 980
981 long newStart = getFrameForX(p0); 981 int newStart = getFrameForX(p0);
982 long newEnd = getFrameForX(p1); 982 int newEnd = getFrameForX(p1);
983 983
984 paint.save(); 984 paint.save();
985 paint.setPen(QPen(getForeground(), 2)); 985 paint.setPen(QPen(getForeground(), 2));
986 986
987 int fontHeight = paint.fontMetrics().height(); 987 int fontHeight = paint.fontMetrics().height();
1040 int fontHeight = paint.fontMetrics().height(); 1040 int fontHeight = paint.fontMetrics().height();
1041 int fontAscent = paint.fontMetrics().ascent(); 1041 int fontAscent = paint.fontMetrics().ascent();
1042 1042
1043 if (r.y() + r.height() < height() - fontHeight - 6) return; 1043 if (r.y() + r.height() < height() - fontHeight - 6) return;
1044 1044
1045 size_t modelRate = waveformModel->getSampleRate(); 1045 int modelRate = waveformModel->getSampleRate();
1046 size_t nativeRate = waveformModel->getNativeRate(); 1046 int nativeRate = waveformModel->getNativeRate();
1047 size_t playbackRate = m_manager->getPlaybackSampleRate(); 1047 int playbackRate = m_manager->getPlaybackSampleRate();
1048 size_t outputRate = m_manager->getOutputSampleRate(); 1048 int outputRate = m_manager->getOutputSampleRate();
1049 1049
1050 QString srNote = ""; 1050 QString srNote = "";
1051 1051
1052 // Show (R) for waveform models that have been resampled or will 1052 // Show (R) for waveform models that have been resampled or will
1053 // be resampled on playback, and (X) for waveform models that will 1053 // be resampled on playback, and (X) for waveform models that will
1082 desc, OutlinedText); 1082 desc, OutlinedText);
1083 } 1083 }
1084 } 1084 }
1085 1085
1086 bool 1086 bool
1087 Pane::render(QPainter &paint, int xorigin, size_t f0, size_t f1) 1087 Pane::render(QPainter &paint, int xorigin, int f0, int f1)
1088 { 1088 {
1089 if (!View::render(paint, xorigin + m_scaleWidth, f0, f1)) { 1089 if (!View::render(paint, xorigin + m_scaleWidth, f0, f1)) {
1090 return false; 1090 return false;
1091 } 1091 }
1092 1092
1113 1113
1114 return true; 1114 return true;
1115 } 1115 }
1116 1116
1117 QImage * 1117 QImage *
1118 Pane::toNewImage(size_t f0, size_t f1) 1118 Pane::toNewImage(int f0, int f1)
1119 { 1119 {
1120 size_t x0 = f0 / getZoomLevel(); 1120 int x0 = f0 / getZoomLevel();
1121 size_t x1 = f1 / getZoomLevel(); 1121 int x1 = f1 / getZoomLevel();
1122 1122
1123 QImage *image = new QImage(x1 - x0 + m_scaleWidth, 1123 QImage *image = new QImage(x1 - x0 + m_scaleWidth,
1124 height(), QImage::Format_RGB32); 1124 height(), QImage::Format_RGB32);
1125 1125
1126 int formerScaleWidth = m_scaleWidth; 1126 int formerScaleWidth = m_scaleWidth;
1153 return image; 1153 return image;
1154 } 1154 }
1155 } 1155 }
1156 1156
1157 QSize 1157 QSize
1158 Pane::getImageSize(size_t f0, size_t f1) 1158 Pane::getImageSize(int f0, int f1)
1159 { 1159 {
1160 QSize s = View::getImageSize(f0, f1); 1160 QSize s = View::getImageSize(f0, f1);
1161 QImage *image = new QImage(100, 100, QImage::Format_RGB32); 1161 QImage *image = new QImage(100, 100, QImage::Format_RGB32);
1162 QPainter paint(image); 1162 QPainter paint(image);
1163 1163
1172 } 1172 }
1173 1173
1174 return QSize(sw + s.width(), s.height()); 1174 return QSize(sw + s.width(), s.height());
1175 } 1175 }
1176 1176
1177 size_t 1177 int
1178 Pane::getFirstVisibleFrame() const 1178 Pane::getFirstVisibleFrame() const
1179 { 1179 {
1180 long f0 = getFrameForX(m_scaleWidth); 1180 int f0 = getFrameForX(m_scaleWidth);
1181 size_t f = View::getFirstVisibleFrame(); 1181 int f = View::getFirstVisibleFrame();
1182 if (f0 < 0 || f0 < long(f)) return f; 1182 if (f0 < 0 || f0 < long(f)) return f;
1183 return f0; 1183 return f0;
1184 } 1184 }
1185 1185
1186 Selection 1186 Selection
1188 { 1188 {
1189 closeToLeftEdge = closeToRightEdge = false; 1189 closeToLeftEdge = closeToRightEdge = false;
1190 1190
1191 if (!m_manager) return Selection(); 1191 if (!m_manager) return Selection();
1192 1192
1193 long testFrame = getFrameForX(x - 5); 1193 int testFrame = getFrameForX(x - 5);
1194 if (testFrame < 0) { 1194 if (testFrame < 0) {
1195 testFrame = getFrameForX(x); 1195 testFrame = getFrameForX(x);
1196 if (testFrame < 0) return Selection(); 1196 if (testFrame < 0) return Selection();
1197 } 1197 }
1198 1198
1358 m_resizing = true; 1358 m_resizing = true;
1359 1359
1360 } else { 1360 } else {
1361 1361
1362 int mouseFrame = getFrameForX(e->x()); 1362 int mouseFrame = getFrameForX(e->x());
1363 size_t resolution = 1; 1363 int resolution = 1;
1364 int snapFrame = mouseFrame; 1364 int snapFrame = mouseFrame;
1365 1365
1366 Layer *layer = getSelectedLayer(); 1366 Layer *layer = getSelectedLayer();
1367 if (layer && !m_shiftPressed) { 1367 if (layer && !m_shiftPressed) {
1368 layer->snapToFeatureFrame(this, snapFrame, 1368 layer->snapToFeatureFrame(this, snapFrame,
1848 int x1 = r.x() + r.width(); 1848 int x1 = r.x() + r.width();
1849 int y1 = r.y() + r.height(); 1849 int y1 = r.y() + r.height();
1850 1850
1851 int w = x1 - x0; 1851 int w = x1 - x0;
1852 1852
1853 long newStartFrame = getFrameForX(x0); 1853 int newStartFrame = getFrameForX(x0);
1854 1854
1855 long visibleFrames = getEndFrame() - getStartFrame(); 1855 int visibleFrames = getEndFrame() - getStartFrame();
1856 if (newStartFrame <= -visibleFrames) { 1856 if (newStartFrame <= -visibleFrames) {
1857 newStartFrame = -visibleFrames + 1; 1857 newStartFrame = -visibleFrames + 1;
1858 } 1858 }
1859 1859
1860 if (newStartFrame >= long(getModelsEndFrame())) { 1860 if (newStartFrame >= long(getModelsEndFrame())) {
1861 newStartFrame = getModelsEndFrame() - 1; 1861 newStartFrame = getModelsEndFrame() - 1;
1862 } 1862 }
1863 1863
1864 float ratio = float(w) / float(width()); 1864 float ratio = float(w) / float(width());
1865 // cerr << "ratio: " << ratio << endl; 1865 // cerr << "ratio: " << ratio << endl;
1866 size_t newZoomLevel = (size_t)nearbyint(m_zoomLevel * ratio); 1866 int newZoomLevel = (int)nearbyint(m_zoomLevel * ratio);
1867 if (newZoomLevel < 1) newZoomLevel = 1; 1867 if (newZoomLevel < 1) newZoomLevel = 1;
1868 1868
1869 // cerr << "start: " << m_startFrame << ", level " << m_zoomLevel << endl; 1869 // cerr << "start: " << m_startFrame << ", level " << m_zoomLevel << endl;
1870 setZoomLevel(getZoomConstraintBlockSize(newZoomLevel)); 1870 setZoomLevel(getZoomConstraintBlockSize(newZoomLevel));
1871 setStartFrame(newStartFrame); 1871 setStartFrame(newStartFrame);
1940 !(m_manager && m_manager->isPlaying())); // resist vert 1940 !(m_manager && m_manager->isPlaying())); // resist vert
1941 1941
1942 if (m_dragMode == HorizontalDrag || 1942 if (m_dragMode == HorizontalDrag ||
1943 m_dragMode == FreeDrag) { 1943 m_dragMode == FreeDrag) {
1944 1944
1945 long frameOff = getFrameForX(e->x()) - getFrameForX(m_clickPos.x()); 1945 int frameOff = getFrameForX(e->x()) - getFrameForX(m_clickPos.x());
1946 1946 int newCentreFrame = m_dragCentreFrame;
1947 size_t newCentreFrame = m_dragCentreFrame;
1948 1947
1949 if (frameOff < 0) { 1948 if (frameOff < 0) {
1950 newCentreFrame -= frameOff; 1949 newCentreFrame -= frameOff;
1951 } else if (newCentreFrame >= size_t(frameOff)) { 1950 } else if (newCentreFrame >= frameOff) {
1952 newCentreFrame -= frameOff; 1951 newCentreFrame -= frameOff;
1953 } else { 1952 } else {
1954 newCentreFrame = 0; 1953 newCentreFrame = 0;
1955 } 1954 }
1956 1955
2068 2067
2069 void 2068 void
2070 Pane::dragExtendSelection(QMouseEvent *e) 2069 Pane::dragExtendSelection(QMouseEvent *e)
2071 { 2070 {
2072 int mouseFrame = getFrameForX(e->x()); 2071 int mouseFrame = getFrameForX(e->x());
2073 size_t resolution = 1; 2072 int resolution = 1;
2074 int snapFrameLeft = mouseFrame; 2073 int snapFrameLeft = mouseFrame;
2075 int snapFrameRight = mouseFrame; 2074 int snapFrameRight = mouseFrame;
2076 2075
2077 Layer *layer = getSelectedLayer(); 2076 Layer *layer = getSelectedLayer();
2078 if (layer && !m_shiftPressed) { 2077 if (layer && !m_shiftPressed) {
2085 // cerr << "snap: frame = " << mouseFrame << ", start frame = " << m_selectionStartFrame << ", left = " << snapFrameLeft << ", right = " << snapFrameRight << endl; 2084 // cerr << "snap: frame = " << mouseFrame << ", start frame = " << m_selectionStartFrame << ", left = " << snapFrameLeft << ", right = " << snapFrameRight << endl;
2086 2085
2087 if (snapFrameLeft < 0) snapFrameLeft = 0; 2086 if (snapFrameLeft < 0) snapFrameLeft = 0;
2088 if (snapFrameRight < 0) snapFrameRight = 0; 2087 if (snapFrameRight < 0) snapFrameRight = 0;
2089 2088
2090 size_t min, max; 2089 int min, max;
2091 2090
2092 if (m_selectionStartFrame > size_t(snapFrameLeft)) { 2091 if (m_selectionStartFrame > snapFrameLeft) {
2093 min = snapFrameLeft; 2092 min = snapFrameLeft;
2094 max = m_selectionStartFrame; 2093 max = m_selectionStartFrame;
2095 } else if (size_t(snapFrameRight) > m_selectionStartFrame) { 2094 } else if (snapFrameRight > m_selectionStartFrame) {
2096 min = m_selectionStartFrame; 2095 min = m_selectionStartFrame;
2097 max = snapFrameRight; 2096 max = snapFrameRight;
2098 } else { 2097 } else {
2099 min = snapFrameLeft; 2098 min = snapFrameLeft;
2100 max = snapFrameRight; 2099 max = snapFrameRight;
2188 update(); 2187 update();
2189 } 2188 }
2190 2189
2191 if (relocate) { 2190 if (relocate) {
2192 2191
2193 long f = getFrameForX(e->x()); 2192 int f = getFrameForX(e->x());
2194 2193
2195 setCentreFrame(f); 2194 setCentreFrame(f);
2196 2195
2197 m_dragCentreFrame = f; 2196 m_dragCentreFrame = f;
2198 m_dragStartMinValue = 0; 2197 m_dragStartMinValue = 0;
2259 // Scroll left or right, rapidly 2258 // Scroll left or right, rapidly
2260 2259
2261 if (getStartFrame() < 0 && 2260 if (getStartFrame() < 0 &&
2262 getEndFrame() >= getModelsEndFrame()) return; 2261 getEndFrame() >= getModelsEndFrame()) return;
2263 2262
2264 long delta = ((width() / 2) * count * m_zoomLevel); 2263 int delta = ((width() / 2) * count * m_zoomLevel);
2265 2264
2266 if (int(m_centreFrame) < delta) { 2265 if (m_centreFrame < delta) {
2267 setCentreFrame(0); 2266 setCentreFrame(0);
2268 } else if (int(m_centreFrame) - delta >= int(getModelsEndFrame())) { 2267 } else if (m_centreFrame - delta >= getModelsEndFrame()) {
2269 setCentreFrame(getModelsEndFrame()); 2268 setCentreFrame(getModelsEndFrame());
2270 } else { 2269 } else {
2271 setCentreFrame(m_centreFrame - delta); 2270 setCentreFrame(m_centreFrame - delta);
2272 } 2271 }
2273 2272
2388 updateVerticalPanner(); 2387 updateVerticalPanner();
2389 } 2388 }
2390 } 2389 }
2391 2390
2392 void 2391 void
2393 Pane::verticalPannerMoved(float x0, float y0, float w, float h) 2392 Pane::verticalPannerMoved(float , float y0, float , float h)
2394 { 2393 {
2395 float vmin, vmax, dmin, dmax; 2394 float vmin, vmax, dmin, dmax;
2396 if (!getTopLayerDisplayExtents(vmin, vmax, dmin, dmax)) return; 2395 if (!getTopLayerDisplayExtents(vmin, vmax, dmin, dmax)) return;
2397 float y1 = y0 + h; 2396 float y1 = y0 + h;
2398 float newmax = vmin + ((1.0 - y0) * (vmax - vmin)); 2397 float newmax = vmin + ((1.0 - y0) * (vmax - vmin));
2526 } 2525 }
2527 2526
2528 int p0 = getXForFrame(m_editingSelection.getStartFrame()) + offset; 2527 int p0 = getXForFrame(m_editingSelection.getStartFrame()) + offset;
2529 int p1 = getXForFrame(m_editingSelection.getEndFrame()) + offset; 2528 int p1 = getXForFrame(m_editingSelection.getEndFrame()) + offset;
2530 2529
2531 long f0 = getFrameForX(p0); 2530 int f0 = getFrameForX(p0);
2532 long f1 = getFrameForX(p1); 2531 int f1 = getFrameForX(p1);
2533 2532
2534 Selection newSelection(f0, f1); 2533 Selection newSelection(f0, f1);
2535 2534
2536 if (m_editingSelectionEdge == 0) { 2535 if (m_editingSelectionEdge == 0) {
2537 2536
2624 updateHeadsUpDisplay(); 2623 updateHeadsUpDisplay();
2625 update(); 2624 update();
2626 } 2625 }
2627 2626
2628 void 2627 void
2629 Pane::viewZoomLevelChanged(View *v, unsigned long z, bool locked) 2628 Pane::viewZoomLevelChanged(View *v, int z, bool locked)
2630 { 2629 {
2631 // cerr << "Pane[" << this << "]::zoomLevelChanged (global now " 2630 // cerr << "Pane[" << this << "]::zoomLevelChanged (global now "
2632 // << (m_manager ? m_manager->getGlobalZoom() : 0) << ")" << endl; 2631 // << (m_manager ? m_manager->getGlobalZoom() : 0) << ")" << endl;
2633 2632
2634 View::viewZoomLevelChanged(v, z, locked); 2633 View::viewZoomLevelChanged(v, z, locked);