00001 #ifndef RUNTIME_H
00002 #define RUNTIME_H
00003
00004 #include <vector>
00005 #include <qstring.h>
00006 #include "value.h"
00007 #include "image.h"
00008
00009 using namespace std;
00010
00014 class Runtime
00015 {
00016 private:
00017
00018 Value * add(Value * a, Value *b);
00019 Value * add(vector<Value*>);
00020
00021
00022 Value * neg(Value *);
00023 Value * sub(vector<Value*>);
00024
00025
00026 Value * div(Value * a, Value *b);
00027 Value * div(vector<Value*>);
00028
00029
00030 Value * mul(Value * a, Value *b);
00031 Value * mul(vector<Value*>);
00032
00033
00034 Value * image(QString filename);
00035 Value * image(Value * filename);
00036 Value * image();
00037 Value * image(vector<Value*>);
00038
00039
00040 Value * select(Value * image);
00041 Value * select(vector<Value*>);
00042 Value * line(Value * image);
00043 Value * line(vector<Value*>);
00044 Value * box(Value * image);
00045 Value * box(vector<Value*>);
00046
00047
00048 Value * center(Value * image, Value * center);
00049 Value * center(vector<Value*>);
00050
00051
00052 Value * zoom(ImageValue * image, PointValue * mult);
00053 Value * zoomx(vector<Value*>);
00054 Value * zoomy(vector<Value*>);
00055 Value * zoom(vector<Value*>);
00056
00057
00058 Value * straighten(Value* image, Value * line);
00059 Value * straighten(vector<Value*>);
00060
00066 Value * crop(Value * image, Value * box);
00067
00074 Value * crop(vector<Value*> v);
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086 #ifdef PSYTRACK
00087
00090 Value * morph(Value *, Value *, Value *);
00091 Value * morph(vector<Value*> v);
00092 #endif
00093 public:
00094 Value * apply(QString op, vector<Value*>);
00095 bool requires_user_input(Value *);
00096 };
00097
00098
00099 double dist(double x0, double y0, double x1, double y1);
00100
00101 extern Runtime runtime;
00102 #endif