filt_faxc.h
来自「SumatraPDF是一款小型开源的pdf阅读工具。虽然玲珑小巧(只有800多K」· C头文件 代码 · 共 126 行
H
126 行
/* common bit magic */static inline voidprintbits(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 intgetbit(const unsigned char *buf, int x){ return ( buf[x >> 3] >> ( 7 - (x & 7) ) ) & 1;}static inline voidprintline(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 intgetrun(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 intfindchanging(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 intfindchangingcolor(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 voidsetbits(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]; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?