</effect>
*/
-void ParameterPlotter::setPointLists(const QDomElement& d, int startframe, int endframe) {
+void ParameterPlotter::setPointLists(const QDomElement& d, const QString& paramName, int startframe, int endframe) {
//QListIterator <QPair <QString, QMap< int , QVariant > > > nameit(params);
+ m_paramName = paramName;
itemParameter = d;
QDomNodeList namenode = d.elementsByTagName("parameter");
QTextStream stre(&dat);
d.save(stre, 2);
kDebug() << dat;
-
+ int i = 0;
+ while (!namenode.item(i).isNull() && namenode.item(i).toElement().attribute("name") != m_paramName)
+ i++;
if (namenode.count()) {
- QDomNode pa = namenode.item(0);
+ QDomElement pa = namenode.item(i).toElement();
QDomNode na = pa.firstChildElement("name");
- parameterNameList << pa.attributes().namedItem("name").nodeValue().split(";");
+ parameterNameList << pa.attribute("namedesc").split(";");
emit parameterList(parameterNameList);
//max_y=pa.attributes().namedItem("max").nodeValue().toInt();
//int val=pa.attributes().namedItem("value").nodeValue().toInt();
QStringList defaults;
- if (pa.attributes().namedItem("start").nodeValue().contains(";"))
- defaults = pa.attributes().namedItem("start").nodeValue().split(";");
- else if (pa.attributes().namedItem("value").nodeValue().contains(";"))
- defaults = pa.attributes().namedItem("value").nodeValue().split(";");
- else if (pa.attributes().namedItem("default").nodeValue().contains(";"))
- defaults = pa.attributes().namedItem("default").nodeValue().split(";");
- QStringList maxv = pa.attributes().namedItem("max").nodeValue().split(";");
- QStringList minv = pa.attributes().namedItem("max").nodeValue().split(";");
- for (int i = 0;i < maxv.size();i++) {
+ if (pa.attribute("start").contains(";"))
+ defaults = pa.attribute("start").split(";");
+ else if (pa.attribute("value").contains(";"))
+ defaults = pa.attribute("value").split(";");
+ else if (pa.attribute("default").contains(";"))
+ defaults = pa.attribute("default").split(";");
+ QStringList maxv = pa.attribute("max").split(";");
+ QStringList minv = pa.attribute("min").split(";");
+ for (int i = 0;i < maxv.size() && i < minv.size();i++) {
if (max_y < maxv[i].toInt()) max_y = maxv[i].toInt();
if (min_y > minv[i].toInt()) min_y = minv[i].toInt();
}
-
for (int i = 0;i < parameterNameList.count();i++) {
KPlotObject *plot = new KPlotObject(colors[plotobjects.size()%colors.size()]);
plot->setShowLines(true);
- if (!stretchFactors.contains(i)) {
+ if (!stretchFactors.contains(i) && i < maxv.size()) {
if (maxv[i].toInt() != 0)
stretchFactors[i] = max_y / maxv[i].toInt();
else
stretchFactors[i] = 1.0;
}
- if (defaults[i].toDouble() > max_y)
+ if (i < defaults.size() && defaults[i].toDouble() > max_y)
defaults[i] = max_y;
- plot->addPoint(startframe, defaults[i].toInt()*stretchFactors[i], parameterNameList[i]);
+ int def = 0;
+ if (i < defaults.size())
+ def = (int)(defaults[i].toInt() * stretchFactors[i]);
+ QString name = "";
+ if (i < parameterNameList.size())
+ name = parameterNameList[i];
+ plot->addPoint(startframe, def, name);
//add keyframes here
- plot->addPoint(endframe, defaults[i].toInt()*stretchFactors[i]);
+ plot->addPoint(endframe, def);
plotobjects.append(plot);
}
maxx = endframe;
maxy = max_y;
setLimits(-1, endframe + 1, min_y - 10, maxy + 10);
+
addPlotObjects(plotobjects);
}
void ParameterPlotter::createParametersNew() {
-
QList<KPlotObject*> plotobjs = plotObjects();
if (plotobjs.size() != parameterNameList.size()) {
kDebug() << "ERROR size not equal";
if (namenode.count() > 0) {
for (int i = 0;i < plotobjs.count();i++) {
QList<KPlotPoint*> points = plotobjs[i]->points();
- foreach(KPlotPoint *o, points) {
+ foreach(const KPlotPoint *o, points) {
txtstr << (int)o->y() ;
break;//first no keyframes
}
}
void ParameterPlotter::replot(const QString & name) {
+
//removeAllPlotObjects();
int i = 0;
bool drawAll = name.isEmpty() || name == "all";
activeIndexPlot = -1;
+
foreach(KPlotObject* p, plotObjects()) {
- p->setShowPoints(drawAll || parameterNameList[i] == name);
- p->setShowLines(drawAll || parameterNameList[i] == name);
- QPen pen = (drawAll || parameterNameList[i] == name ? QPen(Qt::SolidLine) : QPen(Qt::NoPen));
+ QString selectedName = "none";
+ if (i < parameterNameList.size())
+ selectedName = parameterNameList[i];
+ p->setShowPoints(drawAll || selectedName == name);
+ p->setShowLines(drawAll || selectedName == name);
+ QPen pen = (drawAll || selectedName == name ? QPen(Qt::SolidLine) : QPen(Qt::NoPen));
pen.setColor(p->linePen().color());
p->setLabelPen(pen);
- if (parameterNameList[i] == name)
+ if (selectedName == name)
activeIndexPlot = i;
replacePlotObject(i++, p);
}
double newx = inPlot.x() * dataRect().width() / pixRect().width();
double newy = (height() - inPlot.y() - bottomPadding() - topPadding()) * dataRect().height() / pixRect().height();
bool inserted = false;
- foreach(KPlotPoint* pt, points) {
+ foreach(const KPlotPoint* pt, points) {
if (pt->x() > newx && !inserted) {
newpoints.append(QPointF(newx, newy));
inserted = true;
newpoints.append(QPointF(pt->x(), pt->y()));
}
p->clearPoints();
- foreach(QPointF qf, newpoints) {
+ foreach(const QPointF qf, newpoints) {
p->addPoint(qf);
}
replacePlotObject(activeIndexPlot, p);