//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: Methods relating to saving + loading PSD files (photoshop) // // $NoKeywords: $ //===========================================================================// #ifndef PSD_H #define PSD_H #ifdef _WIN32 #pragma once #endif #include "bitmap/imageformat.h" //ImageFormat enum definition //----------------------------------------------------------------------------- // Forward declarations //----------------------------------------------------------------------------- class CUtlBuffer; struct Bitmap_t; class PSDImageResources { public: enum Resource { eResFileInfo = 0x0404 }; struct ResElement { Resource m_eType; // unsigned char m_pReserved[4]; unsigned short m_numBytes; unsigned char const *m_pvData; }; public: explicit PSDImageResources(unsigned int numBytes, unsigned char const *pvBuffer) : m_numBytes(numBytes), m_pvBuffer(pvBuffer) {} public: ResElement FindElement(Resource eType) const; protected: unsigned int m_numBytes; unsigned char const *m_pvBuffer; }; class PSDResFileInfo { public: enum ResFileInfo { eTitle = 0x05, eAuthor = 0x50, eAuthorTitle = 0x55, eDescription = 0x78, eDescriptionWriter = 0x7A, eKeywords = 0x19, eCopyrightNotice = 0x74 }; struct ResFileInfoElement { ResFileInfo m_eType; unsigned short m_numBytes; unsigned char const *m_pvData; }; public: explicit PSDResFileInfo(PSDImageResources::ResElement res) : m_res(res) {} public: ResFileInfoElement FindElement(ResFileInfo eType) const; protected: PSDImageResources::ResElement m_res; }; //----------------------------------------------------------------------------- // Is a file a PSD file? //----------------------------------------------------------------------------- bool IsPSDFile(const char *pFileName, const char *pPathID); bool IsPSDFile(CUtlBuffer &buf); //----------------------------------------------------------------------------- // Returns information about the PSD file //----------------------------------------------------------------------------- bool PSDGetInfo(const char *pFileName, const char *pPathID, int *pWidth, int *pHeight, ImageFormat *pImageFormat, float *pSourceGamma); bool PSDGetInfo(CUtlBuffer &buf, int *pWidth, int *pHeight, ImageFormat *pImageFormat, float *pSourceGamma); //----------------------------------------------------------------------------- // Get PSD file image resources, pointers refer into the utlbuffer //----------------------------------------------------------------------------- PSDImageResources PSDGetImageResources(CUtlBuffer &buf); //----------------------------------------------------------------------------- // Reads the PSD file into the specified buffer //----------------------------------------------------------------------------- bool PSDReadFileRGBA8888(CUtlBuffer &buf, Bitmap_t &bitmap); bool PSDReadFileRGBA8888(const char *pFileName, const char *pPathID, Bitmap_t &bitmap); #endif // PSD_H