Skip to content

Commit 891239e

Browse files
committed
0.20190220
DjVuL: include size reduce
1 parent 71cdfef commit 891239e

File tree

7 files changed

+83
-149
lines changed

7 files changed

+83
-149
lines changed

Makefile

Lines changed: 52 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ CPP = g++
44
CFLAGS = -DUNIX -O2 -Wall -s
55
LIBS = -lfreeimage
66
VER = 0
7-
VERB = 20181107
8-
COMMON = lib$(PNAME).so.$(VER) lib$(PNAME)freeimage.so.$(VER)
7+
VERB = 20190220
8+
PLIBF = lib$(PNAME).so.$(VER)
9+
PLIBFI = lib$(PNAME)freeimage.so.$(VER)
10+
PLIB = $(PLIBF) $(PLIBFI)
911
PREFIX = /usr/local
1012
INCPREFIX = $(PREFIX)/include
1113
LIBPREFIX = $(PREFIX)/lib
@@ -21,85 +23,85 @@ all: $(PROGNAME)
2123
clean:
2224
rm -f $(PROGNAME) lib$(PNAME).so* lib$(PNAME)freeimage.so*
2325

24-
lib$(PNAME).so.$(VER): src/imthreshold.cpp
25-
$(CPP) $(CFLAGS) -shared -Wl,-soname,$@ $< -o $@
26+
$(PLIBF): src/imthreshold.cpp
27+
$(CPP) $(CFLAGS) -shared -Wl,-soname,$@ $^ -o $@
2628
chmod 644 $@
2729
mv $@ $@.$(VERB)
2830
ln -s $@.$(VERB) $@
2931
ln -s $@ libimthreshold.so
3032

31-
lib$(PNAME)freeimage.so.$(VER): src/imthresholdfreeimage.cpp
32-
$(CPP) $(CFLAGS) $(LIBS) -shared -Wl,-soname,$@ $< -o $@
33+
$(PLIBFI): src/imthresholdfreeimage.cpp $(PLIBF)
34+
$(CPP) $(CFLAGS) -shared -Wl,-soname,$@ $^ $(LIBS) -o $@
3335
chmod 644 $@
3436
mv $@ $@.$(VERB)
3537
ln -s $@.$(VERB) $@
3638
ln -s $@ libimthresholdfreeimage.so
3739

38-
$(PNAME)-deskew: src/deskew.cpp $(COMMON)
39-
$(CPP) $(CFLAGS) $(LIBS) $^ -o $@
40+
$(PNAME)-deskew: src/deskew.cpp $(PLIB)
41+
$(CPP) $(CFLAGS) $^ $(LIBS) -o $@
4042

41-
$(PNAME)-rotate: src/rotate.cpp $(COMMON)
42-
$(CPP) $(CFLAGS) $(LIBS) $^ -o $@
43+
$(PNAME)-rotate: src/rotate.cpp $(PLIB)
44+
$(CPP) $(CFLAGS) $^ $(LIBS) -o $@
4345

44-
$(PNAME)-filter: src/filter.cpp $(COMMON)
45-
$(CPP) $(CFLAGS) $(LIBS) $^ -o $@
46+
$(PNAME)-filter: src/filter.cpp $(PLIB)
47+
$(CPP) $(CFLAGS) $^ $(LIBS) -o $@
4648

47-
$(PNAME)-fautoinv: src/fautoinv.cpp $(COMMON)
48-
$(CPP) $(CFLAGS) $(LIBS) $^ -o $@
49+
$(PNAME)-fautoinv: src/fautoinv.cpp $(PLIB)
50+
$(CPP) $(CFLAGS) $^ $(LIBS) -o $@
4951

50-
$(PNAME)-fdespeckle: src/fdespeckle.cpp $(COMMON)
51-
$(CPP) $(CFLAGS) $(LIBS) $^ -o $@
52+
$(PNAME)-fdespeckle: src/fdespeckle.cpp $(PLIB)
53+
$(CPP) $(CFLAGS) $^ $(LIBS) -o $@
5254

