summaryrefslogtreecommitdiff
path: root/src/transform.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/transform.cc')
-rw-r--r--src/transform.cc62
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()
contact: Jan Huwald // Impressum