diff options
Diffstat (limited to 'transform.cc')
-rw-r--r-- | transform.cc | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/transform.cc b/transform.cc index 5951a70..de29aaf 100644 --- a/transform.cc +++ b/transform.cc @@ -34,7 +34,7 @@ class TransformModule : public AbstractModule public: transform_type_e type; TransformModule(transform_type_e type) : type(type) { } - virtual AbstractNode *evaluate(const Context *ctx, const QVector<QString> &call_argnames, const QVector<Value> &call_argvalues, const QVector<AbstractNode*> child_nodes) const; + virtual AbstractNode *evaluate(const Context *ctx, const QVector<QString> &call_argnames, const QVector<Value> &call_argvalues, const QVector<ModuleInstanciation*> arg_children, const Context *arg_context) const; }; class TransformNode : public AbstractNode @@ -48,7 +48,7 @@ public: virtual QString dump(QString indent) const; }; -AbstractNode *TransformModule::evaluate(const Context *ctx, const QVector<QString> &call_argnames, const QVector<Value> &call_argvalues, const QVector<AbstractNode*> child_nodes) const +AbstractNode *TransformModule::evaluate(const Context *ctx, const QVector<QString> &call_argnames, const QVector<Value> &call_argvalues, const QVector<ModuleInstanciation*> arg_children, const Context *arg_context) const { TransformNode *node = new TransformNode(); @@ -140,8 +140,11 @@ AbstractNode *TransformModule::evaluate(const Context *ctx, const QVector<QStrin } } - foreach (AbstractNode *v, child_nodes) - node->children.append(v); + foreach (ModuleInstanciation *v, arg_children) { + AbstractNode *n = v->evaluate(arg_context); + if (n != NULL) + node->children.append(n); + } return node; } @@ -204,7 +207,7 @@ QString TransformNode::dump(QString indent) const return text + indent + "}\n"; } -void register_builtin_trans() +void register_builtin_transform() { builtin_modules["scale"] = new TransformModule(SCALE); builtin_modules["rotate"] = new TransformModule(ROTATE); |