MCPcopy Create free account
hub / github.com/axmolengine/axmol / atitc_decode

Function atitc_decode

core/base/atitc.cpp:154–197  ·  view source on GitHub ↗

Decode ATITC encode data to RGB32

Source from the content-addressed store, hash-verified

152
153// Decode ATITC encode data to RGB32
154void atitc_decode(uint8_t* encodeData, // in_data
155 uint8_t* decodeData, // out_data
156 const int pixelsWidth,
157 const int pixelsHeight,
158 ATITCDecodeFlag decodeFlag)
159{
160 uint32_t* decodeBlockData = (uint32_t*)decodeData;
161
162 for (int block_y = 0; block_y < pixelsHeight / 4; ++block_y, decodeBlockData += 3 * pixelsWidth) // stride =
163 // 3*width
164 {
165 for (int block_x = 0; block_x < pixelsWidth / 4; ++block_x, decodeBlockData += 4) // skip 4 pixels
166 {
167 uint64_t blockAlpha = 0;
168
169 switch (decodeFlag)
170 {
171 case ATITCDecodeFlag::ATC_RGB:
172 {
173 atitc_decode_block(&encodeData, decodeBlockData, pixelsWidth, 0, 0LL, ATITCDecodeFlag::ATC_RGB);
174 }
175 break;
176 case ATITCDecodeFlag::ATC_EXPLICIT_ALPHA:
177 {
178 memcpy((void*)&blockAlpha, encodeData, 8);
179 encodeData += 8;
180 atitc_decode_block(&encodeData, decodeBlockData, pixelsWidth, 1, blockAlpha,
181 ATITCDecodeFlag::ATC_EXPLICIT_ALPHA);
182 }
183 break;
184 case ATITCDecodeFlag::ATC_INTERPOLATED_ALPHA:
185 {
186 memcpy((void*)&blockAlpha, encodeData, 8);
187 encodeData += 8;
188 atitc_decode_block(&encodeData, decodeBlockData, pixelsWidth, 1, blockAlpha,
189 ATITCDecodeFlag::ATC_INTERPOLATED_ALPHA);
190 }
191 break;
192 default:
193 break;
194 } // switch
195 } // for block_x
196 } // for block_y
197}

Callers 1

initWithATITCDataMethod · 0.85

Calls 1

atitc_decode_blockFunction · 0.85

Tested by

no test coverage detected