/*==LICENSE==* CyanWorlds.com Engine - MMOG client, server and tools Copyright (C) 2011 Cyan Worlds, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . You can contact Cyan Worlds, Inc. by email legal@cyan.com or by snail mail at: Cyan Worlds, Inc. 14617 N Newport Hwy Mead, WA 99021 *==LICENSE==*/ /////////////////////////////////////////////////////////////////////////////// // // // hsDXTDirectXCodec Class Functions // // DirectX-based codec functions // // Cyan, Inc. // // // //// Version History ////////////////////////////////////////////////////////// // // // 6.8.2001 mcn - Got a much-needed Plasma 2.0/DX8 update. // // // /////////////////////////////////////////////////////////////////////////////// #ifndef hsDXTDirectXCodec_inc #define hsDXTDirectXCodec_inc #include "hsWindows.h" #include "hsCodec.h" class plMipmap; struct IDirect3DDevice8; struct IDirectDrawSurface7; struct IDirectDraw7; class hsDXTDirectXCodec : public hsCodec { private: hsDXTDirectXCodec(); public: ~hsDXTDirectXCodec(); static hsDXTDirectXCodec& Instance(); static void Init() { fRegistered = Register(); } plMipmap *CreateCompressedMipmap(plMipmap *uncompressed); plMipmap *CreateUncompressedMipmap(plMipmap *compressed, UInt8 bitDepth = 0); // Colorize a compressed mipmap hsBool ColorizeCompMipmap( plMipmap *bMap, const UInt8 *colorMask ); void Initialize( IDirect3DDevice8 *directDraw ); hsBool Initialized() { return (fFlags & kInitialized) != 0; } private: UInt32 ICompressedFormat(const plMipmap *uncompressed); IDirectDrawSurface7 *IMakeDirect3DSurface( UInt32 formatType, UInt32 mipMapLevels, UInt32 width, UInt32 height ); void IFillSurface( hsRGBAColor32* src, UInt32 mmlvs, IDirectDrawSurface7 *pddsDest ); void IFillFromSurface( hsRGBAColor32* dest, UInt32 mmlvs, IDirectDrawSurface7 *pddsSrc ); void ICopySurface( IDirectDrawSurface7 *dest, IDirectDrawSurface7 *src, Int32 mipMapLevels ); void CheckErrorCode(HRESULT res); hsBool IInitialize(); IDirectDraw7 *fDirectDraw; HINSTANCE fDDLibraryInstance; UInt32 fFlags; enum { kInitialized = 0x1, kExternalInit = 0x2 }; static hsBool Register(); static hsBool fRegistered; }; #endif // hsDXTDirectXCodec_inc