windows-nt/Source/XPSP1/NT/shell/osshell/accesory/mspaint/bmobject.h
2020-09-26 16:20:57 +08:00

134 lines
3.3 KiB
C++

#ifndef __BMOBJECT_H__
#define __BMOBJECT_H__
class CBmObjSequence;
// Get*Prop return type
enum GPT
{
invalid, // Not a known property or disabled
valid, // Value is correct
ambiguous // Multiple selection with different values
};
// Selection Object
class CFileBuffer;
class CBitmapObj : public CObject
{
DECLARE_DYNCREATE( CBitmapObj )
public:
CBitmapObj();
~CBitmapObj();
void Clear();
void InformDependants( UINT idChange );
void AddDependant ( CBitmapObj* newDependant );
void RemoveDependant ( CBitmapObj* oldDependant );
// Notification Callback
void OnInform( CBitmapObj* pChangedSlob, UINT idChange );
// Property Management
BOOL SetIntProp (UINT idProp, int val);
GPT GetIntProp (UINT idProp, int& val);
BOOL SetSizeProp(UINT nPropID, const CSize& val);
BOOL MakeEmpty ();
BOOL Import ( LPCTSTR szFileName );
BOOL Export ( LPCTSTR szFileName );
// Specify the type of header to put on a resource
typedef enum _PBResType
{
rtFile,
rtDIB,
rtPaintOLEObj,
rtPBrushOLEObj,
} PBResType;
BOOL ReadResource ( HGLOBAL hDib );
BOOL ReadResource ( CFile* pfile, PBResType rtType = rtFile );
BOOL WriteResource ( CFile* pfile, PBResType rtType = rtFile );
#ifdef PCX_SUPPORT
BOOL ReadPCX ( CFile* pfile );
BOOL WritePCX ( CFile* pfile );
BOOL PackBuff ( CFileBuffer *FileBuffer, BYTE *PtrDib, int byteWidth);
#endif
BOOL CreateImg ();
BOOL SaveResource ( BOOL bClear = TRUE );
void ReLoadImage ( CPBDoc* pbDoc );
void UndoAction ( CBmObjSequence* pSeq, UINT nActionID );
void DeleteUndoAction( CBmObjSequence* pSeq, UINT nActionID );
BOOL FinishUndo ( const CRect* pRect );
// Resource data access helpers...
BOOL Alloc(); // m_hThing of size m_lMemSize
void Free(); // m_hThing and set m_lMemSize to zero
void Zap(); // frees memory and zeros out the file position
// information - used to completely empty a resobject
CString GetDefExtension(int iStringId=0);
BOOL SetupForIcon( HBITMAP& hBitmap, HBITMAP& hMaskBitmap );
// Load m_hThing with the resource data from the res file
inline BOOL IsDirty() const { return m_bDirty; }
void SetDirty(BOOL bDirty = TRUE);
#ifdef ICO_SUPPORT
BOOL IsSaveIcon() { return(m_bSaveIcon); }
#endif
struct IMG* m_pImg;
// Properties...
int m_nWidth;
int m_nHeight;
int m_nColors;
int m_nSaveColors;
#ifdef ICO_SUPPORT
BOOL m_bSaveIcon;
#endif
#ifdef PCX_SUPPORT
BOOL m_bPCX;
#endif
BOOL m_bCompressed;
BOOL m_nShrink; // 0=crop, 1=shrink, 2=ask
BOOL m_bTempName; // true if not save as m_strFileName yet
BOOL m_bDirty; // true if changed
HGLOBAL m_hThing; // in memory resource (must be valid)
DWORD m_dwOffBits; // offset of pixels in m_hThing; packed if 0
LONG m_lMemSize; // size in bytes
protected:
CObList m_dependants;
};
// Standard Slob Notifications
#define SN_DESTROY 0
#define SN_ALL 1
extern int mpncolorsbits[];
void PBGetDefDims(int& pnWidth, int& pnHeight);
#ifndef _WIN32
#define POINTS POINT
#endif
#endif // __BMOBJECT_H__