VTFLib
A C and C++ API that, with a few simple functions, can open and save .vtf and .vmt files.
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
VTFWrapper.h
1 /*
2  * VTFLib
3  * Copyright (C) 2005-2010 Neil Jedrzejewski & Ryan Gregg
4 
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later
9  * version.
10  */
11 
12 #ifndef VTFLIB_VTFWRAPPER_H
13 #define VTFLIB_VTFWRAPPER_H
14 
15 #include "stdafx.h"
16 
17 #ifdef __cplusplus
18 extern "C" {
19 #endif
20 
21 //
22 // Memory managment routines.
23 //
24 
25 VTFLIB_API vlBool vlImageIsBound();
26 VTFLIB_API vlBool vlBindImage(vlUInt uiImage);
27 
28 VTFLIB_API vlBool vlCreateImage(vlUInt *uiImage);
29 VTFLIB_API vlVoid vlDeleteImage(vlUInt uiImage);
30 
31 //
32 // Library routines. (Basically class wrappers.)
33 //
34 
35 VTFLIB_API vlVoid vlImageCreateDefaultCreateStructure(SVTFCreateOptions *VTFCreateOptions);
36 
37 VTFLIB_API vlBool vlImageCreate(vlUInt uiWidth, vlUInt uiHeight, vlUInt uiFrames, vlUInt uiFaces, vlUInt uiSlices, VTFImageFormat ImageFormat, vlBool bThumbnail, vlBool bMipmaps, vlBool bNullImageData);
38 VTFLIB_API vlBool vlImageCreateSingle(vlUInt uiWidth, vlUInt uiHeight, vlByte *lpImageDataRGBA8888, SVTFCreateOptions *VTFCreateOptions);
39 VTFLIB_API vlBool vlImageCreateMultiple(vlUInt uiWidth, vlUInt uiHeight, vlUInt uiFrames, vlUInt uiFaces, vlUInt uiSlices, vlByte **lpImageDataRGBA8888, SVTFCreateOptions *VTFCreateOptions);
40 VTFLIB_API vlVoid vlImageDestroy();
41 
42 VTFLIB_API vlBool vlImageIsLoaded();
43 
44 VTFLIB_API vlBool vlImageLoad(const vlChar *cFileName, vlBool bHeaderOnly);
45 VTFLIB_API vlBool vlImageLoadLump(const vlVoid *lpData, vlSize uiBufferSize, vlBool bHeaderOnly);
46 VTFLIB_API vlBool vlImageLoadProc(vlVoid *pUserData, vlBool bHeaderOnly);
47 
48 VTFLIB_API vlBool vlImageSave(const vlChar *cFileName);
49 VTFLIB_API vlBool vlImageSaveLump(vlVoid *lpData, vlSize uiBufferSize, vlSize *uiSize);
50 VTFLIB_API vlBool vlImageSaveProc(vlVoid *pUserData);
51 
52 //
53 // Image routines.
54 //
55 
56 VTFLIB_API vlUInt vlImageGetHasImage();
57 
58 VTFLIB_API vlUInt vlImageGetMajorVersion();
59 VTFLIB_API vlUInt vlImageGetMinorVersion();
60 VTFLIB_API vlUInt vlImageGetSize();
61 
62 VTFLIB_API vlUInt vlImageGetWidth();
63 VTFLIB_API vlUInt vlImageGetHeight();
64 VTFLIB_API vlUInt vlImageGetDepth();
65 
66 VTFLIB_API vlUInt vlImageGetFrameCount();
67 VTFLIB_API vlUInt vlImageGetFaceCount();
68 VTFLIB_API vlUInt vlImageGetMipmapCount();
69 
70 VTFLIB_API vlUInt vlImageGetStartFrame();
71 VTFLIB_API vlVoid vlImageSetStartFrame(vlUInt uiStartFrame);
72 
73 VTFLIB_API vlUInt vlImageGetFlags();
74 VTFLIB_API vlVoid vlImageSetFlags(vlUInt uiFlags);
75 
76 VTFLIB_API vlBool vlImageGetFlag(VTFImageFlag ImageFlag);
77 VTFLIB_API vlVoid vlImageSetFlag(VTFImageFlag ImageFlag, vlBool bState);
78 
79 VTFLIB_API vlSingle vlImageGetBumpmapScale();
80 VTFLIB_API vlVoid vlImageSetBumpmapScale(vlSingle sBumpmapScale);
81 
82 VTFLIB_API vlVoid vlImageGetReflectivity(vlSingle *sX, vlSingle *sY, vlSingle *sZ);
83 VTFLIB_API vlVoid vlImageSetReflectivity(vlSingle sX, vlSingle sY, vlSingle sZ);
84 
85 VTFLIB_API VTFImageFormat vlImageGetFormat();
86 
87 VTFLIB_API vlByte *vlImageGetData(vlUInt uiFrame, vlUInt uiFace, vlUInt uiSlice, vlUInt uiMipmapLevel);
88 VTFLIB_API vlVoid vlImageSetData(vlUInt uiFrame, vlUInt uiFace, vlUInt uiSlice, vlUInt uiMipmapLevel, vlByte *lpData);
89 
90 //
91 // Thumbnail routines.
92 //
93 
94 VTFLIB_API vlBool vlImageGetHasThumbnail();
95 
96 VTFLIB_API vlUInt vlImageGetThumbnailWidth();
97 VTFLIB_API vlUInt vlImageGetThumbnailHeight();
98 
99 VTFLIB_API VTFImageFormat vlImageGetThumbnailFormat();
100 
101 VTFLIB_API vlByte *vlImageGetThumbnailData();
102 VTFLIB_API vlVoid vlImageSetThumbnailData(vlByte *lpData);
103 
104 //
105 // Resource routines.
106 //
107 
108 VTFLIB_API vlBool vlImageGetSupportsResources();
109 
110 VTFLIB_API vlUInt vlImageGetResourceCount();
111 VTFLIB_API vlUInt vlImageGetResourceType(vlUInt uiIndex);
112 VTFLIB_API vlBool vlImageGetHasResource(vlUInt uiType);
113 
114 VTFLIB_API vlVoid *vlImageGetResourceData(vlUInt uiType, vlUInt *uiSize);
115 VTFLIB_API vlVoid *vlImageSetResourceData(vlUInt uiType, vlUInt uiSize, vlVoid *lpData);
116 
117 //
118 // Helper routines.
119 //
120 
121 VTFLIB_API vlBool vlImageGenerateMipmaps(vlUInt uiFace, vlUInt uiFrame, VTFMipmapFilter MipmapFilter, VTFSharpenFilter SharpenFilter);
122 VTFLIB_API vlBool vlImageGenerateAllMipmaps(VTFMipmapFilter MipmapFilter, VTFSharpenFilter SharpenFilter);
123 
124 VTFLIB_API vlBool vlImageGenerateThumbnail();
125 
126 VTFLIB_API vlBool vlImageGenerateNormalMap(vlUInt uiFrame, VTFKernelFilter KernelFilter, VTFHeightConversionMethod HeightConversionMethod, VTFNormalAlphaResult NormalAlphaResult);
127 VTFLIB_API vlBool vlImageGenerateAllNormalMaps(VTFKernelFilter KernelFilter, VTFHeightConversionMethod HeightConversionMethod, VTFNormalAlphaResult NormalAlphaResult);
128 
129 VTFLIB_API vlBool vlImageGenerateSphereMap();
130 
131 VTFLIB_API vlBool vlImageComputeReflectivity();
132 
133 //
134 // Conversion routines.
135 //
136 
137 VTFLIB_API SVTFImageFormatInfo const *vlImageGetImageFormatInfo(VTFImageFormat ImageFormat);
138 VTFLIB_API vlBool vlImageGetImageFormatInfoEx(VTFImageFormat ImageFormat, SVTFImageFormatInfo *VTFImageFormatInfo);
139 
140 VTFLIB_API vlUInt vlImageComputeImageSize(vlUInt uiWidth, vlUInt uiHeight, vlUInt uiDepth, vlUInt uiMipmaps, VTFImageFormat ImageFormat);
141 
142 VTFLIB_API vlUInt vlImageComputeMipmapCount(vlUInt uiWidth, vlUInt uiHeight, vlUInt uiDepth);
143 VTFLIB_API vlVoid vlImageComputeMipmapDimensions(vlUInt uiWidth, vlUInt uiHeight, vlUInt uiDepth, vlUInt uiMipmapLevel, vlUInt *uiMipmapWidth, vlUInt *uiMipmapHeight, vlUInt *uiMipmapDepth);
144 VTFLIB_API vlUInt vlImageComputeMipmapSize(vlUInt uiWidth, vlUInt uiHeight, vlUInt uiDepth, vlUInt uiMipmapLevel, VTFImageFormat ImageFormat);
145 
146 VTFLIB_API vlBool vlImageConvertToRGBA8888(vlByte *lpSource, vlByte *lpDest, vlUInt uiWidth, vlUInt uiHeight, VTFImageFormat SourceFormat);
147 VTFLIB_API vlBool vlImageConvertFromRGBA8888(vlByte *lpSource, vlByte *lpDest, vlUInt uiWidth, vlUInt uiHeight, VTFImageFormat DestFormat);
148 
149 VTFLIB_API vlBool vlImageConvert(vlByte *lpSource, vlByte *lpDest, vlUInt uiWidth, vlUInt uiHeight, VTFImageFormat SourceFormat, VTFImageFormat DestFormat);
150 
151 VTFLIB_API vlBool vlImageConvertToNormalMap(vlByte *lpSourceRGBA8888, vlByte *lpDestRGBA8888, vlUInt uiWidth, vlUInt uiHeight, VTFKernelFilter KernelFilter, VTFHeightConversionMethod HeightConversionMethod, VTFNormalAlphaResult NormalAlphaResult, vlByte bMinimumZ, vlSingle sScale, vlBool bWrap, vlBool bInvertX, vlBool bInvertY);
152 
153 VTFLIB_API vlBool vlImageResize(vlByte *lpSourceRGBA8888, vlByte *lpDestRGBA8888, vlUInt uiSourceWidth, vlUInt uiSourceHeight, vlUInt uiDestWidth, vlUInt uiDestHeight, VTFMipmapFilter ResizeFilter, VTFSharpenFilter SharpenFilter);
154 
155 VTFLIB_API vlVoid vlImageCorrectImageGamma(vlByte *lpImageDataRGBA8888, vlUInt uiWidth, vlUInt uiHeight, vlSingle sGammaCorrection);
156 VTFLIB_API vlVoid vlImageComputeImageReflectivity(vlByte *lpImageDataRGBA8888, vlUInt uiWidth, vlUInt uiHeight, vlSingle *sX, vlSingle *sY, vlSingle *sZ);
157 
158 VTFLIB_API vlVoid vlImageFlipImage(vlByte *lpImageDataRGBA8888, vlUInt uiWidth, vlUInt uiHeight);
159 VTFLIB_API vlVoid vlImageMirrorImage(vlByte *lpImageDataRGBA8888, vlUInt uiWidth, vlUInt uiHeight);
160 
161 #ifdef __cplusplus
162 }
163 #endif
164 
165 #endif
VTFImageFormat
Image data formats VTFLib supports.
Definition: VTFFormat.h:60
unsigned char vlByte
Single unsigned byte.
Definition: stdafx.h:52
VTFKernelFilter
Normal map creation kernel size indices.
Definition: VTFFormat.h:242
char vlChar
Single signed character.
Definition: stdafx.h:51
unsigned int vlUInt
Unsigned integer value.
Definition: stdafx.h:56
Application framework header plus VTFLib custom data types.
void vlVoid
Void value.
Definition: stdafx.h:61
VTF Creation options struct.
Definition: VTFFile.h:61
VTFMipmapFilter
MIP map reduction filter indices.
Definition: VTFFormat.h:184
VTFHeightConversionMethod
Normal map height conversion method indices.
Definition: VTFFormat.h:256
VTFImageFlag
VTF image header flags.
Definition: VTFFormat.h:125
VTFImageFormat info struct.
Definition: VTFFile.h:39
VTFSharpenFilter
MIP map sharpen filter indices.
Definition: VTFFormat.h:204
unsigned char vlBool
Boolean value 0/1.
Definition: stdafx.h:50
VTFNormalAlphaResult
Normal map alpha channel handling indices.
Definition: VTFFormat.h:273
float vlSingle
Floating point number.
Definition: stdafx.h:59