Alien-FreeImage
view release on metacpan or search on metacpan
src/Source/FreeImage/PSDParser.h view on Meta::CPAN
28 byte header, followed by a JFIF thumbnail in RGB (red, green, blue) order
for both Macintosh and Windows. Adobe Photoshop 4.0 stored the
thumbnail information in the same format except the data section is BGR
(blue, green, red). The Adobe Photoshop 4.0 format is at resource ID 1033
and the Adobe Photoshop 5.0 format is at resource ID 1036.
*/
class psdThumbnail {
public:
int _Format; //! = 1 (kJpegRGB). Also supports kRawRGB (0).
int _Width; //! Width of thumbnail in pixels.
int _Height; //! Height of thumbnail in pixels.
int _WidthBytes; //! Padded row bytes as (width * bitspixel + 31) / 32 * 4.
int _Size; //! Total size as widthbytes * height * planes
int _CompressedSize; //! Size after compression. Used for consistentcy check.
short _BitPerPixel; //! = 24. Bits per pixel.
short _Planes; //! = 1. Number of planes.
FIBITMAP * _dib; //! JFIF data as uncompressed dib. Note: For resource ID 1033 the data is in BGR format.
public:
psdThumbnail();
~psdThumbnail();
FIBITMAP* getDib() { return _dib; }
/**
@return Returns the number of bytes read
*/
int Read(FreeImageIO *io, fi_handle handle, int iResourceSize, bool isBGR);
private:
psdThumbnail(const psdThumbnail&);
psdThumbnail& operator=(const psdThumbnail&);
};
class psdICCProfile {
public:
int _ProfileSize;
BYTE * _ProfileData;
public:
psdICCProfile();
~psdICCProfile();
void clear();
/**
@return Returns the number of bytes read
*/
int Read(FreeImageIO *io, fi_handle handle, int size);
};
/**
PSD loader
*/
class psdParser {
private:
psdHeaderInfo _headerInfo;
psdColourModeData _colourModeData;
psdResolutionInfo _resolutionInfo;
psdResolutionInfo_v2 _resolutionInfo_v2;
psdDisplayInfo _displayInfo;
psdThumbnail _thumbnail;
psdICCProfile _iccProfile;
short _ColourCount;
short _TransparentIndex;
int _GlobalAngle;
bool _bResolutionInfoFilled;
bool _bResolutionInfoFilled_v2;
bool _bDisplayInfoFilled;
bool _bThumbnailFilled;
bool _bCopyright;
int _fi_flags;
int _fi_format_id;
private:
/** Actually ignore it */
bool ReadLayerAndMaskInfoSection(FreeImageIO *io, fi_handle handle);
FIBITMAP* ReadImageData(FreeImageIO *io, fi_handle handle);
public:
psdParser();
~psdParser();
FIBITMAP* Load(FreeImageIO *io, fi_handle handle, int s_format_id, int flags=0);
/** Also used by the TIFF plugin */
bool ReadImageResources(FreeImageIO *io, fi_handle handle, LONG length=0);
/** Used by the TIFF plugin */
FIBITMAP* GetThumbnail() {
return _thumbnail.getDib();
}
};
#endif // PSDPARSER_H
( run in 0.487 second using v1.01-cache-2.11-cpan-119454b85a5 )