#ifndef LABEL_H #define LABEL_H #ifdef _WIN32 #pragma once #endif #include "utlvector.h" #include "VGUI.h" #include "Panel.h" #include "PHandle.h" namespace vgui { class Label : public Panel { DECLARE_CLASS_SIMPLE(Label, Panel); public: Label(Panel* parent, const char* panelName, const char* text); Label(Panel* parent, const char* panelName, const wchar_t* wszText); ~Label(); public: virtual void SetText(const char* tokenName); virtual void SetText(const wchar_t* unicodeString, bool bClearUnlocalizedSymbol = false); virtual void GetText(OUT_Z_BYTECAP(bufferLen) char* textOut, int bufferLen); virtual void GetText(OUT_Z_BYTECAP(bufLenInBytes) wchar_t* textOut, int bufLenInBytes); virtual void GetContentSize(int& wide, int& tall); enum Alignment { a_northwest = 0, a_north, a_northeast, a_west, a_center, a_east, a_southwest, a_south, a_southeast, }; virtual void SetContentAlignment(Alignment alignment); virtual void SetEnabled(bool state); virtual void SetTextInset(int xInset, int yInset); virtual void GetTextInset(int* xInset, int* yInset); virtual void SetFgColor(Color color); virtual Color GetFgColor(); virtual void SetDisabledFgColor1(Color color); virtual void SetDisabledFgColor2(Color color); virtual Color GetDisabledFgColor1(); virtual Color GetDisabledFgColor2(); enum EColorState { CS_NORMAL, CS_DULL, CS_BRIGHT, }; virtual void SetTextColorState(EColorState state); virtual void SetFont(HFont font); virtual HFont GetFont(); virtual Panel* HasHotkey(wchar_t key); virtual void SetHotkey(wchar_t key); virtual wchar_t GetHotKey(); virtual void SetAssociatedControl(Panel* control); virtual int AddImage(IImage* image, int preOffset); virtual void SetImageAtIndex(int index, IImage* image, int preOffset); virtual void SetImagePreOffset(int index, int preOffset); virtual IImage* GetImageAtIndex(int index); virtual int GetImageCount(); virtual void ClearImages(); virtual void ResetToSimpleTextImage(); virtual void SetImageBounds(int index, int x, int width); virtual TextImage* GetTextImage(); virtual int SetTextImageIndex(int newIndex); virtual bool RequestInfo(KeyValues* outputData); virtual void SizeToContents(); enum Padding { Content = 8, }; void SetWrap(bool bWrap); void SetCenterWrap(bool bWrap); void SetAllCaps(bool bAllCaps); protected: virtual void PerformLayout(); virtual wchar_t CalculateHotkey(const char* text); virtual wchar_t CalculateHotkey(const wchar_t* text); virtual void ComputeAlignment(int& tx0, int& ty0, int& tx1, int& ty1); virtual void Paint(); MESSAGE_FUNC_PARAMS(OnSetText, "SetText", params); virtual void DrawDashedLine(int x0, int y0, int x1, int y1, int dashLen, int gapLen); virtual void OnRequestFocus(VPANEL subFocus, VPANEL defaultPanel); MESSAGE_FUNC(OnHotkeyPressed, "Hotkey"); virtual void OnMousePressed(MouseCode code); virtual void OnSizeChanged(int wide, int tall); virtual void EnsureImageCapacity(int maxIndex); virtual void ApplySchemeSettings(IScheme* pScheme); virtual void GetSettings(KeyValues* outResourceData); virtual void ApplySettings(KeyValues* inResourceData); virtual const char* GetDescription(void); MESSAGE_FUNC_PARAMS(OnDialogVariablesChanged, "DialogVariables", dialogVariables); void HandleAutoSizing(void); private: void Init(); Alignment _contentAlignment; TextImage* _textImage; struct TImageInfo { IImage* image; short offset; short xpos; short width; }; CUtlVector _imageDar; int _textInset[2]; Color _disabledFgColor1; Color _disabledFgColor2; Color _associateColor; int _textImageIndex; EColorState _textColorState; PHandle _associate; char* _associateName; char* _fontOverrideName; wchar_t _hotkey; bool m_bWrap; bool m_bCenterWrap; bool m_bAllCaps; bool m_bAutoWideToContents; bool m_bAutoWideDirty; bool m_bUseProportionalInsets; }; } #endif