Index: core/fxcodec/codec/fx_codec_fax.cpp |
diff --git a/core/fxcodec/codec/fx_codec_fax.cpp b/core/fxcodec/codec/fx_codec_fax.cpp |
index c121478c3c3c268ce4a10cb83e6c2f6575a83493..a7ffd8bbdda6e3abffecf89261287d28ccd999fd 100644 |
--- a/core/fxcodec/codec/fx_codec_fax.cpp |
+++ b/core/fxcodec/codec/fx_codec_fax.cpp |
@@ -125,9 +125,10 @@ void FaxFillBits(uint8_t* dest_buf, int columns, int startpos, int endpos) { |
FXSYS_memset(dest_buf + first_byte + 1, 0, last_byte - first_byte - 1); |
} |
-#define NEXTBIT() \ |
- src_buf[*bitpos / 8] & (1 << (7 - *bitpos % 8)); \ |
- ++(*bitpos); |
+inline bool NextBit(const uint8_t* src_buf, int* bitpos) { |
+ int pos = (*bitpos)++; |
+ return !!(src_buf[pos / 8] & (1 << (7 - pos % 8))); |
+} |
const uint8_t FaxBlackRunIns[] = { |
0, 2, 0x02, 3, 0, 0x03, |
@@ -289,17 +290,17 @@ FX_BOOL FaxG4GetRow(const uint8_t* src_buf, |
int b1; |
int b2; |
FaxG4FindB1B2(ref_buf, columns, a0, a0color, &b1, &b2); |
- FX_BOOL bit = NEXTBIT(); |
+ |
int v_delta = 0; |
- if (!bit) { |
+ if (!NextBit(src_buf, bitpos)) { |
if (*bitpos >= bitsize) |
return FALSE; |
- FX_BOOL bit1 = NEXTBIT(); |
+ FX_BOOL bit1 = NextBit(src_buf, bitpos); |
if (*bitpos >= bitsize) |
return FALSE; |
- FX_BOOL bit2 = NEXTBIT(); |
+ FX_BOOL bit2 = NextBit(src_buf, bitpos); |
if (bit1) { |
v_delta = bit2 ? 1 : -1; |
} else if (bit2) { |
@@ -341,8 +342,7 @@ FX_BOOL FaxG4GetRow(const uint8_t* src_buf, |
if (*bitpos >= bitsize) |
return FALSE; |
- bit = NEXTBIT(); |
- if (bit) { |
+ if (NextBit(src_buf, bitpos)) { |
if (!a0color) |
FaxFillBits(dest_buf, columns, a0, b2); |
@@ -356,25 +356,23 @@ FX_BOOL FaxG4GetRow(const uint8_t* src_buf, |
if (*bitpos >= bitsize) |
return FALSE; |
- FX_BOOL next_bit1 = NEXTBIT(); |
+ FX_BOOL next_bit1 = NextBit(src_buf, bitpos); |
if (*bitpos >= bitsize) |
return FALSE; |
- FX_BOOL next_bit2 = NEXTBIT(); |
+ FX_BOOL next_bit2 = NextBit(src_buf, bitpos); |
if (next_bit1) { |
v_delta = next_bit2 ? 2 : -2; |
} else if (next_bit2) { |
if (*bitpos >= bitsize) |
return FALSE; |
- bit = NEXTBIT(); |
- v_delta = bit ? 3 : -3; |
+ v_delta = NextBit(src_buf, bitpos) ? 3 : -3; |
} else { |
if (*bitpos >= bitsize) |
return FALSE; |
- bit = NEXTBIT(); |
- if (bit) { |
+ if (NextBit(src_buf, bitpos)) { |
*bitpos += 3; |
continue; |
} |
@@ -402,10 +400,8 @@ FX_BOOL FaxG4GetRow(const uint8_t* src_buf, |
FX_BOOL FaxSkipEOL(const uint8_t* src_buf, int bitsize, int* bitpos) { |
int startbit = *bitpos; |
while (*bitpos < bitsize) { |
- int bit = NEXTBIT(); |
- if (!bit) |
+ if (!NextBit(src_buf, bitpos)) |
continue; |
- |
if (*bitpos - startbit <= 11) |
*bitpos = startbit; |
return TRUE; |
@@ -430,10 +426,8 @@ FX_BOOL FaxGet1DLine(const uint8_t* src_buf, |
bitpos, bitsize); |
if (run < 0) { |
while (*bitpos < bitsize) { |
- int bit = NEXTBIT(); |
- if (bit) { |
+ if (NextBit(src_buf, bitpos)) |
return TRUE; |
- } |
} |
return FALSE; |
} |