srecord noeq GazelleVScript(S text) { LS tok; class Run is Steppable { ListAndIndex ptr; // main variables settable IBWIntegralImage integralImage; settable BWImage bwImage; *() { parse(); ptr = ListAndIndex(tok, 1); } public bool step() { S token = ptr!; if (token == null) false; next(); if (isInteger(token)) { S token2 = tpp(); if (eqic(token2, "p")) { scaleToHeight(parseInt(token)); } else warn("Unknown token: " + token); } else { warn("Unknown token: " + token); } true; } 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) warn("No integral image to scale down"); else bwImage = scaledBWImageFromBWIntegralImage_withMeta(pixelRows, integralImage); } O result() { ret or(bwImage, integralImage); } } void parse() { tok if null = javaTok(text); } }