You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
3.0 KiB
105 lines
3.0 KiB
//========= 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
|