22 #ifndef FREEIMAGEPLUS_H
23 #define FREEIMAGEPLUS_H
28 #include "FreeImage.h"
33 #if defined(FREEIMAGE_LIB)
37 #if defined(_WIN32) || defined(__WIN32__)
38 #define WIN32_LEAN_AND_MEAN
39 #define FIP_CALLCONV __stdcall
47 #define FIP_API __declspec(dllexport)
49 #define FIP_API __declspec(dllimport)
53 #if defined(__GNUC__) && ((__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
54 #ifndef GCC_HASCLASSVISIBILITY
55 #define GCC_HASCLASSVISIBILITY
59 #if defined(GCC_HASCLASSVISIBILITY)
60 #define FIP_API __attribute__ ((visibility("default")))
64 #endif // WIN32 / !WIN32
65 #endif // FREEIMAGE_LIB
81 virtual BOOL isValid()
const = 0;
119 fipImage(FREE_IMAGE_TYPE image_type = FIT_BITMAP, WORD width = 0, WORD height = 0, WORD bpp = 0);
126 BOOL setSize(FREE_IMAGE_TYPE image_type, WORD width, WORD height, WORD bpp,
unsigned red_mask = 0,
unsigned green_mask = 0,
unsigned blue_mask = 0);
128 virtual void clear();
163 BOOL copySubImage(
fipImage& dst,
int left,
int top,
int right,
int bottom)
const;
178 BOOL pasteSubImage(
fipImage& src,
int left,
int top,
int alpha = 256);
190 BOOL crop(
int left,
int top,
int right,
int bottom);
206 BOOL load(
const char* lpszPathName,
int flag = 0);
212 BOOL loadU(
const wchar_t* lpszPathName,
int flag = 0);
222 BOOL loadFromHandle(FreeImageIO *io, fi_handle handle,
int flag = 0);
231 BOOL loadFromMemory(
fipMemoryIO& memIO,
int flag = 0);
240 BOOL save(
const char* lpszPathName,
int flag = 0)
const;
246 BOOL saveU(
const wchar_t* lpszPathName,
int flag = 0)
const;
257 BOOL saveToHandle(FREE_IMAGE_FORMAT fif, FreeImageIO *io, fi_handle handle,
int flag = 0)
const;
267 BOOL saveToMemory(FREE_IMAGE_FORMAT fif,
fipMemoryIO& memIO,
int flag = 0)
const;
280 FREE_IMAGE_TYPE getImageType()
const;
286 WORD getWidth()
const;
292 WORD getHeight()
const;
298 WORD getScanWidth()
const;
312 operator FIBITMAP*() {
336 LONG getImageSize()
const;
343 WORD getBitsPerPixel()
const;
350 WORD getLine()
const;
356 double getHorizontalResolution()
const;
362 double getVerticalResolution()
const;
368 void setHorizontalResolution(
double value);
374 void setVerticalResolution(
double value);
390 WORD getPaletteSize()
const;
396 WORD getColorsUsed()
const;
402 FREE_IMAGE_COLOR_TYPE getColorType()
const;
408 BOOL isGrayscale()
const;
422 BYTE* accessPixels()
const;
429 BYTE* getScanLine(WORD scanline)
const;
439 BOOL getPixelIndex(
unsigned x,
unsigned y, BYTE *value)
const;
449 BOOL getPixelColor(
unsigned x,
unsigned y,
RGBQUAD *value)
const;
459 BOOL setPixelIndex(
unsigned x,
unsigned y, BYTE *value);
469 BOOL setPixelColor(
unsigned x,
unsigned y,
RGBQUAD *value);
484 BOOL convertToType(FREE_IMAGE_TYPE image_type, BOOL scale_linear = TRUE);
492 BOOL threshold(BYTE T);
500 BOOL dither(FREE_IMAGE_DITHER algorithm);
507 BOOL convertTo4Bits();
514 BOOL convertTo8Bits();
522 BOOL convertToGrayscale();
531 BOOL colorQuantize(FREE_IMAGE_QUANTIZE algorithm);
538 BOOL convertTo16Bits555();
545 BOOL convertTo16Bits565();
552 BOOL convertTo24Bits();
559 BOOL convertTo32Bits();
566 BOOL convertToRGBF();
576 BOOL toneMapping(FREE_IMAGE_TMO tmo,
double first_param = 0,
double second_param = 0);
587 BOOL isTransparent()
const;
594 unsigned getTransparencyCount()
const;
601 BYTE* getTransparencyTable()
const;
607 void setTransparencyTable(BYTE *table,
int count);
613 BOOL hasFileBkColor()
const;
623 BOOL getFileBkColor(
RGBQUAD *bkcolor)
const;
633 BOOL setFileBkColor(
RGBQUAD *bkcolor);
644 BOOL getChannel(
fipImage& image, FREE_IMAGE_COLOR_CHANNEL channel)
const;
653 BOOL setChannel(
fipImage& image, FREE_IMAGE_COLOR_CHANNEL channel);
688 BOOL rotateEx(
double angle,
double x_shift,
double y_shift,
double x_origin,
double y_origin, BOOL use_mask);
696 BOOL rotate(
double angle);
702 BOOL flipHorizontal();
733 BOOL adjustCurve(BYTE *LUT, FREE_IMAGE_COLOR_CHANNEL channel);
741 BOOL adjustGamma(
double gamma);
750 BOOL adjustBrightness(
double percentage);
759 BOOL adjustContrast(
double percentage);
771 BOOL getHistogram(DWORD *histo, FREE_IMAGE_COLOR_CHANNEL channel = FICC_BLACK)
const;
785 BOOL rescale(WORD new_width, WORD new_height, FREE_IMAGE_FILTER filter);
794 BOOL makeThumbnail(WORD max_size, BOOL convert = TRUE);
807 _bHasChanged = bStatus;
827 unsigned getMetadataCount(FREE_IMAGE_MDMODEL model)
const;
836 BOOL getMetadata(FREE_IMAGE_MDMODEL model,
const char *key,
fipTag& tag)
const;
856 BOOL setMetadata(FREE_IMAGE_MDMODEL model,
const char *key,
fipTag& tag);
863 BOOL replace(FIBITMAP *new_dib);
888 fipWinImage(FREE_IMAGE_TYPE image_type = FIT_BITMAP, WORD width = 0, WORD height = 0, WORD bpp = 0);
895 virtual void clear();
926 HANDLE copyToHandle()
const;
934 BOOL copyFromHandle(HANDLE hMem);
940 BOOL copyFromBitmap(HBITMAP hbmp);
951 BOOL copyToClipboard(HWND hWndNewOwner)
const;
957 BOOL pasteFromClipboard();
967 BOOL captureWindow(HWND hWndApplicationWindow, HWND hWndSelectedWindow);
982 void draw(HDC hDC, RECT& rcDest)
const {
983 drawEx(hDC, rcDest, FALSE, NULL, NULL);
1003 void drawEx(HDC hDC, RECT& rcDest, BOOL useFileBkg = FALSE,
RGBQUAD *appBkColor = NULL, FIBITMAP *bg = NULL)
const;
1013 void setToneMappingOperator(FREE_IMAGE_TMO tmo,
double first_param = 0,
double second_param = 0);
1022 void getToneMappingOperator(FREE_IMAGE_TMO *tmo,
double *first_param,
double *second_param)
const;
1065 fipMemoryIO(BYTE *data = NULL, DWORD size_in_bytes = 0);
1080 FREE_IMAGE_FORMAT getFileType()
const;
1086 operator FIMEMORY*() {
1099 FIBITMAP* load(FREE_IMAGE_FORMAT fif,
int flags = 0)
const;
1108 BOOL save(FREE_IMAGE_FORMAT fif, FIBITMAP *dib,
int flags = 0);
1117 unsigned read(
void *buffer,
unsigned size,
unsigned count)
const;
1126 unsigned write(
const void *buffer,
unsigned size,
unsigned count);
1136 BOOL seek(
long offset,
int origin);
1143 BOOL acquire(BYTE **data, DWORD *size_in_bytes);
1194 BOOL open(
const char* lpszPathName, BOOL create_new, BOOL read_only,
int flags = 0);
1211 BOOL close(
int flags = 0);
1217 int getPageCount()
const;
1232 void insertPage(
int page,
fipImage& image);
1239 void deletePage(
int page);
1248 BOOL movePage(
int target,
int source);
1267 FIBITMAP* lockPage(
int page);
1275 void unlockPage(
fipImage& image, BOOL changed);
1285 BOOL getLockedPageNumbers(
int *pages,
int *count)
const;
1322 BOOL setKeyValue(
const char *key,
const char *value);
1343 fipTag& operator=(FITAG *tag);
1364 const char *getKey()
const;
1369 const char *getDescription()
const;
1379 FREE_IMAGE_MDTYPE getType()
const;
1384 DWORD getCount()
const;
1389 DWORD getLength()
const;
1394 const void *getValue()
const;
1400 BOOL setKey(
const char *key);
1406 BOOL setDescription(
const char *description);
1412 BOOL setID(WORD
id);
1418 BOOL setType(FREE_IMAGE_MDTYPE type);
1424 BOOL setCount(DWORD count);
1430 BOOL setLength(DWORD length);
1436 BOOL setValue(
const void *value);
1445 const char* toString(FREE_IMAGE_MDMODEL model,
char *Make = NULL)
const;
1501 BOOL findFirstMetadata(FREE_IMAGE_MDMODEL model,
fipImage& image,
fipTag& tag);
1509 BOOL findNextMetadata(
fipTag& tag);
1513 #endif // FREEIMAGEPLUS_H
Multi-page file stream.
Definition: FreeImagePlus.h:1161
Definition: FreeImage.h:173
Memory handle.
Definition: FreeImagePlus.h:1049
fipImage & operator=(const fipImage &src)
Copy constructor.
BOOL _bMemoryCache
TRUE when using a memory cache, FALSE otherwise.
Definition: FreeImagePlus.h:1167
Abstract base class for all objects used by the library.
Definition: FreeImagePlus.h:76
FREE_IMAGE_TMO _tmo
tone mapping operator
Definition: FreeImagePlus.h:1032
double _tmo_param_1
first tone mapping algorithm parameter
Definition: FreeImagePlus.h:1034
BOOL _bHasChanged
TRUE whenever the display need to be refreshed.
Definition: FreeImagePlus.h:106
FIBITMAP * _display_dib
DIB used for display (this allow to display non-standard bitmaps)
Definition: FreeImagePlus.h:1028
BOOL _bDeleteMe
remember to delete _display_dib
Definition: FreeImagePlus.h:1030
FIMULTIBITMAP * _mpage
Pointer to a multi-page file stream.
Definition: FreeImagePlus.h:1165
A class designed for MS Windows (TM) platforms.
Definition: FreeImagePlus.h:883
virtual void clear()
Destroy image data.
BOOL isModified()
Get the image status.
Definition: FreeImagePlus.h:815
double _tmo_param_2
second tone mapping algorithm parameter
Definition: FreeImagePlus.h:1036
void draw(HDC hDC, RECT &rcDest) const
Draw (stretch) the image on a HDC, using StretchDIBits.
Definition: FreeImagePlus.h:982
A class used to manage all photo related images and all image types used by the library.
Definition: FreeImagePlus.h:100
FITAG * _tag
Pointer to a FreeImage tag.
Definition: FreeImagePlus.h:1299
FIBITMAP * _dib
DIB data.
Definition: FreeImagePlus.h:104
virtual BOOL isValid() const =0
Returns TRUE if the object is allocated, FALSE otherwise.
void setModified(BOOL bStatus=TRUE)
Set the image status as 'modified'.
Definition: FreeImagePlus.h:806
FIMEMORY * _hmem
Pointer to a memory stream.
Definition: FreeImagePlus.h:1053
FreeImage Tag.
Definition: FreeImagePlus.h:1295
BOOL isValid() const
Returns TRUE if the image is allocated, FALSE otherwise.
Definition: FreeImage.h:218