#include "kdenlivesettings.h"
#include "kthumb.h"
#include "profilesdialog.h"
-#ifdef QJSON
+#ifdef USE_QJSON
#include "rotoscoping/rotowidget.h"
#endif
connect(&m_startThumbTimer, SIGNAL(timeout()), this, SLOT(slotGetStartThumb()));
m_endThumbTimer.setSingleShot(true);
connect(&m_endThumbTimer, SIGNAL(timeout()), this, SLOT(slotGetEndThumb()));
-
- connect(this, SIGNAL(getThumb(int, int)), m_clip, SLOT(slotExtractImage(int, int)));
-
connect(m_clip->thumbProducer(), SIGNAL(thumbReady(int, QImage)), this, SLOT(slotThumbReady(int, QImage)));
connect(m_clip, SIGNAL(gotAudioData()), this, SLOT(slotGotAudioData()));
if (generateThumbs) QTimer::singleShot(200, this, SLOT(slotFetchThumbs()));
} else if (m_clipType == IMAGE || m_clipType == TEXT) {
m_baseColor = QColor(141, 166, 215);
if (m_clipType == TEXT) {
- connect(this, SIGNAL(getThumb(int, int)), m_clip, SLOT(slotExtractImage(int, int)));
connect(m_clip->thumbProducer(), SIGNAL(thumbReady(int, QImage)), this, SLOT(slotThumbReady(int, QImage)));
}
//m_startPix = KThumb::getImage(KUrl(clip->getProperty("resource")), (int)(KdenliveSettings::trackheight() * KdenliveSettings::project_display_ratio()), KdenliveSettings::trackheight());
if (m_clipType == IMAGE || m_clipType == TEXT) duplicate->slotSetStartThumb(m_startPix);
else if (m_clipType != COLOR) {
if (info.cropStart == m_info.cropStart) duplicate->slotSetStartThumb(m_startPix);
- if (info.cropStart + (info.endPos - info.startPos) == m_info.cropStart + (m_info.endPos - m_info.startPos)) duplicate->slotSetEndThumb(m_endPix);
+ if (info.cropStart + (info.endPos - info.startPos) == m_info.cropStart + m_info.cropDuration) {
+ duplicate->slotSetEndThumb(m_endPix);
+ }
}
//kDebug() << "// CLoning clip: " << (info.cropStart + (info.endPos - info.startPos)).frames(m_fps) << ", CURRENT end: " << (cropStart() + duration()).frames(m_fps);
duplicate->setEffectList(m_effectList);
m_endPix = QPixmap();
m_audioThumbCachePic.clear();
}
- kDebug()<<"........... RESET THMBS";
slotFetchThumbs();
}
return;
}
- if (m_endPix.isNull() && m_startPix.isNull()) {
+ QList <int> frames;
+ if (m_startPix.isNull()) {
m_startThumbRequested = true;
+ frames.append((int)m_speedIndependantInfo.cropStart.frames(m_fps));
+ }
+
+ if (m_endPix.isNull()) {
m_endThumbRequested = true;
- emit getThumb((int)m_speedIndependantInfo.cropStart.frames(m_fps), (int)(m_speedIndependantInfo.cropStart + m_speedIndependantInfo.cropDuration).frames(m_fps) - 1);
- } else {
- if (m_endPix.isNull()) {
- slotGetEndThumb();
- }
- if (m_startPix.isNull()) {
- slotGetStartThumb();
- }
+ frames.append((int)(m_speedIndependantInfo.cropStart + m_speedIndependantInfo.cropDuration).frames(m_fps) - 1);
}
+
+ m_clip->slotExtractImage(frames);
}
void ClipItem::slotGetStartThumb()
{
m_startThumbRequested = true;
- emit getThumb((int)m_speedIndependantInfo.cropStart.frames(m_fps), -1);
+ m_clip->slotExtractImage(QList<int>() << (int)m_speedIndependantInfo.cropStart.frames(m_fps));
}
void ClipItem::slotGetEndThumb()
{
m_endThumbRequested = true;
- emit getThumb(-1, (int)(m_speedIndependantInfo.cropStart + m_speedIndependantInfo.cropDuration).frames(m_fps) - 1);
+ m_clip->slotExtractImage(QList<int>() << (int)(m_speedIndependantInfo.cropStart + m_speedIndependantInfo.cropDuration).frames(m_fps) - 1);
}
if (isSelected() || (parentItem() && parentItem()->isSelected())) {
paintColor = paintColor.darker();
framePen.setColor(Qt::red);
- framePen.setWidth(2);
+ framePen.setWidthF(2.0);
}
else {
framePen.setColor(paintColor.darker());
}
const QRectF exposed = option->exposedRect;
- painter->fillRect(exposed, paintColor);
painter->setClipRect(exposed);
- painter->setMatrixEnabled(false);
- const QRectF mapped = painter->matrix().mapRect(rect()).adjusted(0, 0, 1.0, 0.5);
+ painter->fillRect(exposed, paintColor);
+ painter->setWorldMatrixEnabled(false);;
+ const QRectF mapped = painter->worldTransform().mapRect(rect());
// draw thumbnails
if (KdenliveSettings::videothumbnails() && !isAudioOnly()) {
QPen pen = painter->pen();
}
// if we are in full zoom, paint thumbnail for every frame
- if (m_clip->thumbProducer() && clipType() != COLOR && clipType() != AUDIO && !m_audioOnly && painter->matrix().m11() == FRAME_SIZE) {
+ if (m_clip->thumbProducer() && clipType() != COLOR && clipType() != AUDIO && !m_audioOnly && painter->worldTransform().m11() == FRAME_SIZE) {
int offset = (m_info.startPos - m_info.cropStart).frames(m_fps);
int left = qMax((int) m_info.cropStart.frames(m_fps) + 1, (int) mapToScene(exposed.left(), 0).x() - offset);
int right = qMin((int)(m_info.cropStart + m_info.cropDuration).frames(m_fps) - 1, (int) mapToScene(exposed.right(), 0).x() - offset);
mappedRect.setTop(mappedRect.bottom() - mapped.height() / 2);
} else mappedRect = mapped;
- double scale = painter->matrix().m11();
+ double scale = painter->worldTransform().m11();
int channels = 0;
if (isEnabled() && m_clip) channels = m_clip->getProperty("channels").toInt();
if (scale != m_framePixelWidth)
m_audioThumbCachePic.clear();
double cropLeft = m_info.cropStart.frames(m_fps);
const int clipStart = mappedRect.x();
- const int mappedStartPixel = painter->matrix().map(QPointF(startpixel + cropLeft, 0)).x() - clipStart;
- const int mappedEndPixel = painter->matrix().map(QPointF(endpixel + cropLeft, 0)).x() - clipStart;
+ const int mappedStartPixel = painter->worldTransform().map(QPointF(startpixel + cropLeft, 0)).x() - clipStart;
+ const int mappedEndPixel = painter->worldTransform().map(QPointF(endpixel + cropLeft, 0)).x() - clipStart;
cropLeft = cropLeft * scale;
if (channels >= 1) {
if (pos > GenTime()) {
if (pos > cropDuration()) break;
QLineF l(rect().x() + pos.frames(m_fps), rect().y(), rect().x() + pos.frames(m_fps), rect().bottom());
- QLineF l2 = painter->matrix().map(l);
+ QLineF l2 = painter->worldTransform().map(l);
painter->setPen(pen);
painter->drawLine(l2);
if (KdenliveSettings::showmarkers()) {
framepos = rect().x() + pos.frames(m_fps);
const QRectF r1(framepos + 0.04, 10, rect().width() - framepos - 2, rect().height() - 10);
- const QRectF r2 = painter->matrix().mapRect(r1);
+ const QRectF r2 = painter->worldTransform().mapRect(r1);
const QRectF txtBounding3 = painter->boundingRect(r2, Qt::AlignLeft | Qt::AlignTop, ' ' + (*it).comment() + ' ');
painter->setBrush(markerBrush);
painter->setPen(Qt::NoPen);
fadeInPath.lineTo(0, rect().height());
fadeInPath.lineTo(m_startFade, 0);
fadeInPath.closeSubpath();
- QPainterPath f1 = painter->matrix().map(fadeInPath);
+ QPainterPath f1 = painter->worldTransform().map(fadeInPath);
painter->fillPath(f1/*.intersected(resultClipPath)*/, fades);
/*if (isSelected()) {
QLineF l(m_startFade * scale, 0, 0, itemHeight);
fadeOutPath.lineTo(rect().width(), rect().height());
fadeOutPath.lineTo(rect().width() - m_endFade, 0);
fadeOutPath.closeSubpath();
- QPainterPath f1 = painter->matrix().map(fadeOutPath);
+ QPainterPath f1 = painter->worldTransform().map(fadeOutPath);
painter->fillPath(f1/*.intersected(resultClipPath)*/, fades);
/*if (isSelected()) {
QLineF l(itemWidth - m_endFade * scale, 0, itemWidth, itemHeight);
painter->setClipping(false);
painter->setPen(framePen);
if (isSelected() || (parentItem() && parentItem()->isSelected())) {
- painter->drawRect(mapped.adjusted(1.0, 0.5, -1.5, -0.5));
+ painter->drawRect(mapped.adjusted(0.5, 0.5, -0.5, -0.5));
}
else {
- painter->drawRect(mapped.adjusted(0, 0.5, -0.5, -0.5));
+ painter->drawRect(mapped.adjusted(0, 0, -0.5, 0));
}
}
else if (isVideoOnly())
return m_clip->videoProducer();
else
- return m_clip->producer(trackSpecific ? track : -1);
+ return m_clip->getProducer(trackSpecific ? track : -1);
}
QMap<int, QDomElement> ClipItem::adjustEffectsToDuration(int width, int height, ItemInfo oldInfo)
if (!effects.contains(i))
effects[i] = effect.cloneNode().toElement();
updateNormalKeyframes(param);
-#ifdef QJSON
+#ifdef USE_QJSON
} else if (type == "roto-spline") {
if (!effects.contains(i))
effects[i] = effect.cloneNode().toElement();