#include "geometrywidget.h"
#include "colortools.h"
#include "doubleparameterwidget.h"
+#include "cornerswidget.h"
#include <KDebug>
#include <KLocale>
KisCurveWidget *curve = (KisCurveWidget*)m_valueItems[name];
if (curve) {
int color = value.toInt();
- curve->setPixmap(QPixmap::fromImage(ColorTools::rgbCurvePlane(curve->size(), (ColorTools::ColorsRGB)color)));
+ curve->setPixmap(QPixmap::fromImage(ColorTools::rgbCurvePlane(curve->size(), (ColorTools::ColorsRGB)color, 0.8)));
}
}
}
max = pa.attribute("max").toInt();
DoubleParameterWidget *doubleparam = new DoubleParameterWidget(paramName, (int)(value.toDouble() + 0.5), min, max,
- pa.attribute("default").toInt(), pa.attribute("suffix"), this);
+ pa.attribute("default").toInt(), pa.attribute("suffix"), this);
m_vbox->addWidget(doubleparam);
m_valueItems[paramName] = doubleparam;
connect(doubleparam, SIGNAL(valueChanged(int)), this, SLOT(collectAllParameters()));
GeometryWidget *geometry = new GeometryWidget(m_monitor, m_timecode, pos, isEffect, this);
// connect this before setupParam to make sure the monitor scene shows up at startup
connect(geometry, SIGNAL(checkMonitorPosition(int)), this, SIGNAL(checkMonitorPosition(int)));
+ connect(geometry, SIGNAL(parameterChanged()), this, SLOT(collectAllParameters()));
if (minFrame == maxFrame)
geometry->setupParam(pa, m_in, m_out);
else
geometry->setupParam(pa, minFrame, maxFrame);
m_vbox->addWidget(geometry);
m_valueItems[paramName+"geometry"] = geometry;
- connect(geometry, SIGNAL(parameterChanged()), this, SLOT(collectAllParameters()));
connect(geometry, SIGNAL(seekToPos(int)), this, SIGNAL(seekTimeline(int)));
connect(this, SIGNAL(syncEffectsPos(int)), geometry, SLOT(slotSyncPosition(int)));
} else {
connect(this, SIGNAL(syncEffectsPos(int)), geo, SLOT(slotSyncPosition(int)));
}
} else if (type == "keyframe" || type == "simplekeyframe") {
- // keyframe editor widget
+ // keyframe editor widget
kDebug() << "min: " << m_in << ", MAX: " << m_out;
if (m_keyframeEditor == NULL) {
- KeyframeEdit *geo = new KeyframeEdit(pa, m_in, m_in + m_out, pa.attribute("min").toInt(), pa.attribute("max").toInt(), m_timecode, e.attribute("active_keyframe", "-1").toInt());
+ KeyframeEdit *geo = new KeyframeEdit(pa, m_in, m_in + m_out, m_timecode, e.attribute("active_keyframe", "-1").toInt());
m_vbox->addWidget(geo);
m_valueItems[paramName+"keyframe"] = geo;
m_keyframeEditor = geo;
pos = pos - m_in;
} else if (d.attribute("id") == "fadeout" || d.attribute("id") == "fade_to_black") {
// fadeout position starts from clip end
- pos = m_out - (pos - m_in);
+ pos = m_out - pos;
}
- PositionEdit *posedit = new PositionEdit(paramName, pos, 1, m_out, m_timecode);
+ PositionEdit *posedit = new PositionEdit(paramName, pos, 0, m_out - m_in, m_timecode);
m_vbox->addWidget(posedit);
m_valueItems[paramName+"position"] = posedit;
connect(posedit, SIGNAL(parameterChanged()), this, SLOT(collectAllParameters()));
QString depends = pa.attribute("depends");
if (!depends.isEmpty())
meetDependency(paramName, type, EffectsList::parameter(e, depends));
+ } else if (type == "corners") {
+ CornersWidget *corners = new CornersWidget(m_monitor, pos, isEffect, pa.attribute("factor").toInt(), this);
+ connect(corners, SIGNAL(checkMonitorPosition(int)), this, SIGNAL(checkMonitorPosition(int)));
+ if (minFrame == maxFrame)
+ corners->setRange(m_in, m_out);
+ else
+ corners->setRange(minFrame, maxFrame);
+
+ QString xName = pa.attribute("xpoints");
+ QString yName = pa.attribute("ypoints");
+ QPolygon points;
+ int x, y;
+ for (int j = 1; j <= 4; ++j) {
+ x = EffectsList::parameter(e, QString(xName).replace("%i", QString::number(j))).toInt();
+ y = EffectsList::parameter(e, QString(yName).replace("%i", QString::number(j))).toInt();
+ points << QPoint(x, y);
+ }
+ corners->setValue(points);
+
+ m_vbox->addWidget(corners);
+ connect(corners, SIGNAL(parameterChanged()), this, SLOT(collectAllParameters()));
+ m_valueItems[paramName] = corners;
} else if (type == "wipe") {
Wipeval *wpval = new Wipeval;
wpval->setupUi(toFillin);
pos = m_out;
pedit->setPosition(pos);
}*/
- EffectsList::setParameter(newparam, "in", QString::number(m_out + m_in - pos));
- EffectsList::setParameter(newparam, "out", QString::number(m_out + m_in));
+ EffectsList::setParameter(newparam, "in", QString::number(m_out - pos));
+ EffectsList::setParameter(newparam, "out", QString::number(m_out));
setValue.clear();
}
} else if (type == "curve") {
QString depends = pa.attributes().namedItem("depends").nodeValue();
if (!depends.isEmpty())
meetDependency(paramName, type, EffectsList::parameter(newparam, depends));
+ } else if (type == "corners") {
+ CornersWidget *corners = ((CornersWidget*)m_valueItems.value(paramName));
+ QString xName = pa.attributes().namedItem("xpoints").nodeValue();
+ QString yName = pa.attributes().namedItem("ypoints").nodeValue();
+ QPolygon points = corners->getValue();
+ QPoint p;
+ for (int j = 1; j <= 4; ++j) {
+ p = points.at(j - 1);
+ EffectsList::setParameter(newparam, QString(xName).replace("%i", QString::number(j)), QString::number(p.x()));
+ EffectsList::setParameter(newparam, QString(yName).replace("%i", QString::number(j)), QString::number(p.y()));
+ }
} else if (type == "wipe") {
Wipeval *wp = (Wipeval*)m_valueItems.value(paramName);
wipeInfo info;
} else if ((type == "simplekeyframe" || type == "keyframe") && m_keyframeEditor) {
QString realName = i18n(na.toElement().text().toUtf8().data());
QString val = m_keyframeEditor->getValue(realName);
- kDebug() << "SET VALUE: " << val;
+ //kDebug() << "SET VALUE: " << val;
namenode.item(i).toElement().setAttribute("keyframes", val);
} else if (type == "url") {
KUrlRequester *req = ((Urlval*)m_valueItems.value(paramName))->urlwidget;