#define REQUIRE_RECTANGLE(tlx,tly,brx,bry,ok) \
require_rectangle(tlx, tly, brx, bry, ok, __LINE__);
-static void require_rectangle(int tlx, int tly, int brx, int bry,
- const char *ok, int lineno) {
+#define FOR_P_RECT(p,rect) \
+ for ((p).x=(rr).tl.x; (p).x<=(rr).br.x; (p).x++) \
+ for ((p).y=(rr).tl.y; (p).y<=(rr).br.y; (p).y++)
+
+static void require_rectangle_r(Rect rr, const char *ok, int lineno) {
Point p;
- for (p.x=tlx; p.x<=brx; p.x++)
- for (p.y=tly; p.y<=bry; p.y++) {
- int c= get_p(p);
- MUST( strchr(ok,c), ({
- Rect rm={{tlx,tly},{brx,bry}};
- MI(lineno),MR(rm);MP(p);MS(ok);
- }));
- }
+ FOR_P_RECT(p,rr) {
+ int c= get_p(p);
+ MUST( strchr(ok,c), ({
+ MI(lineno),MR(rr);MP(p);MS(ok);
+ }));
+ }
}
-static void require_rectangle_r(Rect rr, const char *ok, int lineno) {
- require_rectangle(rr.tl.x,rr.tl.y, rr.br.x,rr.br.y, ok, lineno);
+static void require_rectangle(int tlx, int tly, int brx, int bry,
+ const char *ok, int lineno) {
+ Rect rr= {{tlx,tly},{brx,bry}};
+ require_rectangle_r(rr, ok, lineno);
}
static void debug_rect(const char *what, int whati, Rect rr) {
struct pam inpam;
unsigned char rgb_buf[3];
CanonImage *im;
- RgbImage *ri=0;
pnm_readpaminit(f, &inpam, sizeof(inpam));
if (!(inpam.maxval == 255 &&
inpam.format == RPPM_FORMAT))
fatal("PNM screenshot(s) file must be 8bpp 1 byte per sample RGB");
- if (!npages)
- page0_rgbimage= ri= alloc_rgb_image(inpam.width, inpam.height);
-
CANONICALISE_IMAGE(im, inpam.width, inpam.height, {
int r= fread(&rgb_buf,1,3,f);
sysassert(!ferror(f));
((unsigned long)rgb_buf[1]<<8) |
(rgb_buf[2]);
- if (ri)
- CANONIMG_ALSO_STORERGB(ri);
});
sysassert(!ferror(screenshot_file));
const unsigned char *srcp;
unsigned char *destp, *endp;
- for (srcp=page0_rgbimage->data, destp=ri->data,
+ for (srcp=page_images[0]->rgb->data, destp=ri->data,
endp= ri->data + 3 * ri->w * ri->h;
destp < endp;
srcp++, destp++) {