static cmd_exec *move_ctor(cmd *c)
{
move_cmd *m = new move_cmd;
- m->x = c->args.at(0)->double_default(0);
- m->y = c->args.at(1)->double_default(0);
+ m->x = c->args.at(0)->as_double(0);
+ m->y = c->args.at(1)->as_double(0);
return m;
}
static cmd_exec *scale_ctor(cmd *c)
{
scale_cmd *s = new scale_cmd;
- s->x_factor = c->args.at(0)->double_default(1);
- s->y_factor = c->args.at(1)->double_default(s->x_factor);
+ s->x_factor = c->args.at(0)->as_double(1);
+ s->y_factor = c->args.at(1)->as_double(s->x_factor);
return s;
}
+/*** rotate ***/
+
+class rotate_cmd : public cmd_exec {
+public:
+ int deg;
+ vector<page *> process(vector<page *> &pages);
+};
+
+vector<page *> rotate_cmd::process(vector<page *> &pages)
+{
+ vector<page *> out;
+ for (auto p: pages)
+ {
+ xform_page *q = new xform_page(p, p->width, p->height);
+ // FIXME: This does not work yet
+ q->xform.rotate_deg(90);
+ out.push_back(q);
+ }
+ return out;
+}
+
+static const arg_def rotate_args[] = {
+ { "angle", AT_INT | AT_MANDATORY | AT_POSITIONAL },
+ { NULL, 0 }
+};
+
+static cmd_exec *rotate_ctor(cmd *c)
+{
+ rotate_cmd *r = new rotate_cmd;
+ r->deg = c->args.at(0)->as_int(0);
+ return r;
+}
+
/*** Command table ***/
const cmd_def cmd_table[] = {
{ "move", move_args, 0, move_ctor },
{ "scale", scale_args, 0, scale_ctor },
+ { "rotate", rotate_args, 0, rotate_ctor },
{ "null", null_args, 0, null_ctor },
{ NULL, NULL, 0, NULL }
};