Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
pvrtt_wrapper.cpp
Go to the documentation of this file.
1 #include "pvrtt_wrapper.h"
2 #include <PVRTString.h>
3 #include <PVRTextureUtilities.h>
4 #include <PVRTDecompress.h>
5 
6 //#include <stdio.h>
7 // intern conversion class
8 pvrtexture::PixelType convertPixelType(PvrttPixelType pixelFormat)
9 {
10  switch(pixelFormat)
11  {
12  default:
14  return pvrtexture::PixelType('r','g','b','a',8,8,8,8);
15  break;
17  return pvrtexture::PixelType('r','g','b','a',16,16,16,16);
18  break;
20  return pvrtexture::PixelType('r','g','b','a',32,32,32,32);
21  break;
22  }
23 }
24 
25 pvrtexture::uint64 pvrttConvertPixelType(PvrttPixelType pixelFormat)
26 {
27  switch(pixelFormat)
28  {
29  default:
31  return pvrtexture::PixelType('r','g','b','a',8,8,8,8).PixelTypeID;
32  break;
34  return pvrtexture::PixelType('r','g','b','a',16,16,16,16).PixelTypeID;
35  break;
37  return pvrtexture::PixelType('r','g','b','a',32,32,32,32).PixelTypeID;
38  break;
39  }
40 }
41 
42 
43 // CPVRTextureHeader class
45 {
46  return new pvrtexture::CPVRTextureHeader();
47 }
48 
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)
50 {
51  return new PvrttTextureHeader(convertPixelType(pixelFormat).PixelTypeID, height, width, depth, numMipMaps, numArrayMembers, numFaces, eColourSpace, eChannelType, bPreMultiplied);
52 }
53 
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)
55 {
56  return new PvrttTextureHeader(pixelFormat, height, width, depth, numMipMaps, numArrayMembers, numFaces, eColourSpace, eChannelType, bPreMultiplied);
57 }
58 
60 {
61  PvrttTextureHeader * headerOut = new PvrttTextureHeader();
62  *headerOut = *headerIn;
63  return headerOut;
64 }
65 
66 pvrtexture::uint32 pvrttGetWidth(PvrttTextureHeader * header, pvrtexture::uint32 uiMipLevel=PVRTEX_TOPMIPLEVEL)
67 {
68  return header->getWidth(uiMipLevel);
69 }
70 
71 pvrtexture::uint32 pvrttGetHeight(PvrttTextureHeader * header, pvrtexture::uint32 uiMipLevel=PVRTEX_TOPMIPLEVEL)
72 {
73  return header->getHeight(uiMipLevel);
74 }
75 
76 void pvrttSetWidth(PvrttTextureHeader * header, pvrtexture::uint32 newWidth)
77 {
78  header->setWidth(newWidth);
79 }
80 
81 void pvrttSetHeight(PvrttTextureHeader * header, pvrtexture::uint32 newHeight)
82 {
83  header->setWidth(newHeight);
84 }
85 
87 {
88  header->setPixelFormat(convertPixelType(pixelFormat));
89 }
90 
91 pvrtexture::uint32 pvrttGetDataSize(PvrttTextureHeader * header, int iMipLevel=PVRTEX_ALLMIPLEVELS, bool bAllSurfaces=true, bool bAllFaces=true)
92 {
93  return header->getDataSize(iMipLevel, bAllSurfaces, bAllFaces);
94 }
95 
96 pvrtexture::uint32 pvrttGetTextureSize(PvrttTextureHeader * header, int iMipLevel, bool bAllSurfaces, bool bAllFaces)
97 {
98  return header->getTextureSize();
99 }
100 
101 pvrtexture::uint32 pvrttGetNumMIPLevels(PvrttTextureHeader * header)
102 {
103  return header->getNumMIPLevels();
104 }
105 
106 void pvrttSetNumMIPLevels(PvrttTextureHeader * header, int newNumMIPLevels)
107 {
108  header->setNumMIPLevels(newNumMIPLevels);
109 }
110 
111 pvrtexture::uint32 pvrttGetDepth(PvrttTextureHeader * header, pvrtexture::uint32 uiMipLevel = PVRTEX_TOPMIPLEVEL)
112 {
113  return header->getDepth(uiMipLevel);
114 }
115 
116 pvrtexture::uint32 pvrttGetBPP(PvrttTextureHeader * header)
117 {
118  return header->getBitsPerPixel();
119 }
120 
121 pvrtexture::uint32 pvrttGetNumArrayMembers(PvrttTextureHeader * header)
122 {
123  return header->getNumArrayMembers();
124 }
125 
126 pvrtexture::uint32 pvrttGetNumFaces(PvrttTextureHeader * header)
127 {
128  return header->getNumFaces();
129 }
130 
132 {
133  return header->isFileCompressed();
134 }
135 
136 pvrtexture::uint64 pvrttGetPixelType(PvrttTextureHeader * header)
137 {
138  return header->getPixelType().PixelTypeID;
139 }
140 
141 pvrtexture::uint32 pvrttGetMetaDataSize(PvrttTextureHeader * header)
142 {
143  return header->getMetaDataSize();
144 }
145 
146 EPVRTVariableType pvrttGetChannelType(PvrttTextureHeader * header)
147 {
148  return header->getChannelType();
149 }
150 
151 EPVRTColourSpace pvrttGetColourSpace(PvrttTextureHeader * header)
152 {
153  return header->getColourSpace();
154 }
155 
156 
157 
158 // CPVRTexture class
160 {
161  return new pvrtexture::CPVRTexture();
162 }
163 
165 {
166  if(pData == 0) pData=NULL;
167  return new pvrtexture::CPVRTexture(*sHeader, pData);
168 }
169 
170 PvrttTexture * pvrttCreateTextureFromFile(const char* szFilePath)
171 {
172  return new pvrtexture::CPVRTexture(szFilePath);
173 }
174 
176 {
177  return new pvrtexture::CPVRTexture(pTexture);
178 }
179 
180 /*PvrttTexture * pvrttCreateTexture(const PvrttTexture& texture)
181 {
182  return new pvrtexture::CPVRTexture(texture);
183 }*/
184 
186 {
187  delete texture;
188 }
189 
190 bool pvrttSaveFile(PvrttTexture * texture, const char* filePath)
191 {
192  return texture->saveFile(filePath);
193 }
194 
196 {
197  return &(texture->getHeader());
198 }
199 
200 void* pvrttGetDataPtr(PvrttTexture * texture, pvrtexture::uint32 uiMIPLevel = 0, pvrtexture::uint32 uiArrayMember = 0, pvrtexture::uint32 uiFaceNumber = 0)
201 {
202  return texture->getDataPtr(uiMIPLevel, uiArrayMember, uiFaceNumber);
203 }
204 
205 // Utilities
206 
207 bool pvrttGenerateMIPMaps(PvrttTexture& texture, const pvrtexture::EResizeMode eFilterMode, int uiMIPMapsToDo=PVRTEX_ALLMIPLEVELS)
208 {
209  return pvrtexture::GenerateMIPMaps(texture, eFilterMode, uiMIPMapsToDo);
210 }
211 
212 bool pvrttTranscodeWithNoConversion(PvrttTexture& texture, const PvrttPixelType ptFormat, const EPVRTVariableType eChannelType, const EPVRTColourSpace eColourspace, const pvrtexture::ECompressorQuality eQuality=pvrtexture::ePVRTCNormal, const bool bDoDither=false)
213 {
214  return pvrtexture::Transcode(texture, convertPixelType(ptFormat), eChannelType, eColourspace, eQuality, bDoDither);
215 }
216 
217 bool pvrttTranscode(PvrttTexture& texture, pvrtexture::uint64 ptFormat, const EPVRTVariableType eChannelType, const EPVRTColourSpace eColourspace, const pvrtexture::ECompressorQuality eQuality, const bool bDoDither)
218 {
219  return pvrtexture::Transcode(texture, ptFormat, eChannelType, eColourspace, eQuality, bDoDither);
220 }
221 
222 
223 /*int pvrttDecompressPVRTC(const void *pCompressedData, const int Do2bitMode, const int XDim, const int YDim, unsigned char* pResultImage)
224 {
225  return PVRTDecompressPVRTC(pCompressedData, Do2bitMode, XDim, YDim, pResultImage);
226 }
227 
228 int pvrttDecompressETC(const void * const pSrcData, const unsigned int &x, const unsigned int &y, void *pDestData, const int &nMode)
229 {
230  return PVRTDecompressETC(pSrcData, x, y, pDestData, nMode);
231 }*/
232 
233 bool pvrttCopyChannels(PvrttTexture& sTexture, const PvrttTexture& sTextureSource, pvrtexture::uint32 uiNumChannelCopies, pvrtexture::EChannelName *eChannels, pvrtexture::EChannelName *eChannelsSource)
234 {
235  return pvrtexture::CopyChannels(sTexture, sTextureSource, uiNumChannelCopies, eChannels, eChannelsSource);
236 }
237 
238 bool pvrttResize(PvrttTexture& sTexture, const pvrtexture::uint32& u32NewWidth, const pvrtexture::uint32& u32NewHeight, const pvrtexture::uint32& u32NewDepth, const pvrtexture::EResizeMode eResizeMode)
239 {
240  return pvrtexture::Resize(sTexture, u32NewWidth, u32NewHeight, u32NewDepth, eResizeMode);
241 }
242 
243 bool pvrttFlip(PvrttTexture& sTexture, const EPVRTAxis eFlipDirection)
244 {
245  return pvrtexture::Flip(sTexture, eFlipDirection);
246 }
247 
248 bool pvrttGenerateNormalMap(PvrttTexture& sTexture, const float fScale, const char* sChannelOrder)
249 {
250  return pvrtexture::GenerateNormalMap(sTexture, fScale, sChannelOrder);
251 }
252 
254 {
255  return pvrtexture::PreMultiplyAlpha(sTexture);
256 }
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)
PvrttPixelType
Definition: pvrtt_wrapper.h:12
class pvrtexture::CPVRTexture PvrttTexture
Definition: pvrtt_wrapper.h:10
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
Definition: pvrtt_wrapper.h:9
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)