📄 pixman-combine.c
字号:
ad = ~m; FbByteAddMulC(d, ad, s, as); *(dest + i) = d; }}FASTCALL static voidfbCombineAddC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width){ int i; for (i = 0; i < width; ++i) { uint32_t s = *(src + i); uint32_t m = *(mask + i); uint32_t d = *(dest + i); fbCombineMaskValueC (&s, &m); FbByteAdd(d, s); *(dest + i) = d; }}FASTCALL static voidfbCombineSaturateC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width){ int i; for (i = 0; i < width; ++i) { uint32_t s, d; uint16_t sa, sr, sg, sb, da; uint16_t t, u, v; uint32_t m,n,o,p; d = *(dest + i); s = *(src + i); m = *(mask + i); fbCombineMaskC (&s, &m); sa = (m >> 24); sr = (m >> 16) & 0xff; sg = (m >> 8) & 0xff; sb = (m ) & 0xff; da = ~d >> 24; if (sb <= da) m = FbAdd(s,d,0,t); else m = FbGen (s, d, 0, (da << 8) / sb, 0xff, t, u, v); if (sg <= da) n = FbAdd(s,d,8,t); else n = FbGen (s, d, 8, (da << 8) / sg, 0xff, t, u, v); if (sr <= da) o = FbAdd(s,d,16,t); else o = FbGen (s, d, 16, (da << 8) / sr, 0xff, t, u, v); if (sa <= da) p = FbAdd(s,d,24,t); else p = FbGen (s, d, 24, (da << 8) / sa, 0xff, t, u, v); *(dest + i) = m|n|o|p; }}FASTCALL static voidfbCombineDisjointGeneralC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width, uint8_t combine){ int i; for (i = 0; i < width; ++i) { uint32_t s, d; uint32_t m,n,o,p; uint32_t Fa, Fb; uint16_t t, u, v; uint32_t sa; uint8_t da; s = *(src + i); m = *(mask + i); d = *(dest + i); da = d >> 24; fbCombineMaskC (&s, &m); sa = m; switch (combine & CombineA) { default: Fa = 0; break; case CombineAOut: m = fbCombineDisjointOutPart ((uint8_t) (sa >> 0), da); n = fbCombineDisjointOutPart ((uint8_t) (sa >> 8), da) << 8; o = fbCombineDisjointOutPart ((uint8_t) (sa >> 16), da) << 16; p = fbCombineDisjointOutPart ((uint8_t) (sa >> 24), da) << 24; Fa = m|n|o|p; break; case CombineAIn: m = fbCombineDisjointInPart ((uint8_t) (sa >> 0), da); n = fbCombineDisjointInPart ((uint8_t) (sa >> 8), da) << 8; o = fbCombineDisjointInPart ((uint8_t) (sa >> 16), da) << 16; p = fbCombineDisjointInPart ((uint8_t) (sa >> 24), da) << 24; Fa = m|n|o|p; break; case CombineA: Fa = 0xffffffff; break; } switch (combine & CombineB) { default: Fb = 0; break; case CombineBOut: m = fbCombineDisjointOutPart (da, (uint8_t) (sa >> 0)); n = fbCombineDisjointOutPart (da, (uint8_t) (sa >> 8)) << 8; o = fbCombineDisjointOutPart (da, (uint8_t) (sa >> 16)) << 16; p = fbCombineDisjointOutPart (da, (uint8_t) (sa >> 24)) << 24; Fb = m|n|o|p; break; case CombineBIn: m = fbCombineDisjointInPart (da, (uint8_t) (sa >> 0)); n = fbCombineDisjointInPart (da, (uint8_t) (sa >> 8)) << 8; o = fbCombineDisjointInPart (da, (uint8_t) (sa >> 16)) << 16; p = fbCombineDisjointInPart (da, (uint8_t) (sa >> 24)) << 24; Fb = m|n|o|p; break; case CombineB: Fb = 0xffffffff; break; } m = FbGen (s,d,0,FbGet8(Fa,0),FbGet8(Fb,0),t, u, v); n = FbGen (s,d,8,FbGet8(Fa,8),FbGet8(Fb,8),t, u, v); o = FbGen (s,d,16,FbGet8(Fa,16),FbGet8(Fb,16),t, u, v); p = FbGen (s,d,24,FbGet8(Fa,24),FbGet8(Fb,24),t, u, v); s = m|n|o|p; *(dest + i) = s; }}FASTCALL static voidfbCombineDisjointOverC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width){ fbCombineDisjointGeneralC (dest, src, mask, width, CombineAOver);}FASTCALL static voidfbCombineDisjointInC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width){ fbCombineDisjointGeneralC (dest, src, mask, width, CombineAIn);}FASTCALL static voidfbCombineDisjointInReverseC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width){ fbCombineDisjointGeneralC (dest, src, mask, width, CombineBIn);}FASTCALL static voidfbCombineDisjointOutC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width){ fbCombineDisjointGeneralC (dest, src, mask, width, CombineAOut);}FASTCALL static voidfbCombineDisjointOutReverseC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width){ fbCombineDisjointGeneralC (dest, src, mask, width, CombineBOut);}FASTCALL static voidfbCombineDisjointAtopC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width){ fbCombineDisjointGeneralC (dest, src, mask, width, CombineAAtop);}FASTCALL static voidfbCombineDisjointAtopReverseC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width){ fbCombineDisjointGeneralC (dest, src, mask, width, CombineBAtop);}FASTCALL static voidfbCombineDisjointXorC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width){ fbCombineDisjointGeneralC (dest, src, mask, width, CombineXor);}FASTCALL static voidfbCombineConjointGeneralC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width, uint8_t combine){ int i; for (i = 0; i < width; ++i) { uint32_t s, d; uint32_t m,n,o,p; uint32_t Fa, Fb; uint16_t t, u, v; uint32_t sa; uint8_t da; s = *(src + i); m = *(mask + i); d = *(dest + i); da = d >> 24; fbCombineMaskC (&s, &m); sa = m; switch (combine & CombineA) { default: Fa = 0; break; case CombineAOut: m = fbCombineConjointOutPart ((uint8_t) (sa >> 0), da); n = fbCombineConjointOutPart ((uint8_t) (sa >> 8), da) << 8; o = fbCombineConjointOutPart ((uint8_t) (sa >> 16), da) << 16; p = fbCombineConjointOutPart ((uint8_t) (sa >> 24), da) << 24; Fa = m|n|o|p; break; case CombineAIn: m = fbCombineConjointInPart ((uint8_t) (sa >> 0), da); n = fbCombineConjointInPart ((uint8_t) (sa >> 8), da) << 8; o = fbCombineConjointInPart ((uint8_t) (sa >> 16), da) << 16; p = fbCombineConjointInPart ((uint8_t) (sa >> 24), da) << 24; Fa = m|n|o|p; break; case CombineA: Fa = 0xffffffff; break; } switch (combine & CombineB) { default: Fb = 0; break; case CombineBOut: m = fbCombineConjointOutPart (da, (uint8_t) (sa >> 0)); n = fbCombineConjointOutPart (da, (uint8_t) (sa >> 8)) << 8; o = fbCombineConjointOutPart (da, (uint8_t) (sa >> 16)) << 16; p = fbCombineConjointOutPart (da, (uint8_t) (sa >> 24)) << 24; Fb = m|n|o|p; break; case CombineBIn: m = fbCombineConjointInPart (da, (uint8_t) (sa >> 0)); n = fbCombineConjointInPart (da, (uint8_t) (sa >> 8)) << 8; o = fbCombineConjointInPart (da, (uint8_t) (sa >> 16)) << 16; p = fbCombineConjointInPart (da, (uint8_t) (sa >> 24)) << 24; Fb = m|n|o|p; break; case CombineB: Fb = 0xffffffff; break; } m = FbGen (s,d,0,FbGet8(Fa,0),FbGet8(Fb,0),t, u, v); n = FbGen (s,d,8,FbGet8(Fa,8),FbGet8(Fb,8),t, u, v); o = FbGen (s,d,16,FbGet8(Fa,16),FbGet8(Fb,16),t, u, v); p = FbGen (s,d,24,FbGet8(Fa,24),FbGet8(Fb,24),t, u, v); s = m|n|o|p; *(dest + i) = s; }}FASTCALL static voidfbCombineConjointOverC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width){ fbCombineConjointGeneralC (dest, src, mask, width, CombineAOver);}FASTCALL static voidfbCombineConjointOverReverseC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width){ fbCombineConjointGeneralC (dest, src, mask, width, CombineBOver);}FASTCALL static voidfbCombineConjointInC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width){ fbCombineConjointGeneralC (dest, src, mask, width, CombineAIn);}FASTCALL static voidfbCombineConjointInReverseC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width){ fbCombineConjointGeneralC (dest, src, mask, width, CombineBIn);}FASTCALL static voidfbCombineConjointOutC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width){ fbCombineConjointGeneralC (dest, src, mask, width, CombineAOut);}FASTCALL static voidfbCombineConjointOutReverseC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width){ fbCombineConjointGeneralC (dest, src, mask, width, CombineBOut);}FASTCALL static voidfbCombineConjointAtopC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width){ fbCombineConjointGeneralC (dest, src, mask, width, CombineAAtop);}FASTCALL static voidfbCombineConjointAtopReverseC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width){ fbCombineConjointGeneralC (dest, src, mask, width, CombineBAtop);}FASTCALL static voidfbCombineConjointXorC (uint32_t *dest, uint32_t *src, uint32_t *mask, int width){ fbCombineConjointGeneralC (dest, src, mask, width, CombineXor);}CombineFuncU pixman_fbCombineFuncU[] = { fbCombineClear, fbCombineSrcU, NULL, /* CombineDst */ fbCombineOverU, fbCombineOverReverseU, fbCombineInU, fbCombineInReverseU, fbCombineOutU, fbCombineOutReverseU, fbCombineAtopU, fbCombineAtopReverseU, fbCombineXorU, fbCombineAddU, fbCombineSaturateU, NULL, NULL, fbCombineClear, fbCombineSrcU, NULL, /* CombineDst */ fbCombineDisjointOverU, fbCombineSaturateU, /* DisjointOverReverse */ fbCombineDisjointInU, fbCombineDisjointInReverseU, fbCombineDisjointOutU, fbCombineDisjointOutReverseU, fbCombineDisjointAtopU, fbCombineDisjointAtopReverseU, fbCombineDisjointXorU, NULL, NULL, NULL, NULL, fbCombineClear, fbCombineSrcU, NULL, /* CombineDst */ fbCombineConjointOverU, fbCombineConjointOverReverseU, fbCombineConjointInU, fbCombineConjointInReverseU, fbCombineConjointOutU, fbCombineConjointOutReverseU, fbCombineConjointAtopU, fbCombineConjointAtopReverseU, fbCombineConjointXorU,};CombineFuncC pixman_fbCombineFuncC[] = { fbCombineClearC, fbCombineSrcC, NULL, /* Dest */ fbCombineOverC, fbCombineOverReverseC, fbCombineInC, fbCombineInReverseC, fbCombineOutC, fbCombineOutReverseC, fbCombineAtopC, fbCombineAtopReverseC, fbCombineXorC, fbCombineAddC, fbCombineSaturateC, NULL, NULL, fbCombineClearC, /* 0x10 */ fbCombineSrcC, NULL, /* Dest */ fbCombineDisjointOverC, fbCombineSaturateC, /* DisjointOverReverse */ fbCombineDisjointInC, fbCombineDisjointInReverseC, fbCombineDisjointOutC, fbCombineDisjointOutReverseC, fbCombineDisjointAtopC, fbCombineDisjointAtopReverseC, fbCombineDisjointXorC, /* 0x1b */ NULL, NULL, NULL, NULL, fbCombineClearC, fbCombineSrcC, NULL, /* Dest */ fbCombineConjointOverC, fbCombineConjointOverReverseC, fbCombineConjointInC, fbCombineConjointInReverseC, fbCombineConjointOutC, fbCombineConjointOutReverseC, fbCombineConjointAtopC, fbCombineConjointAtopReverseC, fbCombineConjointXorC,};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -