diff options
author | Marius Kintel <marius@kintel.net> | 2011-07-05 20:37:02 (GMT) |
---|---|---|
committer | Marius Kintel <marius@kintel.net> | 2011-07-05 20:37:02 (GMT) |
commit | 31a075a107e827eb4738ba35f6f99daad1b2ef46 (patch) | |
tree | abbc23e7aae058af34e2eeafca5848ad8eab29aa /src/transform.cc | |
parent | 518714b4a89ce1c289bdc54e664c5bcb9136acfa (diff) | |
parent | 5f8021e3e677d13b2ebc15dcd8229e1cf5944d8c (diff) |
Merge branch 'master' of github.com:openscad/openscad
Diffstat (limited to 'src/transform.cc')
-rw-r--r-- | src/transform.cc | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/transform.cc b/src/transform.cc index e841ef0..01bd808 100644 --- a/src/transform.cc +++ b/src/transform.cc @@ -227,6 +227,27 @@ AbstractNode *TransformModule::evaluate(const Context *ctx, const ModuleInstanti if (v.type == Value::VECTOR) { for (int i = 0; i < 4; i++) node->m[16+i] = i < v.vec.size() ? v.vec[i]->num : 1.0; + } else if (v.type == Value::STRING) { + double alpha = 1.0; + QString colorname = v.text; + if (v.text.contains(",")) { + QStringList chunks = v.text.split(","); + colorname = chunks[0]; + bool parseok; + alpha = chunks[1].toDouble(&parseok); + if (!parseok) alpha=1.0; + } + QColor color; + color.setNamedColor(colorname); + if (color.isValid()) { + node->m[16+0] = color.redF(); + node->m[16+1] = color.greenF(); + node->m[16+2] = color.blueF(); + node->m[16+3] = alpha; + } else { + PRINTF_NOCACHE("WARNING: Color name \"%s\" unknown. Please see",v.text.toUtf8().data()); + PRINTF_NOCACHE("WARNING: http://en.wikipedia.org/wiki/Web_colors"); + } } } |