static const int LITTLE_MARK_X2 = LINE_END;
static const int LITTLE_MARK_X1 = (LITTLE_MARK_X2 - LITTLE_MARK_LENGTH);
+static int FRAME_SIZE;
static int LABEL_SIZE;
static const int END_LABEL_X = 4;
static const int END_LABEL_Y = (END_LABEL_X + LABEL_SIZE - 2);
m_duration(0),
m_offset(0),
m_clickedGuide(-1),
+ m_rate(-1),
m_mouseMove(NO_MOVE)
{
setFont(KGlobalSettings::toolBarFont());
QFontMetricsF fontMetrics(font());
LABEL_SIZE = fontMetrics.ascent() - 2;
+ updateFrameSize();
m_scale = 3;
m_zoneColor = KStatefulBrush(KColorScheme::View, KColorScheme::PositiveBackground, KSharedConfig::openConfig(KdenliveSettings::colortheme())).brush(this).color();
- littleMarkDistance = FRAME_SIZE;
- mediumMarkDistance = FRAME_SIZE * m_timecode.fps();
- bigMarkDistance = FRAME_SIZE * m_timecode.fps() * 60;
m_zoneStart = 0;
m_zoneEnd = 100;
m_contextMenu = new QMenu(this);
update();
}
+void CustomRuler::updateFrameSize()
+{
+ FRAME_SIZE = m_view->getFrameWidth();
+ littleMarkDistance = FRAME_SIZE;
+ mediumMarkDistance = FRAME_SIZE * m_timecode.fps();
+ bigMarkDistance = FRAME_SIZE * m_timecode.fps() * 60;
+ updateProjectFps(m_timecode);
+ if (m_rate > 0) setPixelPerMark(m_rate);
+}
+
void CustomRuler::slotEditGuide()
{
m_view->slotEditGuide(m_clickedGuide);
void CustomRuler::mouseReleaseEvent(QMouseEvent * /*event*/)
{
+ if (m_moveCursor == RULER_START || m_moveCursor == RULER_END || m_moveCursor == RULER_MIDDLE) {
+ emit zoneMoved(m_zoneStart, m_zoneEnd);
+ m_view->setDocumentModified();
+ }
m_mouseMove = NO_MOVE;
+
}
// virtual
if (qAbs(pos - m_zoneStart * m_factor) < 4) m_moveCursor = RULER_START;
else if (qAbs(pos - (m_zoneStart + (m_zoneEnd - m_zoneStart) / 2) * m_factor) < 4) m_moveCursor = RULER_MIDDLE;
else if (qAbs(pos - m_zoneEnd * m_factor) < 4) m_moveCursor = RULER_END;
+ m_view->updateSnapPoints(NULL);
}
if (m_moveCursor == RULER_CURSOR) {
m_view->setCursorPos((int) pos / m_factor);
m_zoneStart += move;
m_zoneEnd += move;
}
- emit zoneMoved(m_zoneStart, m_zoneEnd);
- m_view->setDocumentModified();
int min = qMin(m_zoneStart, zoneStart);
int max = qMax(m_zoneEnd, zoneEnd);