+ } else if (type == "curve") {
+ KisCurveWidget *curve = new KisCurveWidget(this);
+ curve->setMaxPoints(pa.attribute("max").toInt());
+ QList<QPointF> points;
+ int number = EffectsList::parameter(e, pa.attribute("number")).toInt();
+ QString inName = pa.attribute("inpoints");
+ QString outName = pa.attribute("outpoints");
+ int start = pa.attribute("min").toInt();
+ for (int j = start; j <= number; j++) {
+ QString in = inName;
+ in.replace("%i", QString::number(j));
+ QString out = outName;
+ out.replace("%i", QString::number(j));
+ points << QPointF(EffectsList::parameter(e, in).toDouble(), EffectsList::parameter(e, out).toDouble());
+ }
+ if (!points.isEmpty())
+ curve->setCurve(KisCubicCurve(points));
+ QSpinBox *spinin = new QSpinBox();
+ spinin->setRange(0, 1000);
+ QSpinBox *spinout = new QSpinBox();
+ spinout->setRange(0, 1000);
+ curve->setupInOutControls(spinin, spinout, 0, 1000);
+ m_vbox->addWidget(curve);
+ m_vbox->addWidget(spinin);
+ m_vbox->addWidget(spinout);
+
+ connect(curve, SIGNAL(modified()), this, SLOT(collectAllParameters()));
+ m_valueItems[paramName] = curve;
+
+ QString depends = pa.attribute("depends");
+ if (!depends.isEmpty())
+ meetDependency(paramName, type, EffectsList::parameter(e, depends));
+ } else if (type == "bezier_spline") {
+ BezierSplineWidget *widget = new BezierSplineWidget(value, this);
+ stretch = false;
+ m_vbox->addWidget(widget);
+ m_valueItems[paramName] = widget;
+ connect(widget, SIGNAL(modified()), 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;