📄 fbpict.h
字号:
x &= 0xff00ff; \ x <<= 8; \ x += t; \ } while (0)/* x_c = (x_c * a + y_c * b) / 255*/#define FbByteAddMul(x, a, y, b) do { \ CARD32 t; \ CARD32 r = (x >> 24) * a + (y >> 24) * b + 0x80; \ r += (r >> 8); \ r >>= 8; \ \ t = (x & 0xff00) * a + (y & 0xff00) * b + 0x8000; \ t += (t >> 8); \ t >>= 16; \ \ t |= r << 16; \ t |= 0x1000100 - ((t >> 8) & 0xff00ff); \ t &= 0xff00ff; \ t <<= 8; \ \ r = ((x >> 16) & 0xff) * a + ((y >> 16) & 0xff) * b + 0x80; \ r += (r >> 8); \ r >>= 8; \ \ x = (x & 0xff) * a + (y & 0xff) * b + 0x80; \ x += (x >> 8); \ x >>= 8; \ x |= r << 16; \ x |= 0x1000100 - ((x >> 8) & 0xff00ff); \ x &= 0xff00ff; \ x |= t; \} while (0)/* x_c = (x_c * a + y_c *b) / 256*/#define FbByteAddMul_256(x, a, y, b) do { \ CARD32 t = (x & 0xff00ff) * a + (y & 0xff00ff) * b; \ t >>= 8; \ t &= 0xff00ff; \ \ x = ((x >> 8) & 0xff00ff) * a + ((y >> 8) & 0xff00ff) * b; \ x &= 0xff00ff00; \ x += t; \} while (0)/* x_c = (x_c * a_c) / 255*/#define FbByteMulC(x, a) do { \ CARD32 t; \ CARD32 r = (x & 0xff) * (a & 0xff); \ r |= (x & 0xff0000) * ((a >> 16) & 0xff); \ r += 0x800080; \ r = (r + ((r >> 8) & 0xff00ff)) >> 8; \ r &= 0xff00ff; \ \ x >>= 8; \ t = (x & 0xff) * ((a >> 8) & 0xff); \ t |= (x & 0xff0000) * (a >> 24); \ t += 0x800080; \ t = t + ((t >> 8) & 0xff00ff); \ x = r | (t & 0xff00ff00); \ \ } while (0)/* x_c = (x_c * a) / 255 + y*/#define FbByteMulAddC(x, a, y) do { \ CARD32 t; \ CARD32 r = (x & 0xff) * (a & 0xff); \ r |= (x & 0xff0000) * ((a >> 16) & 0xff); \ r += 0x800080; \ r = (r + ((r >> 8) & 0xff00ff)) >> 8; \ r &= 0xff00ff; \ r += y & 0xff00ff; \ r |= 0x1000100 - ((r >> 8) & 0xff00ff); \ r &= 0xff00ff; \ \ x >>= 8; \ t = (x & 0xff) * ((a >> 8) & 0xff); \ t |= (x & 0xff0000) * (a >> 24); \ t += 0x800080; \ t = (t + ((t >> 8) & 0xff00ff)) >> 8; \ t &= 0xff00ff; \ t += (y >> 8) & 0xff00ff; \ t |= 0x1000100 - ((t >> 8) & 0xff00ff); \ t &= 0xff00ff; \ x = r | (t << 8); \ } while (0)/* x_c = (x_c * a_c + y_c * b) / 255*/#define FbByteAddMulC(x, a, y, b) do { \ CARD32 t; \ CARD32 r = (x >> 24) * (a >> 24) + (y >> 24) * b + 0x80; \ r += (r >> 8); \ r >>= 8; \ \ t = (x & 0xff00) * ((a >> 8) & 0xff) + (y & 0xff00) * b + 0x8000; \ t += (t >> 8); \ t >>= 16; \ \ t |= r << 16; \ t |= 0x1000100 - ((t >> 8) & 0xff00ff); \ t &= 0xff00ff; \ t <<= 8; \ \ r = ((x >> 16) & 0xff) * ((a >> 16) & 0xff) + ((y >> 16) & 0xff) * b + 0x80; \ r += (r >> 8); \ r >>= 8; \ \ x = (x & 0xff) * (a & 0xff) + (y & 0xff) * b + 0x80; \ x += (x >> 8); \ x >>= 8; \ x |= r << 16; \ x |= 0x1000100 - ((x >> 8) & 0xff00ff); \ x &= 0xff00ff; \ x |= t; \} while (0)/* x_c = min(x_c + y_c, 255)*/#define FbByteAdd(x, y) do { \ CARD32 t; \ CARD32 r = (x & 0xff00ff) + (y & 0xff00ff); \ r |= 0x1000100 - ((r >> 8) & 0xff00ff); \ r &= 0xff00ff; \ \ t = ((x >> 8) & 0xff00ff) + ((y >> 8) & 0xff00ff); \ t |= 0x1000100 - ((t >> 8) & 0xff00ff); \ r |= (t & 0xff00ff) << 8; \ x = r; \ } while (0)#define div_255(x) (((x) + 0x80 + (((x) + 0x80) >> 8)) >> 8)#if defined(__i386__) && defined(__GNUC__)#define FASTCALL __attribute__((regparm(3)))#else#define FASTCALL#endif#if defined(__GNUC__)#define INLINE __inline__#else#define INLINE#endiftypedef struct _FbComposeData { CARD8 op; PicturePtr src; PicturePtr mask; PicturePtr dest; INT16 xSrc; INT16 ySrc; INT16 xMask; INT16 yMask; INT16 xDest; INT16 yDest; CARD16 width; CARD16 height;} FbComposeData;typedef FASTCALL void (*CombineMaskU) (CARD32 *src, const CARD32 *mask, int width);typedef FASTCALL void (*CombineFuncU) (CARD32 *dest, const CARD32 *src, int width);typedef FASTCALL void (*CombineFuncC) (CARD32 *dest, CARD32 *src, CARD32 *mask, int width);typedef struct _FbComposeFunctions { CombineFuncU *combineU; CombineFuncC *combineC; CombineMaskU combineMaskU;} FbComposeFunctions;#endif /* _FBPICT_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -