#ifndef _DDRAW_SURFACECAPABILITIES_HPP_ #define _DDRAW_SURFACECAPABILITIES_HPP_ #ifndef _DDRAW_DDRAW_HPP_ #include #endif class SurfaceCapabilities : private DDSCAPS2 { public: enum Capabilities{Alpha=DDSCAPS_ALPHA,BackBuffer=DDSCAPS_BACKBUFFER,Complex=DDSCAPS_COMPLEX,Flip=DDSCAPS_FLIP, FrontBuffer=DDSCAPS_FRONTBUFFER,OffScreenPlain=DDSCAPS_OFFSCREENPLAIN,Overlay=DDSCAPS_OVERLAY, Palette=DDSCAPS_PALETTE,PrimarySurface=DDSCAPS_PRIMARYSURFACE, PrimarySurfaceLeft=DDSCAPS_PRIMARYSURFACELEFT,SystemMemory=DDSCAPS_SYSTEMMEMORY, Texture=DDSCAPS_TEXTURE,Device3D=DDSCAPS_3DDEVICE,VideoMemory=DDSCAPS_VIDEOMEMORY, Visible=DDSCAPS_VISIBLE,WriteOnly=DDSCAPS_WRITEONLY,ZBuffer=DDSCAPS_ZBUFFER, OwnDC=DDSCAPS_OWNDC,LiveVideo=DDSCAPS_LIVEVIDEO,HardwareCodec=DDSCAPS_HWCODEC,Modex=DDSCAPS_MODEX, AllocOnLoad=DDSCAPS_ALLOCONLOAD,VideoPort=DDSCAPS_VIDEOPORT,LocalVidMem=DDSCAPS_LOCALVIDMEM, StandardVGAMode=DDSCAPS_STANDARDVGAMODE,Optimized=DDSCAPS_OPTIMIZED}; enum AdditionalCapabilities{None=0,HardwareDeInterlace=DDSCAPS2_HARDWAREDEINTERLACE, HintAntialiasing=DDSCAPS2_HINTANTIALIASING,HintDynamic=DDSCAPS2_HINTDYNAMIC, HintStatic=DDSCAPS2_HINTSTATIC,Opaque=DDSCAPS2_OPAQUE,TextureManager=DDSCAPS2_TEXTUREMANAGE}; SurfaceCapabilities(void); SurfaceCapabilities(const SurfaceCapabilities &someSurfaceCapabilities); SurfaceCapabilities(const DDSCAPS2 &someDDSCAPS2); SurfaceCapabilities(Capabilities surfaceCapabilities,AdditionalCapabilities additionalCapabilities=None); virtual ~SurfaceCapabilities(); SurfaceCapabilities &operator=(const SurfaceCapabilities &someSurfaceCapabilities); SurfaceCapabilities &operator=(const DDSCAPS2 &someDDSCAPS2); Capabilities surfaceCapabilities(void)const; void surfaceCapabilities(Capabilities surfaceCapabilities); AdditionalCapabilities additionalCapabilities(void)const; void additionalCapabilities(AdditionalCapabilities additionalCapabilities); DDSCAPS2 &getDDSCAPS2(void); private: }; inline SurfaceCapabilities::SurfaceCapabilities(void) { DDSCAPS2::dwCaps=0; DDSCAPS2::dwCaps2=0; DDSCAPS2::dwCaps3=0; DDSCAPS2::dwCaps4=0; } inline SurfaceCapabilities::SurfaceCapabilities(const SurfaceCapabilities &someSurfaceCapabilities) { *this=someSurfaceCapabilities; } inline SurfaceCapabilities::SurfaceCapabilities(Capabilities surfaceCapabilities,AdditionalCapabilities additionalCapabilities) { DDSCAPS2::dwCaps=(DWORD)surfaceCapabilities; DDSCAPS2::dwCaps2=(DWORD)additionalCapabilities; DDSCAPS2::dwCaps3=0; DDSCAPS2::dwCaps4=0; } inline SurfaceCapabilities::SurfaceCapabilities(const DDSCAPS2 &someDDSCAPS2) { *this=someDDSCAPS2; } inline SurfaceCapabilities::~SurfaceCapabilities() { } inline SurfaceCapabilities &SurfaceCapabilities::operator=(const SurfaceCapabilities &someSurfaceCapabilities) { surfaceCapabilities(someSurfaceCapabilities.surfaceCapabilities()); additionalCapabilities(someSurfaceCapabilities.additionalCapabilities()); return *this; } inline SurfaceCapabilities &SurfaceCapabilities::operator=(const DDSCAPS2 &someDDSCAPS2) { DDSCAPS2::dwCaps=someDDSCAPS2.dwCaps; DDSCAPS2::dwCaps2=someDDSCAPS2.dwCaps2; DDSCAPS2::dwCaps3=someDDSCAPS2.dwCaps3; DDSCAPS2::dwCaps4=someDDSCAPS2.dwCaps4; return *this; } inline SurfaceCapabilities::Capabilities SurfaceCapabilities::surfaceCapabilities(void)const { return Capabilities(DDSCAPS2::dwCaps); } inline void SurfaceCapabilities::surfaceCapabilities(Capabilities surfaceCapabilities) { DDSCAPS2::dwCaps=(DWORD)surfaceCapabilities; } inline SurfaceCapabilities::AdditionalCapabilities SurfaceCapabilities::additionalCapabilities(void)const { return AdditionalCapabilities(DDSCAPS2::dwCaps2); } inline void SurfaceCapabilities::additionalCapabilities(AdditionalCapabilities additionalCapabilities) { DDSCAPS2::dwCaps2=(DWORD)additionalCapabilities; } inline DDSCAPS2 &SurfaceCapabilities::getDDSCAPS2(void) { return (DDSCAPS2&)*this; } #endif