1 /* 2 3 Boost Software License - Version 1.0 - August 17th, 2003 4 5 Permission is hereby granted, free of charge, to any person or organization 6 obtaining a copy of the software and accompanying documentation covered by 7 this license (the "Software") to use, reproduce, display, distribute, 8 execute, and transmit the Software, and to prepare derivative works of the 9 Software, and to permit third-parties to whom the Software is furnished to 10 do so, all subject to the following: 11 12 The copyright notices in the Software and this entire statement, including 13 the above license grant, this restriction and the following disclaimer, 14 must be included in all copies of the Software, in whole or in part, and 15 all derivative works of the Software, unless such copies or derivative 16 works are solely in the form of machine-executable object code generated by 17 a source language processor. 18 19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25 DEALINGS IN THE SOFTWARE. 26 27 */ 28 module derelict.devil.ilu; 29 30 private { 31 import derelict.util.loader; 32 import derelict.util.system; 33 import derelict.devil.il; 34 35 static if(Derelict_OS_Windows) 36 enum libNames = "ilu.dll"; 37 else static if (Derelict_OS_Mac) 38 enum libNames = "libILU.dylib"; 39 else static if(Derelict_OS_Posix) 40 enum libNames = "libILU.so"; 41 else 42 static assert(0, "Need to implement ILU libNames for this operating system."); 43 } 44 45 enum : ILenum { 46 ILU_VERSION_1_8_0 = 1, 47 ILU_VERSION = 180, 48 49 ILU_FILTER = 0x2600, 50 ILU_NEAREST = 0x2601, 51 ILU_LINEAR = 0x2602, 52 ILU_BILINEAR = 0x2603, 53 ILU_SCALE_BOX = 0x2604, 54 ILU_SCALE_TRIANGLE = 0x2605, 55 ILU_SCALE_BELL = 0x2606, 56 ILU_SCALE_BSPLINE = 0x2607, 57 ILU_SCALE_LANCZOS3 = 0x2608, 58 ILU_SCALE_MITCHELL = 0x2609, 59 60 ILU_INVALID_ENUM = 0x0501, 61 ILU_OUT_OF_MEMORY = 0x0502, 62 ILU_INTERNAL_ERROR = 0x0504, 63 ILU_INVALID_VALUE = 0x0505, 64 ILU_ILLEGAL_OPERATION = 0x0506, 65 ILU_INVALID_PARAM = 0x0509, 66 67 ILU_PLACEMENT = 0x0700, 68 ILU_LOWER_LEFT = 0x0701, 69 ILU_LOWER_RIGHT = 0x0702, 70 ILU_UPPER_LEFT = 0x0703, 71 ILU_UPPER_RIGHT = 0x0704, 72 ILU_CENTER = 0x0705, 73 ILU_CONVOLUTION_MATRIX = 0x0710, 74 75 ILU_VERSION_NUM = IL_VERSION_NUM, 76 ILU_VENDOR = IL_VENDOR, 77 78 ILU_ENGLISH = 0x800, 79 ILU_ARABIC = 0x801, 80 ILU_DUTCH = 0x802, 81 ILU_JAPANESE = 0x803, 82 ILU_SPANISH = 0x804, 83 ILU_GERMAN = 0x0805, 84 ILU_FRENCH = 0x0806, 85 ILU_ITALIAN = 0x0807, 86 } 87 88 struct ILinfo { 89 ILuint Id; 90 ILubyte* Data; 91 ILuint Width; 92 ILuint Height; 93 ILuint Depth; 94 ILubyte Bpp; 95 ILuint SizeOfData; 96 ILenum Format; 97 ILenum Type; 98 ILenum Origin; 99 ILubyte* Palette; 100 ILenum PalType; 101 ILuint PalSize; 102 ILenum CubeFlags; 103 ILuint NumNext; 104 ILuint NumMips; 105 ILuint NumLayers; 106 } 107 108 struct ILpointf { 109 ILfloat x, y; 110 } 111 112 struct ILpointi { 113 ILint x, y; 114 } 115 116 extern(System) @nogc nothrow { 117 alias da_iluAlienify = ILboolean function(); 118 alias da_iluBlurAvg = ILboolean function(ILuint); 119 alias da_iluBlurGaussian = ILboolean function(ILuint); 120 alias da_iluBuildMipmaps = ILboolean function(); 121 alias da_iluColoursUsed = ILuint function(); 122 alias da_iluCompareImage = ILboolean function(ILuint); 123 alias da_iluContrast = ILboolean function(ILfloat); 124 alias da_iluCrop = ILboolean function(ILuint, ILuint, ILuint, ILuint, ILuint, ILuint); 125 alias da_iluDeleteImage = void function(ILuint); 126 alias da_iluEdgeDetectE = ILboolean function(); 127 alias da_iluEdgeDetectP = ILboolean function(); 128 alias da_iluEdgeDetectS = ILboolean function(); 129 alias da_iluEmboss = ILboolean function(); 130 alias da_iluEnlargeCanvas = ILboolean function(ILuint, ILuint, ILuint); 131 alias da_iluEnlargeImage = ILboolean function(ILfloat, ILfloat, ILfloat); 132 alias da_iluEqualize = ILboolean function(); 133 alias da_iluEqualize2 = ILboolean function(); 134 alias da_iluErrorString = ILconst_string function(ILenum); 135 alias da_iluConvolution = ILboolean function(ILint*, ILint, ILint); 136 alias da_iluFlipImage = ILboolean function(); 137 alias da_iluGammaCorrect = ILboolean function(ILfloat); 138 alias da_iluGenImage = ILuint function(); 139 alias da_iluGetImageInfo = void function(ILinfo*); 140 alias da_iluGetInteger = ILint function(ILenum); 141 alias da_iluGetIntegerv = void function(ILenum, ILint*); 142 alias da_iluGetString = ILstring function(ILenum); 143 alias da_iluImageParameter = void function(ILenum, ILenum); 144 alias da_iluInit = void function(); 145 alias da_iluInvertAlpha = ILboolean function(); 146 alias da_iluLoadImage = ILuint function(ILconst_string); 147 alias da_iluMirror = ILboolean function(); 148 alias da_iluNegative = ILboolean function(); 149 alias da_iluNoisify = ILboolean function(ILclampf); 150 alias da_iluPixelize = ILboolean function(ILuint); 151 alias da_iluRegionfv = void function(ILpointf*, ILuint); 152 alias da_iluRegioniv = void function(ILpointi*, ILuint); 153 alias da_iluReplaceColour = ILboolean function(ILubyte, ILubyte, ILubyte, ILfloat); 154 alias da_iluRotate = ILboolean function(ILfloat); 155 alias da_iluRotate3D = ILboolean function(ILfloat, ILfloat, ILfloat, ILfloat); 156 alias da_iluSaturate1f = ILboolean function(ILfloat); 157 alias da_iluSaturate4f = ILboolean function(ILfloat, ILfloat, ILfloat, ILfloat); 158 alias da_iluScale = ILboolean function(ILuint, ILuint, ILuint); 159 alias da_iluScaleAlpha = ILboolean function(ILfloat); 160 alias da_iluScaleColours = ILboolean function(ILfloat, ILfloat, ILfloat); 161 alias da_iluSepia = ILboolean function(); 162 alias da_iluSetLanguage = ILboolean function(ILenum); 163 alias da_iluSharpen = ILboolean function(ILfloat, ILuint); 164 alias da_iluSwapColours = ILboolean function(); 165 alias da_iluWave = ILboolean function(ILfloat); 166 } 167 168 __gshared { 169 da_iluAlienify iluAlienify; 170 da_iluBlurAvg iluBlurAvg; 171 da_iluBlurGaussian iluBlurGaussian; 172 da_iluBuildMipmaps iluBuildMipmaps; 173 da_iluColoursUsed iluColoursUsed; 174 da_iluCompareImage iluCompareImage; 175 da_iluContrast iluContrast; 176 da_iluCrop iluCrop; 177 da_iluDeleteImage iluDeleteImage; 178 da_iluEdgeDetectE iluEdgeDetectE; 179 da_iluEdgeDetectP iluEdgeDetectP; 180 da_iluEdgeDetectS iluEdgeDetectS; 181 da_iluEmboss iluEmboss; 182 da_iluEnlargeCanvas iluEnlargeCanvas; 183 da_iluEnlargeImage iluEnlargeImage; 184 da_iluEqualize iluEqualize; 185 da_iluEqualize2 iluEqualize2; 186 da_iluErrorString iluErrorString; 187 da_iluConvolution iluConvolution; 188 da_iluFlipImage iluFlipImage; 189 da_iluGammaCorrect iluGammaCorrect; 190 da_iluGenImage iluGenImage; 191 da_iluGetImageInfo iluGetImageInfo; 192 da_iluGetInteger iluGetInteger; 193 da_iluGetIntegerv iluGetIntegerv; 194 da_iluGetString iluGetString; 195 da_iluImageParameter iluImageParameter; 196 da_iluInit iluInit; 197 da_iluInvertAlpha iluInvertAlpha; 198 da_iluLoadImage iluLoadImage; 199 da_iluMirror iluMirror; 200 da_iluNegative iluNegative; 201 da_iluNoisify iluNoisify; 202 da_iluPixelize iluPixelize; 203 da_iluRegionfv iluRegionfv; 204 da_iluRegioniv iluRegioniv; 205 da_iluReplaceColour iluReplaceColour; 206 da_iluRotate iluRotate; 207 da_iluRotate3D iluRotate3D; 208 da_iluSaturate1f iluSaturate1f; 209 da_iluSaturate4f iluSaturate4f; 210 da_iluScale iluScale; 211 da_iluScaleAlpha iluScaleAlpha; 212 da_iluScaleColours iluScaleColours; 213 da_iluSepia iluSepia; 214 da_iluSetLanguage iluSetLanguage; 215 da_iluSharpen iluSharpen; 216 da_iluSwapColours iluSwapColours; 217 da_iluWave iluWave; 218 219 alias iluColoursUsed iluColorsUsed; 220 alias iluSwapColours iluSwapColors; 221 alias iluReplaceColour iluReplaceColor; 222 alias iluScaleColours iluScaleColors; 223 } 224 225 class DerelictILULoader : SharedLibLoader 226 { 227 public this() { 228 super(libNames); 229 } 230 231 protected override void loadSymbols() { 232 bindFunc(cast(void**)&iluAlienify, "iluAlienify"); 233 bindFunc(cast(void**)&iluBlurAvg, "iluBlurAvg"); 234 bindFunc(cast(void**)&iluBlurGaussian, "iluBlurGaussian"); 235 bindFunc(cast(void**)&iluBuildMipmaps, "iluBuildMipmaps"); 236 bindFunc(cast(void**)&iluColoursUsed, "iluColoursUsed"); 237 bindFunc(cast(void**)&iluCompareImage, "iluCompareImage"); 238 bindFunc(cast(void**)&iluContrast, "iluContrast"); 239 bindFunc(cast(void**)&iluCrop, "iluCrop"); 240 bindFunc(cast(void**)&iluDeleteImage, "iluDeleteImage"); 241 bindFunc(cast(void**)&iluEdgeDetectE, "iluEdgeDetectE"); 242 bindFunc(cast(void**)&iluEdgeDetectP, "iluEdgeDetectP"); 243 bindFunc(cast(void**)&iluEdgeDetectS, "iluEdgeDetectS"); 244 bindFunc(cast(void**)&iluEmboss, "iluEmboss"); 245 bindFunc(cast(void**)&iluEnlargeCanvas, "iluEnlargeCanvas"); 246 bindFunc(cast(void**)&iluEnlargeImage, "iluEnlargeImage"); 247 bindFunc(cast(void**)&iluEqualize, "iluEqualize"); 248 bindFunc(cast(void**)&iluEqualize2, "iluEqualize2"); 249 bindFunc(cast(void**)&iluErrorString, "iluErrorString"); 250 bindFunc(cast(void**)&iluConvolution, "iluConvolution"); 251 bindFunc(cast(void**)&iluFlipImage, "iluFlipImage"); 252 bindFunc(cast(void**)&iluGammaCorrect, "iluGammaCorrect"); 253 bindFunc(cast(void**)&iluGenImage, "iluGenImage"); 254 bindFunc(cast(void**)&iluGetImageInfo, "iluGetImageInfo"); 255 bindFunc(cast(void**)&iluGetInteger, "iluGetInteger"); 256 bindFunc(cast(void**)&iluGetIntegerv, "iluGetIntegerv"); 257 bindFunc(cast(void**)&iluGetString, "iluGetString"); 258 bindFunc(cast(void**)&iluImageParameter, "iluImageParameter"); 259 bindFunc(cast(void**)&iluInit, "iluInit"); 260 bindFunc(cast(void**)&iluInvertAlpha, "iluInvertAlpha"); 261 bindFunc(cast(void**)&iluLoadImage, "iluLoadImage"); 262 bindFunc(cast(void**)&iluMirror, "iluMirror"); 263 bindFunc(cast(void**)&iluNegative, "iluNegative"); 264 bindFunc(cast(void**)&iluNoisify, "iluNoisify"); 265 bindFunc(cast(void**)&iluPixelize, "iluPixelize"); 266 bindFunc(cast(void**)&iluRegionfv, "iluRegionfv"); 267 bindFunc(cast(void**)&iluRegioniv, "iluRegioniv"); 268 bindFunc(cast(void**)&iluReplaceColour, "iluReplaceColour"); 269 bindFunc(cast(void**)&iluRotate, "iluRotate"); 270 bindFunc(cast(void**)&iluRotate3D, "iluRotate3D"); 271 bindFunc(cast(void**)&iluSaturate1f, "iluSaturate1f"); 272 bindFunc(cast(void**)&iluSaturate4f, "iluSaturate4f"); 273 bindFunc(cast(void**)&iluScale, "iluScale"); 274 bindFunc(cast(void**)&iluScaleAlpha, "iluScaleAlpha"); 275 bindFunc(cast(void**)&iluScaleColours, "iluScaleColours"); 276 bindFunc(cast(void**)&iluSepia, "iluSepia"); 277 bindFunc(cast(void**)&iluSetLanguage, "iluSetLanguage"); 278 bindFunc(cast(void**)&iluSharpen, "iluSharpen"); 279 bindFunc(cast(void**)&iluSwapColours, "iluSwapColours"); 280 bindFunc(cast(void**)&iluWave, "iluWave"); 281 } 282 } 283 284 __gshared DerelictILULoader DerelictILU; 285 286 shared static this() { 287 DerelictILU = new DerelictILULoader(); 288 }