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

Method initWithASTCData

core/platform/Image.cpp:2108–2220  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2106}
2107
2108bool Image::initWithASTCData(uint8_t* data, ssize_t dataLen, bool ownData)
2109{
2110 astc_header* hdr = (astc_header*)data;
2111
2112 do
2113 {
2114 // Ensure these are not zero to avoid div by zero
2115 unsigned int block_x = (std::max)((unsigned int)hdr->block_x, 1u);
2116 unsigned int block_y = (std::max)((unsigned int)hdr->block_y, 1u);
2117 // unsigned int block_z = std::max((unsigned int) hdr->block_z, 1u);
2118
2119 unsigned int dim_x = astc_unpack_bytes(hdr->dim_x[0], hdr->dim_x[1], hdr->dim_x[2], 0);
2120 unsigned int dim_y = astc_unpack_bytes(hdr->dim_y[0], hdr->dim_y[1], hdr->dim_y[2], 0);
2121 // unsigned int dim_z = astc_unpack_bytes(hdr->dim_z[0], hdr->dim_z[1], hdr->dim_z[2], 0);
2122
2123 if (dim_x == 0 || dim_y == 0)
2124 break;
2125
2126 _width = dim_x;
2127 _height = dim_y;
2128
2129 if (block_x < 4 || block_y < 4)
2130 {
2131 AXLOGW("The ASTC block with and height should be >= 4");
2132 break;
2133 }
2134
2135 if (Configuration::getInstance()->supportsASTC())
2136 {
2137 if (block_x == 4 && block_y == 4)
2138 {
2139 _pixelFormat = backend::PixelFormat::ASTC4x4;
2140 }
2141 else if (block_x == 5 && block_y == 4)
2142 {
2143 _pixelFormat = backend::PixelFormat::ASTC5x4;
2144 }
2145 else if (block_x == 5 && block_y == 5)
2146 {
2147 _pixelFormat = backend::PixelFormat::ASTC5x5;
2148 }
2149 else if (block_x == 6 && block_y == 5)
2150 {
2151 _pixelFormat = backend::PixelFormat::ASTC6x5;
2152 }
2153 else if (block_x == 6 && block_y == 6)
2154 {
2155 _pixelFormat = backend::PixelFormat::ASTC6x6;
2156 }
2157 else if (block_x == 8 && block_y == 5)
2158 {
2159 _pixelFormat = backend::PixelFormat::ASTC8x5;
2160 }
2161 else if (block_x == 8 && block_y == 6)
2162 {
2163 _pixelFormat = backend::PixelFormat::ASTC8x6;
2164 }
2165 else if (block_x == 8 && block_y == 8)

Callers

nothing calls this directly

Calls 4

astc_unpack_bytesFunction · 0.85
getInstanceFunction · 0.85
astc_decompress_imageFunction · 0.85
supportsASTCMethod · 0.80

Tested by

no test coverage detected