History

Rename canvasPushImage to canvasPushPixels, canvasToImageData, break CanvasCommand into JS rather than native

Ada committed 1 year ago

Commit 3ad3b9f1 parent 00580c310 files · +215 −433Browse files

Showing the changes to libraries/script-engine/src/ScriptValueUtils.cpp (1 of 10 files). Show all

Unified · Split

libraries/script-engine/src/ScriptValueUtils.cpp+38−4
@@ -792,14 +792,48 @@ bool qTimerFromScriptValue(const ScriptValue& object, QTimer* &out) { · 791 unmodified lines
792792 bool qColorFromScriptValue(const ScriptValue& object, QColor& color) {
793793 if (object.isNumber()) {
794794 color.setRgb(object.toUInt32());
795−
795+ return true;
796796 } else if (object.isString()) {
797797 color.setNamedColor(object.toString());
798+ return true;
799+ } else if (object.isArray()) {
800+ auto length = object.property("length").toInt32();
801+ auto r = object.property(0).toInt32();
802+ auto g = object.property(1).toInt32();
803+ auto b = object.property(2).toInt32();
804+
805+ color.setRed(r);
806+ color.setGreen(g);
807+ color.setBlue(b);
808+
809+ if (length == 3) {
810+ color.setAlpha(255);
811+ } else if (length == 4) {
812+ color.setAlpha(object.property(3).toInt32());
813+ } else {
814+ return false;
815+ }
798816
817+ return true;
818+ } else if (object.isObject()) {
819+ auto r = object.property("red");
820+ auto g = object.property("green");
821+ auto b = object.property("blue");
822+ auto a = object.property("alpha");
823+
824+ if (!r.isNumber()) { r = object.property("r"); }
825+ if (!g.isNumber()) { g = object.property("g"); }
826+ if (!b.isNumber()) { b = object.property("b"); }
827+ if (!a.isNumber()) { a = object.property("a"); }
828+
829+ color.setRed(r.toInt32());
830+ color.setGreen(g.toInt32());
831+ color.setBlue(b.toInt32());
832+ color.setAlpha(a.isNumber() ? a.toInt32() : 255);
833+
834+ return true;
799835 } else {
800− ScriptValue alphaValue = object.property("alpha");
801− color.setRgb(object.property("red").toInt32(), object.property("green").toInt32(), object.property("blue").toInt32(),
802− alphaValue.isNumber() ? alphaValue.toInt32() : 255);
836+ return false;
803837 }
804838 return true;
805839 }