// Copyright (C) 2020 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include #include #include #include #include #include #include #include "keyframedatautils_p.h" struct Keyframe { double frame; QVariant value; int easing = 0; }; struct KeyframeData { QString filename; QMetaType::Type propertyType; QList keyframes; }; int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); QList data; // Animate real ('opacity' property) KeyframeData keyframeData1; keyframeData1.filename = "animate_real.cbor"; keyframeData1.propertyType = QMetaType::QReal; Keyframe key1_1; key1_1.frame = 0; key1_1.value = 0.0; key1_1.easing = 0; keyframeData1.keyframes.append(key1_1); Keyframe key1_2; key1_2.frame = 1000; key1_2.value = 1.0; key1_2.easing = 0; keyframeData1.keyframes.append(key1_2); Keyframe key1_3; key1_3.frame = 2000; key1_3.value = 0.0; key1_3.easing = 0; keyframeData1.keyframes.append(key1_3); data.append(keyframeData1); // Animate bool ('visible' property) KeyframeData keyframeData2; keyframeData2.filename = "animate_bool.cbor"; keyframeData2.propertyType = QMetaType::Bool; Keyframe key2_1; key2_1.frame = 0; key2_1.value = true; key2_1.easing = 0; keyframeData2.keyframes.append(key2_1); Keyframe key2_2; key2_2.frame = 1000; key2_2.value = false; key2_2.easing = 0; keyframeData2.keyframes.append(key2_2); Keyframe key2_3; key2_3.frame = 2000; key2_3.value = true; key2_3.easing = 0; keyframeData2.keyframes.append(key2_3); data.append(keyframeData2); // Animate color KeyframeData keyframeData3; keyframeData3.filename = "animate_color.cbor"; keyframeData3.propertyType = QMetaType::QColor; Keyframe key3_1; key3_1.frame = 0; key3_1.value = QColor("green"); key3_1.easing = 0; keyframeData3.keyframes.append(key3_1); Keyframe key3_2; key3_2.frame = 1000; key3_2.value = QColor(255, 255, 0); key3_2.easing = 0; keyframeData3.keyframes.append(key3_2); Keyframe key3_3; key3_3.frame = 2000; key3_3.value = QColor(255, 255, 255); key3_3.easing = 0; keyframeData3.keyframes.append(key3_3); data.append(keyframeData3); // Animate vector3d KeyframeData keyframeData4; keyframeData4.filename = "animate_vector3d.cbor"; keyframeData4.propertyType = QMetaType::QVector3D; Keyframe key4_1; key4_1.frame = 0; key4_1.value = QVector3D(500.0, 500.0, 500.0); key4_1.easing = 0; keyframeData4.keyframes.append(key4_1); Keyframe key4_2; key4_2.frame = 1000; key4_2.value = QVector3D(100.0, 200.0, 300.0); key4_2.easing = 0; keyframeData4.keyframes.append(key4_2); Keyframe key4_3; key4_3.frame = 2000; key4_3.value = QVector3D(-1000.0, 0.0, 0.0); key4_3.easing = 0; keyframeData4.keyframes.append(key4_3); data.append(keyframeData4); for (auto keyframeData : data) { // Output into current running path QString path = QDir::currentPath(); QString outputFile = path + "\\" + keyframeData.filename; QFile output(outputFile); qDebug() << "Generating:" << outputFile; if (!output.open(QIODevice::WriteOnly)) { qWarning() << "Unable to open output file:" << outputFile; exit(0); } QCborStreamWriter writer(&output); writeKeyframesHeader(writer, keyframeData.propertyType); // Start keyframes array writer.startArray(); for (auto keyFrame : keyframeData.keyframes) { writer.append(keyFrame.frame); writer.append(keyFrame.easing); writeValue(writer, keyFrame.value); } // End Keyframes array writer.endArray(); // End root array writer.endArray(); output.close(); } return app.exec(); }