//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ //=============================================================================// #ifndef VGUI_BITMAPIMAGE_H #define VGUI_BITMAPIMAGE_H #ifdef _WIN32 #pragma once #endif #include namespace vgui { class Panel; } class KeyValues; struct Bitmap_t; //----------------------------------------------------------------------------- // Purpose: Bitmap image //----------------------------------------------------------------------------- class BitmapImage : public vgui::Image { public: BitmapImage(); BitmapImage( vgui::VPANEL pPanelSize, const char *pFileName ); virtual ~BitmapImage(); bool Init( vgui::VPANEL pParent, const char *pFileName ); bool Init( vgui::VPANEL pParent, KeyValues* pInitData ); /* FIXME: Bleah!!! Don't want two different KeyValues bool Init( vgui::VPANEL pParent, KeyValues* pInitData ); */ void DoPaint( vgui::VPANEL panel, float yaw = 0, float flAlphaModulate = 1.0f ); void DoPaint( int x, int y, int w, int h, float yaw = 0, float flAlphaModulate = 1.0f ); void Paint( ); void SetColor( const Color& clr ); Color GetColor( ); void GetColor( int& r,int& g,int& b,int& a ); void GetSize( int& wide, int& tall ); void SetPos( int x, int y ); void SetRenderSize( int x, int y ); void SetImageFile( const char *newImage ); // Pass NULL in to use the size set in SetSize // otherwise it'll use the size of the panel void UsePanelRenderSize( vgui::VPANEL pPanel ); vgui::VPANEL GetRenderSizePanel( void ); void SetViewport( bool use, float left, float top, float right, float bottom ); /// Set raw bitmap data void SetBitmap( const Bitmap_t &bitmap ); /// Clean up vgui resources void DestroyTexture(); private: int m_nTextureId; Color m_clr; int m_pos[2]; int m_Size[2]; vgui::VPANEL m_pPanelSize; bool m_bUseViewport; float m_rgViewport[ 4 ]; bool m_bProcedural; }; //----------------------------------------------------------------------------- // Helper method to initialize a bitmap image from KeyValues data.. // KeyValues contains the bitmap data. pSectionName, if it exists, // indicates which subsection of pInitData should be looked at to get at the // image data. The parent argument specifies which panel to use as parent, // and the final argument is the bitmap image to initialize. // The function returns true if it succeeded. // // NOTE: This function looks for the key values 'material' and 'color' // and uses them to set up the material + modulation color of the image //----------------------------------------------------------------------------- bool InitializeImage( KeyValues *pInitData, const char* pSectionName, vgui::Panel *pParent, BitmapImage* pBitmapImage ); /* FIXME: How sad. We need to make KeyValues + vgui::KeyValues be the same. Bleah bool InitializeImage( KeyValues *pInitData, const char* pSectionName, vgui::Panel *pParent, BitmapImage* pBitmapImage ); */ #endif // VGUI_BITMAPIMAGE_H