2 #include <PVRTString.h>
3 #include <PVRTextureUtilities.h>
4 #include <PVRTDecompress.h>
14 return pvrtexture::PixelType(
'r',
'g',
'b',
'a',8,8,8,8);
17 return pvrtexture::PixelType(
'r',
'g',
'b',
'a',16,16,16,16);
20 return pvrtexture::PixelType(
'r',
'g',
'b',
'a',32,32,32,32);
31 return pvrtexture::PixelType(
'r',
'g',
'b',
'a',8,8,8,8).PixelTypeID;
34 return pvrtexture::PixelType(
'r',
'g',
'b',
'a',16,16,16,16).PixelTypeID;
37 return pvrtexture::PixelType(
'r',
'g',
'b',
'a',32,32,32,32).PixelTypeID;
46 return new pvrtexture::CPVRTextureHeader();
49 PvrttTextureHeader *
pvrttCreateTextureHeader(
PvrttPixelType pixelFormat,
int height=1,
int width=1,
int depth=1,
int numMipMaps=1,
int numArrayMembers=1,
int numFaces=1, EPVRTColourSpace eColourSpace=ePVRTCSpacelRGB, EPVRTVariableType eChannelType=ePVRTVarTypeUnsignedByteNorm,
bool bPreMultiplied=
false)
51 return new PvrttTextureHeader(
convertPixelType(pixelFormat).PixelTypeID, height, width, depth, numMipMaps, numArrayMembers, numFaces, eColourSpace, eChannelType, bPreMultiplied);
54 PvrttTextureHeader *
pvrttCreateTextureHeaderFromCompressedTexture(pvrtexture::uint64 pixelFormat,
int height=1,
int width=1,
int depth=1,
int numMipMaps=1,
int numArrayMembers=1,
int numFaces=1, EPVRTColourSpace eColourSpace=ePVRTCSpacelRGB, EPVRTVariableType eChannelType=ePVRTVarTypeUnsignedByteNorm,
bool bPreMultiplied=
false)
56 return new PvrttTextureHeader(pixelFormat, height, width, depth, numMipMaps, numArrayMembers, numFaces, eColourSpace, eChannelType, bPreMultiplied);
62 *headerOut = *headerIn;
68 return header->getWidth(uiMipLevel);
73 return header->getHeight(uiMipLevel);
78 header->setWidth(newWidth);
83 header->setWidth(newHeight);
93 return header->getDataSize(iMipLevel, bAllSurfaces, bAllFaces);
98 return header->getTextureSize();
103 return header->getNumMIPLevels();
108 header->setNumMIPLevels(newNumMIPLevels);
113 return header->getDepth(uiMipLevel);
118 return header->getBitsPerPixel();
123 return header->getNumArrayMembers();
128 return header->getNumFaces();
133 return header->isFileCompressed();
138 return header->getPixelType().PixelTypeID;
143 return header->getMetaDataSize();
148 return header->getChannelType();
153 return header->getColourSpace();
161 return new pvrtexture::CPVRTexture();
166 if(pData == 0) pData=NULL;
167 return new pvrtexture::CPVRTexture(*sHeader, pData);
172 return new pvrtexture::CPVRTexture(szFilePath);
177 return new pvrtexture::CPVRTexture(pTexture);
192 return texture->saveFile(filePath);
197 return &(texture->getHeader());
200 void*
pvrttGetDataPtr(
PvrttTexture * texture, pvrtexture::uint32 uiMIPLevel = 0, pvrtexture::uint32 uiArrayMember = 0, pvrtexture::uint32 uiFaceNumber = 0)
202 return texture->getDataPtr(uiMIPLevel, uiArrayMember, uiFaceNumber);
209 return pvrtexture::GenerateMIPMaps(texture, eFilterMode, uiMIPMapsToDo);
214 return pvrtexture::Transcode(texture,
convertPixelType(ptFormat), eChannelType, eColourspace, eQuality, bDoDither);
217 bool pvrttTranscode(
PvrttTexture& texture, pvrtexture::uint64 ptFormat,
const EPVRTVariableType eChannelType,
const EPVRTColourSpace eColourspace,
const pvrtexture::ECompressorQuality eQuality,
const bool bDoDither)
219 return pvrtexture::Transcode(texture, ptFormat, eChannelType, eColourspace, eQuality, bDoDither);
235 return pvrtexture::CopyChannels(sTexture, sTextureSource, uiNumChannelCopies, eChannels, eChannelsSource);
238 bool pvrttResize(
PvrttTexture& sTexture,
const pvrtexture::uint32& u32NewWidth,
const pvrtexture::uint32& u32NewHeight,
const pvrtexture::uint32& u32NewDepth,
const pvrtexture::EResizeMode eResizeMode)
240 return pvrtexture::Resize(sTexture, u32NewWidth, u32NewHeight, u32NewDepth, eResizeMode);
245 return pvrtexture::Flip(sTexture, eFlipDirection);
250 return pvrtexture::GenerateNormalMap(sTexture, fScale, sChannelOrder);
255 return pvrtexture::PreMultiplyAlpha(sTexture);
bool pvrttPreMultipliedAlpha(PvrttTexture &sTexture)
pvrtexture::uint64 pvrttGetPixelType(PvrttTextureHeader *header)
pvrtexture::uint64 pvrttConvertPixelType(PvrttPixelType pixelFormat)
bool pvrttTranscode(PvrttTexture &texture, pvrtexture::uint64 ptFormat, const EPVRTVariableType eChannelType, const EPVRTColourSpace eColourspace, const pvrtexture::ECompressorQuality eQuality, const bool bDoDither)
void * pvrttGetDataPtr(PvrttTexture *texture, pvrtexture::uint32 uiMIPLevel=0, pvrtexture::uint32 uiArrayMember=0, pvrtexture::uint32 uiFaceNumber=0)
pvrtexture::uint32 pvrttGetNumFaces(PvrttTextureHeader *header)
HRESULT Resize(_In_ const Image &srcImage, _In_ size_t width, _In_ size_t height, _In_ DWORD filter, _Out_ ScratchImage &image)
EPVRTVariableType pvrttGetChannelType(PvrttTextureHeader *header)
bool pvrttGenerateMIPMaps(PvrttTexture &texture, const pvrtexture::EResizeMode eFilterMode, int uiMIPMapsToDo=PVRTEX_ALLMIPLEVELS)
PvrttTextureHeader * pvrttCreateTextureHeaderEmpty()
bool pvrttFlip(PvrttTexture &sTexture, const EPVRTAxis eFlipDirection)
class pvrtexture::CPVRTexture PvrttTexture
bool pvrttCopyChannels(PvrttTexture &sTexture, const PvrttTexture &sTextureSource, pvrtexture::uint32 uiNumChannelCopies, pvrtexture::EChannelName *eChannels, pvrtexture::EChannelName *eChannelsSource)
pvrtexture::PixelType convertPixelType(PvrttPixelType pixelFormat)
void pvrttSetNumMIPLevels(PvrttTextureHeader *header, int newNumMIPLevels)
pvrtexture::uint32 pvrttGetNumMIPLevels(PvrttTextureHeader *header)
bool pvrttGenerateNormalMap(PvrttTexture &sTexture, const float fScale, const char *sChannelOrder)
bool pvrttResize(PvrttTexture &sTexture, const pvrtexture::uint32 &u32NewWidth, const pvrtexture::uint32 &u32NewHeight, const pvrtexture::uint32 &u32NewDepth, const pvrtexture::EResizeMode eResizeMode)
PvrttTexture * pvrttCreateTextureFromHeader(PvrttTextureHeader *sHeader, const void *pData=NULL)
pvrtexture::uint32 pvrttGetDataSize(PvrttTextureHeader *header, int iMipLevel=PVRTEX_ALLMIPLEVELS, bool bAllSurfaces=true, bool bAllFaces=true)
void pvrttSetHeight(PvrttTextureHeader *header, pvrtexture::uint32 newHeight)
PvrttTexture * pvrttCreateTextureFromFile(const char *szFilePath)
const PvrttTextureHeader * pvrttGetHeader(PvrttTexture *texture)
pvrtexture::uint32 pvrttGetHeight(PvrttTextureHeader *header, pvrtexture::uint32 uiMipLevel=PVRTEX_TOPMIPLEVEL)
PvrttTexture * pvrttCreateTexture()
EPVRTColourSpace pvrttGetColourSpace(PvrttTextureHeader *header)
pvrtexture::uint32 pvrttGetBPP(PvrttTextureHeader *header)
void pvrttSetWidth(PvrttTextureHeader *header, pvrtexture::uint32 newWidth)
class pvrtexture::CPVRTextureHeader PvrttTextureHeader
void pvrttSetPixelFormat(PvrttTextureHeader *header, PvrttPixelType pixelFormat)
void pvrttDestroyTexture(PvrttTexture *texture)
bool pvrttSaveFile(PvrttTexture *texture, const char *filePath)
pvrtexture::uint32 pvrttGetNumArrayMembers(PvrttTextureHeader *header)
pvrtexture::uint32 pvrttGetWidth(PvrttTextureHeader *header, pvrtexture::uint32 uiMipLevel=PVRTEX_TOPMIPLEVEL)
bool pvrttIsFileCompressed(PvrttTextureHeader *header)
PvrttTextureHeader * pvrttCopyTextureHeader(const PvrttTextureHeader *headerIn)
PvrttTextureHeader * pvrttCreateTextureHeaderFromCompressedTexture(pvrtexture::uint64 pixelFormat, int height=1, int width=1, int depth=1, int numMipMaps=1, int numArrayMembers=1, int numFaces=1, EPVRTColourSpace eColourSpace=ePVRTCSpacelRGB, EPVRTVariableType eChannelType=ePVRTVarTypeUnsignedByteNorm, bool bPreMultiplied=false)
bool pvrttTranscodeWithNoConversion(PvrttTexture &texture, const PvrttPixelType ptFormat, const EPVRTVariableType eChannelType, const EPVRTColourSpace eColourspace, const pvrtexture::ECompressorQuality eQuality=pvrtexture::ePVRTCNormal, const bool bDoDither=false)
pvrtexture::uint32 pvrttGetDepth(PvrttTextureHeader *header, pvrtexture::uint32 uiMipLevel=PVRTEX_TOPMIPLEVEL)
PvrttTexture * pvrttCreateTextureFromMemory(const void *pTexture)
pvrtexture::uint32 pvrttGetTextureSize(PvrttTextureHeader *header, int iMipLevel, bool bAllSurfaces, bool bAllFaces)
PvrttTextureHeader * pvrttCreateTextureHeader(PvrttPixelType pixelFormat, int height=1, int width=1, int depth=1, int numMipMaps=1, int numArrayMembers=1, int numFaces=1, EPVRTColourSpace eColourSpace=ePVRTCSpacelRGB, EPVRTVariableType eChannelType=ePVRTVarTypeUnsignedByteNorm, bool bPreMultiplied=false)
pvrtexture::uint32 pvrttGetMetaDataSize(PvrttTextureHeader *header)