X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fgocr%2Foutput.c;fp=lib%2Fgocr%2Foutput.c;h=0000000000000000000000000000000000000000;hb=57b37b6999c742d9749001df3e8694124f2715dc;hp=62d55872e08a5ddd53bf9f960aeab4f2f8ce86cc;hpb=c672a4c1f3d6c588e4fc93355f9e89cca773c02d;p=swftools.git diff --git a/lib/gocr/output.c b/lib/gocr/output.c deleted file mode 100644 index 62d5587..0000000 --- a/lib/gocr/output.c +++ /dev/null @@ -1,193 +0,0 @@ -/* -This is a Optical-Character-Recognition program -Copyright (C) 2000-2006 Joerg Schulenburg - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - - see README for EMAIL address -*/ - -#include -#include "unicode.h" -#include "output.h" -#include "gocr.h" /* extern job_t JOB; */ - -/* function is only for debugging and for developing - it prints out a part of pixmap b at point x0,y0 to stderr - using dots .,; if no pixel, and @xoO for pixels - modify n_run and print out what would happen on 2nd, 3th loop! - new: output original and copied pixmap in the same figure - */ -void out_b(struct box *px, pix *b, int x0, int y0, int dx, int dy, int cs ){ - int x,y,x2,y2,yy0,tx,ty,n1,i; - char c1, c2; - yy0=y0; - if(px){ /* overwrite rest of arguments */ - if (!b) { - b=px->p; - x0=px->x0; dx=px->x1-px->x0+1; - y0=px->y0; dy=px->y1-px->y0+1; yy0=y0; - } - if(cs==0) cs=JOB->cfg.cs; - fprintf(stderr,"\n# list box x= %4d %4d d= %3d %3d r= %3d %3d" - " nrun=%d p=%p", /* ToDo: r,nrun is obsolete */ - px->x0, px->y0, px->x1 - px->x0 + 1, px->y1 - px->y0 + 1, - px->x - px->x0, px->y - px->y0, JOB->tmp.n_run, (void*)px); - fprintf(stderr,"\n# dots=%d boxes=%d subboxes=%d c=%s mod=%s" - " line=%d m= %d %d %d %d", - px->dots, px->num_boxes, px->num_subboxes, - decode(px->c,ASCII), decode(px->modifier,ASCII), px->line, - px->m1 - px->y0, px->m2 - px->y0, px->m3 - px->y0, px->m4 - px->y0); - if (px->num_frames) { - int i,j,jo; - fprintf(stderr,"\n# frames= %d (sumvects=%d)",px->num_frames, - ((px->num_frames)?px->num_frame_vectors[px->num_frames-1]:-1)); - for (jo=j=i=0; inum_frames; i++, jo=j) { - fprintf(stderr,"\n# frame %d (%+4d,%3d,%2d) ", - i, px->frame_vol[i], px->frame_per[i], - px->num_frame_vectors[i]-jo); - /* print only the first vectors of each frame */ - for (;jnum_frame_vectors[i] && jframe_vector[j][0] - px->x0, - px->frame_vector[j][1] - px->y0); - } - } - if (px->num_ac){ /* output table of chars and its probabilities */ - fprintf(stderr,"\n# list box char: "); - for(i=0;inum_ac && itas[i]) - fprintf(stderr," %s(%d)", px->tas[i] ,px->wac[i]); - else - fprintf(stderr," %s(%d)",decode(px->tac[i],ASCII),px->wac[i]); - } - fprintf(stderr,"\n"); - if (px->dots && px->m2 && px->m1m1; dy=px->y1-yy0+1; } - } - tx=dx/80+1; - ty=dy/40+1; /* step, usually 1, but greater on large maps */ - fprintf(stderr,"# list pattern x= %4d %4d d= %3d %3d t= %d %d\n", - x0,y0,dx,dy,tx,ty); - if (dx>0) - for(y=yy0;yp,x2-x0+px->x0, - y2-y0+px->y0)num_frames) { /* mark vectors */ - int i; - if (c1!='$' && c1!='S') /* dont mark twice */ - for (i=0;inum_frame_vectors[px->num_frames-1];i++) - if ((px->frame_vector[i][0]-px->x0)/tx==(x-x0)/tx - && (px->frame_vector[i][1]-px->y0)/ty==(y-y0)/ty) - { c1=((c1=='@')?'$':'S'); break; } - } - fprintf(stderr,"%c", c1 ); - } - - /* 2nd image is the boxframe in the original bitmap */ - if (dx<40) fprintf(stderr," "); - if (dx<40) /* do it only, if we have enough place */ - for(x=x0;xy0==px->m1 || y-y0+px->y0==px->m2 - || y-y0+px->y0==px->m3 || y-y0+px->y0==px->m4) c1='<'; - if (y==y0 || y==yy0+dy-1) c2='-'; /* boxmarks */ - - fprintf(stderr,"%c%c\n",c1,c2); - } -} - -/* same as out_b, but for faster use, only a box as argument - */ -void out_x(struct box *px) { - out_b(px,NULL,0, 0, 0, 0, JOB->cfg.cs); -} - - -/* print out two boxes side by side, for debugging comparision algos */ -void out_x2(struct box *box1, struct box *box2){ - int x,y,i,tx,ty,dy; - /*FIXME jb static*/static char *c1="OXXXXxx@.,,,,,,,"; - pix *b=&JOB->src.p; - dy=(box1->y1-box1->y0+1); - if(dyy1-box2->y0+1)dy=box2->y1-box2->y0+1; - tx=(box1->x1-box1->x0)/40+1; - ty=(box1->y1-box1->y0)/40+1; /* step, usually 1, but greater on large maps */ - if(box2)fprintf(stderr,"\n# list 2 patterns"); - for(i=0;iy0+i; - for(x=box1->x0;x<=box1->x1;x+=tx) - fprintf(stderr,"%c", c1[ ((getpixel(b,x,y)cfg.cs)?0:8)+marked(b,x,y) ] ); - if(!box2) continue; - fprintf(stderr," "); y=box2->y0+i; - for(x=box2->x0;x<=box2->x1;x+=tx) - fprintf(stderr,"%c", c1[ ((getpixel(b,x,y)cfg.cs)?0:8)+marked(b,x,y) ] ); - } -} - - -/* ---- list output ---- for debugging --- - * list all boxes where the results can be found within the c-option - */ -int output_list(job_t *job) { - int i = 0, j; - struct box *box2; - pix *pp = &job->src.p; - char *lc = job->cfg.lc; - - fprintf(stderr,"\n# list shape for charlist %s",lc); - for_each_data(&(JOB->res.boxlist)) { - box2 = (struct box *) list_get_current(&(JOB->res.boxlist)); - for (j=0; jnum_ac; j++) - if (!lc || (box2->tac[j] && strchr(lc, box2->tac[j])) - || (box2->tas[j] && strstr(lc, box2->tas[j]))) break; - if (jnum_ac) - fprintf(stderr,"\n# box found in charlist"); - if (!lc || (strchr(lc, box2->c) && box2->c < 256 && box2->c) - || (strchr(lc, '_') && box2->c==UNKNOWN) /* for compability */ - || jnum_ac ){ /* also list alternative chars */ - if (!pp) pp=box2->p; - fprintf(stderr, - "\n# list shape %3d x=%4d %4d d= %3d %3d vf=%d ac=%d %04x %s", - i, box2->x0, box2->y0, - box2->x1 - box2->x0 + 1, - box2->y1 - box2->y0 + 1, - box2->num_frames, box2->num_ac, - (int)box2->c, /* wchar_t -> char ???? */ - decode(box2->c,ASCII) ); - if (JOB->cfg.verbose & 4) out_x(box2); - } - i++; - } end_for_each(&(JOB->res.boxlist)); - fprintf(stderr,"\n"); - return 0; -} -