From 54b7a063e2d23ab326d03fefa2172f07d81f44cb Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Mon, 31 Aug 2015 20:31:33 -0700 Subject: [PATCH 1/2] 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) { From 849249d7fec44004ea95d6e6a4c746588bd84872 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Mon, 31 Aug 2015 20:39:08 -0700 Subject: [PATCH 2/2] Fixing colors Conflicts: examples/toys/magBalls/handController.js --- examples/libraries/htmlColors.js | 145 +++++++++++++++++++++++ examples/toys/magBalls/handController.js | 1 + examples/toys/magBalls/magBallsMain.js | 1 + 3 files changed, 147 insertions(+) create mode 100644 examples/libraries/htmlColors.js diff --git a/examples/libraries/htmlColors.js b/examples/libraries/htmlColors.js new file mode 100644 index 0000000000..e9ebbba841 --- /dev/null +++ b/examples/libraries/htmlColors.js @@ -0,0 +1,145 @@ + +HTML_COLORS = { + AliceBlue: "#F0F8FF", + AntiqueWhite: "#FAEBD7", + Aqua: "#00FFFF", + Aquamarine: "#7FFFD4", + Azure: "#F0FFFF", + Beige: "#F5F5DC", + Bisque: "#FFE4C4", + Black: "#000000", + BlanchedAlmond: "#FFEBCD", + Blue: "#0000FF", + BlueViolet: "#8A2BE2", + Brown: "#A52A2A", + BurlyWood: "#DEB887", + CadetBlue: "#5F9EA0", + Chartreuse: "#7FFF00", + Chocolate: "#D2691E", + Coral: "#FF7F50", + CornflowerBlue: "#6495ED", + Cornsilk: "#FFF8DC", + Crimson: "#DC143C", + Cyan: "#00FFFF", + DarkBlue: "#00008B", + DarkCyan: "#008B8B", + DarkGoldenRod: "#B8860B", + DarkGray: "#A9A9A9", + DarkGreen: "#006400", + DarkKhaki: "#BDB76B", + DarkMagenta: "#8B008B", + DarkOliveGreen: "#556B2F", + DarkOrange: "#FF8C00", + DarkOrchid: "#9932CC", + DarkRed: "#8B0000", + DarkSalmon: "#E9967A", + DarkSeaGreen: "#8FBC8F", + DarkSlateBlue: "#483D8B", + DarkSlateGray: "#2F4F4F", + DarkTurquoise: "#00CED1", + DarkViolet: "#9400D3", + DeepPink: "#FF1493", + DeepSkyBlue: "#00BFFF", + DimGray: "#696969", + DodgerBlue: "#1E90FF", + FireBrick: "#B22222", + FloralWhite: "#FFFAF0", + ForestGreen: "#228B22", + Fuchsia: "#FF00FF", + Gainsboro: "#DCDCDC", + GhostWhite: "#F8F8FF", + Gold: "#FFD700", + GoldenRod: "#DAA520", + Gray: "#808080", + Green: "#008000", + GreenYellow: "#ADFF2F", + HoneyDew: "#F0FFF0", + HotPink: "#FF69B4", + IndianRed: "#CD5C5C", + Indigo: "#4B0082", + Ivory: "#FFFFF0", + Khaki: "#F0E68C", + Lavender: "#E6E6FA", + LavenderBlush: "#FFF0F5", + LawnGreen: "#7CFC00", + LemonChiffon: "#FFFACD", + LightBlue: "#ADD8E6", + LightCoral: "#F08080", + LightCyan: "#E0FFFF", + LightGoldenRodYellow: "#FAFAD2", + LightGray: "#D3D3D3", + LightGreen: "#90EE90", + LightPink: "#FFB6C1", + LightSalmon: "#FFA07A", + LightSeaGreen: "#20B2AA", + LightSkyBlue: "#87CEFA", + LightSlateGray: "#778899", + LightSteelBlue: "#B0C4DE", + LightYellow: "#FFFFE0", + Lime: "#00FF00", + LimeGreen: "#32CD32", + Linen: "#FAF0E6", + Magenta: "#FF00FF", + Maroon: "#800000", + MediumAquaMarine: "#66CDAA", + MediumBlue: "#0000CD", + MediumOrchid: "#BA55D3", + MediumPurple: "#9370DB", + MediumSeaGreen: "#3CB371", + MediumSlateBlue: "#7B68EE", + MediumSpringGreen: "#00FA9A", + MediumTurquoise: "#48D1CC", + MediumVioletRed: "#C71585", + MidnightBlue: "#191970", + MintCream: "#F5FFFA", + MistyRose: "#FFE4E1", + Moccasin: "#FFE4B5", + NavajoWhite: "#FFDEAD", + Navy: "#000080", + OldLace: "#FDF5E6", + Olive: "#808000", + OliveDrab: "#6B8E23", + Orange: "#FFA500", + OrangeRed: "#FF4500", + Orchid: "#DA70D6", + PaleGoldenRod: "#EEE8AA", + PaleGreen: "#98FB98", + PaleTurquoise: "#AFEEEE", + PaleVioletRed: "#DB7093", + PapayaWhip: "#FFEFD5", + PeachPuff: "#FFDAB9", + Peru: "#CD853F", + Pink: "#FFC0CB", + Plum: "#DDA0DD", + PowderBlue: "#B0E0E6", + Purple: "#800080", + RebeccaPurple: "#663399", + Red: "#FF0000", + RosyBrown: "#BC8F8F", + RoyalBlue: "#4169E1", + SaddleBrown: "#8B4513", + Salmon: "#FA8072", + SandyBrown: "#F4A460", + SeaGreen: "#2E8B57", + SeaShell: "#FFF5EE", + Sienna: "#A0522D", + Silver: "#C0C0C0", + SkyBlue: "#87CEEB", + SlateBlue: "#6A5ACD", + SlateGray: "#708090", + Snow: "#FFFAFA", + SpringGreen: "#00FF7F", + SteelBlue: "#4682B4", + Tan: "#D2B48C", + Teal: "#008080", + Thistle: "#D8BFD8", + Tomato: "#FF6347", + Turquoise: "#40E0D0", + Violet: "#EE82EE", + Wheat: "#F5DEB3", + White: "#FFFFFF", + WhiteSmoke: "#F5F5F5", + Yellow: "#FFFF00", + YellowGreen: "#9ACD32", +} + diff --git a/examples/toys/magBalls/handController.js b/examples/toys/magBalls/handController.js index 998d22c6f8..4aba43d412 100644 --- a/examples/toys/magBalls/handController.js +++ b/examples/toys/magBalls/handController.js @@ -10,6 +10,7 @@ RIGHT_CONTROLLER = 1; // FIXME add a customizable wand model and a mechanism to switch between wands HandController = function(side) { + this.side = side; this.palm = 2 * side; this.tip = 2 * side + 1; diff --git a/examples/toys/magBalls/magBallsMain.js b/examples/toys/magBalls/magBallsMain.js index e54b818e4a..4eb98fab26 100644 --- a/examples/toys/magBalls/magBallsMain.js +++ b/examples/toys/magBalls/magBallsMain.js @@ -6,6 +6,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +Script.include("../../libraries/htmlColors.js"); Script.include("constants.js"); Script.include("utils.js"); Script.include("magBalls.js");