setBrush(QColor(colour.left(7)));
} else if (m_clipType == IMAGE || m_clipType == TEXT) {
setBrush(QColor(141, 166, 215));
+ if (m_clipType == TEXT) {
+ connect(this, SIGNAL(getThumb(int, int)), clip->thumbProducer(), SLOT(extractImage(int, int)));
+ connect(clip->thumbProducer(), SIGNAL(thumbReady(int, QPixmap)), this, SLOT(slotThumbReady(int, QPixmap)));
+ }
//m_startPix = KThumb::getImage(KUrl(clip->getProperty("resource")), (int)(KdenliveSettings::trackheight() * KdenliveSettings::project_display_ratio()), KdenliveSettings::trackheight());
} else if (m_clipType == AUDIO) {
setBrush(QColor(141, 215, 166));
if (info.cropStart + (info.endPos - info.startPos) == m_cropStart + m_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.clone());
+ duplicate->setEffectList(m_effectList);
duplicate->setVideoOnly(m_videoOnly);
duplicate->setAudioOnly(m_audioOnly);
//duplicate->setSpeed(m_speed);
void ClipItem::setEffectList(const EffectsList effectList)
{
- m_effectList = effectList;
+ m_effectList.clone(effectList);
m_effectNames = m_effectList.effectNames().join(" / ");
if (!m_effectList.isEmpty()) setSelectedEffect(0);
}
-const EffectsList ClipItem::effectList()
+const EffectsList ClipItem::effectList() const
{
return m_effectList;
}
void ClipItem::slotFetchThumbs()
{
- if (m_clipType == IMAGE || m_clipType == TEXT) {
+ if (m_clipType == IMAGE) {
if (m_startPix.isNull()) {
m_startPix = KThumb::getImage(KUrl(m_clip->getProperty("resource")), (int)(KdenliveSettings::trackheight() * KdenliveSettings::project_display_ratio()), KdenliveSettings::trackheight());
update();
return;
}
+ if (m_clipType == TEXT) {
+ if (m_startPix.isNull()) slotGetStartThumb();
+ return;
+ }
+
if (m_endPix.isNull() && m_startPix.isNull()) {
m_startThumbRequested = true;
m_endThumbRequested = true;
const QStyleOptionGraphicsItem *option,
QWidget *)
{
- /*if (parentItem()) m_opacity = 0.5;
- else m_opacity = 1.0;
- painter->setOpacity(m_opacity);*/
QColor paintColor;
if (parentItem()) paintColor = QColor(255, 248, 149);
else paintColor = brush().color();
if (KdenliveSettings::videothumbnails() && !isAudioOnly()) {
QPen pen = painter->pen();
pen.setColor(QColor(255, 255, 255, 150));
+ const QRectF source(0.0, 0.0, (double) m_startPix.width(), (double) m_startPix.height());
painter->setPen(pen);
if ((m_clipType == IMAGE || m_clipType == TEXT) && !m_startPix.isNull()) {
double left = itemWidth - m_startPix.width() * vscale / scale;
- QRectF pixrect(left, 0.0, m_startPix.width() * vscale / scale, m_startPix.height());
- QRectF source(0.0, 0.0, (double) m_startPix.width(), (double) m_startPix.height());
+ const QRectF pixrect(left, 0.0, m_startPix.width() * vscale / scale, m_startPix.height());
painter->drawPixmap(pixrect, m_startPix, source);
QLineF l2(left, 0, left, m_startPix.height());
painter->drawLine(l2);
} else if (!m_endPix.isNull()) {
double left = itemWidth - m_endPix.width() * vscale / scale;
- QRectF pixrect(left, 0.0, m_endPix.width() * vscale / scale, m_endPix.height());
- QRectF source(0.0, 0.0, (double) m_endPix.width(), (double) m_endPix.height());
+ const QRectF pixrect(left, 0.0, m_endPix.width() * vscale / scale, m_endPix.height());
painter->drawPixmap(pixrect, m_endPix, source);
QLineF l2(left, 0, left, m_startPix.height());
painter->drawLine(l2);
}
if (!m_startPix.isNull()) {
double right = m_startPix.width() * vscale / scale;
- QRectF pixrect(0.0, 0.0, right, m_startPix.height());
- QRectF source(0.0, 0.0, (double) m_startPix.width(), (double) m_startPix.height());
+ const QRectF pixrect(0.0, 0.0, right, m_startPix.height());
painter->drawPixmap(pixrect, m_startPix, source);
QLineF l2(right, 0, right, m_startPix.height());
painter->drawLine(l2);
QList < CommentedTime >::Iterator it = markers.begin();
GenTime pos;
double framepos;
- QBrush markerBrush;
- markerBrush = QBrush(QColor(120, 120, 0, 140));
+ QBrush markerBrush(QColor(120, 120, 0, 140));
QPen pen = painter->pen();
pen.setColor(QColor(255, 255, 255, 200));
pen.setStyle(Qt::DotLine);
//painter->fillRect(QRect(br.x() + framepos, br.y(), 10, br.height()), QBrush(QColor(0, 0, 0, 150)));
}
}
- pen.setColor(Qt::black);
- pen.setStyle(Qt::SolidLine);
- painter->setPen(pen);
+ painter->setPen(QPen());
// draw start / end fades
QBrush fades;
// draw clip border
// expand clip rect to allow correct painting of clip border
+ QPen pen1(frameColor);
+ pen1.setWidthF(1.0);
+ pen1.setCosmetic(true);
+ painter->setPen(pen1);
- exposed.setRight(exposed.right() + xoffset + 0.5);
+ /*exposed.setRight(exposed.right() + xoffset + 0.5);
exposed.setBottom(exposed.bottom() + 1);
- painter->setClipRect(exposed);
-
- frameColor.setAlpha(alphaBase);
+ painter->setClipRect(exposed);*/
+ painter->setClipping(false);
+ /*frameColor.setAlpha(alphaBase);
painter->setPen(frameColor);
QLineF line(br.left() + xoffset, br.top(), br.right() - xoffset, br.top());
painter->drawLine(line);
painter->setPen(QColor(255, 255, 255, 60));
line.setLine(br.right() - xoffset, br.bottom() - 1.0, br.left() + xoffset, br.bottom() - 1.0);
- painter->drawLine(line);
- //painter->drawRect(br);
+ painter->drawLine(line);*/
+ painter->drawRect(br);
}
void ClipItem::checkEffectsKeyframesPos(const int previous, const int current, bool fromStart)
{
- for (int i = 0; i < m_effectList.size(); i++) {
+ for (int i = 0; i < m_effectList.count(); i++) {
QDomElement effect = m_effectList.at(i);
QDomNodeList params = effect.elementsByTagName("parameter");
for (int j = 0; j < params.count(); j++) {
int ClipItem::effectsCount()
{
- return m_effectList.size();
+ return m_effectList.count();
}
int ClipItem::hasEffect(const QString &tag, const QString &id) const
return m_effectList.effectNames();
}
-QDomElement ClipItem::effectAt(int ix)
+QDomElement ClipItem::effectAt(int ix) const
{
- if (ix > m_effectList.count() - 1 || ix < 0) return QDomElement();
- return m_effectList.at(ix);
+ if (ix > m_effectList.count() - 1 || ix < 0 || m_effectList.at(ix).isNull()) return QDomElement();
+ return m_effectList.at(ix).cloneNode().toElement();
}
void ClipItem::setEffectAt(int ix, QDomElement effect)
}
}
-EffectsParameterList ClipItem::addEffect(QDomElement effect, bool animate)
+EffectsParameterList ClipItem::addEffect(const QDomElement effect, bool animate)
{
-
bool needRepaint = false;
- /*QDomDocument doc;
- doc.appendChild(doc.importNode(effect, true));
- kDebug() << "/////// CLIPÂ ADD EFFECT: " << doc.toString();*/
m_effectList.append(effect);
-
EffectsParameterList parameters;
parameters.addParam("tag", effect.attribute("tag"));
parameters.addParam("kdenlive_ix", effect.attribute("kdenlive_ix"));
if (effect.hasAttribute("src")) parameters.addParam("src", effect.attribute("src"));
+ if (effect.hasAttribute("disabled")) parameters.addParam("disabled", effect.attribute("disabled"));
- QString state = effect.attribute("disabled");
- if (!state.isEmpty()) {
- parameters.addParam("disabled", state);
- }
QString effectId = effect.attribute("id");
if (effectId.isEmpty()) effectId = effect.attribute("tag");
return parameters;
}
-EffectsParameterList ClipItem::getEffectArgs(QDomElement effect)
+EffectsParameterList ClipItem::getEffectArgs(const QDomElement effect)
{
EffectsParameterList parameters;
parameters.addParam("tag", effect.attribute("tag"));
parameters.addParam("kdenlive_ix", effect.attribute("kdenlive_ix"));
parameters.addParam("id", effect.attribute("id"));
if (effect.hasAttribute("src")) parameters.addParam("src", effect.attribute("src"));
- QString state = effect.attribute("disabled");
- if (!state.isEmpty()) {
- parameters.addParam("disabled", state);
- }
+ if (effect.hasAttribute("disabled")) parameters.addParam("disabled", effect.attribute("disabled"));
QDomNodeList params = effect.elementsByTagName("parameter");
for (int i = 0; i < params.count(); i++) {
bool needRepaint = false;
QString ix;
- for (int i = 0; i < m_effectList.size(); ++i) {
+ for (int i = 0; i < m_effectList.count(); ++i) {
ix = m_effectList.at(i).attribute("kdenlive_ix");
if (ix == index) {
QString effectId = m_effectList.at(i).attribute("id");
m_effectList.removeAt(i);
i--;
} else if (ix.toInt() > index.toInt()) {
- m_effectList[i].setAttribute("kdenlive_ix", ix.toInt() - 1);
+ m_effectList.item(i).setAttribute("kdenlive_ix", ix.toInt() - 1);
}
}
m_effectNames = m_effectList.effectNames().join(" / ");
//virtual
void ClipItem::dropEvent(QGraphicsSceneDragDropEvent * event)
{
- QString effects = QString(event->mimeData()->data("kdenlive/effectslist"));
+ const QString effects = QString(event->mimeData()->data("kdenlive/effectslist"));
QDomDocument doc;
doc.setContent(effects, true);
- QDomElement e = doc.documentElement();
- CustomTrackView *view = (CustomTrackView *) scene()->views()[0];
- if (view) view->slotAddEffect(e, m_startPos, track());
+ const QDomElement e = doc.documentElement();
+ if (scene() && !scene()->views().isEmpty()) {
+ event->accept();
+ CustomTrackView *view = (CustomTrackView *) scene()->views()[0];
+ if (view) view->slotAddEffect(e, m_startPos, track());
+ }
}
//virtual