53-
$(PNAME)-finfo: src/finfo.cpp $(COMMON)
54-
$(CPP) $(CFLAGS) $(LIBS) $^ -o $@
55+
$(PNAME)-finfo: src/finfo.cpp $(PLIB)
56+
$(CPP) $(CFLAGS) $^ $(LIBS) -o $@
5557

56-
$(PNAME)-fpmean: src/fpmean.cpp $(COMMON)
57-
$(CPP) $(CFLAGS) $(LIBS) $^ -o $@
58+
$(PNAME)-fpmean: src/fpmean.cpp $(PLIB)
59+
$(CPP) $(CFLAGS) $^ $(LIBS) -o $@
5860

59-
$(PNAME)-math: src/math.cpp $(COMMON)
60-
$(CPP) $(CFLAGS) $(LIBS) $^ -o $@
61+
$(PNAME)-math: src/math.cpp $(PLIB)
62+
$(CPP) $(CFLAGS) $^ $(LIBS) -o $@
6163

62-
$(PNAME)-separate: src/separate.cpp $(COMMON)
63-
$(CPP) $(CFLAGS) $(LIBS) $^ -o $@
64+
$(PNAME)-separate: src/separate.cpp $(PLIB)
65+
$(CPP) $(CFLAGS) $^ $(LIBS) -o $@
6466

65-
$(PNAME)-size: src/size.cpp $(COMMON)
66-
$(CPP) $(CFLAGS) $(LIBS) $^ -o $@
67+
$(PNAME)-size: src/size.cpp $(PLIB)
68+
$(CPP) $(CFLAGS) $^ $(LIBS) -o $@
6769

68-
$(PNAME)-sbwmag2: src/sbwmag2.cpp $(COMMON)
69-
$(CPP) $(CFLAGS) $(LIBS) $^ -o $@
70+
$(PNAME)-sbwmag2: src/sbwmag2.cpp $(PLIB)
71+
$(CPP) $(CFLAGS) $^ $(LIBS) -o $@
7072

71-
$(PNAME)-scris: src/scris.cpp $(COMMON)
72-
$(CPP) $(CFLAGS) $(LIBS) $^ -o $@
73+
$(PNAME)-scris: src/scris.cpp $(PLIB)
74+
$(CPP) $(CFLAGS) $^ $(LIBS) -o $@
7375

74-
$(PNAME)-shris: src/shris.cpp $(COMMON)
75-
$(CPP) $(CFLAGS) $(LIBS) $^ -o $@
76+
$(PNAME)-shris: src/shris.cpp $(PLIB)
77+
$(CPP) $(CFLAGS) $^ $(LIBS) -o $@
7678

77-
$(PNAME)-tglobal: src/tglobal.cpp $(COMMON)
78-
$(CPP) $(CFLAGS) $(LIBS) $^ -o $@
79+
$(PNAME)-tglobal: src/tglobal.cpp $(PLIB)
80+
$(CPP) $(CFLAGS) $^ $(LIBS) -o $@
7981

80-
$(PNAME)-tlocal: src/tlocal.cpp $(COMMON)
81-
$(CPP) $(CFLAGS) $(LIBS) $^ -o $@
82+
$(PNAME)-tlocal: src/tlocal.cpp $(PLIB)
83+
$(CPP) $(CFLAGS) $^ $(LIBS) -o $@
8284

83-
$(PNAME)-tlayer: src/tlayer.cpp $(COMMON)
84-
$(CPP) $(CFLAGS) $(LIBS) $^ -o $@
85+
$(PNAME)-tlayer: src/tlayer.cpp $(PLIB)
86+
$(CPP) $(CFLAGS) $^ $(LIBS) -o $@
8587

86-
$(PNAME)-tdalg: src/tdalg.cpp $(COMMON)
87-
$(CPP) $(CFLAGS) $(LIBS) $^ -o $@
88+
$(PNAME)-tdalg: src/tdalg.cpp $(PLIB)
89+
$(CPP) $(CFLAGS) $^ $(LIBS) -o $@
8890

