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
84 virtual BOOL isValid()
const = 0;
124 fipImage(FREE_IMAGE_TYPE image_type = FIT_BITMAP,
unsigned width = 0,
unsigned height = 0,
unsigned bpp = 0);
131 BOOL setSize(FREE_IMAGE_TYPE image_type,
unsigned width,
unsigned height,
unsigned bpp,
unsigned red_mask = 0,
unsigned green_mask = 0,
unsigned blue_mask = 0);
133 virtual void clear();
168 BOOL copySubImage(
fipImage& dst,
int left,
int top,
int right,
int bottom)
const;
183 BOOL pasteSubImage(
fipImage& src,
int left,
int top,
int alpha = 256);
195 BOOL crop(
int left,
int top,
int right,
int bottom);
208 static FREE_IMAGE_FORMAT identifyFIF(
const char* lpszPathName);
214 static FREE_IMAGE_FORMAT identifyFIFU(
const wchar_t* lpszPathName);
223 static FREE_IMAGE_FORMAT identifyFIFFromHandle(FreeImageIO *io, fi_handle handle);
231 static FREE_IMAGE_FORMAT identifyFIFFromMemory(FIMEMORY *hmem);
247 BOOL load(
const char* lpszPathName,
int flag = 0);
253 BOOL loadU(
const wchar_t* lpszPathName,
int flag = 0);
263 BOOL loadFromHandle(FreeImageIO *io, fi_handle handle,
int flag = 0);
272 BOOL loadFromMemory(
fipMemoryIO& memIO,
int flag = 0);
281 BOOL save(
const char* lpszPathName,
int flag = 0)
const;
287 BOOL saveU(
const wchar_t* lpszPathName,
int flag = 0)
const;
298 BOOL
saveToHandle(FREE_IMAGE_FORMAT fif, FreeImageIO *io, fi_handle handle,
int flag = 0)
const;
321 FREE_IMAGE_TYPE getImageType()
const;
327 unsigned getWidth()
const;
333 unsigned getHeight()
const;
339 unsigned getScanWidth()
const;
353 operator FIBITMAP*() {
377 LONG getImageSize()
const;
384 unsigned getBitsPerPixel()
const;
391 unsigned getLine()
const;
397 double getHorizontalResolution()
const;
403 double getVerticalResolution()
const;
409 void setHorizontalResolution(
double value);
415 void setVerticalResolution(
double value);
431 unsigned getPaletteSize()
const;
437 unsigned getColorsUsed()
const;
443 FREE_IMAGE_COLOR_TYPE getColorType()
const;
449 BOOL isGrayscale()
const;
460 BOOL getThumbnail(
fipImage& image)
const;
467 BOOL setThumbnail(
const fipImage& image);
474 BOOL hasThumbnail()
const;
481 BOOL clearThumbnail();
496 BYTE* accessPixels()
const;
503 BYTE* getScanLine(
unsigned scanline)
const;
513 BOOL getPixelIndex(
unsigned x,
unsigned y, BYTE *value)
const;
523 BOOL getPixelColor(
unsigned x,
unsigned y,
RGBQUAD *value)
const;
533 BOOL setPixelIndex(
unsigned x,
unsigned y, BYTE *value);
543 BOOL setPixelColor(
unsigned x,
unsigned y,
RGBQUAD *value);
558 BOOL convertToType(FREE_IMAGE_TYPE image_type, BOOL scale_linear = TRUE);
566 BOOL threshold(BYTE T);
574 BOOL dither(FREE_IMAGE_DITHER algorithm);
581 BOOL convertTo4Bits();
588 BOOL convertTo8Bits();
596 BOOL convertToGrayscale();
605 BOOL colorQuantize(FREE_IMAGE_QUANTIZE algorithm);
612 BOOL convertTo16Bits555();
619 BOOL convertTo16Bits565();
626 BOOL convertTo24Bits();
633 BOOL convertTo32Bits();
640 BOOL convertToFloat();
647 BOOL convertToRGBF();
654 BOOL convertToUINT16();
661 BOOL convertToRGB16();
673 BOOL toneMapping(FREE_IMAGE_TMO tmo,
double first_param = 0,
double second_param = 0,
double third_param = 1,
double fourth_param = 0);
684 BOOL isTransparent()
const;
691 unsigned getTransparencyCount()
const;
698 BYTE* getTransparencyTable()
const;
704 void setTransparencyTable(BYTE *table,
int count);
710 BOOL hasFileBkColor()
const;
720 BOOL getFileBkColor(
RGBQUAD *bkcolor)
const;
730 BOOL setFileBkColor(
RGBQUAD *bkcolor);
741 BOOL getChannel(
fipImage& image, FREE_IMAGE_COLOR_CHANNEL channel)
const;
750 BOOL setChannel(
fipImage& image, FREE_IMAGE_COLOR_CHANNEL channel);
785 BOOL rotateEx(
double angle,
double x_shift,
double y_shift,
double x_origin,
double y_origin, BOOL use_mask);
794 BOOL rotate(
double angle,
const void *bkcolor = NULL);
800 BOOL flipHorizontal();
831 BOOL adjustCurve(BYTE *LUT, FREE_IMAGE_COLOR_CHANNEL channel);
839 BOOL adjustGamma(
double gamma);
848 BOOL adjustBrightness(
double percentage);
857 BOOL adjustContrast(
double percentage);
869 BOOL adjustBrightnessContrastGamma(
double brightness,
double contrast,
double gamma);
881 BOOL getHistogram(DWORD *histo, FREE_IMAGE_COLOR_CHANNEL channel = FICC_BLACK)
const;
895 BOOL rescale(
unsigned new_width,
unsigned new_height, FREE_IMAGE_FILTER filter);
904 BOOL makeThumbnail(
unsigned max_size, BOOL convert = TRUE);
917 _bHasChanged = bStatus;
937 unsigned getMetadataCount(FREE_IMAGE_MDMODEL model)
const;
946 BOOL getMetadata(FREE_IMAGE_MDMODEL model,
const char *key,
fipTag& tag)
const;
966 BOOL setMetadata(FREE_IMAGE_MDMODEL model,
const char *key,
fipTag& tag);
973 BOOL replace(FIBITMAP *new_dib);
998 fipWinImage(FREE_IMAGE_TYPE image_type = FIT_BITMAP,
unsigned width = 0,
unsigned height = 0,
unsigned bpp = 0);
1005 virtual void clear();
1036 HANDLE copyToHandle()
const;
1044 BOOL copyFromHandle(HANDLE hMem);
1050 BOOL copyFromBitmap(HBITMAP hbmp);
1061 BOOL copyToClipboard(HWND hWndNewOwner)
const;
1067 BOOL pasteFromClipboard();
1077 BOOL captureWindow(HWND hWndApplicationWindow, HWND hWndSelectedWindow);
1092 void draw(HDC hDC, RECT& rcDest)
const {
1093 drawEx(hDC, rcDest, FALSE, NULL, NULL);
1113 void drawEx(HDC hDC, RECT& rcDest, BOOL useFileBkg = FALSE,
RGBQUAD *appBkColor = NULL, FIBITMAP *bg = NULL)
const;
1125 void setToneMappingOperator(FREE_IMAGE_TMO tmo,
double first_param = 0,
double second_param = 0,
double third_param = 1,
double fourth_param = 0);
1136 void getToneMappingOperator(FREE_IMAGE_TMO *tmo,
double *first_param,
double *second_param,
double *third_param,
double *fourth_param)
const;
1183 fipMemoryIO(BYTE *data = NULL, DWORD size_in_bytes = 0);
1204 FREE_IMAGE_FORMAT getFileType()
const;
1210 operator FIMEMORY*() {
1223 FIBITMAP* load(FREE_IMAGE_FORMAT fif,
int flags = 0)
const;
1231 FIMULTIBITMAP* loadMultiPage(FREE_IMAGE_FORMAT fif,
int flags = 0)
const;
1240 BOOL save(FREE_IMAGE_FORMAT fif, FIBITMAP *dib,
int flags = 0);
1249 BOOL saveMultiPage(FREE_IMAGE_FORMAT fif, FIMULTIBITMAP *bitmap,
int flags = 0);
1258 unsigned read(
void *buffer,
unsigned size,
unsigned count)
const;
1267 unsigned write(
const void *buffer,
unsigned size,
unsigned count);
1277 BOOL seek(
long offset,
int origin);
1284 BOOL acquire(BYTE **data, DWORD *size_in_bytes);
1330 operator FIMULTIBITMAP*() {
1343 BOOL open(
const char* lpszPathName, BOOL create_new, BOOL read_only,
int flags = 0);
1362 BOOL open(FreeImageIO *io, fi_handle handle,
int flags = 0);
1370 BOOL close(
int flags = 0);
1381 BOOL saveToHandle(FREE_IMAGE_FORMAT fif, FreeImageIO *io, fi_handle handle,
int flags = 0)
const;
1391 BOOL saveToMemory(FREE_IMAGE_FORMAT fif,
fipMemoryIO& memIO,
int flags = 0)
const;
1397 int getPageCount()
const;
1412 void insertPage(
int page,
fipImage& image);
1419 void deletePage(
int page);
1428 BOOL movePage(
int target,
int source);
1447 FIBITMAP* lockPage(
int page);
1455 void unlockPage(
fipImage& image, BOOL changed);
1465 BOOL getLockedPageNumbers(
int *pages,
int *count)
const;
1502 BOOL setKeyValue(
const char *key,
const char *value);
1523 fipTag& operator=(FITAG *tag);
1544 const char *getKey()
const;
1549 const char *getDescription()
const;
1559 FREE_IMAGE_MDTYPE getType()
const;
1564 DWORD getCount()
const;
1569 DWORD getLength()
const;
1574 const void *getValue()
const;
1580 BOOL setKey(
const char *key);
1586 BOOL setDescription(
const char *description);
1592 BOOL setID(WORD
id);
1598 BOOL setType(FREE_IMAGE_MDTYPE type);
1604 BOOL setCount(DWORD count);
1610 BOOL setLength(DWORD length);
1616 BOOL setValue(
const void *value);
1625 const char* toString(FREE_IMAGE_MDMODEL model,
char *Make = NULL)
const;
1681 BOOL findFirstMetadata(FREE_IMAGE_MDMODEL model,
fipImage& image,
fipTag& tag);
1689 BOOL findNextMetadata(
fipTag& tag);
1693 #endif // FREEIMAGEPLUS_H
Multi-page file stream.
Definition: FreeImagePlus.h:1302
FREE_IMAGE_FORMAT _fif
Original (or last saved) fif format if available, FIF_UNKNOWN otherwise.
Definition: FreeImagePlus.h:109
Definition: FreeImage.h:165
Memory handle.
Definition: FreeImagePlus.h:1167
double _tmo_param_4
fourth tone mapping algorithm parameter
Definition: FreeImagePlus.h:1154
fipImage & operator=(const fipImage &src)
Copy constructor.
BOOL _bMemoryCache
TRUE when using a memory cache, FALSE otherwise.
Definition: FreeImagePlus.h:1308
Abstract base class for all objects used by the library.
Definition: FreeImagePlus.h:76
FREE_IMAGE_TMO _tmo
tone mapping operator
Definition: FreeImagePlus.h:1146
double _tmo_param_1
first tone mapping algorithm parameter
Definition: FreeImagePlus.h:1148
BOOL _bHasChanged
TRUE whenever the display need to be refreshed.
Definition: FreeImagePlus.h:111
BOOL saveToMemory(FREE_IMAGE_FORMAT fif, fipMemoryIO &memIO, int flags=0) const
Saves a multi-page image using the specified memory stream and an optional flag.
FIBITMAP * _display_dib
DIB used for display (this allow to display non-standard bitmaps)
Definition: FreeImagePlus.h:1142
BOOL _bDeleteMe
remember to delete _display_dib
Definition: FreeImagePlus.h:1144
FIMULTIBITMAP * _mpage
Pointer to a multi-page file stream.
Definition: FreeImagePlus.h:1306
A class designed for MS Windows (TM) platforms.
Definition: FreeImagePlus.h:993
virtual void clear()
Destroy image data.
BOOL isModified()
Get the image status.
Definition: FreeImagePlus.h:925
virtual ~fipObject()
Destructor.
Definition: FreeImagePlus.h:80
double _tmo_param_2
second tone mapping algorithm parameter
Definition: FreeImagePlus.h:1150
void draw(HDC hDC, RECT &rcDest) const
Draw (stretch) the image on a HDC, using StretchDIBits.
Definition: FreeImagePlus.h:1092
A class used to manage all photo related images and all image types used by the library.
Definition: FreeImagePlus.h:103
FITAG * _tag
Pointer to a FreeImage tag.
Definition: FreeImagePlus.h:1479
FIBITMAP * _dib
DIB data.
Definition: FreeImagePlus.h:107
virtual BOOL isValid() const =0
Returns TRUE if the object is allocated, FALSE otherwise.
double _tmo_param_3
third tone mapping algorithm parameter
Definition: FreeImagePlus.h:1152
void setModified(BOOL bStatus=TRUE)
Set the image status as 'modified'.
Definition: FreeImagePlus.h:916
BOOL saveToHandle(FREE_IMAGE_FORMAT fif, FreeImageIO *io, fi_handle handle, int flags=0) const
Saves a multi-page image using the specified FreeImageIO struct and fi_handle, and an optional flag...
FIMEMORY * _hmem
Pointer to a memory stream.
Definition: FreeImagePlus.h:1171
FreeImage Tag.
Definition: FreeImagePlus.h:1475
BOOL isValid() const
Returns TRUE if the image is allocated, FALSE otherwise.
Definition: FreeImage.h:210