Source code of Windows XP (NT5)
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.
|
|
#ifndef _BMPSTRM_H_
#define _BMPSTRM_H_
class CBmpStream : public IStream { protected: CBmpStream(); ~CBmpStream();
public: static HRESULT Create(CBmpStream **ppvObject);
HGLOBAL GetBuffer(); VOID SetBuffer(HGLOBAL hBuffer, DWORD dwSize, DWORD dwOffBits); VOID FreeBuffer(); HRESULT ReAllocBuffer(SIZE_T dwBytes);
public: // IUnknown
STDMETHOD(QueryInterface)(REFIID riid, void **ppvObject); STDMETHOD_(ULONG, AddRef)(); STDMETHOD_(ULONG, Release)();
// ISequentialStream
STDMETHOD(Read)(void *pv, ULONG cb, ULONG *pcbRead); STDMETHOD(Write)(const void *pv, ULONG cb, ULONG *pcbWritten);
// IStream
STDMETHOD(Seek)(LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition); STDMETHOD(SetSize)(ULARGE_INTEGER libNewSize); STDMETHOD(CopyTo)(IStream *pstm, ULARGE_INTEGER cb, ULARGE_INTEGER *pcbRead, ULARGE_INTEGER *pcbWritten); STDMETHOD(Commit)(DWORD grfCommitFlags); STDMETHOD(Revert)(); STDMETHOD(LockRegion)(ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType); STDMETHOD(UnlockRegion)(ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType); STDMETHOD(Stat)(STATSTG *pstatstg, DWORD grfStatFlag); STDMETHOD(Clone)(IStream **ppstm);
private: LONG m_cRef; HGLOBAL m_hBuffer; SIZE_T m_nSize; SIZE_T m_nPosition; BITMAPFILEHEADER m_Header; };
#endif //_BMPSTRM_H_
|