1
2 #include "nvtt.h"
3 #include "nvtt_wrapper.h"
4
5
6 // InputOptions class.
nvttCreateInputOptions()7 NvttInputOptions * nvttCreateInputOptions()
8 {
9 return new nvtt::InputOptions();
10 }
11
nvttDestroyInputOptions(NvttInputOptions * inputOptions)12 void nvttDestroyInputOptions(NvttInputOptions * inputOptions)
13 {
14 delete inputOptions;
15 }
16
nvttSetInputOptionsTextureLayout(NvttInputOptions * inputOptions,NvttTextureType type,int w,int h,int d)17 void nvttSetInputOptionsTextureLayout(NvttInputOptions * inputOptions, NvttTextureType type, int w, int h, int d)
18 {
19 inputOptions->setTextureLayout((nvtt::TextureType)type, w, h, d);
20 }
21
nvttResetInputOptionsTextureLayout(NvttInputOptions * inputOptions)22 void nvttResetInputOptionsTextureLayout(NvttInputOptions * inputOptions)
23 {
24 inputOptions->resetTextureLayout();
25 }
26
nvttSetInputOptionsMipmapData(NvttInputOptions * inputOptions,const void * data,int w,int h,int d,int face,int mipmap)27 NvttBoolean nvttSetInputOptionsMipmapData(NvttInputOptions * inputOptions, const void * data, int w, int h, int d, int face, int mipmap)
28 {
29 return (NvttBoolean)inputOptions->setMipmapData(data, w, h, d, face, mipmap);
30 }
31
nvttSetInputOptionsFormat(NvttInputOptions * inputOptions,NvttInputFormat format)32 void nvttSetInputOptionsFormat(NvttInputOptions * inputOptions, NvttInputFormat format)
33 {
34 inputOptions->setFormat((nvtt::InputFormat)format);
35 }
36
nvttSetInputOptionsAlphaMode(NvttInputOptions * inputOptions,NvttAlphaMode alphaMode)37 void nvttSetInputOptionsAlphaMode(NvttInputOptions * inputOptions, NvttAlphaMode alphaMode)
38 {
39 inputOptions->setAlphaMode((nvtt::AlphaMode)alphaMode);
40 }
41
nvttSetInputOptionsGamma(NvttInputOptions * inputOptions,float inputGamma,float outputGamma)42 void nvttSetInputOptionsGamma(NvttInputOptions * inputOptions, float inputGamma, float outputGamma)
43 {
44 inputOptions->setGamma(inputGamma, outputGamma);
45 }
46
nvttSetInputOptionsWrapMode(NvttInputOptions * inputOptions,NvttWrapMode mode)47 void nvttSetInputOptionsWrapMode(NvttInputOptions * inputOptions, NvttWrapMode mode)
48 {
49 inputOptions->setWrapMode((nvtt::WrapMode)mode);
50 }
51
nvttSetInputOptionsMipmapFilter(NvttInputOptions * inputOptions,NvttMipmapFilter filter)52 void nvttSetInputOptionsMipmapFilter(NvttInputOptions * inputOptions, NvttMipmapFilter filter)
53 {
54 inputOptions->setMipmapFilter((nvtt::MipmapFilter)filter);
55 }
56
nvttSetInputOptionsMipmapGeneration(NvttInputOptions * inputOptions,NvttBoolean enabled,int maxLevel)57 void nvttSetInputOptionsMipmapGeneration(NvttInputOptions * inputOptions, NvttBoolean enabled, int maxLevel)
58 {
59 inputOptions->setMipmapGeneration(enabled != NVTT_False, maxLevel);
60 }
61
nvttSetInputOptionsKaiserParameters(NvttInputOptions * inputOptions,float width,float alpha,float stretch)62 void nvttSetInputOptionsKaiserParameters(NvttInputOptions * inputOptions, float width, float alpha, float stretch)
63 {
64 inputOptions->setKaiserParameters(width, alpha, stretch);
65 }
66
nvttSetInputOptionsNormalMap(NvttInputOptions * inputOptions,NvttBoolean b)67 void nvttSetInputOptionsNormalMap(NvttInputOptions * inputOptions, NvttBoolean b)
68 {
69 inputOptions->setNormalMap(b != NVTT_False);
70 }
71
nvttSetInputOptionsConvertToNormalMap(NvttInputOptions * inputOptions,NvttBoolean convert)72 void nvttSetInputOptionsConvertToNormalMap(NvttInputOptions * inputOptions, NvttBoolean convert)
73 {
74 inputOptions->setConvertToNormalMap(convert != NVTT_False);
75 }
76
nvttSetInputOptionsHeightEvaluation(NvttInputOptions * inputOptions,float redScale,float greenScale,float blueScale,float alphaScale)77 void nvttSetInputOptionsHeightEvaluation(NvttInputOptions * inputOptions, float redScale, float greenScale, float blueScale, float alphaScale)
78 {
79 inputOptions->setHeightEvaluation(redScale, greenScale, blueScale, alphaScale);
80 }
81
nvttSetInputOptionsNormalFilter(NvttInputOptions * inputOptions,float small,float medium,float big,float large)82 void nvttSetInputOptionsNormalFilter(NvttInputOptions * inputOptions, float small, float medium, float big, float large)
83 {
84 inputOptions->setNormalFilter(small, medium, big, large);
85 }
86
nvttSetInputOptionsNormalizeMipmaps(NvttInputOptions * inputOptions,NvttBoolean b)87 void nvttSetInputOptionsNormalizeMipmaps(NvttInputOptions * inputOptions, NvttBoolean b)
88 {
89 inputOptions->setNormalizeMipmaps(b != NVTT_False);
90 }
91
nvttSetInputOptionsColorTransform(NvttInputOptions * inputOptions,NvttColorTransform t)92 void nvttSetInputOptionsColorTransform(NvttInputOptions * inputOptions, NvttColorTransform t)
93 {
94 inputOptions->setColorTransform((nvtt::ColorTransform)t);
95 }
96
nvttSetInputOptionsLinearTransfrom(NvttInputOptions * inputOptions,int channel,float w0,float w1,float w2,float w3)97 void nvttSetInputOptionsLinearTransfrom(NvttInputOptions * inputOptions, int channel, float w0, float w1, float w2, float w3)
98 {
99 inputOptions->setLinearTransform(channel, w0, w1, w2, w3);
100 }
101
nvttSetInputOptionsMaxExtents(NvttInputOptions * inputOptions,int dim)102 void nvttSetInputOptionsMaxExtents(NvttInputOptions * inputOptions, int dim)
103 {
104 inputOptions->setMaxExtents(dim);
105 }
106
nvttSetInputOptionsRoundMode(NvttInputOptions * inputOptions,NvttRoundMode mode)107 void nvttSetInputOptionsRoundMode(NvttInputOptions * inputOptions, NvttRoundMode mode)
108 {
109 inputOptions->setRoundMode((nvtt::RoundMode)mode);
110 }
111
112
113 // CompressionOptions class.
nvttCreateCompressionOptions()114 NvttCompressionOptions * nvttCreateCompressionOptions()
115 {
116 return new nvtt::CompressionOptions();
117 }
118
nvttDestroyCompressionOptions(NvttCompressionOptions * compressionOptions)119 void nvttDestroyCompressionOptions(NvttCompressionOptions * compressionOptions)
120 {
121 delete compressionOptions;
122 }
123
nvttSetCompressionOptionsFormat(NvttCompressionOptions * compressionOptions,NvttFormat format)124 void nvttSetCompressionOptionsFormat(NvttCompressionOptions * compressionOptions, NvttFormat format)
125 {
126 compressionOptions->setFormat((nvtt::Format)format);
127 }
128
nvttSetCompressionOptionsQuality(NvttCompressionOptions * compressionOptions,NvttQuality quality)129 void nvttSetCompressionOptionsQuality(NvttCompressionOptions * compressionOptions, NvttQuality quality)
130 {
131 compressionOptions->setQuality((nvtt::Quality)quality);
132 }
133
nvttSetCompressionOptionsColorWeights(NvttCompressionOptions * compressionOptions,float red,float green,float blue,float alpha)134 void nvttSetCompressionOptionsColorWeights(NvttCompressionOptions * compressionOptions, float red, float green, float blue, float alpha)
135 {
136 compressionOptions->setColorWeights(red, green, blue, alpha);
137 }
138
139 /*void nvttEnableCompressionOptionsCudaCompression(NvttCompressionOptions * compressionOptions, NvttBoolean enable)
140 {
141 compressionOptions->enableCudaCompression(enable != NVTT_False);
142 }*/
143
nvttSetCompressionOptionsPixelFormat(NvttCompressionOptions * compressionOptions,unsigned int bitcount,unsigned int rmask,unsigned int gmask,unsigned int bmask,unsigned int amask)144 void nvttSetCompressionOptionsPixelFormat(NvttCompressionOptions * compressionOptions, unsigned int bitcount, unsigned int rmask, unsigned int gmask, unsigned int bmask, unsigned int amask)
145 {
146 compressionOptions->setPixelFormat(bitcount, rmask, gmask, bmask, amask);
147 }
148
nvttSetCompressionOptionsQuantization(NvttCompressionOptions * compressionOptions,NvttBoolean colorDithering,NvttBoolean alphaDithering,NvttBoolean binaryAlpha,int alphaThreshold)149 void nvttSetCompressionOptionsQuantization(NvttCompressionOptions * compressionOptions, NvttBoolean colorDithering, NvttBoolean alphaDithering, NvttBoolean binaryAlpha, int alphaThreshold)
150 {
151 compressionOptions->setQuantization(colorDithering != NVTT_False, alphaDithering != NVTT_False, binaryAlpha != NVTT_False, alphaThreshold);
152 }
153
154
155 // OutputOptions class.
nvttCreateOutputOptions()156 NvttOutputOptions * nvttCreateOutputOptions()
157 {
158 return new nvtt::OutputOptions();
159 }
160
nvttDestroyOutputOptions(NvttOutputOptions * outputOptions)161 void nvttDestroyOutputOptions(NvttOutputOptions * outputOptions)
162 {
163 delete outputOptions;
164 }
165
nvttSetOutputOptionsFileName(NvttOutputOptions * outputOptions,const char * fileName)166 void nvttSetOutputOptionsFileName(NvttOutputOptions * outputOptions, const char * fileName)
167 {
168 outputOptions->setFileName(fileName);
169 }
170
nvttSetOutputOptionsOutputHeader(NvttOutputOptions * outputOptions,NvttBoolean b)171 void nvttSetOutputOptionsOutputHeader(NvttOutputOptions * outputOptions, NvttBoolean b)
172 {
173 outputOptions->setOutputHeader(b != NVTT_False);
174 }
175 /*
176 void nvttSetOutputOptionsErrorHandler(NvttOutputOptions * outputOptions, nvttErrorHandler errorHandler)
177 {
178 outputOptions->setErrorHandler(errorHandler);
179 }
180
181 void nvttSetOutputOptionsOutputHandler(NvttOutputOptions * outputOptions, nvttOutputHandler outputHandler, nvttImageHandler imageHandler)
182 {
183 }
184 */
185
186
187 // Compressor class.
nvttCompress(const NvttCompressor * compressor,const NvttInputOptions * inputOptions,const NvttCompressionOptions * compressionOptions,const NvttOutputOptions * outputOptions)188 NvttBoolean nvttCompress(const NvttCompressor * compressor, const NvttInputOptions * inputOptions, const NvttCompressionOptions * compressionOptions, const NvttOutputOptions * outputOptions)
189 {
190 return (NvttBoolean)compressor->process(*inputOptions, *compressionOptions, *outputOptions);
191 }
192
nvttEstimateSize(const NvttCompressor * compressor,const NvttInputOptions * inputOptions,const NvttCompressionOptions * compressionOptions)193 int nvttEstimateSize(const NvttCompressor * compressor, const NvttInputOptions * inputOptions, const NvttCompressionOptions * compressionOptions)
194 {
195 return compressor->estimateSize(*inputOptions, *compressionOptions);
196 }
197
198
199 // Global functions.
nvttErrorString(NvttError e)200 const char * nvttErrorString(NvttError e)
201 {
202 return nvtt::errorString((nvtt::Error)e);
203 }
204
nvttVersion()205 unsigned int nvttVersion()
206 {
207 return nvtt::version();
208 }
209