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 unsigned getImageSize()
const;
383 unsigned getImageMemorySize()
const;
390 unsigned getBitsPerPixel()
const;
397 unsigned getLine()
const;
403 double getHorizontalResolution()
const;
409 double getVerticalResolution()
const;
415 void setHorizontalResolution(
double value);
421 void setVerticalResolution(
double value);
437 unsigned getPaletteSize()
const;
443 unsigned getColorsUsed()
const;
449 FREE_IMAGE_COLOR_TYPE getColorType()
const;
455 BOOL isGrayscale()
const;
466 BOOL getThumbnail(
fipImage& image)
const;
473 BOOL setThumbnail(
const fipImage& image);
480 BOOL hasThumbnail()
const;
487 BOOL clearThumbnail();
502 BYTE* accessPixels()
const;
509 BYTE* getScanLine(
unsigned scanline)
const;
519 BOOL getPixelIndex(
unsigned x,
unsigned y, BYTE *value)
const;
529 BOOL getPixelColor(
unsigned x,
unsigned y,
RGBQUAD *value)
const;
539 BOOL setPixelIndex(
unsigned x,
unsigned y, BYTE *value);
549 BOOL setPixelColor(
unsigned x,
unsigned y,
RGBQUAD *value);
564 BOOL convertToType(FREE_IMAGE_TYPE image_type, BOOL scale_linear = TRUE);
572 BOOL threshold(BYTE T);
580 BOOL dither(FREE_IMAGE_DITHER algorithm);
587 BOOL convertTo4Bits();
594 BOOL convertTo8Bits();
602 BOOL convertToGrayscale();
611 BOOL colorQuantize(FREE_IMAGE_QUANTIZE algorithm);
618 BOOL convertTo16Bits555();
625 BOOL convertTo16Bits565();
632 BOOL convertTo24Bits();
639 BOOL convertTo32Bits();
646 BOOL convertToFloat();
653 BOOL convertToRGBF();
660 BOOL convertToRGBAF();
667 BOOL convertToUINT16();
674 BOOL convertToRGB16();
681 BOOL convertToRGBA16();
693 BOOL toneMapping(FREE_IMAGE_TMO tmo,
double first_param = 0,
double second_param = 0,
double third_param = 1,
double fourth_param = 0);
704 BOOL isTransparent()
const;
711 unsigned getTransparencyCount()
const;
718 BYTE* getTransparencyTable()
const;
724 void setTransparencyTable(BYTE *table,
int count);
730 BOOL hasFileBkColor()
const;
740 BOOL getFileBkColor(
RGBQUAD *bkcolor)
const;
750 BOOL setFileBkColor(
RGBQUAD *bkcolor);
761 BOOL getChannel(
fipImage& image, FREE_IMAGE_COLOR_CHANNEL channel)
const;
770 BOOL setChannel(
fipImage& image, FREE_IMAGE_COLOR_CHANNEL channel);
805 BOOL rotateEx(
double angle,
double x_shift,
double y_shift,
double x_origin,
double y_origin, BOOL use_mask);
814 BOOL rotate(
double angle,
const void *bkcolor = NULL);
820 BOOL flipHorizontal();
851 BOOL adjustCurve(BYTE *LUT, FREE_IMAGE_COLOR_CHANNEL channel);
859 BOOL adjustGamma(
double gamma);
868 BOOL adjustBrightness(
double percentage);
877 BOOL adjustContrast(
double percentage);
889 BOOL adjustBrightnessContrastGamma(
double brightness,
double contrast,
double gamma);
901 BOOL getHistogram(DWORD *histo, FREE_IMAGE_COLOR_CHANNEL channel = FICC_BLACK)
const;
915 BOOL rescale(
unsigned new_width,
unsigned new_height, FREE_IMAGE_FILTER filter);
924 BOOL makeThumbnail(
unsigned max_size, BOOL convert = TRUE);
937 _bHasChanged = bStatus;
957 unsigned getMetadataCount(FREE_IMAGE_MDMODEL model)
const;
966 BOOL getMetadata(FREE_IMAGE_MDMODEL model,
const char *key,
fipTag& tag)
const;
986 BOOL setMetadata(FREE_IMAGE_MDMODEL model,
const char *key,
fipTag& tag);
993 BOOL replace(FIBITMAP *new_dib);
1018 fipWinImage(FREE_IMAGE_TYPE image_type = FIT_BITMAP,
unsigned width = 0,
unsigned height = 0,
unsigned bpp = 0);
1025 virtual void clear();
1056 HANDLE copyToHandle()
const;
1064 BOOL copyFromHandle(HANDLE hMem);
1070 BOOL copyFromBitmap(HBITMAP hbmp);
1081 BOOL copyToClipboard(HWND hWndNewOwner)
const;
1087 BOOL pasteFromClipboard();
1097 BOOL captureWindow(HWND hWndApplicationWindow, HWND hWndSelectedWindow);
1112 void draw(HDC hDC, RECT& rcDest)
const {
1113 drawEx(hDC, rcDest, FALSE, NULL, NULL);
1133 void drawEx(HDC hDC, RECT& rcDest, BOOL useFileBkg = FALSE,
RGBQUAD *appBkColor = NULL, FIBITMAP *bg = NULL)
const;
1145 void setToneMappingOperator(FREE_IMAGE_TMO tmo,
double first_param = 0,
double second_param = 0,
double third_param = 1,
double fourth_param = 0);
1156 void getToneMappingOperator(FREE_IMAGE_TMO *tmo,
double *first_param,
double *second_param,
double *third_param,
double *fourth_param)
const;
1203 fipMemoryIO(BYTE *data = NULL, DWORD size_in_bytes = 0);
1224 FREE_IMAGE_FORMAT getFileType()
const;
1230 operator FIMEMORY*() {
1243 FIBITMAP* load(FREE_IMAGE_FORMAT fif,
int flags = 0)
const;
1251 FIMULTIBITMAP* loadMultiPage(FREE_IMAGE_FORMAT fif,
int flags = 0)
const;
1260 BOOL save(FREE_IMAGE_FORMAT fif, FIBITMAP *dib,
int flags = 0);
1269 BOOL saveMultiPage(FREE_IMAGE_FORMAT fif, FIMULTIBITMAP *bitmap,
int flags = 0);
1278 unsigned read(
void *buffer,
unsigned size,
unsigned count)
const;
1287 unsigned write(
const void *buffer,
unsigned size,
unsigned count);
1297 BOOL seek(
long offset,
int origin);
1304 BOOL acquire(BYTE **data, DWORD *size_in_bytes);
1350 operator FIMULTIBITMAP*() {
1363 BOOL open(
const char* lpszPathName, BOOL create_new, BOOL read_only,
int flags = 0);
1382 BOOL open(FreeImageIO *io, fi_handle handle,
int flags = 0);
1390 BOOL close(
int flags = 0);
1401 BOOL saveToHandle(FREE_IMAGE_FORMAT fif, FreeImageIO *io, fi_handle handle,
int flags = 0)
const;
1411 BOOL saveToMemory(FREE_IMAGE_FORMAT fif,
fipMemoryIO& memIO,
int flags = 0)
const;
1417 int getPageCount()
const;
1432 void insertPage(
int page,
fipImage& image);
1439 void deletePage(
int page);
1448 BOOL movePage(
int target,
int source);
1467 FIBITMAP* lockPage(
int page);
1475 void unlockPage(
fipImage& image, BOOL changed);
1485 BOOL getLockedPageNumbers(
int *pages,
int *count)
const;
1522 BOOL setKeyValue(
const char *key,
const char *value);
1543 fipTag& operator=(FITAG *tag);
1564 const char *getKey()
const;
1569 const char *getDescription()
const;
1579 FREE_IMAGE_MDTYPE getType()
const;
1584 DWORD getCount()
const;
1589 DWORD getLength()
const;
1594 const void *getValue()
const;
1600 BOOL setKey(
const char *key);
1606 BOOL setDescription(
const char *description);
1612 BOOL setID(WORD
id);
1618 BOOL setType(FREE_IMAGE_MDTYPE type);
1624 BOOL setCount(DWORD count);
1630 BOOL setLength(DWORD length);
1636 BOOL setValue(
const void *value);
1645 const char* toString(FREE_IMAGE_MDMODEL model,
char *Make = NULL)
const;
1701 BOOL findFirstMetadata(FREE_IMAGE_MDMODEL model,
fipImage& image,
fipTag& tag);
1709 BOOL findNextMetadata(
fipTag& tag);
1713 #endif // FREEIMAGEPLUS_H Multi-page file stream.
Definition: FreeImagePlus.h:1322
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:1187
double _tmo_param_4
fourth tone mapping algorithm parameter
Definition: FreeImagePlus.h:1174
fipImage & operator=(const fipImage &src)
Copy constructor
BOOL _bMemoryCache
TRUE when using a memory cache, FALSE otherwise.
Definition: FreeImagePlus.h:1328
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:1166
double _tmo_param_1
first tone mapping algorithm parameter
Definition: FreeImagePlus.h:1168
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:1162
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:1164
FIMULTIBITMAP * _mpage
Pointer to a multi-page file stream.
Definition: FreeImagePlus.h:1326
A class designed for MS Windows (TM) platforms.
Definition: FreeImagePlus.h:1013
virtual void clear()
Destroy image data.
BOOL isModified()
Get the image status
Definition: FreeImagePlus.h:945
virtual ~fipObject()
Destructor.
Definition: FreeImagePlus.h:80
double _tmo_param_2
second tone mapping algorithm parameter
Definition: FreeImagePlus.h:1170
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:1112
FITAG * _tag
Pointer to a FreeImage tag.
Definition: FreeImagePlus.h:1499
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:1172
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:936
FIMEMORY * _hmem
Pointer to a memory stream.
Definition: FreeImagePlus.h:1191
FreeImage Tag
Definition: FreeImagePlus.h:1495
Definition: FreeImage.h:225