#pragma once #include #include #include #include #include namespace DDraw { template class PrimarySurfaceImpl : public SurfaceImpl { public: PrimarySurfaceImpl(Surface* data); virtual HRESULT Blt(TSurface* This, LPRECT lpDestRect, TSurface* lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwFlags, LPDDBLTFX lpDDBltFx) override; virtual HRESULT BltFast(TSurface* This, DWORD dwX, DWORD dwY, TSurface* lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwTrans) override; virtual HRESULT Flip(TSurface* This, TSurface* lpDDSurfaceTargetOverride, DWORD dwFlags) override; virtual HRESULT GetCaps(TSurface* This, TDdsCaps* lpDDSCaps) override; virtual HRESULT GetDC(TSurface* This, HDC* lphDC); virtual HRESULT GetSurfaceDesc(TSurface* This, TSurfaceDesc* lpDDSurfaceDesc) override; virtual HRESULT IsLost(TSurface* This) override; virtual HRESULT Lock(TSurface* This, LPRECT lpDestRect, TSurfaceDesc* lpDDSurfaceDesc, DWORD dwFlags, HANDLE hEvent) override; virtual HRESULT ReleaseDC(TSurface* This, HDC hDC) override; virtual HRESULT Restore(TSurface* This) override; virtual HRESULT SetPalette(TSurface* This, LPDIRECTDRAWPALETTE lpDDPalette) override; virtual HRESULT Unlock(TSurface* This, TUnlockParam lpRect) override; }; }