aboutsummaryrefslogtreecommitdiff
path: root/mail/faces/files/patch-compface_compress.c
diff options
context:
space:
mode:
Diffstat (limited to 'mail/faces/files/patch-compface_compress.c')
-rw-r--r--mail/faces/files/patch-compface_compress.c314
1 files changed, 314 insertions, 0 deletions
diff --git a/mail/faces/files/patch-compface_compress.c b/mail/faces/files/patch-compface_compress.c
new file mode 100644
index 000000000000..1b69b9560297
--- /dev/null
+++ b/mail/faces/files/patch-compface_compress.c
@@ -0,0 +1,314 @@
+*** compface/compress.c Tue Jan 15 23:58:46 2002
+--- /home/lkoeller/tmp/ports/mail/faces/work/faces/compface/compress.c Wed Jun 19 08:29:13 1991
+***************
+*** 17,113 ****
+ #include "compface.h"
+
+ int
+! Same(char *f, int wid, int hei)
+ {
+! char val, *row;
+! int x;
+
+ val = *f;
+! while (hei--) {
+ row = f;
+ x = wid;
+! while (x--) {
+! if (*(row++) != val) {
+ return(0);
+- }
+- }
+ f += WIDTH;
+ }
+! return(1);
+ }
+
+-
+ int
+! AllBlack(char *f, int wid, int hei)
+ {
+! if (wid > 3) {
+ wid /= 2;
+ hei /= 2;
+! return(AllBlack(f, wid, hei) && AllBlack(f + wid, wid, hei) &&
+ AllBlack(f + WIDTH * hei, wid, hei) &&
+ AllBlack(f + WIDTH * hei + wid, wid, hei));
+- } else {
+- return(*f || *(f + 1) || *(f + WIDTH) || *(f + WIDTH + 1));
+ }
+ }
+
+-
+ int
+! AllWhite(char *f, int wid, int hei)
+ {
+! return((*f == 0) && Same(f, wid, hei));
+ }
+
+-
+ void
+! PopGreys(char *f, int wid, int hei)
+ {
+! if (wid > 3) {
+ wid /= 2;
+ hei /= 2;
+ PopGreys(f, wid, hei);
+ PopGreys(f + wid, wid, hei);
+ PopGreys(f + WIDTH * hei, wid, hei);
+ PopGreys(f + WIDTH * hei + wid, wid, hei);
+! } else {
+ wid = BigPop(freqs);
+! if (wid & 1) {
+ *f = 1;
+! }
+! if (wid & 2) {
+ *(f + 1) = 1;
+! }
+! if (wid & 4) {
+ *(f + WIDTH) = 1;
+! }
+! if (wid & 8) {
+ *(f + WIDTH + 1) = 1;
+ }
+- }
+ }
+
+-
+ void
+! PushGreys(char *f, int wid, int hei)
+ {
+! if (wid > 3) {
+ wid /= 2;
+ hei /= 2;
+ PushGreys(f, wid, hei);
+ PushGreys(f + wid, wid, hei);
+ PushGreys(f + WIDTH * hei, wid, hei);
+ PushGreys(f + WIDTH * hei + wid, wid, hei);
+- } else {
+- RevPush(freqs + *f + 2 * *(f + 1) +
+- 4 * *(f + WIDTH) + 8 * *(f + WIDTH + 1));
+ }
+ }
+
+-
+ void
+! UnCompress(char *f, int wid, int hei, int lev)
+ {
+! switch (BigPop(&levels[lev][0])) {
+ case WHITE :
+ return;
+ case BLACK :
+--- 16,120 ----
+ #include "compface.h"
+
+ int
+! Same(f, wid, hei)
+! register char *f;
+! register int wid, hei;
+ {
+! register char val, *row;
+! register int x;
+
+ val = *f;
+! while (hei--)
+! {
+ row = f;
+ x = wid;
+! while (x--)
+! if (*(row++) != val)
+ return(0);
+ f += WIDTH;
+ }
+! return 1;
+ }
+
+ int
+! AllBlack(f, wid, hei)
+! char *f;
+! int wid, hei;
+ {
+! if (wid > 3)
+! {
+ wid /= 2;
+ hei /= 2;
+! return (AllBlack(f, wid, hei) && AllBlack(f + wid, wid, hei) &&
+ AllBlack(f + WIDTH * hei, wid, hei) &&
+ AllBlack(f + WIDTH * hei + wid, wid, hei));
+ }
++ else
++ return (*f || *(f + 1) || *(f + WIDTH) || *(f + WIDTH + 1));
+ }
+
+ int
+! AllWhite(f, wid, hei)
+! char *f;
+! int wid, hei;
+ {
+! return ((*f == 0) && Same(f, wid, hei));
+ }
+
+ void
+! PopGreys(f, wid, hei)
+! char *f;
+! int wid, hei;
+ {
+! if (wid > 3)
+! {
+ wid /= 2;
+ hei /= 2;
+ PopGreys(f, wid, hei);
+ PopGreys(f + wid, wid, hei);
+ PopGreys(f + WIDTH * hei, wid, hei);
+ PopGreys(f + WIDTH * hei + wid, wid, hei);
+! }
+! else
+! {
+ wid = BigPop(freqs);
+! if (wid & 1)
+ *f = 1;
+! if (wid & 2)
+ *(f + 1) = 1;
+! if (wid & 4)
+ *(f + WIDTH) = 1;
+! if (wid & 8)
+ *(f + WIDTH + 1) = 1;
+ }
+ }
+
+ void
+! PushGreys(f, wid, hei)
+! char *f;
+! int wid, hei;
+ {
+! if (wid > 3)
+! {
+ wid /= 2;
+ hei /= 2;
+ PushGreys(f, wid, hei);
+ PushGreys(f + wid, wid, hei);
+ PushGreys(f + WIDTH * hei, wid, hei);
+ PushGreys(f + WIDTH * hei + wid, wid, hei);
+ }
++ else
++ RevPush(freqs + *f + 2 * *(f + 1) + 4 * *(f + WIDTH) +
++ 8 * *(f + WIDTH + 1));
+ }
+
+ void
+! UnCompress(f, wid, hei, lev)
+! register char *f;
+! register int wid, hei, lev;
+ {
+! switch (BigPop(&levels[lev][0]))
+! {
+ case WHITE :
+ return;
+ case BLACK :
+***************
+*** 125,139 ****
+ }
+ }
+
+-
+ void
+! Compress(char *f, int wid, int hei, int lev)
+ {
+! if (AllWhite(f, wid, hei)) {
+ RevPush(&levels[lev][WHITE]);
+ return;
+ }
+! if (AllBlack(f, wid, hei)) {
+ RevPush(&levels[lev][BLACK]);
+ PushGreys(f, wid, hei);
+ return;
+--- 132,149 ----
+ }
+ }
+
+ void
+! Compress(f, wid, hei, lev)
+! register char *f;
+! register int wid, hei, lev;
+ {
+! if (AllWhite(f, wid, hei))
+! {
+ RevPush(&levels[lev][WHITE]);
+ return;
+ }
+! if (AllBlack(f, wid, hei))
+! {
+ RevPush(&levels[lev][BLACK]);
+ PushGreys(f, wid, hei);
+ return;
+***************
+*** 149,164 ****
+ }
+
+ void
+! UnCompAll(char *fbuf)
+ {
+! char *p;
+
+ BigClear();
+ BigRead(fbuf);
+ p = F;
+! while (p < F + PIXELS) {
+ *(p++) = 0;
+- }
+ UnCompress(F, 16, 16, 0);
+ UnCompress(F + 16, 16, 16, 0);
+ UnCompress(F + 32, 16, 16, 0);
+--- 159,174 ----
+ }
+
+ void
+! UnCompAll(fbuf)
+! char *fbuf;
+ {
+! register char *p;
+
+ BigClear();
+ BigRead(fbuf);
+ p = F;
+! while (p < F + PIXELS)
+ *(p++) = 0;
+ UnCompress(F, 16, 16, 0);
+ UnCompress(F + 16, 16, 16, 0);
+ UnCompress(F + 32, 16, 16, 0);
+***************
+*** 171,177 ****
+ }
+
+ void
+! CompAll(char *fbuf)
+ {
+ Compress(F, 16, 16, 0);
+ Compress(F + 16, 16, 16, 0);
+--- 181,188 ----
+ }
+
+ void
+! CompAll(fbuf)
+! char *fbuf;
+ {
+ Compress(F, 16, 16, 0);
+ Compress(F + 16, 16, 16, 0);
+***************
+*** 183,190 ****
+ Compress(F + WIDTH * 32 + 16, 16, 16, 0);
+ Compress(F + WIDTH * 32 + 32, 16, 16, 0);
+ BigClear();
+! while (NumProbs > 0) {
+ BigPush(ProbBuf[--NumProbs]);
+- }
+ BigWrite(fbuf);
+ }
+--- 194,200 ----
+ Compress(F + WIDTH * 32 + 16, 16, 16, 0);
+ Compress(F + WIDTH * 32 + 32, 16, 16, 0);
+ BigClear();
+! while (NumProbs > 0)
+ BigPush(ProbBuf[--NumProbs]);
+ BigWrite(fbuf);
+ }