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);
215 BOOL createView(
fipImage& dynamicView,
unsigned left,
unsigned top,
unsigned right,
unsigned bottom);
228 static FREE_IMAGE_FORMAT identifyFIF(
const char* lpszPathName);
234 static FREE_IMAGE_FORMAT identifyFIFU(
const wchar_t* lpszPathName);
243 static FREE_IMAGE_FORMAT identifyFIFFromHandle(FreeImageIO *io, fi_handle handle);
251 static FREE_IMAGE_FORMAT identifyFIFFromMemory(FIMEMORY *hmem);
268 BOOL load(
const char* lpszPathName,
int flag = 0);
278 BOOL load(FREE_IMAGE_FORMAT fif,
const char* lpszPathName,
int flag = 0);
284 BOOL loadU(
const wchar_t* lpszPathName,
int flag = 0);
290 BOOL loadU(FREE_IMAGE_FORMAT fif,
const wchar_t* lpszPathName,
int flag = 0);
300 BOOL loadFromHandle(FreeImageIO *io, fi_handle handle,
int flag = 0);
309 BOOL loadFromMemory(
fipMemoryIO& memIO,
int flag = 0);
319 BOOL loadFromMemory(FREE_IMAGE_FORMAT fif,
fipMemoryIO& memIO,
int flag = 0);
329 BOOL save(
const char* lpszPathName,
int flag = 0);
339 BOOL save(FREE_IMAGE_FORMAT fif,
const char* lpszPathName,
int flag = 0);
345 BOOL saveU(
const wchar_t* lpszPathName,
int flag = 0);
351 BOOL saveU(FREE_IMAGE_FORMAT fif,
const wchar_t* lpszPathName,
int flag = 0);
362 BOOL
saveToHandle(FREE_IMAGE_FORMAT fif, FreeImageIO *io, fi_handle handle,
int flag = 0);
385 FREE_IMAGE_TYPE getImageType()
const;
390 FREE_IMAGE_FORMAT getFIF()
const;
396 unsigned getWidth()
const;
402 unsigned getHeight()
const;
408 unsigned getScanWidth()
const;
422 operator FIBITMAP*() {
446 unsigned getImageSize()
const;
452 unsigned getImageMemorySize()
const;
459 unsigned getBitsPerPixel()
const;
466 unsigned getLine()
const;
472 double getHorizontalResolution()
const;
478 double getVerticalResolution()
const;
484 void setHorizontalResolution(
double value);
490 void setVerticalResolution(
double value);
506 unsigned getPaletteSize()
const;
512 unsigned getColorsUsed()
const;
518 FREE_IMAGE_COLOR_TYPE getColorType()
const;
524 BOOL isGrayscale()
const;
535 BOOL getThumbnail(
fipImage& image)
const;
542 BOOL setThumbnail(
const fipImage& image);
549 BOOL hasThumbnail()
const;
556 BOOL clearThumbnail();
571 BYTE* accessPixels()
const;
578 BYTE* getScanLine(
unsigned scanline)
const;
588 BOOL getPixelIndex(
unsigned x,
unsigned y, BYTE *value)
const;
598 BOOL getPixelColor(
unsigned x,
unsigned y,
RGBQUAD *value)
const;
608 BOOL setPixelIndex(
unsigned x,
unsigned y, BYTE *value);
618 BOOL setPixelColor(
unsigned x,
unsigned y,
RGBQUAD *value);
633 BOOL convertToType(FREE_IMAGE_TYPE image_type, BOOL scale_linear = TRUE);
641 BOOL threshold(BYTE T);
649 BOOL dither(FREE_IMAGE_DITHER algorithm);
656 BOOL convertTo4Bits();
663 BOOL convertTo8Bits();
671 BOOL convertToGrayscale();
680 BOOL colorQuantize(FREE_IMAGE_QUANTIZE algorithm);
687 BOOL convertTo16Bits555();
694 BOOL convertTo16Bits565();
701 BOOL convertTo24Bits();
708 BOOL convertTo32Bits();
715 BOOL convertToFloat();
722 BOOL convertToRGBF();
729 BOOL convertToRGBAF();
736 BOOL convertToUINT16();
743 BOOL convertToRGB16();
750 BOOL convertToRGBA16();
762 BOOL toneMapping(FREE_IMAGE_TMO tmo,
double first_param = 0,
double second_param = 0,
double third_param = 1,
double fourth_param = 0);
773 BOOL isTransparent()
const;
780 unsigned getTransparencyCount()
const;
787 BYTE* getTransparencyTable()
const;
793 void setTransparencyTable(BYTE *table,
int count);
799 BOOL hasFileBkColor()
const;
809 BOOL getFileBkColor(
RGBQUAD *bkcolor)
const;
819 BOOL setFileBkColor(
RGBQUAD *bkcolor);
830 BOOL getChannel(
fipImage& image, FREE_IMAGE_COLOR_CHANNEL channel)
const;
839 BOOL setChannel(
fipImage& image, FREE_IMAGE_COLOR_CHANNEL channel);
874 BOOL rotateEx(
double angle,
double x_shift,
double y_shift,
double x_origin,
double y_origin, BOOL use_mask);
883 BOOL rotate(
double angle,
const void *bkcolor = NULL);
889 BOOL flipHorizontal();
920 BOOL adjustCurve(BYTE *LUT, FREE_IMAGE_COLOR_CHANNEL channel);
928 BOOL adjustGamma(
double gamma);
937 BOOL adjustBrightness(
double percentage);
946 BOOL adjustContrast(
double percentage);
958 BOOL adjustBrightnessContrastGamma(
double brightness,
double contrast,
double gamma);
970 BOOL getHistogram(DWORD *histo, FREE_IMAGE_COLOR_CHANNEL channel = FICC_BLACK)
const;
984 BOOL rescale(
unsigned new_width,
unsigned new_height, FREE_IMAGE_FILTER filter);
993 BOOL makeThumbnail(
unsigned max_size, BOOL convert = TRUE);
1006 _bHasChanged = bStatus;
1015 return _bHasChanged;
1026 unsigned getMetadataCount(FREE_IMAGE_MDMODEL model)
const;
1035 BOOL getMetadata(FREE_IMAGE_MDMODEL model,
const char *key,
fipTag& tag)
const;
1055 BOOL setMetadata(FREE_IMAGE_MDMODEL model,
const char *key,
fipTag& tag);
1060 void clearMetadata();
1066 BOOL replace(FIBITMAP *new_dib);
1091 fipWinImage(FREE_IMAGE_TYPE image_type = FIT_BITMAP,
unsigned width = 0,
unsigned height = 0,
unsigned bpp = 0);
1098 virtual void clear();
1129 HANDLE copyToHandle()
const;
1137 BOOL copyFromHandle(HANDLE hMem);
1143 BOOL copyFromBitmap(HBITMAP hbmp);
1154 BOOL copyToClipboard(HWND hWndNewOwner)
const;
1160 BOOL pasteFromClipboard();
1170 BOOL captureWindow(HWND hWndApplicationWindow, HWND hWndSelectedWindow);
1185 void draw(HDC hDC, RECT& rcDest)
const {
1186 drawEx(hDC, rcDest, FALSE, NULL, NULL);
1206 void drawEx(HDC hDC, RECT& rcDest, BOOL useFileBkg = FALSE,
RGBQUAD *appBkColor = NULL, FIBITMAP *bg = NULL)
const;
1218 void setToneMappingOperator(FREE_IMAGE_TMO tmo,
double first_param = 0,
double second_param = 0,
double third_param = 1,
double fourth_param = 0);
1229 void getToneMappingOperator(FREE_IMAGE_TMO *tmo,
double *first_param,
double *second_param,
double *third_param,
double *fourth_param)
const;
1276 fipMemoryIO(BYTE *data = NULL, DWORD size_in_bytes = 0);
1297 FREE_IMAGE_FORMAT getFileType()
const;
1303 operator FIMEMORY*() {
1316 FIBITMAP* load(FREE_IMAGE_FORMAT fif,
int flags = 0)
const;
1324 FIMULTIBITMAP* loadMultiPage(FREE_IMAGE_FORMAT fif,
int flags = 0)
const;
1333 BOOL save(FREE_IMAGE_FORMAT fif, FIBITMAP *dib,
int flags = 0);
1342 BOOL saveMultiPage(FREE_IMAGE_FORMAT fif, FIMULTIBITMAP *bitmap,
int flags = 0);
1351 unsigned read(
void *buffer,
unsigned size,
unsigned count)
const;
1360 unsigned write(
const void *buffer,
unsigned size,
unsigned count);
1370 BOOL seek(
long offset,
int origin);
1377 BOOL acquire(BYTE **data, DWORD *size_in_bytes);
1423 operator FIMULTIBITMAP*() {
1436 BOOL open(
const char* lpszPathName, BOOL create_new, BOOL read_only,
int flags = 0);
1455 BOOL open(FreeImageIO *io, fi_handle handle,
int flags = 0);
1463 BOOL close(
int flags = 0);
1474 BOOL saveToHandle(FREE_IMAGE_FORMAT fif, FreeImageIO *io, fi_handle handle,
int flags = 0)
const;
1484 BOOL saveToMemory(FREE_IMAGE_FORMAT fif,
fipMemoryIO& memIO,
int flags = 0)
const;
1490 int getPageCount()
const;
1505 void insertPage(
int page,
fipImage& image);
1512 void deletePage(
int page);
1521 BOOL movePage(
int target,
int source);
1540 FIBITMAP* lockPage(
int page);
1548 void unlockPage(
fipImage& image, BOOL changed);
1558 BOOL getLockedPageNumbers(
int *pages,
int *count)
const;
1595 BOOL setKeyValue(
const char *key,
const char *value);
1616 fipTag& operator=(FITAG *tag);
1637 const char *getKey()
const;
1642 const char *getDescription()
const;
1652 FREE_IMAGE_MDTYPE getType()
const;
1657 DWORD getCount()
const;
1662 DWORD getLength()
const;
1667 const void *getValue()
const;
1673 BOOL setKey(
const char *key);
1679 BOOL setDescription(
const char *description);
1685 BOOL setID(WORD
id);
1691 BOOL setType(FREE_IMAGE_MDTYPE type);
1697 BOOL setCount(DWORD count);
1703 BOOL setLength(DWORD length);
1709 BOOL setValue(
const void *value);
1718 const char* toString(FREE_IMAGE_MDMODEL model,
char *Make = NULL)
const;
1774 BOOL findFirstMetadata(FREE_IMAGE_MDMODEL model,
fipImage& image,
fipTag& tag);
1782 BOOL findNextMetadata(
fipTag& tag);
1786 #endif // FREEIMAGEPLUS_H Multi-page file stream.
Definition: FreeImagePlus.h:1395
FREE_IMAGE_FORMAT _fif
Original (or last saved) fif format if available, FIF_UNKNOWN otherwise.
Definition: FreeImagePlus.h:109
Definition: FreeImage.h:180
Memory handle.
Definition: FreeImagePlus.h:1260
double _tmo_param_4
fourth tone mapping algorithm parameter
Definition: FreeImagePlus.h:1247
fipImage & operator=(const fipImage &src)
Copy constructor.
BOOL _bMemoryCache
TRUE when using a memory cache, FALSE otherwise.
Definition: FreeImagePlus.h:1401
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.
Abstract base class for all objects used by the library.
Definition: FreeImagePlus.h:76
FREE_IMAGE_TMO _tmo
tone mapping operator
Definition: FreeImagePlus.h:1239
double _tmo_param_1
first tone mapping algorithm parameter
Definition: FreeImagePlus.h:1241
BOOL _bHasChanged
TRUE whenever the display need to be refreshed.
Definition: FreeImagePlus.h:111
FIBITMAP * _display_dib
DIB used for display (this allow to display non-standard bitmaps)
Definition: FreeImagePlus.h:1235
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.
BOOL _bDeleteMe
remember to delete _display_dib
Definition: FreeImagePlus.h:1237
FIMULTIBITMAP * _mpage
Pointer to a multi-page file stream.
Definition: FreeImagePlus.h:1399
A class designed for MS Windows (TM) platforms.
Definition: FreeImagePlus.h:1086
virtual void clear()
Destroy image data.
BOOL isModified()
Get the image status.
Definition: FreeImagePlus.h:1014
virtual ~fipObject()
Destructor.
Definition: FreeImagePlus.h:80
double _tmo_param_2
second tone mapping algorithm parameter
Definition: FreeImagePlus.h:1243
A class used to manage all photo related images and all image types used by the library.
Definition: FreeImagePlus.h:103
void draw(HDC hDC, RECT &rcDest) const
Draw (stretch) the image on a HDC, using StretchDIBits.
Definition: FreeImagePlus.h:1185
FITAG * _tag
Pointer to a FreeImage tag.
Definition: FreeImagePlus.h:1572
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:1245
BOOL isValid() const
Returns TRUE if the image is allocated, FALSE otherwise.
void setModified(BOOL bStatus=TRUE)
Set the image status as 'modified'.
Definition: FreeImagePlus.h:1005
FIMEMORY * _hmem
Pointer to a memory stream.
Definition: FreeImagePlus.h:1264
FreeImage Tag.
Definition: FreeImagePlus.h:1568
Definition: FreeImage.h:225