From 54b7a063e2d23ab326d03fefa2172f07d81f44cb Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Mon, 31 Aug 2015 20:31:33 -0700 Subject: [PATCH] Support HTML colors in overlays --- interface/src/ui/overlays/Overlay.cpp | 11 +---------- libraries/shared/src/RegisteredMetaTypes.cpp | 20 +++++++++++++++++--- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/interface/src/ui/overlays/Overlay.cpp b/interface/src/ui/overlays/Overlay.cpp index 7824c0c498..0c909a1bfb 100644 --- a/interface/src/ui/overlays/Overlay.cpp +++ b/interface/src/ui/overlays/Overlay.cpp @@ -66,16 +66,7 @@ Overlay::~Overlay() { void Overlay::setProperties(const QScriptValue& properties) { QScriptValue color = properties.property("color"); - if (color.isValid()) { - QScriptValue red = color.property("red"); - QScriptValue green = color.property("green"); - QScriptValue blue = color.property("blue"); - if (red.isValid() && green.isValid() && blue.isValid()) { - _color.red = red.toVariant().toInt(); - _color.green = green.toVariant().toInt(); - _color.blue = blue.toVariant().toInt(); - } - } + xColorFromScriptValue(properties.property("color"), _color); if (properties.property("alpha").isValid()) { setAlpha(properties.property("alpha").toVariant().toFloat()); diff --git a/libraries/shared/src/RegisteredMetaTypes.cpp b/libraries/shared/src/RegisteredMetaTypes.cpp index c4e05a68fb..2c4b213fcb 100644 --- a/libraries/shared/src/RegisteredMetaTypes.cpp +++ b/libraries/shared/src/RegisteredMetaTypes.cpp @@ -197,9 +197,23 @@ QScriptValue xColorToScriptValue(QScriptEngine *engine, const xColor& color) { } void xColorFromScriptValue(const QScriptValue &object, xColor& color) { - color.red = object.property("red").toVariant().toInt(); - color.green = object.property("green").toVariant().toInt(); - color.blue = object.property("blue").toVariant().toInt(); + if (!object.isValid()) { + return; + } + if (object.isNumber()) { + color.red = color.green = color.blue = (uint8_t)object.toUInt32(); + } else if (object.isString()) { + QColor qcolor(object.toString()); + if (qcolor.isValid()) { + color.red = (uint8_t)qcolor.red(); + color.blue = (uint8_t)qcolor.blue(); + color.green = (uint8_t)qcolor.green(); + } + } else { + color.red = object.property("red").toVariant().toInt(); + color.green = object.property("green").toVariant().toInt(); + color.blue = object.property("blue").toVariant().toInt(); + } } QScriptValue qColorToScriptValue(QScriptEngine* engine, const QColor& color) {