| 181 | } |
| 182 | |
| 183 | int DoEncode(EncodeParams params) |
| 184 | { |
| 185 | int x,y,n; |
| 186 | unsigned char *data = stbi_load(params.m_PathIn, &x, &y, &n, 0); |
| 187 | |
| 188 | uint32_t data_size = x * y * n; |
| 189 | |
| 190 | dmTexc::Image* image = dmTexc::CreateImage(params.m_PathIn, x, y, GetPixelFormatFromChannels(n), params.m_ColorSpace, data_size,data); |
| 191 | |
| 192 | if (params.m_PremultiplyAlpha && !dmTexc::PreMultiplyAlpha(image)) |
| 193 | { |
| 194 | printf("Unable to premultiply alpha\n"); |
| 195 | return -1; |
| 196 | } |
| 197 | |
| 198 | if (params.m_FlipY && !dmTexc::Flip(image, dmTexc::FLIP_AXIS_Y)) |
| 199 | { |
| 200 | printf("Unable to flip Y\n"); |
| 201 | return -1; |
| 202 | } |
| 203 | |
| 204 | if (params.m_FlipX && !dmTexc::Flip(image, dmTexc::FLIP_AXIS_X)) |
| 205 | { |
| 206 | printf("Unable to flip Y\n"); |
| 207 | return -1; |
| 208 | } |
| 209 | |
| 210 | if (params.m_MipMaps) |
| 211 | { |
| 212 | printf("Mipmap generation is currently not implement. File a feature request if you need it.\n"); |
| 213 | } |
| 214 | |
| 215 | uint8_t* out = 0; |
| 216 | uint32_t out_size = 0; |
| 217 | |
| 218 | if (params.m_CompressionType == dmTexc::CT_DEFAULT) |
| 219 | { |
| 220 | dmTexc::DefaultEncodeSettings settings = {}; |
| 221 | settings.m_Path = image->m_Path; |
| 222 | settings.m_Width = x; |
| 223 | settings.m_Height = y; |
| 224 | settings.m_PixelFormat = image->m_PixelFormat; |
| 225 | settings.m_ColorSpace = image->m_ColorSpace; |
| 226 | settings.m_Data = image->m_Data; |
| 227 | settings.m_DataCount = image->m_DataCount; |
| 228 | settings.m_NumThreads = 4; |
| 229 | settings.m_Debug = false; |
| 230 | settings.m_OutPixelFormat = image->m_PixelFormat; |
| 231 | |
| 232 | if (!dmTexc::DefaultEncode(&settings, &out, &out_size)) |
| 233 | { |
| 234 | printf("Unable to encode\n"); |
| 235 | dmTexc::DestroyImage(image); |
| 236 | free(out); |
| 237 | return -1; |
| 238 | } |
| 239 | } |
| 240 | else if (params.m_CompressionType == dmTexc::CT_BASIS_UASTC || |
no test coverage detected