MCPcopy Create free account
hub / github.com/defold/defold / main

Function main

engine/dlib/scripts/gen_easing.cpp:34–91  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

32 */
33
34int main(int argc, char **argv)
35{
36 // NOTE: The last sample is duplicated to simplify interpolation logic
37 const int n_samples = 64;
38 const int max_curve_index = 40;
39
40 QMetaEnum en = QEasingCurve::staticMetaObject.enumerator(0);
41
42 QFile json_file("easing.json");
43 json_file.open(QIODevice::WriteOnly);
44 QTextStream json_stream(&json_file);
45
46 QFile lookup_file("src/dlib/easing_lookup.h");
47 lookup_file.open(QIODevice::WriteOnly);
48 QTextStream lookup_stream(&lookup_file);
49 lookup_stream.setRealNumberPrecision(8);
50 lookup_stream.setRealNumberNotation(QTextStream::FixedNotation);
51
52 lookup_stream << "// NOTE: GENERATED FILE. DO NOT EDIT\n\n";
53 lookup_stream << "/*\n";
54 lookup_stream << "enum Type\n";
55 lookup_stream << "{\n";
56 for (int ct = 0; ct <= max_curve_index; ++ct) {
57 lookup_stream << " TYPE_" << QString(en.key(ct)).toUpper() << " = " << ct << ",\n";
58 }
59 lookup_stream << " TYPE_COUNT" << " = " << max_curve_index+1 << ",\n";
60 lookup_stream << "};\n";
61 lookup_stream << "*/\n";
62
63 lookup_stream << "const int EASING_SAMPLES = " << n_samples << ";\n";
64
65 lookup_stream << "float EASING_LOOKUP[] = { \n";
66
67 QJsonArray curves;
68 for (int ct = 0; ct <= max_curve_index; ++ct) {
69 QEasingCurve c((QEasingCurve::Type) ct);
70 QJsonArray values;
71 lookup_stream << " // " << QString(en.key(ct)) << "\n";
72 // NOTE: +1 to duplicate last sample
73 for (int i = 0; i < n_samples+1; ++i) {
74 qreal t = i / qreal(n_samples-1);
75 if (t > 1)
76 t = 1;
77 qreal val = c.valueForProgress(t);
78 values.append(val);
79 lookup_stream << " " << val << "f,\n";
80 }
81 QJsonObject o;
82 o["type"] = QString(en.key(ct));
83 o["values"] = values;
84 curves.append(o);
85 }
86 lookup_stream << "};\n";
87
88 QJsonDocument d(curves);
89 json_stream << d.toJson();
90 json_stream.flush();
91}

Callers

nothing calls this directly

Calls 4

openMethod · 0.80
toUpperMethod · 0.80
appendMethod · 0.80
flushMethod · 0.45

Tested by

no test coverage detected