Warning: session_start(): open(/var/lib/php/sessions/sess_6r4erulfavi7157ss1cn759k64, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
srecord noeq GazelleVScript(S text) {
LS tok;
sS helpText = !include string #1033775;
// A sequence is a sequence of runs,
// for example in an animation
class Sequence {
new MapSO vars;
}
class Run is Steppable {
ListAndIndex ptr; // where are we in the script
S token;
new Stack stack;
// main variables
settable IBWIntegralImage inputImage;
IBWIntegralImage integralImage;
settable BWImage bwImage;
selfType setIntegralImage(IBWIntegralImage ii) {
push(integralImage = ii);
this;
}
*() {
parse();
ptr = ListAndIndex(tok, 1);
}
void push(O o) { stack.add(o); }
O value() { ret last(stack); }
public bool step() {
token = ptr!;
if (token == null) false;
next();
if (isInteger(token)) {
int i = parseInt(token);
token = tpp();
if (is("p"))
scaleToHeight(i);
else if (is("c"))
posterize(i);
else if (is("w"))
scaleWidthOnly(i);
else
warn("Unknown token: " + token);
} else if (is("rasters"))
push(reproduceRasterBars(bwIntegralImage()));
else if (is("struct"))
push(struct(value()));
else if (is("niceStruct"))
push(sfuIndent(value()));
else if (is("className"))
push(className(value()));
else if (is("borderImage"))
push(bwImage = gazelle22_borderImage(bwImage));
else if (is("gradientImage"))
push(bwImage = new Gazelle22_GradientImage(bwImage)!);
else if (is("q1")) clip(0, .5, 0, .5);
else if (is("q2")) clip(.5, 1, 0, .5);
else if (is("q3")) clip(0, .5, .5, 1);
else if (is("q4")) clip(.5, 1, .5, 1);
else if (is("original"))
push(toBufferedImage(inputImage));
else {
warn("Unknown token: " + token);
}
true;
}
bool is(S t) { ret eqic(token, t); }
S tpp() { var token = ptr!; next(); ret token; }
void next { if (!ptr.atEnd()) ptr = ptr.plus(2); }
// operations
void scaleToHeight(int pixelRows) {
pixelRows = min(pixelRows, 512);
if (integralImage == null)
ret with warn("No integral image to scale down");
push(bwImage = scaledBWImageFromBWIntegralImage_withMeta_height(pixelRows, integralImage));
}
void posterize(int colors) {
colors = clamp(colors, 2, 256);
if (bwImage == null)
ret with warn("No image to posterize");
else
push(bwImage = posterizeBWImage_withMeta(colors, bwImage));
}
IBWIntegralImage bwIntegralImage() {
O val = value();
if (val cast IBWIntegralImage) ret val;
if (val cast BWImage) {
var ii = main bwIntegralImage(val);
setIntegralImage(ii);
ret ii;
}
fail("Not an image on stack");
}
void scaleWidthOnly(int w) {
var ii = bwIntegralImage();
push(bwImage = scaledBWImageFromBWIntegralImage_withMeta(
ii, w, ii.getHeight());
}
void clip(double x1, double x2, double y1, double y2) {
O val = value();
if (val cast IBWIntegralImage) {
int w = val.getWidth(), h = val.getHeight();
Rect r = toRect_round(scaleRect(w, h,
doubleRectFromPoints(x1, y1, x2, y2)));
setIntegralImage(new IIBWVirtualClip(val, r));
}
else if (val cast BWImage)
todo();
else fail("Not an image on stack");
}
// end of operations
O result() {
ret last(stack);
}
run { stepAll(this); }
}
void parse() {
tok if null = javaTok(text);
}
}