diff options
Diffstat (limited to 'include/im_plus.h')
-rw-r--r-- | include/im_plus.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/include/im_plus.h b/include/im_plus.h new file mode 100644 index 0000000..0aabd1f --- /dev/null +++ b/include/im_plus.h @@ -0,0 +1,73 @@ +/** \file + * \brief C++ Wrapper for File Access + * + * See Copyright Notice in im_lib.h + */ + +#ifndef __IM_PLUS_H +#define __IM_PLUS_H + + +/** \brief C++ Wrapper for the Image File Structure + * + * \par + * Usage is just like the C API. Open and New are replaced by equivalent constructors. \n + * Close is replaced by the destructor. Error checking is done by the Error() member. \n + * Open and New errors are cheked using the Failed() member. + * \ingroup file */ +class imImageFile +{ + imFile* ifile; + int error; + + imImageFile() {}; + +public: + + imImageFile(const char* file_name) + { this->ifile = imFileOpen(file_name, &this->error); } + + imImageFile(const char* file_name, const char* format) + { this->ifile = imFileNew(file_name, format, &this->error); } + + ~imImageFile() + { if (this->ifile) imFileClose(this->ifile); } + + int Failed() + { return this->ifile == 0; } + + int Error() + { return this->error; } + + void SetAttribute(const char* attrib, int data_type, int count, const void* data) + { imFileSetAttribute(this->ifile, attrib, data_type, count, data); } + + const void* GetAttribute(const char* attrib, int *data_type, int *count) + { return imFileGetAttribute(this->ifile, attrib, data_type, count); } + + void GetInfo(char* format, char* compression, int *image_count) + { imFileGetInfo(this->ifile, format, compression, image_count); } + + void ReadImageInfo(int index, int *width, int *height, int *color_mode, int *data_type) + { this->error = imFileReadImageInfo(this->ifile, index, width, height, color_mode, data_type); } + + void GetPalette(long* palette, int *palette_count) + { imFileGetPalette(this->ifile, palette, palette_count); } + + void ReadImageData(void* data, int convert2bitmap, int color_mode_flags) + { this->error = imFileReadImageData(this->ifile, data, convert2bitmap, color_mode_flags); } + + void SetInfo(const char* compression) + { imFileSetInfo(this->ifile, compression); } + + void SetPalette(long* palette, int palette_count) + { imFileSetPalette(this->ifile, palette, palette_count); } + + void WriteImageInfo(int width, int height, int color_mode, int data_type) + { this->error = imFileWriteImageInfo(this->ifile, width, height, color_mode, data_type); } + + void WriteImageData(void* data) + { this->error = imFileWriteImageData(this->ifile, data); } +}; + +#endif |