From ee154f16bd09a43359967f7e7b86c3677c09461d Mon Sep 17 00:00:00 2001
From: Tor Andersson <tor@ghostscript.com>
Date: Wed, 30 Mar 2005 08:30:22 +0200
Subject: rename part 1 -- files

---
 stream/filt_faxc.h | 125 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 125 insertions(+)
 create mode 100644 stream/filt_faxc.h

(limited to 'stream/filt_faxc.h')

diff --git a/stream/filt_faxc.h b/stream/filt_faxc.h
new file mode 100644
index 00000000..14cae13f
--- /dev/null
+++ b/stream/filt_faxc.h
@@ -0,0 +1,125 @@
+/* common bit magic */
+
+static inline void
+printbits(FILE *f, int code, int nbits)
+{
+	int n, b;
+	for (n = nbits - 1; n >= 0; n--)
+	{
+		b = (code >> n) & 1;
+		fprintf(f, "%c", b ? '1' : '0');
+	}
+}
+
+static inline int
+getbit(const unsigned char *buf, int x)
+{
+	return ( buf[x >> 3] >> ( 7 - (x & 7) ) ) & 1;
+}
+
+static inline void
+printline(FILE *f, unsigned char *line, int w)
+{
+	int i;
+	for (i = 0; i < w; i++)
+		fprintf(f, "%c", getbit(line, i) ? '#' : '.');
+	fprintf(f, "\n");
+}
+
+static inline int
+getrun(const unsigned char *line, int x, int w, int c)
+{
+	int z;
+	int b;
+	
+	if (x < 0)
+		x = 0;
+
+	z = x;
+	while (z < w)
+	{
+		b = getbit(line, z);
+		if (c != b)
+			break;
+		z ++;
+	}
+
+	return z - x;
+}
+
+static inline int 
+findchanging(const unsigned char *line, int x, int w)
+{
+	int a, b;
+
+	if (line == 0)
+		return w;
+
+	if (x == -1)
+	{
+		a = 0;
+		x = 0;
+	}
+	else
+	{
+		a = getbit(line, x);
+		x++;
+	}
+
+	while (x < w)
+	{
+		b = getbit(line, x);
+		if (a != b)
+			break;
+		x++;
+	}
+
+	return x;
+}
+
+static inline int 
+findchangingcolor(const unsigned char *line, int x, int w, int color)
+{
+	if (line == 0)
+		return w;
+
+	x = findchanging(line, x, w);
+
+	if (x < w && getbit(line, x) != color)
+		x = findchanging(line, x, w);
+
+	return x;
+}
+
+static const unsigned char lm[8] =
+	{ 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01 };
+
+static const unsigned char rm[8] =
+	{ 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE };
+
+static inline void 
+setbits(unsigned char *line, int x0, int x1)
+{
+	int a0, a1, b0, b1, a;
+
+	a0 = x0 >> 3;
+	a1 = x1 >> 3;
+
+	b0 = x0 & 7;
+	b1 = x1 & 7;
+
+	if (a0 == a1)
+	{
+		if (b1)
+			line[a0] |= lm[b0] & rm[b1];
+	}
+	else
+	{
+		line[a0] |= lm[b0];
+		for (a = a0 + 1; a < a1; a++)
+			line[a] = 0xFF;
+		if (b1)
+			line[a1] |= rm[b1];
+	}
+}
+
-- 
cgit v1.2.3