⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pixman-combine.c

📁 嵌入式图形库
💻 C
📖 第 1 页 / 共 3 页
字号:
	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 + -