89-
$(PNAME)-tdjvul: src/tdjvul.cpp $(COMMON)
90-
$(CPP) $(CFLAGS) $(LIBS) $^ -o $@
91+
$(PNAME)-tdjvul: src/tdjvul.cpp $(PLIB)
92+
$(CPP) $(CFLAGS) $^ $(LIBS) -o $@
9193

92-
$(PNAME)-tgatos: src/tgatos.cpp $(COMMON)
93-
$(CPP) $(CFLAGS) $(LIBS) $^ -o $@
94+
$(PNAME)-tgatos: src/tgatos.cpp $(PLIB)
95+
$(CPP) $(CFLAGS) $^ $(LIBS) -o $@
9496

95-
$(PNAME)-thalftone2: src/thalftone2.cpp $(COMMON)
96-
$(CPP) $(CFLAGS) $(LIBS) $^ -o $@
97+
$(PNAME)-thalftone2: src/thalftone2.cpp $(PLIB)
98+
$(CPP) $(CFLAGS) $^ $(LIBS) -o $@
9799

98-
$(PNAME)-ttext: src/ttext.cpp $(COMMON)
99-
$(CPP) $(CFLAGS) $(LIBS) $^ -o $@
100+
$(PNAME)-ttext: src/ttext.cpp $(PLIB)
101+
$(CPP) $(CFLAGS) $^ $(LIBS) -o $@
100102

101-
$(PNAME)-twhiterohrer: src/twhiterohrer.cpp $(COMMON)
102-
$(CPP) $(CFLAGS) $(LIBS) $^ -o $@
103+
$(PNAME)-twhiterohrer: src/twhiterohrer.cpp $(PLIB)
104+
$(CPP) $(CFLAGS) $^ $(LIBS) -o $@
103105

104106
install: $(PROGNAME)
105107
$(INSTALL) -d $(LIBPREFIX)

doc/imthreshold/BUILD

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
ImThreshold.
2-
0.20171129
2+
0.20190220
33

44
Download
55
--------

doc/imthreshold/CHANGELOG

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
0.20190220
2+
3+
DjVuL: include size reduce
4+
15
0.20181201
26

37
Optimize alloc and free

doc/imthreshold/VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.20181201
1+
0.20190220

src/imthreshold.cpp

