#include "mxdirect3drmobject.h" // No vtable, this is just a simple wrapper around D3DRMIMAGE class MxD3DRMIMAGE { public: struct PaletteEntry { unsigned char r; unsigned char g; unsigned char b; }; MxD3DRMIMAGE( int p_width, int p_height, int p_depth, void* p_buffer, int p_useBuffer, int p_paletteSize, PaletteEntry* p_palette ); ~MxD3DRMIMAGE() { Destroy(); } int CreateBuffer(int p_width, int p_height, int p_depth, void* p_buffer, int p_useBuffer); void Destroy(); void FillRowsOfTexture(int p_y, int p_height, char* p_content); int InitializePalette(int p_paletteSize, PaletteEntry* p_palette); D3DRMIMAGE m_image; int m_extra; }; // VTABLE 0x100dbb68 class IMxDirect3DRMTexture : public IMxDirect3DRMObject { public: virtual ~IMxDirect3DRMTexture() {} virtual IUnknown** GetHandle() = 0; // vtable+0x08 virtual int SetBuffer(int p_width, int p_height, int p_depth, void* p_buffer) = 0; virtual void FillRowsOfTexture(int p_y, int p_height, void* p_buffer) = 0; // vtable+0x10 virtual int Changed(int p_pixelsChanged, int p_paletteChanged) = 0; virtual int GetBufferAndPalette( int* p_width, int* p_height, int* p_depth, void** p_buffer, int* p_paletteSize, MxD3DRMIMAGE::PaletteEntry** p_palette ) = 0; virtual int InitializePalette(int p_paletteSize, MxD3DRMIMAGE::PaletteEntry* p_palette) = 0; }; // VTABLE 0x100dbb48 class MxDirect3DRMTexture : public IMxDirect3DRMTexture { public: MxDirect3DRMTexture() {} virtual ~MxDirect3DRMTexture() {} virtual IUnknown** GetHandle(); // vtable+0x08 virtual int SetBuffer(int p_width, int p_height, int p_depth, void* p_buffer); virtual void FillRowsOfTexture(int p_y, int p_height, void* p_buffer); // vtable+0x10 virtual int Changed(int p_pixelsChanged, int p_paletteChanged); virtual int GetBufferAndPalette( int* p_width, int* p_height, int* p_depth, void** p_buffer, int* p_paletteSize, MxD3DRMIMAGE::PaletteEntry** p_palette ); virtual int InitializePalette(int p_paletteSize, MxD3DRMIMAGE::PaletteEntry* p_palette); // Not virtual void OnDestroyed(); private: inline MxD3DRMIMAGE* GetImageData() { return (MxD3DRMIMAGE*) m_pDirect3DRMTexture->GetAppData(); } IDirect3DRMTexture* m_pDirect3DRMTexture; };