Commit 346023e4 authored by Jakob Weiss's avatar Jakob Weiss

Updated DevIL to 1.8.0

* Added more supported file formats to DevilImageReader and DevilImageWriter
* Added more supported formats for datacontainerinspectorwidget.cpp export to file
parent 211311c1
......@@ -446,7 +446,7 @@ namespace campvis {
else if (handle.getData<ImageData>() || handle.getData<RenderData>()) {
QString dialogCaption = "Export " + name + " as Image";
QString directory = tr("");
const QString fileFilter = tr("*.png;;PNG images (*.png)");
const QString fileFilter = tr("Image (*.png *.bmp *.jpg *.tif);;RAW Image (*.raw);;DirectDraw Surface (*.dds);;C-style header (*.h);;Radiance High Dynamic (*.hdr)");
QString filename = QFileDialog::getSaveFileName(this, dialogCaption, directory, fileFilter);
......@@ -503,10 +503,13 @@ namespace campvis {
ilEnable(IL_FILE_OVERWRITE);
ilResetWrite();
ILboolean success = ilSaveImage(filename.c_str());
ilDeleteImages(1, &img);
if (!success) {
LERRORC("CAMPVis.application.DataContainerInspectorWidget", "Could not save image to file: " << ilGetError());
ILenum error = ilGetError();
LERRORC("CAMPVis.application.DataContainerInspectorWidget", "Could not save image to file: " << error << ": " << iluErrorString(error));
}
#else
return;
......
%module DevIL
%{
#include "il.h"
#include "ilu.h"
#include "ilut.h"
//#include "ilu_region.h"
%}
%include "il.h"
%include "ilu.h"
%include "ilut.h"
//%include "ilu_region.h"
IL_INCLUDE_PATH="/usr/include"
IL_LIB_PATH="/usr/lib"
LUA_INCLUDE_PATH="/usr/include/lua5.1"
LUA_LIB_PATH="/usr/lib"
OSX=no
echo "Building the lua binding!"
export SWIG_FEATURES="-I$IL_INCLUDE_PATH"
swig -lua DevIL.i
if [ $? -ne 0 ] ; then
echo "swig Failed to build the lua interface"
exit 1
fi
compile() {
gcc luadevil.c "$1" -o luadevil "-L$LUA_LIB_PATH" "-I$LUA_INCLUDE_PATH" "-I$IL_LIB_PATH" -lIL -lILU -lILUT -llua5.1 &>/dev/null
err=$?
if [ "$OSX" = "no" ] ; then
gcc -shared "$1" -o DevIL.so "-L$LUA_LIB_PATH" "-I$LUA_INCLUDE_PATH" "-I$IL_LIB_PATH" -lIL -lILU -lILUT &>/dev/null
else
gcc -bundle -undefined dynamic_lookup "$1" -o DevIL.so "-L$LUA_LIB_PATH" "-I$LUA_INCLUDE_PATH" "-I$IL_LIB_PATH" -lIL -lILU -lILUT &>/dev/null
fi
return $err
}
compile DevIL_wrap.c
if [ $? -ne 0 ] ; then
echo 'Failed compilation'
echo 'On some platform the file malloc.h is not present and produces a compilation error'
echo -n 'it can be removed safely, try [y/n] ? '
while read i ; do
if [ "$i" = "y" ] ; then
sed 's/\#include\ \<malloc\.h\>//' < DevIL_wrap.c > DevIL_wrap.mod.c
compile "DevIL_wrap.mod.c"
if [ $? -ne 0 ] ; then
echo 'still failing...'
exit 2
fi
exit 0
elif [ "$i" = "n" ] ; then
echo 'ok, failing...'
exit 3
else
echo 'Unknown command [y/n] ? '
fi
done
fi
echo "ok!"
exit 0
#! /bin/bash
IL_INCLUDE_PATH="/usr/local/include"
IL_LIB_PATH="/usr/local/lib"
PYTHON_INCLUDE_PATH="/usr/include/python2.5"
swig "-I$IL_INCLUDE_PATH" -python -interface DevIL DevIL.i
if [ $? -ne 0 ] ; then
echo Error while building the swig interface
exit 1
fi
gcc -shared "-I$IL_INCLUDE_PATH" "-I$PYTHON_INCLUDE_PATH" "-L$IL_LIB_PATH" -lIL -lILU -lILUT DevIL_wrap.c -o DevIL.so
if [ $? -ne 0 ] ; then
echo Error while compiling the python module
fi
echo "DevIL.py and DevIL.so are ready"
/* include/IL/config.h. Generated by configure. */
/* include/IL/config.h.in. Generated from configure.in by autoheader. */
#ifndef __CONFIG_H__
#define __CONFIG_H__
#define IL_USE_PRAGMA_LIBS
// Supported image formats (IL)
// #define IL_NO_BLP
// #define IL_NO_BMP
// #define IL_NO_CUT
// #define IL_NO_CHEAD
// #define IL_NO_DCX
// #define IL_NO_DDS
// #define IL_NO_DICOM
// #define IL_NO_DOOM
// #define IL_NO_EXR
// #define IL_NO_FITS
// #define IL_NO_FTX
// #define IL_NO_GIF
// #define IL_NO_HDR
// #define IL_NO_ICO
// #define IL_NO_ICNS
// #define IL_NO_IWI
// #define IL_NO_JP2
// #define IL_NO_JPG
// #define IL_NO_LCMS
// #define IL_NO_LIF
// #define IL_NO_MDL
// #define IL_NO_MNG
// #define IL_NO_PCD
// #define IL_NO_PCX
// #define IL_NO_PIC
// #define IL_NO_PIX
// #define IL_NO_PNG
// #define IL_NO_PNM
// #define IL_NO_PSD
// #define IL_NO_PSP
// #define IL_NO_PXR
// #define IL_NO_RAW
// #define IL_NO_ROT
// #define IL_NO_SGI
// #define IL_NO_SUN
// #define IL_NO_TGA
// #define IL_NO_TIF
// #define IL_NO_TPL
// #define IL_NO_WAL
// #define IL_NO_WDP
// #define IL_NO_XPM
#define IL_USE_JPEGLIB_UNMODIFIED 1
//#define IL_USE_DXTC_NVIDIA
#define IL_USE_DXTC_SQUISH
/* Supported api (ilut) */
//
// sorry just
// cant get this one to work under windows
// have disabled for the now
//
// will look at it some more later
//
// Kriss
//
#undef ILUT_USE_ALLEGRO
#undef ILUT_USE_DIRECTX8
//#define ILUT_USE_DIRECTX9
//#define ILUT_USE_DIRECTX10
//#define ILUT_USE_OPENGL
//#define ILUT_USE_SDL
//#define ILUT_USE_WIN32
/* Define to 1 if you have the <dlfcn.h> header file. */
//#define HAVE_DLFCN_H 1
/* Define to 1 if you have the <inttypes.h> header file. */
//#define HAVE_INTTYPES_H 1
/* Define to 1 if you have the <memory.h> header file. */
//#define HAVE_MEMORY_H 1
/* Define to 1 if you have the <stdint.h> header file. */
//#define HAVE_STDINT_H 1
/* Define to 1 if you have the <stdlib.h> header file. */
//#define HAVE_STDLIB_H 1
/* Define to 1 if you have the <strings.h> header file. */
//#define HAVE_STRINGS_H 1
/* Define to 1 if you have the <string.h> header file. */
//#define HAVE_STRING_H 1
/* Define to 1 if you have the <sys/stat.h> header file. */
//#define HAVE_SYS_STAT_H 1
/* Define to 1 if you have the <sys/types.h> header file. */
//#define HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the <unistd.h> header file. */
//#define HAVE_UNISTD_H 1
/* Name of package */
#define IL_PACKAGE "DevIL"
/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT ""
/* Define to the full name of this package. */
#define IL_PACKAGE_NAME ""
/* Define to the full name and version of this package. */
#define IL_PACKAGE_STRING ""
/* Define to the one symbol short name of this package. */
#define IL_PACKAGE_TARNAME ""
/* Define to the version of this package. */
#define IL_PACKAGE_VERSION ""
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1
/* Version number of package */
//#define IL_VERSION "1.7.3"
/* Define to 1 if your processor stores words with the most significant byte
first (like Motorola and SPARC, unlike Intel and VAX). */
/* #undef WORDS_BIGENDIAN */
/* If using Mac OS X uncomment this line */
/* #include "macconfig.h" */
/* Define to 1 if the X Window System is missing or not being used. */
/* #undef X_DISPLAY_MISSING */
#endif /* __CONFIG_H__ */
#ifndef DEVIL_CPP_WRAPPER_HPP
#define DEVIL_CPP_WRAPPER_HPP
#include <IL/ilut.h> // Probably only have to #include this one
class ilImage
{
public:
ilImage();
ilImage(ILconst_string);
ilImage(const ilImage &);
virtual ~ilImage();
ILboolean Load(ILconst_string);
ILboolean Load(ILconst_string, ILenum);
ILboolean Save(ILconst_string);
ILboolean Save(ILconst_string, ILenum);
// ImageLib functions
ILboolean ActiveImage(ILuint);
ILboolean ActiveLayer(ILuint);
ILboolean ActiveMipmap(ILuint);
ILboolean Clear(void);
void ClearColour(ILclampf, ILclampf, ILclampf, ILclampf);
ILboolean Convert(ILenum);
ILboolean Copy(ILuint);
ILboolean Default(void);
ILboolean Flip(void);
ILboolean SwapColours(void);
ILboolean Resize(ILuint, ILuint, ILuint);
ILboolean TexImage(ILuint, ILuint, ILuint, ILubyte, ILenum, ILenum, void*);
// Image handling
void Bind(void) const;
void Bind(ILuint);
void Close(void) { this->Delete(); }
void Delete(void);
void iGenBind();
ILenum PaletteAlphaIndex();
// Image characteristics
ILuint Width(void);
ILuint Height(void);
ILuint Depth(void);
ILubyte Bpp(void);
ILubyte Bitpp(void);
ILenum PaletteType(void);
ILenum Format(void);
ILenum Type(void);
ILuint NumImages(void);
ILuint NumMipmaps(void);
ILuint GetId(void) const;
ILenum GetOrigin(void);
ILubyte *GetData(void);
ILubyte *GetPalette(void);
// Rendering
ILuint BindImage(void);
ILuint BindImage(ILenum);
// Operators
ilImage& operator = (ILuint);
ilImage& operator = (const ilImage &);
protected:
ILuint Id;
private:
static int ilStartUp();
static ILboolean ilStartedUp;
};
// ensure that init is called exactly once
int ilImage::ilStartUp()
{
ilInit();
iluInit();
//ilutInit();
return true;
}
ILboolean ilImage::ilStartedUp = ilStartUp();
class ilFilters
{
public:
static ILboolean Alienify(ilImage &);
static ILboolean BlurAvg(ilImage &, ILuint Iter);
static ILboolean BlurGaussian(ilImage &, ILuint Iter);
static ILboolean Contrast(ilImage &, ILfloat Contrast);
static ILboolean EdgeDetectE(ilImage &);
static ILboolean EdgeDetectP(ilImage &);
static ILboolean EdgeDetectS(ilImage &);
static ILboolean Emboss(ilImage &);
static ILboolean Gamma(ilImage &, ILfloat Gamma);
static ILboolean Negative(ilImage &);
static ILboolean Noisify(ilImage &, ILubyte Factor);
static ILboolean Pixelize(ilImage &, ILuint PixSize);
static ILboolean Saturate(ilImage &, ILfloat Saturation);
static ILboolean Saturate(ilImage &, ILfloat r, ILfloat g, ILfloat b, ILfloat Saturation);
static ILboolean ScaleColours(ilImage &, ILfloat r, ILfloat g, ILfloat b);
static ILboolean Sharpen(ilImage &, ILfloat Factor, ILuint Iter);
};
#ifdef ILUT_USE_OPENGL
class ilOgl
{
public:
static void Init(void);
static GLuint BindTex(ilImage &);
static ILboolean Upload(ilImage &, ILuint);
static GLuint Mipmap(ilImage &);
static ILboolean Screen(void);
static ILboolean Screenie(void);
};
#endif//ILUT_USE_OPENGL
#ifdef ILUT_USE_ALLEGRO
class ilAlleg
{
public:
static void Init(void);
static BITMAP *Convert(ilImage &);
};
#endif//ILUT_USE_ALLEGRO
#ifdef ILUT_USE_WIN32
class ilWin32
{
public:
static void Init(void);
static HBITMAP Convert(ilImage &);
static ILboolean GetClipboard(ilImage &);
static void GetInfo(ilImage &, BITMAPINFO *Info);
static ILubyte *GetPadData(ilImage &);
static HPALETTE GetPal(ilImage &);
static ILboolean GetResource(ilImage &, HINSTANCE hInst, ILint ID, char *ResourceType);
static ILboolean GetResource(ilImage &, HINSTANCE hInst, ILint ID, char *ResourceType, ILenum Type);
static ILboolean SetClipboard(ilImage &);
};
#endif//ILUT_USE_WIN32
class ilValidate
{
public:
static ILboolean Valid(ILenum, ILconst_string);
static ILboolean Valid(ILenum, FILE *);
static ILboolean Valid(ILenum, void *, ILuint);
protected:
private:
};
class ilState
{
public:
static ILboolean Disable(ILenum);
static ILboolean Enable(ILenum);
static void Get(ILenum, ILboolean &);
static void Get(ILenum, ILint &);
static ILboolean GetBool(ILenum);
static ILint GetInt(ILenum);
static const char *GetString(ILenum);
static ILboolean IsDisabled(ILenum);
static ILboolean IsEnabled(ILenum);
static ILboolean Origin(ILenum);
static void Pop(void);
static void Push(ILuint);
protected:
private:
};
class ilError
{
public:
static void Check(void (*Callback)(const char*));
static void Check(void (*Callback)(ILenum));
static ILenum Get(void);
static const char *String(void);
static const char *String(ILenum);
protected:
private:
};
//
// ILIMAGE
//
ilImage::ilImage()
{
this->Id = 0;
//this->iStartUp(); // This was commented out, but it needs to be somewhere...
this->iGenBind();
return;
}
ilImage::ilImage(ILconst_string FileName)
{
this->Id = 0;
//this->iStartUp(); // This was commented out, but it needs to be somewhere...
this->iGenBind();
ilLoadImage(FileName);
return;
}
ilImage::ilImage(const ilImage &Image)
{
this->Id = 0;
// this->iStartUp();
this->iGenBind();
*this = Image;
return;
}
ilImage::~ilImage()
{
if (this->Id)
ilDeleteImages(1, &this->Id);
this->Id = 0;
return;
}
ILboolean ilImage::Load(ILconst_string FileName)
{
this->iGenBind();
return ilLoadImage(FileName);
}
ILboolean ilImage::Load(ILconst_string FileName, ILenum Type)
{
this->iGenBind();
return ilLoad(Type, FileName);
}
ILboolean ilImage::Save(ILconst_string FileName)
{
this->iGenBind();
return ilSaveImage(FileName);
}
ILboolean ilImage::Save(ILconst_string FileName, ILenum Type)
{
this->iGenBind();
return ilSave(Type, FileName);
}
//
// ImageLib functions
//
ILboolean ilImage::ActiveImage(ILuint Number)
{
if (this->Id) {
this->Bind();
return ilActiveImage(Number);
}
return IL_FALSE;
}
ILboolean ilImage::ActiveLayer(ILuint Number)
{
if (this->Id) {
this->Bind();
return ilActiveLayer(Number);
}
return IL_FALSE;
}
ILboolean ilImage::ActiveMipmap(ILuint Number)
{
if (this->Id) {
this->Bind();
return ilActiveMipmap(Number);
}
return IL_FALSE;
}
ILboolean ilImage::Clear()
{
if (this->Id) {
this->Bind();
return ilClearImage();
}
return IL_FALSE;
}
void ilImage::ClearColour(ILclampf Red, ILclampf Green, ILclampf Blue, ILclampf Alpha)
{
ilClearColour(Red, Green, Blue, Alpha);
return;
}
ILboolean ilImage::Convert(ILenum NewFormat)
{
if (this->Id) {
this->Bind();
return ilConvertImage(NewFormat, IL_UNSIGNED_BYTE);
}
return IL_FALSE;
}
ILboolean ilImage::Copy(ILuint Src)
{
if (this->Id) {
this->Bind();
return ilCopyImage(Src);
}
return IL_FALSE;
}
ILboolean ilImage::Default()
{
if (this->Id) {
this->Bind();
return ilDefaultImage();
}
return IL_FALSE;
}
ILboolean ilImage::Flip()
{
if (this->Id) {
this->Bind();
return iluFlipImage();
}
return IL_FALSE;
}
ILboolean ilImage::SwapColours()
{
if (this->Id) {
this->Bind();
return iluSwapColours();
}
return IL_FALSE;
}
ILboolean ilImage::Resize(ILuint Width, ILuint Height, ILuint Depth)
{
if (this->Id) {
this->Bind();
return iluScale(Width, Height, Depth);
}
return IL_FALSE;
}
ILboolean ilImage::TexImage(ILuint Width, ILuint Height, ILuint Depth, ILubyte Bpp, ILenum Format, ILenum Type, void *Data)
{
if (this->Id) {
this->Bind();
return ilTexImage(Width, Height, Depth, Bpp, Format, Type, Data);
}
return IL_FALSE;
}
//
// Image handling
//
void ilImage::Bind() const
{
if (this->Id)
ilBindImage(this->Id);
return;
}
// Note: Behaviour may be changed!
void ilImage::Bind(ILuint Image)
{
if (this->Id == Image)
return;
this->Delete(); // Should we delete it?
this->Id = Image;
ilBindImage(this->Id);
return;
}
void ilImage::Delete()
{
if (this->Id == 0)
return;
ilDeleteImages(1, &this->Id);
this->Id = 0;
return;
}
//
// Image characteristics
//
ILuint ilImage::Width()
{
if (this->Id) {
this->Bind();
return ilGetInteger(IL_IMAGE_WIDTH);
}
return 0;
}
ILuint ilImage::Height()
{
if (this->Id) {
this->Bind();
return ilGetInteger(IL_IMAGE_HEIGHT);
}
return 0;
}
ILuint ilImage::Depth()
{
if (this->Id) {
this->Bind();
return ilGetInteger(IL_IMAGE_DEPTH);
}
return 0;
}
ILubyte ilImage::Bpp()
{
if (this->Id) {
this->Bind();
return ilGetInteger(IL_IMAGE_BYTES_PER_PIXEL);
}
return 0;
}
ILubyte ilImage::Bitpp()
{
if (this->Id) {
this->Bind();
return ilGetInteger(IL_IMAGE_BITS_PER_PIXEL);
}
return 0;