Lines changed: 23 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -6021,91 +6021,32 @@ void IMTFilterSHRIS (IMTpixel** p_im, IMTpixel** d_im, unsigned height, unsigned
60216021

60226022
////////////////////////////////////////////////////////////////////////////////
60236023

6024-
void IMTFilterSReduce (IMTpixel** p_im, IMTpixel** d_im, unsigned height, unsigned width, int smode)
6024+
void IMTFilterSReduce (IMTpixel** p_im, IMTpixel** d_im, unsigned height, unsigned width, unsigned reduce)
60256025
{
6026-
unsigned d;
6027-
int yr, xr, y1, x1, y2, x2, y3, x3;
6028-
int h = height;
6029-
int w = width;
6030-
int h2, w2;
6031-
6032-
double imx, imr;
6033-
6034-
if (smode < 2) {smode = 2;}
6035-
if (smode > 3) {smode = 3;}
6036-
6037-
h2 = (height + smode - 1) / smode;
6038-
w2 = (width + smode - 1) / smode;
6039-
6040-
if (smode == 2)
6026+
unsigned y, x, y0, x0, y1, x1;
6027+
if (reduce > 1)
60416028
{
6042-
for (yr = 0; yr < h2; yr++)
6029+
unsigned widthr = (width + reduce - 1) / reduce;
6030+
unsigned heightr = (height + reduce - 1) / reduce;
6031+
for (y = 0; y < heightr; y++)
60436032
{
6044-
y1 = 2 * yr;
6045-
y2 = 2 * yr + 1;
6046-
if (y2 >= h) {y2 = h - 1;}
6047-
for (xr = 0; xr < w2; xr++)
6033+
y0 = y * reduce;
6034+
y1 = y0 + reduce;
6035+
if (y1 > height) {y1 = height;}
6036+
for (x = 0; x < widthr; x++)
60486037
{
6049-
x1 = 2 * xr;
6050-
x2 = 2 * xr + 1;
6051-
if (x2 >= w) {x2 = w - 1;}
6052-
for (d = 0; d < 3; d++)
6053-
{
6054-
imr = 0;
6055-
imx = (double)p_im[y1][x1].c[d];
6056-
imr += imx;
6057-
imx = (double)p_im[y1][x2].c[d];
6058-
imr += imx;
6059-
imx = (double)p_im[y2][x1].c[d];
6060-
imr += imx;
6061-
imx = (double)p_im[y2][x2].c[d];
6062-
imr += imx;
6063-
imr /= 4.0;
6064-
d_im[yr][xr].c[d] = (BYTE)MIN(MAX((int)0, (int)(imr + 0.5)), (int)255);
6065-
}
6066-
d_im[yr][xr] = IMTcalcS (d_im[yr][xr]);
6038+
x0 = x * reduce;
6039+
x1 = x0 + reduce;
6040+
if (x1 > width) {x1 = width;}
6041+
d_im[y][x] = IMTmeanIc(p_im, y0, x0, y1, x1);
60676042
}
60686043
}
60696044
} else {
6070-
for (yr = 0; yr < h2; yr++)
6071-
{
6072-
y1 = 3 * yr;
6073-
y2 = 3 * yr + 1;
6074-
y3 = 3 * yr + 2;
6075-
if (y2 >= h) {y2 = h - 1;}
6076-
if (y3 >= h) {y3 = h - 2;}
6077-
for (xr = 0; xr < w2; xr++)
6078-
{
6079-
x1 = 3 * xr;
6080-
x2 = 3 * xr + 1;
6081-
x3 = 3 * xr + 2;
6082-
if (x2 >= w) {x2 = w - 1;}
6083-
if (x3 >= w) {x3 = w - 2;}
6084-
for (d = 0; d < 3; d++)
6085-
{
6086-
imr = 0;
6087-
imx = (double)p_im[y1][x1].c[d];
6088-
imr += imx;
6089-
imx = (double)p_im[y1][x2].c[d];
6090-
imr += imx;
6091-
imx = (double)p_im[y1][x3].c[d];
6092-
imr += imx;
6093-
imx = (double)p_im[y2][x1].c[d];
6094-
imr += imx;
6095-
imx = (double)p_im[y2][x2].c[d];
6096-
imr += imx;
6097-
imx = (double)p_im[y2][x3].c[d];
6098-
imr += imx;
6099-
imx = (double)p_im[y3][x1].c[d];
6100-
imr += imx;
6101-
imx = (double)p_im[y3][x2].c[d];
6102-
imr += imx;
6103-
imx = (double)p_im[y3][x3].c[d];
6104-
imr += imx;
6105-
imr /= 9.0;
6106-
d_im[yr][xr].c[d] = (BYTE)MIN(MAX((int)0, (int)(imr + 0.5)), (int)255);
6107-
}
6108-
d_im[yr][xr] = IMTcalcS (d_im[yr][xr]);
6045+
for (y = 0; y < height; y++)
6046+
{
6047+
for (x = 0; x < width; x++)
6048+
{
6049+
d_im[y][x] = p_im[y][x];
61096050
}
61106051
}
61116052
}
@@ -7223,6 +7164,8 @@ int IMTFilterTDjVuL (IMTpixel** p_im, BYTE** m_im, IMTpixel** fg_im, IMTpixel**
72237164
{
72247165
fgk = sqrt(1.5 - imwb);
72257166
}
7167+
if (doverlay < 0) {doverlay = 0;}
7168+
kover = doverlay + 1.0;
72267169
if (wbmode == 0)
72277170
{
72287171
if (imwb < 0.5) {wbmode = -1;} else {wbmode = 1;}
@@ -7243,8 +7186,6 @@ int IMTFilterTDjVuL (IMTpixel** p_im, BYTE** m_im, IMTpixel** fg_im, IMTpixel**
72437186
bg_im[y][x] = IMTset(bgbase, bgbase, bgbase);
72447187
}
72457188
}
7246-
if (doverlay < 0) {doverlay = 0;}
7247-
kover = doverlay + 1.0;
72487189
for (l = 0; l < level; l++)
72497190
{
72507191
cnth = (heightbg + blsz - 1) / blsz;
@@ -7350,20 +7291,7 @@ int IMTFilterTDjVuL (IMTpixel** p_im, BYTE** m_im, IMTpixel** fg_im, IMTpixel**
73507291
}
73517292
blsz /= 2;
73527293
}
7353-
for (y = 0; y < heightfg; y++)
7354-
{
7355-
y0 = y * fgs;
7356-
y1 = y0 + fgs;
7357-
if (y1 > heightbg) {y1 = heightbg;}
7358-
for (x = 0; x < widthfg; x++)
7359-
{
7360-
x0 = x * fgs;
7361-
x1 = x0 + fgs;
7362-
if (x1 > widthbg) {x1 = widthbg;}
7363-
fg_im[y][x] = IMTmeanIc(fgt_im, y0, x0, y1, x1);
7364-
7365-
}
7366-
}
7294+
IMTFilterSReduce (fgt_im, fg_im, heightbg, widthbg, fgs);
73677295
if (fposter != 0)
73687296
{
73697297
double imsh = IMTFilterPosterize(fg_im, heightfg, widthfg, fposter);
@@ -7379,8 +7307,8 @@ int IMTFilterTDjVuL (IMTpixel** p_im, BYTE** m_im, IMTpixel** fg_im, IMTpixel**
73797307
pim = p_im[y][x];
73807308
fgim = fg_im[yf][xf];
73817309
bgim = bg_im[yb][xb];
7382-
fgdist = IMTdist(pim, fgim);
73837310
bgdist = IMTdist(pim, bgim);
7311+
fgdist = IMTdist(pim, fgim);
73847312
if (fgdist < bgdist)
73857313
{
73867314
m_im[y][x] = 0;

src/imthreshold.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ int IMTFilterSBWMag2 (BYTE** d_im, BYTE** r_im, unsigned height, unsigned width,
199199
int IMTFilterSBWReduce2 (BYTE** d_im, BYTE** r_im, unsigned height, unsigned width, unsigned height2, unsigned width2);
200200
void IMTFilterSGsample (IMTpixel** p_im, IMTpixel** d_im, unsigned height, unsigned width, unsigned new_height, unsigned new_width);
201201
void IMTFilterSHRIS (IMTpixel** p_im, IMTpixel** d_im, unsigned height, unsigned width, int smode);
202-
void IMTFilterSReduce (IMTpixel** p_im, IMTpixel** d_im, unsigned height, unsigned width, int smode);
202+
void IMTFilterSReduce (IMTpixel** p_im, IMTpixel** d_im, unsigned height, unsigned width, unsigned reduce);
203203
void IMTFilterSNearest (IMTpixel** p_im, IMTpixel** d_im, unsigned height, unsigned width, unsigned new_height, unsigned new_width);
204204
int IMTFilterThreshold (IMTpixel** p_im, BYTE** d_im, unsigned height, unsigned width, int threshold);
205205
int IMTFilterThresholdLayer (IMTpixel** p_im, WORD** t_im, BYTE** d_im, unsigned height, unsigned width);

src/shris.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ int main(int argc, char *argv[])
3838
#endif // FREEIMAGE_LIB
3939

4040
int opt;
41-
int smode = 2;
41+
unsigned smode = 2;
4242
bool reduce = false;
4343
bool fhelp = false;
4444
while ((opt = getopt(argc, argv, ":m:rh")) != -1)

0 commit comments

Comments
 (0)