chiark
/
gitweb
/
~yarrgweb
/
ypp-sc-tools.main.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
do not attempt to parse the shoppe tab
[ypp-sc-tools.main.git]
/
pctb
/
structure.c
diff --git
a/pctb/structure.c
b/pctb/structure.c
index 2bb6429602fdc790f6fb76a87c5a23e47c06f638..8887c8ad624dde26d7704cca2384b0167933acc3 100644
(file)
--- a/
pctb/structure.c
+++ b/
pctb/structure.c
@@
-484,7
+484,15
@@
static void find_table_entry(Rect commod, int colno, Rect *cell) {
colno, cell->tl.x,cell->tl.y, cell->br.x,cell->br.y,
bg_count, light_count, dark_count);
colno, cell->tl.x,cell->tl.y, cell->br.x,cell->br.y,
bg_count, light_count, dark_count);
- Rgb foreground= light_count ? 0xffffffU : 0;
+ Rgb foreground;
+ double fg_extra;
+ if (light_count) {
+ foreground= 0xffffffU;
+ fg_extra= +1;
+ } else {
+ foreground= 0;
+ fg_extra= -1;
+ }
int monochrome= 1;
FOR_P_RECT(p,*cell) {
int monochrome= 1;
FOR_P_RECT(p,*cell) {
@@
-496,8
+504,8
@@
static void find_table_entry(Rect commod, int colno, Rect *cell) {
unsigned char bg_chan= background >> (i*8);
unsigned char fg_chan= foreground >> (i*8);
double alpha_chan=
unsigned char bg_chan= background >> (i*8);
unsigned char fg_chan= foreground >> (i*8);
double alpha_chan=
- ((double)here_chan - (double)bg_chan) /
- ((
double)fg_chan
- (double)bg_chan);
+ ((double)here_chan
- (double)bg_chan) /
+ ((
fg_chan + fg_extra)
- (double)bg_chan);
alpha[i]= alpha_chan;
alpha_mean += alpha_chan * (1/3.0);
}
alpha[i]= alpha_chan;
alpha_mean += alpha_chan * (1/3.0);
}
@@
-510,10
+518,11
@@
static void find_table_entry(Rect commod, int colno, Rect *cell) {
MI(i);MRGB(here);MRGB(background);MRGB(foreground);
MF(alpha_min);MF(alpha[i]);MF(alpha_max) );
MI(i);MRGB(here);MRGB(background);MRGB(foreground);
MF(alpha_min);MF(alpha[i]);MF(alpha_max) );
- MUST( 0 <= alpha_mean && alpha_mean <
= 1
,
+ MUST( 0 <= alpha_mean && alpha_mean <
0.999
,
MRGB(here);MRGB(background);MRGB(foreground);
MRGB(here);MRGB(background);MRGB(foreground);
- MF(alpha_mean) );
- int here_int= AAMAXVAL*alpha_mean;
+ MF(alpha_mean); MF(alpha[0]);MF(alpha[1]);MF(alpha[2]); );
+ int here_int= floor((AAMAXVAL+1)*alpha_mean);
+ assert(here_int <= AAMAXVAL);
if (!(here_int==0 || here_int==AAMAXVAL)) monochrome=0;
cim->d[p.y * cim->w + p.x]= '0' + here_int;
}
if (!(here_int==0 || here_int==AAMAXVAL)) monochrome=0;
cim->d[p.y * cim->w + p.x]= '0' + here_int;
}
@@
-662,7
+671,7
@@
void find_islandname(RgbImage *ri) {
}
identify_rgbimage(ri, islandnamer, archisland, "island");
}
identify_rgbimage(ri, islandnamer, archisland, "island");
- } else {
+ } else
if (!strcmp(sunshine,"Land - Ahoy"))
{
Rect islandnamer;
islandnamer.tl.x= (sunshiner.tl.x + sunshiner.br.x) / 2;
Rect islandnamer;
islandnamer.tl.x= (sunshiner.tl.x + sunshiner.br.x) / 2;
@@
-748,6
+757,10
@@
void find_islandname(RgbImage *ri) {
islandnamer.br.x= p.x;
identify_rgbimage(ri, islandnamer, archisland, "island");
islandnamer.br.x= p.x;
identify_rgbimage(ri, islandnamer, archisland, "island");
+ } else {
+
+ MUST(!"sunshine shows ship or ahoy", MS(sunshine) );
+
}
char *delim= strstr(archisland," - ");
}
char *delim= strstr(archisland," - ");