-typedef struct { /* both inclusive */
- Point tl;
- Point br;
-} Rect;
-
-static inline char get(int x, int y) { return cim->d[y * cim->w + x]; }
-static inline char get_p(Point p) { return get(p.x,p.y); }
-
-
-#define START_MAIN {200,200}
-#define MIN_COLUMNS 6
-#define INTERESTING_COLUMNS 6
-#define TEXT_COLUMNS 2
-#define MAX_COLUMNS 7
-
-static Rect mainr = { START_MAIN,START_MAIN };
-static int commbasey, comminty;
-static int colrightx[INTERESTING_COLUMNS];
-static int text_h;
-static OcrReader *rd;
-
-const CanonColourInfo canoncolourinfos[]= {
- { 0x475A5E, '*' }, /* edge */
- { 0x2C5F7A, '*' }, /* edge just under box heading shadow */
- { 0x7D9094, '+' }, /* interbox */
-
- { 0xBDC5BF, ' ' }, /* background - pale Sugar cane, etc. */
- { 0xADB5AF, ' ' }, /* background - dark */
- { 0xC7E1C3, ' ' }, /* background - pale Swill, etc. */
- { 0xB5CFB1, ' ' }, /* background - dark */
- { 0xD6CEB0, ' ' }, /* background - pale Madder, etc. */
- { 0xC8C0A2, ' ' }, /* background - dark */
- { 0xE0E1D3, ' ' }, /* background - pale Lorandite, etc. */
- { 0xD0D1C3, ' ' }, /* background - dark */
- { 0xE5E6C1, ' ' }, /* background - pale Cloth */
- { 0xD7D8B3, ' ' }, /* background - dark */
- { 0xEDDED9, ' ' }, /* background - pale Dye */
- { 0xDACBC6, ' ' }, /* background - dark */
- { 0xD3DEDF, ' ' }, /* background - pale Paint */
- { 0xC5D0D1, ' ' }, /* background - dark */
- { 0xDCD1CF, ' ' }, /* background - pale Enamel */
- { 0xCEC3C1, ' ' }, /* background - dark */
- { 0xF3F6F5, ' ' }, /* background - pale fruit */
- { 0xE2E7E5, ' ' }, /* background - dark */
-
- { 0x000000, 'o' }, /* foreground */
- { 0xD4B356, ' ' }, /* background (cursor) */
- { 0xFFFFFF, 'o' }, /* foreground (cursor) */
-
- { 0x5B93BF, '_' }, /* selector dropdown background */
- { 0xD7C94F, 'X' }, /* selector dropdown foreground */
- { 0,0 }
-};
-
-static void require_rectangle(int tlx, int tly, int brx, int bry,
- const char *ok) {
- int x,y;
- for (x=tlx; x<=brx; x++)
- for (y=tly; y<=bry; y++) {
- int c= get(x,y);
- assert(strchr(ok,c));
- }
-}
-static void require_rectangle_r(Rect rr, const char *ok) {
- require_rectangle(rr.tl.x,rr.tl.y, rr.br.x,rr.br.y, ok);
-}
-
-static void debug_rect(const char *what, int whati, Rect rr) {
-#ifdef DEBUG_RECTANGLES
- int y,r,w;
- fprintf(debug, "%s %d: %d,%d..%d,%d:\n", what, whati,
- rr.tl.x,rr.tl.y, rr.br.x,rr.br.y);
- w= rr.br.x - rr.tl.x + 1;
- for (y=rr.tl.y; y<=rr.br.y; y++) {
- fprintf(debug, "%4d%*s|", y, rr.tl.x,"");
- r= fwrite(cim->d + y*cim->w + rr.tl.x, 1, w, debug);
- eassert(r==w);
- fputc('|',debug);
- fputc('\n',debug);
- }
-#endif
- debug_flush();
-}