From cdf5d76f588c26ba8b66ba41c0a499f26fd0b6fd Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Wed, 20 Jun 2018 16:21:17 -0700 Subject: [PATCH] fixed #82 --- effects/effects.h | 2 ++ effects/paneffect.cpp | 2 +- effects/transformeffect.cpp | 46 +++++++++++++++++++++++++++++++++++++ effects/volumeeffect.cpp | 2 +- 4 files changed, 50 insertions(+), 2 deletions(-) diff --git a/effects/effects.h b/effects/effects.h index b2d5396ed..bde898949 100644 --- a/effects/effects.h +++ b/effects/effects.h @@ -31,6 +31,8 @@ public: TransformEffect(Clip* c); void process_gl(int* anchor_x, int* anchor_y); Effect* copy(Clip* c); + void load(QXmlStreamReader* stream); + void save(QXmlStreamWriter* stream); LabelSlider* position_x; LabelSlider* position_y; diff --git a/effects/paneffect.cpp b/effects/paneffect.cpp index e11bf9de0..c08192b7f 100644 --- a/effects/paneffect.cpp +++ b/effects/paneffect.cpp @@ -37,7 +37,7 @@ void PanEffect::load(QXmlStreamReader *stream) { stream->readNext(); if (stream->isStartElement() && stream->name() == "pan") { stream->readNext(); - pan_val->set_value(stream->text().toInt()); + pan_val->set_value(stream->text().toFloat()); } } } diff --git a/effects/transformeffect.cpp b/effects/transformeffect.cpp index 8500fc64a..bb411f289 100644 --- a/effects/transformeffect.cpp +++ b/effects/transformeffect.cpp @@ -99,6 +99,52 @@ Effect* TransformEffect::copy(Clip* c) { return t; } +void TransformEffect::load(QXmlStreamReader *stream) { + while (!(stream->isEndElement() && stream->name() == "effect") && !stream->atEnd()) { + stream->readNext(); + if (stream->isStartElement() && stream->name() == "posx") { + stream->readNext(); + position_x->set_value(stream->text().toFloat()); + } else if (stream->isStartElement() && stream->name() == "posy") { + stream->readNext(); + position_y->set_value(stream->text().toFloat()); + } else if (stream->isStartElement() && stream->name() == "scalex") { + stream->readNext(); + scale_x->set_value(stream->text().toFloat()); + } else if (stream->isStartElement() && stream->name() == "scaley") { + stream->readNext(); + scale_y->set_value(stream->text().toFloat()); + } else if (stream->isStartElement() && stream->name() == "uniformscale") { + stream->readNext(); + uniform_scale_box->setChecked(stream->text() == "1"); + } else if (stream->isStartElement() && stream->name() == "rotation") { + stream->readNext(); + rotation->set_value(stream->text().toFloat()); + } else if (stream->isStartElement() && stream->name() == "anchorx") { + stream->readNext(); + anchor_x_box->set_value(stream->text().toFloat()); + } else if (stream->isStartElement() && stream->name() == "anchory") { + stream->readNext(); + anchor_y_box->set_value(stream->text().toFloat()); + } else if (stream->isStartElement() && stream->name() == "opacity") { + stream->readNext(); + opacity->set_value(stream->text().toFloat()); + } + } +} + +void TransformEffect::save(QXmlStreamWriter *stream) { + stream->writeTextElement("posx", QString::number(position_x->value())); + stream->writeTextElement("posy", QString::number(position_y->value())); + stream->writeTextElement("scalex", QString::number(scale_x->value())); + stream->writeTextElement("scaley", QString::number(scale_y->value())); + stream->writeTextElement("uniformscale", QString::number(uniform_scale_box->isChecked())); + stream->writeTextElement("rotation", QString::number(rotation->value())); + stream->writeTextElement("anchorx", QString::number(anchor_x_box->value())); + stream->writeTextElement("anchory", QString::number(anchor_y_box->value())); + stream->writeTextElement("opacity", QString::number(opacity->value())); +} + void TransformEffect::toggle_uniform_scale(bool enabled) { scale_y->setEnabled(!enabled); } diff --git a/effects/volumeeffect.cpp b/effects/volumeeffect.cpp index 977c18333..c6e0d34ed 100644 --- a/effects/volumeeffect.cpp +++ b/effects/volumeeffect.cpp @@ -37,7 +37,7 @@ void VolumeEffect::load(QXmlStreamReader* stream) { stream->readNext(); if (stream->isStartElement() && stream->name() == "volume") { stream->readNext(); - volume_val->set_value(stream->text().toInt()); + volume_val->set_value(stream->text().toFloat()); } } }