// Copyright (C) 2012 Jérôme Leclercq // This file is part of the "Nazara Engine". // For conditions of distribution and use, see copyright notice in Config.hpp #include #include #include #include #include namespace { inline nzUInt8 c4to5(nzUInt8 c) { return c * (31.f/15.f); } inline nzUInt8 c4to8(nzUInt8 c) { return c * (255/15); } inline nzUInt8 c5to4(nzUInt8 c) { return c * (15.f/31.f); } inline nzUInt8 c5to8(nzUInt8 c) { return c * (255.f/31.f); } inline nzUInt8 c8to4(nzUInt8 c) { return c * (15.f/255.f); } inline nzUInt8 c8to5(nzUInt8 c) { return c * (31.f/255.f); } template nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { NazaraUnused(start); NazaraUnused(dst); NazaraUnused(end); NazaraInternalError("Conversion from " + NzPixelFormat::ToString(from) + " to " + NzPixelFormat::ToString(to) + " is not supported"); return nullptr; } /**********************************BGR8***********************************/ template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = start[0]; *dst++ = start[1]; *dst++ = start[2]; *dst++ = 0xFF; start += 3; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = static_cast(start[2] * 0.3 + start[1] * 0.59 + start[0] * 0.11); start += 3; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = static_cast(start[2] * 0.3 + start[1] * 0.59 + start[0] * 0.11); *dst++ = 0xFF; start += 3; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { nzUInt16* ptr = reinterpret_cast(dst); while (start < end) { *ptr = (static_cast(c8to4(start[2])) << 12) | (static_cast(c8to4(start[1])) << 8) | (static_cast(c8to4(start[0])) << 4) | 0x0F; #ifdef NAZARA_BIG_ENDIAN NzByteSwap(ptr, sizeof(nzUInt16)); #endif ptr++; start += 3; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { nzUInt16* ptr = reinterpret_cast(dst); while (start < end) { *ptr = (static_cast(c8to5(start[2])) << 11) | (static_cast(c8to5(start[1])) << 6) | (static_cast(c8to5(start[0])) << 1) | 0x1; #ifdef NAZARA_BIG_ENDIAN NzByteSwap(ptr, sizeof(nzUInt16)); #endif ptr++; start += 3; } return reinterpret_cast(ptr); } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = start[2]; *dst++ = start[1]; *dst++ = start[0]; start += 3; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = start[2]; *dst++ = start[1]; *dst++ = start[0]; *dst++ = 0xFF; start += 3; } return dst; } /**********************************BGRA8**********************************/ template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = start[0]; *dst++ = start[1]; *dst++ = start[2]; start += 4; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = static_cast(start[2] * 0.3 + start[1] * 0.59 + start[0] * 0.11); start += 4; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = static_cast(start[2] * 0.3 + start[1] * 0.59 + start[0] * 0.11); *dst++ = start[3]; start += 4; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { nzUInt16* ptr = reinterpret_cast(dst); while (start < end) { *ptr = (static_cast(c8to4(start[2])) << 12) | (static_cast(c8to4(start[1])) << 8) | (static_cast(c8to4(start[0])) << 4) | (static_cast(c8to4(start[3])) << 0); #ifdef NAZARA_BIG_ENDIAN NzByteSwap(ptr, sizeof(nzUInt16)); #endif ptr++; start += 4; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { nzUInt16* ptr = reinterpret_cast(dst); while (start < end) { *ptr = (static_cast(c8to5(start[2])) << 11) | (static_cast(c8to5(start[1])) << 6) | (static_cast(c8to5(start[0])) << 1) | ((start[3] == 0xFF) ? 1 : 0); #ifdef NAZARA_BIG_ENDIAN NzByteSwap(ptr, sizeof(nzUInt16)); #endif ptr++; start += 4; } return reinterpret_cast(ptr); } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = start[2]; *dst++ = start[1]; *dst++ = start[0]; start += 4; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = start[2]; *dst++ = start[1]; *dst++ = start[0]; *dst++ = start[3]; start += 4; } return dst; } /***********************************L8************************************/ template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = start[0]; *dst++ = start[0]; *dst++ = start[0]; start += 1; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = start[0]; *dst++ = start[0]; *dst++ = start[0]; *dst++ = 0xFF; start += 1; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = start[0]; *dst++ = 0xFF; start += 1; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { nzUInt16* ptr = reinterpret_cast(dst); while (start < end) { nzUInt16 l = static_cast(c8to4(start[0])); *ptr = (l << 12) | (l << 8) | (l << 4) | 0x0F; #ifdef NAZARA_BIG_ENDIAN NzByteSwap(ptr, sizeof(nzUInt16)); #endif ptr++; start += 1; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { nzUInt16* ptr = reinterpret_cast(dst); while (start < end) { nzUInt16 l = static_cast(c8to5(start[0])); *ptr = (l << 11) | (l << 6) | (l << 1) | 1; #ifdef NAZARA_BIG_ENDIAN NzByteSwap(ptr, sizeof(nzUInt16)); #endif ptr++; start += 1; } return reinterpret_cast(ptr); } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = start[0]; *dst++ = start[0]; *dst++ = start[0]; start += 1; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = start[0]; *dst++ = start[0]; *dst++ = start[0]; *dst++ = 0xFF; start += 1; } return dst; } /***********************************LA8***********************************/ template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = start[0]; *dst++ = start[0]; *dst++ = start[0]; start += 2; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = start[0]; *dst++ = start[0]; *dst++ = start[0]; *dst++ = start[1]; start += 2; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = start[0]; start += 2; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { nzUInt16* ptr = reinterpret_cast(dst); while (start < end) { nzUInt16 l = static_cast(c8to4(start[0])); *ptr = (l << 12) | (l << 8) | (l << 4) | c8to4(start[1]); #ifdef NAZARA_BIG_ENDIAN NzByteSwap(ptr, sizeof(nzUInt16)); #endif ptr++; start += 2; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { nzUInt16* ptr = reinterpret_cast(dst); while (start < end) { nzUInt16 l = static_cast(c8to5(start[0])); *ptr = (l << 11) | (l << 6) | (l << 1) | ((start[1] == 0xFF) ? 1 : 0); #ifdef NAZARA_BIG_ENDIAN NzByteSwap(ptr, sizeof(nzUInt16)); #endif ptr++; start += 2; } return reinterpret_cast(ptr); } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = start[0]; *dst++ = start[0]; *dst++ = start[0]; start += 2; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = start[0]; *dst++ = start[0]; *dst++ = start[0]; *dst++ = start[1]; start += 2; } return dst; } /*********************************RGBA4***********************************/ template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { nzUInt16 pixel = *reinterpret_cast(start); #ifdef NAZARA_BIG_ENDIAN NzByteSwap(&pixel, sizeof(nzUInt16)); #endif *dst++ = c4to8((pixel & 0x00F0) >> 4); *dst++ = c4to8((pixel & 0x0F00) >> 8); *dst++ = c4to8((pixel & 0xF000) >> 12); start += 2; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { nzUInt16 pixel = *reinterpret_cast(start); #ifdef NAZARA_BIG_ENDIAN NzByteSwap(&pixel, sizeof(nzUInt16)); #endif *dst++ = c4to8((pixel & 0x00F0) >> 4); *dst++ = c4to8((pixel & 0x0F00) >> 8); *dst++ = c4to8((pixel & 0xF000) >> 12); *dst++ = c4to8((pixel & 0x000F) >> 0); start += 2; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { nzUInt16 pixel = *reinterpret_cast(start); #ifdef NAZARA_BIG_ENDIAN NzByteSwap(&pixel, sizeof(nzUInt16)); #endif nzUInt16 r = c4to8((pixel & 0xF000) >> 12); nzUInt16 g = c4to8((pixel & 0x0F00) >> 8); nzUInt16 b = c4to8((pixel & 0x00F0) >> 4); *dst++ = static_cast(r * 0.3 + g * 0.59 + b * 0.11); start += 2; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { nzUInt16 pixel = *reinterpret_cast(start); #ifdef NAZARA_BIG_ENDIAN NzByteSwap(&pixel, sizeof(nzUInt16)); #endif nzUInt16 r = c4to8((pixel & 0xF000) >> 12); nzUInt16 g = c4to8((pixel & 0x0F00) >> 8); nzUInt16 b = c4to8((pixel & 0x00F0) >> 4); *dst++ = static_cast(r * 0.3 + g * 0.59 + b * 0.11); *dst++ = c4to8(pixel & 0x000F); start += 2; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { nzUInt16* ptr = reinterpret_cast(dst); while (start < end) { nzUInt16 pixel = *reinterpret_cast(start); #ifdef NAZARA_BIG_ENDIAN NzByteSwap(&pixel, sizeof(nzUInt16)); #endif nzUInt16 r = c4to5((pixel & 0xF000) >> 12); nzUInt16 g = c4to5((pixel & 0x0F00) >> 8); nzUInt16 b = c4to5((pixel & 0x00F0) >> 4); nzUInt16 a = c4to5((pixel & 0x000F) >> 0); *ptr = (r << 11) | (g << 6) | (b << 1) | ((a == 0xFF) ? 1 : 0); #ifdef NAZARA_BIG_ENDIAN NzByteSwap(ptr, sizeof(nzUInt16)); #endif ptr++; start += 2; } return reinterpret_cast(ptr); } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { nzUInt16 pixel = *reinterpret_cast(start); #ifdef NAZARA_BIG_ENDIAN NzByteSwap(&pixel, sizeof(nzUInt16)); #endif *dst++ = c4to8((pixel & 0xF000) >> 12); *dst++ = c4to8((pixel & 0x0F00) >> 8); *dst++ = c4to8((pixel & 0x00F0) >> 4); start += 2; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { nzUInt16 pixel = *reinterpret_cast(start); #ifdef NAZARA_BIG_ENDIAN NzByteSwap(&pixel, sizeof(nzUInt16)); #endif *dst++ = c4to8((pixel & 0xF000) >> 12); *dst++ = c4to8((pixel & 0x0F00) >> 8); *dst++ = c4to8((pixel & 0x00F0) >> 4); *dst++ = c4to8((pixel & 0x000F) >> 0); start += 2; } return dst; } /*********************************RGB5A1**********************************/ template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { nzUInt16 pixel = *reinterpret_cast(start); #ifdef NAZARA_BIG_ENDIAN NzByteSwap(&pixel, sizeof(nzUInt16)); #endif *dst++ = c5to8((pixel & 0x003E) >> 1); *dst++ = c5to8((pixel & 0x07C0) >> 6); *dst++ = c5to8((pixel & 0xF800) >> 11); start += 2; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { nzUInt16 pixel = *reinterpret_cast(start); #ifdef NAZARA_BIG_ENDIAN NzByteSwap(&pixel, sizeof(nzUInt16)); #endif *dst++ = c5to8((pixel & 0x003E) >> 1); *dst++ = c5to8((pixel & 0x07C0) >> 6); *dst++ = c5to8((pixel & 0xF800) >> 11); *dst++ = static_cast((pixel & 0x1)*0xFF); start += 2; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { nzUInt16 pixel = *reinterpret_cast(start); #ifdef NAZARA_BIG_ENDIAN NzByteSwap(&pixel, sizeof(nzUInt16)); #endif nzUInt8 r = c5to8((pixel & 0xF800) >> 11); nzUInt8 g = c5to8((pixel & 0x07C0) >> 6); nzUInt8 b = c5to8((pixel & 0x003E) >> 1); *dst++ = static_cast(r * 0.3 + g * 0.59 + b * 0.11); start += 2; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { nzUInt16 pixel = *reinterpret_cast(start); #ifdef NAZARA_BIG_ENDIAN NzByteSwap(&pixel, sizeof(nzUInt16)); #endif nzUInt8 r = c5to8((pixel & 0xF800) >> 11); nzUInt8 g = c5to8((pixel & 0x07C0) >> 6); nzUInt8 b = c5to8((pixel & 0x003E) >> 1); *dst++ = static_cast(r * 0.3 + g * 0.59 + b * 0.11); *dst++ = static_cast((pixel & 0x1)*0xFF); start += 2; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { nzUInt16* ptr = reinterpret_cast(dst); while (start < end) { nzUInt16 pixel = *reinterpret_cast(start); #ifdef NAZARA_BIG_ENDIAN NzByteSwap(&pixel, sizeof(nzUInt16)); #endif nzUInt8 r = c5to4((pixel & 0xF800) >> 11); nzUInt8 g = c5to4((pixel & 0x07C0) >> 6); nzUInt8 b = c5to4((pixel & 0x003E) >> 1); *ptr = (r << 12) | (g << 8) | (b << 4) | ((pixel & 0x1)*0x0F); #ifdef NAZARA_BIG_ENDIAN NzByteSwap(ptr, sizeof(nzUInt16)); #endif ptr++; start += 2; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { nzUInt16 pixel = *reinterpret_cast(start); #ifdef NAZARA_BIG_ENDIAN NzByteSwap(&pixel, sizeof(nzUInt16)); #endif *dst++ = c5to8((pixel & 0xF800) >> 11); *dst++ = c5to8((pixel & 0x07C0) >> 6); *dst++ = c5to8((pixel & 0x003E) >> 1); start += 2; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { nzUInt16 pixel = *reinterpret_cast(start); #ifdef NAZARA_BIG_ENDIAN NzByteSwap(&pixel, sizeof(nzUInt16)); #endif *dst++ = c5to8((pixel & 0xF800) >> 11); *dst++ = c5to8((pixel & 0x07C0) >> 6); *dst++ = c5to8((pixel & 0x003E) >> 1); *dst++ = static_cast((pixel & 0x1)*0xFF); start += 2; } return dst; } /**********************************RGB8***********************************/ template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = start[2]; *dst++ = start[1]; *dst++ = start[0]; start += 3; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = start[2]; *dst++ = start[1]; *dst++ = start[0]; *dst++ = 0xFF; start += 3; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = static_cast(start[0] * 0.3 + start[1] * 0.59 + start[2] * 0.11); start += 3; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = static_cast(start[0] * 0.3 + start[1] * 0.59 + start[2] * 0.11); *dst++ = 0xFF; start += 3; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { nzUInt16* ptr = reinterpret_cast(dst); while (start < end) { *ptr = (static_cast(c8to4(start[0])) << 12) | (static_cast(c8to4(start[1])) << 8) | (static_cast(c8to4(start[2])) << 4) | 0x0F; #ifdef NAZARA_BIG_ENDIAN NzByteSwap(ptr, sizeof(nzUInt16)); #endif ptr++; start += 3; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { nzUInt16* ptr = reinterpret_cast(dst); while (start < end) { *ptr = (static_cast(c8to5(start[0])) << 11) | (static_cast(c8to5(start[1])) << 6) | (static_cast(c8to5(start[2])) << 1) | 0x1; #ifdef NAZARA_BIG_ENDIAN NzByteSwap(ptr, sizeof(nzUInt16)); #endif ptr++; start += 3; } return reinterpret_cast(ptr); } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = start[0]; *dst++ = start[1]; *dst++ = start[2]; *dst++ = 0xFF; start += 3; } return dst; } /**********************************RGBA8**********************************/ template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = start[2]; *dst++ = start[1]; *dst++ = start[0]; start += 4; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = start[2]; *dst++ = start[1]; *dst++ = start[0]; *dst++ = start[3]; start += 4; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = static_cast(start[0] * 0.3 + start[1] * 0.59 + start[2] * 0.11); start += 4; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = static_cast(start[0] * 0.3 + start[1] * 0.59 + start[2] * 0.11); *dst++ = start[3]; start += 4; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { nzUInt16* ptr = reinterpret_cast(dst); while (start < end) { *ptr = (static_cast(c8to4(start[0])) << 12) | (static_cast(c8to4(start[1])) << 8) | (static_cast(c8to4(start[2])) << 4) | (static_cast(c8to4(start[3])) << 0); #ifdef NAZARA_BIG_ENDIAN NzByteSwap(ptr, sizeof(nzUInt16)); #endif ptr++; start += 4; } return dst; } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { nzUInt16* ptr = reinterpret_cast(dst); while (start < end) { *ptr = (static_cast(c8to5(start[0])) << 11) | (static_cast(c8to5(start[1])) << 6) | (static_cast(c8to5(start[2])) << 1) | ((start[3] == 0xFF) ? 1 : 0); #ifdef NAZARA_BIG_ENDIAN NzByteSwap(ptr, sizeof(nzUInt16)); #endif ptr++; start += 4; } return reinterpret_cast(ptr); } template<> nzUInt8* ConvertPixels(const nzUInt8* start, const nzUInt8* end, nzUInt8* dst) { while (start < end) { *dst++ = start[0]; *dst++ = start[1]; *dst++ = start[2]; start += 4; } return dst; } template void RegisterConverter() { NzPixelFormat::SetConvertFunction(format1, format2, &ConvertPixels); } } bool NzPixelFormat::Initialize() { /**********************************BGR8***********************************/ RegisterConverter(); RegisterConverter(); RegisterConverter();/* RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter();*/ RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); /**********************************BGRA8**********************************/ RegisterConverter(); RegisterConverter(); RegisterConverter();/* RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter();*/ RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); /**********************************DXT1***********************************/ ///TODO: Décompresseur DXT1 /* RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); */ /**********************************DXT3***********************************/ ///TODO: Décompresseur DXT3 /* RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); */ /**********************************DXT5***********************************/ ///TODO: Décompresseur DXT5 /* RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); */ /***********************************L8************************************/ RegisterConverter(); RegisterConverter(); RegisterConverter();/* RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter();*/ RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); /***********************************LA8***********************************/ RegisterConverter(); RegisterConverter(); RegisterConverter();/* RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter();*/ RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); /**********************************RGBA4**********************************/ RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter();/* RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter();*/ RegisterConverter(); RegisterConverter(); RegisterConverter(); /*********************************RGB5A1**********************************/ RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter();/* RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter();*/ RegisterConverter(); RegisterConverter(); RegisterConverter(); /**********************************RGB8***********************************/ RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter();/* RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter();*/ RegisterConverter(); RegisterConverter(); RegisterConverter(); /**********************************RGBA8**********************************/ RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter();/* RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter(); RegisterConverter();*/ RegisterConverter(); RegisterConverter(); RegisterConverter(); return true; } void NzPixelFormat::Uninitialize() { std::memset(s_convertFunctions, 0, (nzPixelFormat_Max+1)*(nzPixelFormat_Max+1)*sizeof(NzPixelFormat::ConvertFunction)); for (unsigned int i = 0; i <= nzPixelFlipping_Max; ++i) s_flipFunctions[i].clear(); } NzPixelFormat::ConvertFunction NzPixelFormat::s_convertFunctions[nzPixelFormat_Max+1][nzPixelFormat_Max+1] = {{0}}; ///FIXME: Fonctionne correctement ? std::map NzPixelFormat::s_flipFunctions[nzPixelFlipping_Max+1];