equal
deleted
inserted
replaced
69 if (skip_left != 0) continue; |
69 if (skip_left != 0) continue; |
70 |
70 |
71 /* Skip transparent pixels */ |
71 /* Skip transparent pixels */ |
72 dst += trans; |
72 dst += trans; |
73 width -= trans; |
73 width -= trans; |
74 if (width <= 0) continue; |
74 if (width <= 0 || pixels == 0) continue; |
75 pixels = min<uint>(pixels, (uint)width); |
75 pixels = min<uint>(pixels, (uint)width); |
76 width -= pixels; |
76 width -= pixels; |
77 |
77 |
78 switch (mode) { |
78 switch (mode) { |
79 case BM_COLOUR_REMAP: |
79 case BM_COLOUR_REMAP: { |
80 for (uint x = 0; x < pixels; x++) { |
80 const uint8 *remap = bp->remap; |
81 if (bp->remap[*src] != 0) *dst = bp->remap[*src]; |
81 do { |
|
82 uint m = remap[*src]; |
|
83 if (m != 0) *dst = m; |
82 dst++; src++; |
84 dst++; src++; |
83 } |
85 } while (--pixels != 0); |
84 break; |
86 } break; |
85 |
87 |
86 case BM_TRANSPARENT: |
88 case BM_TRANSPARENT: { |
87 for (uint x = 0; x < pixels; x++) { |
89 const uint8 *remap = bp->remap; |
88 *dst = bp->remap[*dst]; |
90 src += pixels; |
89 dst++; src++; |
91 do { |
90 } |
92 *dst = remap[*dst]; |
91 break; |
93 dst++; |
|
94 } while (--pixels != 0); |
|
95 } break; |
92 |
96 |
93 default: |
97 default: |
94 memcpy(dst, src, pixels); |
98 memcpy(dst, src, pixels); |
95 dst += pixels; src += pixels; |
99 dst += pixels; src += pixels; |
96 break; |
100 break; |