updated project saving for keyframes
This commit is contained in:
+28
-22
@@ -136,8 +136,8 @@ bool Effect::is_enabled() {
|
||||
return container->enabled_check->isChecked();
|
||||
}
|
||||
|
||||
void Effect::load(QXmlStreamReader* stream) {
|
||||
stream->readNext();
|
||||
void Effect::load(QXmlStreamReader& stream) {
|
||||
stream.readNext();
|
||||
/*for (int i=0;i<rows.size();i++) {
|
||||
EffectRow* row = rows.at(i);
|
||||
while (!stream->atEnd() && !(stream->name() == "effect" && stream->isEndElement())) {
|
||||
@@ -199,35 +199,41 @@ void Effect::load(QXmlStreamReader* stream) {
|
||||
}*/
|
||||
}
|
||||
|
||||
void Effect::save(QXmlStreamWriter* stream) {
|
||||
QString save_data(int type, const QVariant& data) {
|
||||
switch (type) {
|
||||
case EFFECT_FIELD_DOUBLE: return QString::number(data.toDouble()); break;
|
||||
case EFFECT_FIELD_COLOR: return data.value<QColor>().name(); break;
|
||||
case EFFECT_FIELD_STRING: return data.toString(); break;
|
||||
case EFFECT_FIELD_BOOL: return QString::number(data.toBool()); break;
|
||||
case EFFECT_FIELD_COMBO: return QString::number(data.toInt()); break;
|
||||
case EFFECT_FIELD_FONT: return data.toString(); break;
|
||||
}
|
||||
return QString();
|
||||
}
|
||||
|
||||
void Effect::save(QXmlStreamWriter& stream) {
|
||||
for (int i=0;i<rows.size();i++) {
|
||||
EffectRow* row = rows.at(i);
|
||||
stream->writeStartElement("row");
|
||||
stream.writeStartElement("row"); // row
|
||||
stream.writeStartElement("keyframes"); // keyframes
|
||||
stream.writeAttribute("enabled", QString::number(row->keyframing));
|
||||
for (int j=0;j<row->keyframe_times.size();j++) {
|
||||
stream->writeStartElement("key");
|
||||
stream->writeAttribute("frame", QString::number(row->keyframe_times.at(j)));
|
||||
stream->writeAttribute("type", QString::number(row->keyframe_types.at(j)));
|
||||
stream->writeEndElement(); // key
|
||||
stream.writeStartElement("key"); // key
|
||||
stream.writeAttribute("frame", QString::number(row->keyframe_times.at(j)));
|
||||
stream.writeAttribute("type", QString::number(row->keyframe_types.at(j)));
|
||||
stream.writeEndElement(); // key
|
||||
}
|
||||
stream.writeEndElement(); // keyframes
|
||||
for (int j=0;j<row->fieldCount();j++) {
|
||||
EffectField* field = row->field(j);
|
||||
stream->writeStartElement("field");
|
||||
stream.writeStartElement("field"); // field
|
||||
stream.writeAttribute("value", save_data(field->type, field->get_current_data()));
|
||||
for (int k=0;k<field->keyframe_data.size();k++) {
|
||||
const QVariant& data = field->keyframe_data.at(k);
|
||||
stream->writeStartElement("key");
|
||||
switch (field->type) {
|
||||
case EFFECT_FIELD_DOUBLE: stream->writeAttribute("value", QString::number(data.toDouble())); break;
|
||||
case EFFECT_FIELD_COLOR: stream->writeAttribute("value", data.value<QColor>().name()); break;
|
||||
case EFFECT_FIELD_STRING: stream->writeAttribute("value", data.toString()); break;
|
||||
case EFFECT_FIELD_BOOL: stream->writeAttribute("value", QString::number(data.toBool())); break;
|
||||
case EFFECT_FIELD_COMBO: stream->writeAttribute("value", QString::number(data.toInt())); break;
|
||||
case EFFECT_FIELD_FONT: stream->writeAttribute("value", data.toString()); break;
|
||||
}
|
||||
stream->writeEndElement();
|
||||
stream.writeTextElement("key", save_data(field->type, field->keyframe_data.at(k)));
|
||||
}
|
||||
stream->writeEndElement(); // field
|
||||
stream.writeEndElement(); // field
|
||||
}
|
||||
stream->writeEndElement(); // row
|
||||
stream.writeEndElement(); // row
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -155,8 +155,8 @@ public:
|
||||
Effect* copy(Clip* c);
|
||||
void copy_field_keyframes(Effect *e);
|
||||
|
||||
void load(QXmlStreamReader* stream);
|
||||
void save(QXmlStreamWriter* stream);
|
||||
void load(QXmlStreamReader& stream);
|
||||
void save(QXmlStreamWriter& stream);
|
||||
|
||||
bool enable_image;
|
||||
bool enable_opengl;
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
#include <QString>
|
||||
|
||||
#define SAVE_VERSION "180814"
|
||||
#define SAVE_VERSION "180820" // YYMMDD
|
||||
|
||||
struct Config {
|
||||
Config();
|
||||
|
||||
+2
-2
@@ -853,7 +853,7 @@ bool Project::load_worker(QFile& f, QXmlStreamReader& stream, int type) {
|
||||
}
|
||||
if (effect_id != -1) {
|
||||
Effect* e = create_effect(effect_id, c);
|
||||
e->load(&stream);
|
||||
e->load(stream);
|
||||
c->effects.append(e);
|
||||
}
|
||||
}
|
||||
@@ -1111,7 +1111,7 @@ void Project::save_folder(QXmlStreamWriter& stream, QTreeWidgetItem* parent, int
|
||||
stream.writeStartElement("effect"); // effect
|
||||
Effect* e = c->effects.at(k);
|
||||
stream.writeAttribute("id", QString::number(e->id));
|
||||
e->save(&stream);
|
||||
e->save(stream);
|
||||
stream.writeEndElement(); // effect
|
||||
}
|
||||
stream.writeEndElement(); // effects
|
||||
|
||||
Reference in New Issue
Block a user