45 {
50
51 size_t flen = leny * lenx * 4;
52 if(fbuf_reserve(&s->
glyph, flen)){
53 return -1;
54 }
55 for(int l = 0 ; l < leny ; ++l){
56 int ycell = l / cdimy;
57 size_t soffset = l * linesize;
58 const uint8_t* src = (const unsigned char*)data + soffset;
59 size_t toffset = l * lenx * 4;
60 char* dst = (
char *)s->
glyph.
buf + toffset;
61 for(
int c = 0 ;
c < lenx ; ++
c){
62 int xcell =
c / cdimx;
65 if(rgba_trans_p(*(uint32_t*)src, transcolor)){
66 ncpixel_set_a((uint32_t*)src, 0);
67 if(
c % cdimx == 0 && l % cdimy == 0){
69 }
70 }else{
72 }
73 dst[3] = 0;
74 const int vyx = (l % cdimy) * cdimx + (
c % cdimx);
75 ((uint8_t*)
n->tam[tyx].auxvector)[vyx] = src[3];
76 }else{
77 if(rgba_trans_p(*(uint32_t*)src, transcolor)){
78 ncpixel_set_a((uint32_t*)src, 0);
79 if(
c % cdimx == 0 && l % cdimy == 0){
83 }
84 dst[3] = 0;
85 }else{
86 if(
c % cdimx == 0 && l % cdimy == 0){
90 }
91 memcpy(dst + 3, src + 3, 1);
92 }
93 }
94 memcpy(dst, src + 2, 1);
95 memcpy(dst + 1, src + 1, 1);
96 memcpy(dst + 2, src, 1);
97 dst += 4;
98 src += 4;
99 }
100 }
101 scrub_tam_boundaries(
n->tam, leny, lenx, cdimy, cdimx);
103 goto error;
104 }
105 return 1;
106
107error:
108 fbuf_free(&s->
glyph);
110 return -1;
111}
@ SPRIXCELL_ANNIHILATED_TRANS
struct blitterargs::@3::@5 pixel