git » fp-git.git » commit 8663591

o Improved compresson in B1/B2 algorithms (4% in fig files, 0.6% in small ones)

author ecalot
2003-12-09 11:03:05 UTC
committer ecalot
2003-12-09 11:03:05 UTC
parent 7c2d1240968bddf3783ba8fc304df6d71ddeb9ef

o Improved compresson in B1/B2 algorithms (4% in fig files, 0.6% in small ones)

PR/src/lib/compression/rle_compress.c +12 -1
PR/src/lib/compression/rle_decompress.c +12 -1
PR/src/lib/compression/rlev_decompress.c +12 -1
PR/src/lib/object/image/image16.c +12 -1
PR/src/lib/object/image/image2.c +12 -1
PR/src/lib/object/image/image256.c +12 -1
PR/src/lib/object/image/image_common.c +12 -1

diff --git a/PR/src/lib/compression/rle_compress.c b/PR/src/lib/compression/rle_compress.c
index 4ceddb5..c57f0a6 100644
--- a/PR/src/lib/compression/rle_compress.c
+++ b/PR/src/lib/compression/rle_compress.c
@@ -98,7 +98,18 @@ void compressRle(unsigned char* data,tImage* img,int *dataSize) {
 		*(counter=(cursorData++))=-1;
 
 		//Step 2: Look and copy the string until a repeated byte is found
-		while ((cursorPix<imgEnd)&&(*cursorPix!=*(cursorPix+1))&&((*counter)!=127)) {
+		while (
+			(cursorPix<imgEnd)&&
+			(
+				(*cursorPix!=*(cursorPix+1))||
+				(
+					(*cursorPix==*(cursorPix+1))&&
+					((cursorPix+1)<imgEnd)&&
+					(*cursorPix!=*(cursorPix+2))
+				)
+			)&&
+			((*counter)!=127)
+		) {
 			*(cursorData)=*(cursorPix);
 			(*counter)++;
 			cursorPix++;
diff --git a/PR/src/lib/compression/rle_decompress.c b/PR/src/lib/compression/rle_decompress.c
index 4ceddb5..c57f0a6 100644
--- a/PR/src/lib/compression/rle_decompress.c
+++ b/PR/src/lib/compression/rle_decompress.c
@@ -98,7 +98,18 @@ void compressRle(unsigned char* data,tImage* img,int *dataSize) {
 		*(counter=(cursorData++))=-1;
 
 		//Step 2: Look and copy the string until a repeated byte is found
-		while ((cursorPix<imgEnd)&&(*cursorPix!=*(cursorPix+1))&&((*counter)!=127)) {
+		while (
+			(cursorPix<imgEnd)&&
+			(
+				(*cursorPix!=*(cursorPix+1))||
+				(
+					(*cursorPix==*(cursorPix+1))&&
+					((cursorPix+1)<imgEnd)&&
+					(*cursorPix!=*(cursorPix+2))
+				)
+			)&&
+			((*counter)!=127)
+		) {
 			*(cursorData)=*(cursorPix);
 			(*counter)++;
 			cursorPix++;
diff --git a/PR/src/lib/compression/rlev_decompress.c b/PR/src/lib/compression/rlev_decompress.c
index 4ceddb5..c57f0a6 100644
--- a/PR/src/lib/compression/rlev_decompress.c
+++ b/PR/src/lib/compression/rlev_decompress.c
@@ -98,7 +98,18 @@ void compressRle(unsigned char* data,tImage* img,int *dataSize) {
 		*(counter=(cursorData++))=-1;
 
 		//Step 2: Look and copy the string until a repeated byte is found
-		while ((cursorPix<imgEnd)&&(*cursorPix!=*(cursorPix+1))&&((*counter)!=127)) {
+		while (
+			(cursorPix<imgEnd)&&
+			(
+				(*cursorPix!=*(cursorPix+1))||
+				(
+					(*cursorPix==*(cursorPix+1))&&
+					((cursorPix+1)<imgEnd)&&
+					(*cursorPix!=*(cursorPix+2))
+				)
+			)&&
+			((*counter)!=127)
+		) {
 			*(cursorData)=*(cursorPix);
 			(*counter)++;
 			cursorPix++;
diff --git a/PR/src/lib/object/image/image16.c b/PR/src/lib/object/image/image16.c
index 4ceddb5..c57f0a6 100644
--- a/PR/src/lib/object/image/image16.c
+++ b/PR/src/lib/object/image/image16.c
@@ -98,7 +98,18 @@ void compressRle(unsigned char* data,tImage* img,int *dataSize) {
 		*(counter=(cursorData++))=-1;
 
 		//Step 2: Look and copy the string until a repeated byte is found
-		while ((cursorPix<imgEnd)&&(*cursorPix!=*(cursorPix+1))&&((*counter)!=127)) {
+		while (
+			(cursorPix<imgEnd)&&
+			(
+				(*cursorPix!=*(cursorPix+1))||
+				(
+					(*cursorPix==*(cursorPix+1))&&
+					((cursorPix+1)<imgEnd)&&
+					(*cursorPix!=*(cursorPix+2))
+				)
+			)&&
+			((*counter)!=127)
+		) {
 			*(cursorData)=*(cursorPix);
 			(*counter)++;
 			cursorPix++;
diff --git a/PR/src/lib/object/image/image2.c b/PR/src/lib/object/image/image2.c
index 4ceddb5..c57f0a6 100644
--- a/PR/src/lib/object/image/image2.c
+++ b/PR/src/lib/object/image/image2.c
@@ -98,7 +98,18 @@ void compressRle(unsigned char* data,tImage* img,int *dataSize) {
 		*(counter=(cursorData++))=-1;
 
 		//Step 2: Look and copy the string until a repeated byte is found
-		while ((cursorPix<imgEnd)&&(*cursorPix!=*(cursorPix+1))&&((*counter)!=127)) {
+		while (
+			(cursorPix<imgEnd)&&
+			(
+				(*cursorPix!=*(cursorPix+1))||
+				(
+					(*cursorPix==*(cursorPix+1))&&
+					((cursorPix+1)<imgEnd)&&
+					(*cursorPix!=*(cursorPix+2))
+				)
+			)&&
+			((*counter)!=127)
+		) {
 			*(cursorData)=*(cursorPix);
 			(*counter)++;
 			cursorPix++;
diff --git a/PR/src/lib/object/image/image256.c b/PR/src/lib/object/image/image256.c
index 4ceddb5..c57f0a6 100644
--- a/PR/src/lib/object/image/image256.c
+++ b/PR/src/lib/object/image/image256.c
@@ -98,7 +98,18 @@ void compressRle(unsigned char* data,tImage* img,int *dataSize) {
 		*(counter=(cursorData++))=-1;
 
 		//Step 2: Look and copy the string until a repeated byte is found
-		while ((cursorPix<imgEnd)&&(*cursorPix!=*(cursorPix+1))&&((*counter)!=127)) {
+		while (
+			(cursorPix<imgEnd)&&
+			(
+				(*cursorPix!=*(cursorPix+1))||
+				(
+					(*cursorPix==*(cursorPix+1))&&
+					((cursorPix+1)<imgEnd)&&
+					(*cursorPix!=*(cursorPix+2))
+				)
+			)&&
+			((*counter)!=127)
+		) {
 			*(cursorData)=*(cursorPix);
 			(*counter)++;
 			cursorPix++;
diff --git a/PR/src/lib/object/image/image_common.c b/PR/src/lib/object/image/image_common.c
index 4ceddb5..c57f0a6 100644
--- a/PR/src/lib/object/image/image_common.c
+++ b/PR/src/lib/object/image/image_common.c
@@ -98,7 +98,18 @@ void compressRle(unsigned char* data,tImage* img,int *dataSize) {
 		*(counter=(cursorData++))=-1;
 
 		//Step 2: Look and copy the string until a repeated byte is found
-		while ((cursorPix<imgEnd)&&(*cursorPix!=*(cursorPix+1))&&((*counter)!=127)) {
+		while (
+			(cursorPix<imgEnd)&&
+			(
+				(*cursorPix!=*(cursorPix+1))||
+				(
+					(*cursorPix==*(cursorPix+1))&&
+					((cursorPix+1)<imgEnd)&&
+					(*cursorPix!=*(cursorPix+2))
+				)
+			)&&
+			((*counter)!=127)
+		) {
 			*(cursorData)=*(cursorPix);
 			(*counter)++;
 			cursorPix++;