From: Ian Jackson Date: Sat, 6 Jun 2009 20:07:46 +0000 (+0100) Subject: before special kerning thing X-Git-Tag: 1.9.2~158 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?p=ypp-sc-tools.db-live.git;a=commitdiff_plain;h=40e9c021a64bf3ab2fc56629d0e7530b53b56562 before special kerning thing --- diff --git a/pctb/charset-15.txt b/pctb/charset-15.txt index 99aeff1..2a59415 100644 --- a/pctb/charset-15.txt +++ b/pctb/charset-15.txt @@ -155,6 +155,29 @@ ff8 80 ff8 +Lower +Iron +ff8 +0 +0 +fe0 +40 +20 +20 +0 +7c0 +820 +820 +820 +7c0 +0 +0 +fe0 +40 +20 +20 +fc0 + Lower It ff8 @@ -207,6 +230,14 @@ ff8 400 ff8 +Lower +P +ff8 +88 +88 +88 +70 + Lower R ff8 @@ -553,6 +584,29 @@ Upper I ff8 +Upper +Iron +ff8 +0 +0 +fe0 +40 +20 +20 +0 +7c0 +820 +820 +820 +7c0 +0 +0 +fe0 +40 +20 +20 +fc0 + Upper It ff8 diff --git a/pctb/ocr.c b/pctb/ocr.c index f5826df..266ede2 100644 --- a/pctb/ocr.c +++ b/pctb/ocr.c @@ -8,7 +8,7 @@ typedef struct { struct DatabaseNode *then; } DatabaseLink; -#define MAXGLYPHCHRS 3 +#define MAXGLYPHCHRS 7 typedef struct DatabaseNode { char s[MAXGLYPHCHRS+1]; /* null-terminated; "" means no match here */ diff --git a/pctb/ocr.h b/pctb/ocr.h index 93b158b..e8b5b1a 100644 --- a/pctb/ocr.h +++ b/pctb/ocr.h @@ -57,7 +57,8 @@ OcrResultGlyph *ocr(OcrReader *rd, OcrCellType, int w, Pixcol cols[]); #define DEBUG_FLAG_LIST \ DF(ocr) \ DF(rect) \ - DF(callout) + DF(callout) \ + DF(pages) enum { #define DF(f) dbg__shift_##f, diff --git a/pctb/pages.c b/pctb/pages.c index de96731..2f4f669 100644 --- a/pctb/pages.c +++ b/pctb/pages.c @@ -18,6 +18,8 @@ static struct timeval tv_startup; static unsigned wwidth, wheight; static int wxpos, wypos; +DEBUG_DEFINE_DEBUGF(pages) + static KeyCode keycode(KeySym sym) { return XKeysymToKeycode(disp,sym); } @@ -42,12 +44,12 @@ static double timestamp(void) { r= gettimeofday(&tv,0); eassert(!r); double t= (tv.tv_sec - tv_startup.tv_sec) + (tv.tv_usec - tv_startup.tv_usec) * 1e-6; - fprintf(stderr,"%f\n",t); + debugf("PAGING %f\n",t); return t; } static void delay(double need_sleep) { int r; - fprintf(stderr,"PAGING delay %f\n",need_sleep); + debugf("PAGING delay %f\n",need_sleep); r= usleep(need_sleep * 1e6); eassert(!r); } @@ -66,12 +68,12 @@ static void send_pgup_many(void) { int i; for (i=0; i<25; i++) send_key(XK_Prior); - fprintf(stderr,"PAGING PageUp x %d\n",i); + debugf("PAGING PageUp x %d\n",i); sync_after_input(); } static void send_pgdown(void) { send_key(XK_Next); - fprintf(stderr,"PAGING PageDown\n"); + debugf("PAGING PageDown\n"); sync_after_input(); } @@ -87,13 +89,13 @@ static void snapshot(Snapshot **output) { free_snapshot(output); - fprintf(stderr,"PAGING snapshot\n"); + debugf("PAGING snapshot\n"); timestamp(); *output= XGetImage(disp,id, 0,0, wwidth,wheight, AllPlanes, ZPixmap); timestamp(); - fprintf(stderr,"PAGING snapshot done.\n"); + debugf("PAGING snapshot done.\n"); } static int identical(const Snapshot *a, const Snapshot *b) { @@ -112,7 +114,7 @@ static void wait_for_stability(Snapshot **output, /* waits longer if we're going to return an image identical to previously * if previously==0, all images are considered identical to it */ - fprintf(stderr,"PAGING wait_for_stability" + debugf("PAGING wait_for_stability" " last_input=%f previously=%p\n", last_input, previously); @@ -125,16 +127,16 @@ static void wait_for_stability(Snapshot **output, if (!with_keypress && !(previously && identical(*output,previously))) { - fprintf(stderr,"PAGING wait_for_stability simple\n"); + debugf("PAGING wait_for_stability simple\n"); break; } if (last && identical(*output,last)) { - fprintf(stderr,"PAGING wait_for_stability stabilised\n"); + debugf("PAGING wait_for_stability stabilised\n"); break; } - fprintf(stderr,"PAGING wait_for_stability retry\n"); + debugf("PAGING wait_for_stability retry\n"); free_snapshot(&last); last=*output; *output=0; @@ -145,7 +147,7 @@ static void wait_for_stability(Snapshot **output, } free_snapshot(&last); - fprintf(stderr,"PAGING wait_for_stability done.\n"); + debugf("PAGING wait_for_stability done.\n"); } static void raise_and_get_details(void) { @@ -154,7 +156,7 @@ static void raise_and_get_details(void) { unsigned bd,depth; Window dummy; - fprintf(stderr,"PAGING raise_and_get_details\n"); + debugf("PAGING raise_and_get_details\n"); r= XTestQueryExtension(disp, &evbase,&errbase,&majver,&minver); eassert(r==True); @@ -175,7 +177,7 @@ static void raise_and_get_details(void) { static void set_focus(void) { int screen= XScreenNumberOfScreen(attr.screen); - fprintf(stderr,"PAGING set_focus\n"); + debugf("PAGING set_focus\n"); XTestFakeMotionEvent(disp,screen, wxpos,wypos, 0); @@ -183,7 +185,7 @@ static void set_focus(void) { XTestFakeButtonEvent(disp,1,0, 50); sync_after_input(); - fprintf(stderr,"PAGING raise_and_set_focus done.\n"); + debugf("PAGING raise_and_set_focus done.\n"); } #define SAMPLEMASK 0xfful @@ -261,13 +263,13 @@ void take_screenshots(void) { /* now to actually page down */ for (;;) { - fprintf(stderr,"paging page %d\n",npages); + debugf("paging page %d\n",npages); eassert(npages < MAX_PAGES); page_images[npages]= convert_page(current); free_snapshot(&last); last=current; current=0; - fprintf(stderr,"PAGING page %d converted\n",npages); + debugf("PAGING page %d converted\n",npages); wait_for_stability(¤t,last, 0); if (npages && /* first pagedown doesn't do much */ @@ -279,7 +281,7 @@ void take_screenshots(void) { send_pgdown(); npages++; } - fprintf(stderr,"PAGING all done.\n"); + debugf("PAGING all done.\n"); } void take_one_screenshot(void) { diff --git a/pctb/structure.c b/pctb/structure.c index f9f1e7f..bbc7b8b 100644 --- a/pctb/structure.c +++ b/pctb/structure.c @@ -229,13 +229,24 @@ CanonImage *file_read_image_ppm(FILE *f) { } void read_screenshots(void) { -// int c; -// while ((c= fgetc(screenshots_file) != EOF)) { -// ungetc(c, screenshots_file); - -// eassert(npages < MAX_PAGES); + struct stat stab; + int r; + + r= fstat(fileno(screenshots_file), &stab); eassert(!r); + + for (;;) { + if (S_ISREG(stab.st_mode)) { + long pos= ftell(screenshots_file); + if (pos == stab.st_size) break; + } else { + int c= fgetc(screenshots_file); + if (c==EOF) break; + ungetc(c, screenshots_file); + } + eassert(npages < MAX_PAGES); page_images[npages++]= file_read_image_ppm(screenshots_file); -// } + } + eassert(!ferror(screenshots_file)); } static void find_commodity(int offset, Rect *rr) { @@ -243,13 +254,14 @@ static void find_commodity(int offset, Rect *rr) { rr->tl.y= commbasey - offset*comminty; rr->br.y= rr->tl.y + comminty-2; if (rr->tl.y < mainr.tl.y || rr->br.y > mainr.br.y) { rr->tl.x=-1; return; } + + rr->tl.x= mainr.tl.x; + rr->br.x= mainr.br.x; + if (rr->tl.y > mainr.tl.y) require_rectangle(rr->tl.x,rr->tl.y-1, rr->br.x,rr->tl.y-1, "+"); if (rr->br.y < mainr.tl.y) require_rectangle(rr->tl.x,rr->br.y+1, rr->br.x,rr->br.y+1, "+"); - - rr->tl.x= mainr.tl.x; - rr->br.x= mainr.br.x; } static void find_table_entry(Rect commod, int colno, Rect *cellr) {