eassert(feof(db));
}
-static void callout_unknown(int w, int h, Pixcol cols[], int unk_l, int unk_r,
+static void callout_unknown(int w, int h, Pixcol cols[],
+ int unk_l, int unk_r, int unk_ctx,
const OcrResultGlyph *sofar, int nsofar) {
int pfd[2], c, r,i, x,y;
const OcrResultGlyph *s;
r= close(pfd[0]); eassert(!r);
resolver= fdopen(pfd[1],"w"); eassert(resolver);
}
- fprintf(resolver,"%d %d",unk_l,unk_r);
+ fprintf(resolver,"%d %d %d",unk_l,unk_r,unk_ctx);
for (i=0, s=sofar; i<nsofar; i++, s++) {
fprintf(resolver," %d %d %d ",s->l,s->r,s->ctx);
for (p=s->s; (c= *p); p++) {
} else {
int rx;
fprintf(debug," UNKNOWN");
- for (rx=lx+1; rx<w && cols[rx]; rx++);
+ for (rx=lx; rx<w && cols[rx]; rx++);
fprintf(debug," x=%d ctx=%d %d..%d\n",x, ctx, lx,rx);
debug_flush();
- callout_unknown(w,h,cols, lx,rx, results,nresults);
+ callout_unknown(w,h,cols, lx,rx-1,ctx, results,nresults);
goto restart;
}
}
set csrh 20
proc init_widgets {} {
+ # idempotent
global csrh gotsh
+
+ if {[winfo exists .d]} return
frame .d
set cur_0 $unk_l
set cur_1 [expr {$unk_r+1}]
set last_ht {}
+
+ recursor
}
update idletasks
puts "$how $what"
eval update_database/$how $what
+ exec kill -STOP [pid]
+ fileevent stdin readable required
}
-# bind . <Key-space> {}
+#---------- main progrm ----------
proc test_main {} {
global glyphsdone unk_l unk_r unk_context
startup_cursor
}
+proc required {} {
+ global glyphsdone unk_l unk_r unk_context
+
+ if {[gets stdin l]<0} {
+ if {[eof stdin]} { fconfigure stdin -blocking yes; exit 0 }
+ return
+ }
+ init_widgets
+ manyset [lrange $l 0 3] unk_l unk_r unk_context
+ set glyphsdone [lrange $l 3 end]
+ puts "SHOW-THING GOT $l"
+
+ fileevent stdin readable {}
+
+ read_xpm stdin
+ draw_glyphsdone
+ startup_cursor
+}
+
read_database
-init_widgets
-test_main
-recursor
+fconfigure stdin -blocking no
+fileevent stdin readable required