Mercurial > hg > svgui
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); |