diff options
Diffstat (limited to 'src/transform.cc')
-rw-r--r-- | src/transform.cc | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/transform.cc b/src/transform.cc index f473f6a..885a7d6 100644 --- a/src/transform.cc +++ b/src/transform.cc @@ -61,7 +61,14 @@ AbstractNode *TransformModule::evaluate(const Context *ctx, const ModuleInstanti TransformNode *node = new TransformNode(inst); for (int i = 0; i < 16; i++) +<<<<<<< HEAD + node->m[i] = i % 5 == 0 ? 1.0 : 0.0; + for (int i = 16; i < 19; i++) + node->m[i] = -1; + node->m[19] = 1; +======= node->matrix[i] = i % 5 == 0 ? 1.0 : 0.0; +>>>>>>> upstream/visitor std::vector<std::string> argnames; std::vector<Expression*> argexpr; @@ -213,6 +220,37 @@ AbstractNode *TransformModule::evaluate(const Context *ctx, const ModuleInstanti } } } +<<<<<<< HEAD + else if (this->type == COLOR) + { + Value v = c.lookup_variable("c"); + if (v.type == Value::VECTOR) { + for (int i = 0; i < 4; i++) + node->matrix[16+i] = i < v.vec.size() ? v.vec[i]->num : 1.0; +// FIXME: Port to non-Qt +#if 0 + } else if (v.type == Value::STRING) { + QString colorname = v.text; + QColor color; + color.setNamedColor(colorname); + if (color.isValid()) { + node->matrix[16+0] = color.redF(); + node->matrix[16+1] = color.greenF(); + node->matrix[16+2] = color.blueF(); + } else { + PRINTF_NOCACHE("WARNING: Color name \"%s\" unknown. Please see",v.text.toUtf8().data()); + PRINTF_NOCACHE("WARNING: http://en.wikipedia.org/wiki/Web_colors"); + } +#endif + } + // FIXME: Only lookup alpha if color was set + Value alpha = c.lookup_variable("alpha"); + if (alpha.type == Value::NUMBER) { + node->m[16+3] = alpha.num; + } + } +======= +>>>>>>> upstream/visitor std::vector<AbstractNode *> evaluatednodes = inst->evaluateChildren(); node->children.insert(node->children.end(), evaluatednodes.begin(), evaluatednodes.end()); @@ -242,7 +280,31 @@ std::string TransformNode::toString() const std::string TransformNode::name() const { +<<<<<<< HEAD +<<<<<<< HEAD + return "transform"; +======= + if (dump_cache.isEmpty()) { + QString text; + if (m[16] >= 0 || m[17] >= 0 || m[18] >= 0) + text.sprintf("n%d: color([%g, %g, %g, %g])", idx, + m[16], m[17], m[18], m[19]); + else + text.sprintf("n%d: multmatrix([[%g, %g, %g, %g], [%g, %g, %g, %g], " + "[%g, %g, %g, %g], [%g, %g, %g, %g]])", idx, + m[0], m[4], m[ 8], m[12], + m[1], m[5], m[ 9], m[13], + m[2], m[6], m[10], m[14], + m[3], m[7], m[11], m[15]); + text = indent + text + " {\n"; + foreach (AbstractNode *v, children) + text += v->dump(indent + QString("\t")); + ((AbstractNode*)this)->dump_cache = text + indent + "}\n"; + } + return dump_cache; +======= return "transform"; +>>>>>>> upstream/visitor } void register_builtin_transform() |