/*==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==*/ /////////////////////////////////////////////////////////////////////////////// // // // plTextGenerator Class Header // // Helper utility class that "attaches" to a mipmap and fills that mipmap // // with text. // Cyan, Inc. // // // //// Version History ////////////////////////////////////////////////////////// // // // 12.13.2001 mcn - Created. // // // /////////////////////////////////////////////////////////////////////////////// #ifndef _plTextGenerator_h #define _plTextGenerator_h #include "hsTemplates.h" #include "hsGeometry3.h" #include "hsColorRGBA.h" //// plTextGenerator Class Definition ////////////////////////////////////////////// class plMipmap; struct hsMatrix44; class plTextGenerator : public hsKeyedObject { protected: plMipmap *fHost; UInt16 fWidth, fHeight; #if HS_BUILD_FOR_WIN32 HDC fWinRGBDC; HBITMAP fWinRGBBitmap; HFONT fWinFont; UInt32 *fWinRGBBits; HFONT fWinAlphaFont; HDC fWinAlphaDC; HBITMAP fWinAlphaBitmap; UInt8 *fWinAlphaBits; #endif UInt32 *IAllocateOSSurface( UInt16 width, UInt16 height ); void IDestroyOSSurface( void ); public: plTextGenerator(); plTextGenerator( plMipmap *host, UInt16 width, UInt16 height ); virtual ~plTextGenerator(); void Attach( plMipmap *host, UInt16 width, UInt16 height ); void Detach( void ); /// Operations to perform on the text block void ClearToColor( hsColorRGBA &color ); void SetFont( const char *face, UInt16 size, hsBool antiAliasRGB = true ); void SetTextColor( hsColorRGBA &color, hsBool blockRGB = false ); void DrawString( UInt16 x, UInt16 y, const char *text ); void DrawString( UInt16 x, UInt16 y, const wchar_t *text ); void DrawClippedString( Int16 x, Int16 y, const char *text, UInt16 width, UInt16 height ); void DrawClippedString( Int16 x, Int16 y, const wchar_t *text, UInt16 width, UInt16 height ); void DrawClippedString( Int16 x, Int16 y, const char *text, UInt16 clipX, UInt16 clipY, UInt16 width, UInt16 height ); void DrawClippedString( Int16 x, Int16 y, const wchar_t *text, UInt16 clipX, UInt16 clipY, UInt16 width, UInt16 height ); void DrawWrappedString( UInt16 x, UInt16 y, const char *text, UInt16 width, UInt16 height ); void DrawWrappedString( UInt16 x, UInt16 y, const wchar_t *text, UInt16 width, UInt16 height ); UInt16 CalcStringWidth( const char *text, UInt16 *height = nil ); UInt16 CalcStringWidth( const wchar_t *text, UInt16 *height = nil ); void CalcWrappedStringSize( const char *text, UInt16 *width, UInt16 *height ); void CalcWrappedStringSize( const wchar_t *text, UInt16 *width, UInt16 *height ); void FillRect( UInt16 x, UInt16 y, UInt16 width, UInt16 height, hsColorRGBA &color ); void FrameRect( UInt16 x, UInt16 y, UInt16 width, UInt16 height, hsColorRGBA &color ); void FlushToHost( void ); UInt16 GetTextWidth( void ); UInt16 GetTextHeight( void ); UInt16 GetWidth( void ) { return fWidth; } UInt16 GetHeight( void ) { return fHeight; } // Since the textGen can actually create a texture bigger than you were expecting, // you want to be able to apply a layer texture transform that will compensate. This // function will give you that transform. Just feed it into plLayer->SetTransform(). hsMatrix44 GetLayerTransform( void ); virtual hsBool MsgReceive( plMessage *msg ); }; #endif // _plTextGenerator_h