aboutsummaryrefslogtreecommitdiff
path: root/mp/src/public/vgui_controls/Label.h
diff options
context:
space:
mode:
Diffstat (limited to 'mp/src/public/vgui_controls/Label.h')
-rw-r--r--mp/src/public/vgui_controls/Label.h225
1 files changed, 225 insertions, 0 deletions
diff --git a/mp/src/public/vgui_controls/Label.h b/mp/src/public/vgui_controls/Label.h
new file mode 100644
index 00000000..aefc37b3
--- /dev/null
+++ b/mp/src/public/vgui_controls/Label.h
@@ -0,0 +1,225 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef LABEL_H
+#define LABEL_H
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "utlvector.h"
+#include "vgui/VGUI.h"
+#include "vgui_controls/Panel.h"
+#include "vgui_controls/PHandle.h"
+
+namespace vgui
+{
+
+//-----------------------------------------------------------------------------
+// Purpose: Contains and displays a set of images
+// By default starts with one TextImage
+//-----------------------------------------------------------------------------
+class Label : public Panel
+{
+ DECLARE_CLASS_SIMPLE( Label, Panel );
+
+public:
+ // Constructors
+ Label(Panel *parent, const char *panelName, const char *text);
+ Label(Panel *parent, const char *panelName, const wchar_t *wszText);
+ ~Label();
+
+public:
+ // Take the string and looks it up in the localization file to convert it to unicode
+ virtual void SetText(const char *tokenName);
+
+ // Set unicode text directly
+ virtual void SetText(const wchar_t *unicodeString, bool bClearUnlocalizedSymbol = false );
+
+ // Get the current text
+ virtual void GetText(OUT_Z_BYTECAP(bufferLen) char *textOut, int bufferLen);
+ virtual void GetText(OUT_Z_BYTECAP(bufLenInBytes) wchar_t *textOut, int bufLenInBytes);
+
+ // Content alignment
+ // Get the size of the content within the label
+ virtual void GetContentSize(int &wide, int &tall);
+
+ // Set how the content aligns itself within the label
+ // alignment code, used to determine how the images are layed out within the Label
+ 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);
+ // Additional offset at the Start of the text (from whichever sides it is aligned)
+ virtual void SetTextInset(int xInset, int yInset);
+ virtual void GetTextInset(int *xInset, int *yInset );
+
+ // Text colors
+ virtual void SetFgColor(Color color);
+ virtual Color GetFgColor();
+
+ // colors to use when the label is disabled
+ virtual void SetDisabledFgColor1(Color color);
+ virtual void SetDisabledFgColor2(Color color);
+ virtual Color GetDisabledFgColor1();
+ virtual Color GetDisabledFgColor2();
+
+ // Set whether the text is displayed bright or dull
+ enum EColorState
+ {
+ CS_NORMAL,
+ CS_DULL,
+ CS_BRIGHT,
+ };
+ virtual void SetTextColorState(EColorState state);
+
+ // Font
+ virtual void SetFont(HFont font);
+ virtual HFont GetFont();
+
+ // Hotkey
+ virtual Panel *HasHotkey(wchar_t key);
+ virtual void SetHotkey(wchar_t key);
+ virtual wchar_t GetHotKey();
+
+ // Labels can be associated with controls, and alter behaviour based on the associates behaviour
+ // If the associate is disabled, so are we
+ // If the associate has focus, we may alter how we draw
+ // If we get a hotkey press or focus message, we forward the focus to the associate
+ virtual void SetAssociatedControl(Panel *control);
+
+ // Multiple image handling
+ // Images are drawn from left to right across the label, ordered by index
+ // By default there is a TextImage in position 0 (see GetTextImage()/SetTextImageIndex())
+ virtual int AddImage(IImage *image, int preOffset); // Return the index the image was placed in
+ virtual void SetImageAtIndex(int index, IImage *image, int preOffset);
+ virtual void SetImagePreOffset(int index, int preOffset); // Set the offset in pixels before the image
+ virtual IImage *GetImageAtIndex(int index);
+ virtual int GetImageCount();
+ virtual void ClearImages();
+ virtual void ResetToSimpleTextImage();
+ // fixes the layout bounds of the image within the label
+ virtual void SetImageBounds(int index, int x, int width);
+
+ // Teturns a pointer to the default text image
+ virtual TextImage *GetTextImage();
+
+ // Moves where the default text image is within the image array (it starts in position 0)
+ // Setting it to -1 removes it from the image list
+ // Returns the index the default text image was previously in
+ virtual int SetTextImageIndex(int newIndex);
+
+ // Message handling
+ // outputData - keyName is the name of the attribute requested.
+ // for Labels "text" is an option that returns the default text image text
+ // returns true on success in finding the requested value. false on failure.
+ virtual bool RequestInfo(KeyValues *outputData);
+ /* INFO HANDLING
+ "GetText"
+ returns:
+ "text" - text contained in the label
+ */
+
+ /* CUSTOM MESSAGE HANDLING
+ "SetText"
+ input: "text" - label text is set to be this string
+ */
+
+ virtual void SizeToContents();
+
+ // the +8 is padding to the content size
+ // the code which uses it should really set that itself;
+ // however a lot of existing code relies on this
+ 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);
+
+ // makes sure that the maxIndex will be a valid index
+ virtual void EnsureImageCapacity(int maxIndex);
+
+ // editing
+ 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; // this is the textImage, if the full text will not
+ // fit we put as much as we can and add an elipsis (...)
+ struct TImageInfo
+ {
+ IImage *image;
+ short offset;
+ short xpos;
+ short width;
+ };
+ CUtlVector<TImageInfo> _imageDar;
+
+ int _textInset[2];
+ Color _disabledFgColor1;
+ Color _disabledFgColor2;
+ Color _associateColor;
+ int _textImageIndex; // index in the image array that the default _textimage resides
+ EColorState _textColorState;
+
+ PHandle _associate;
+ char *_associateName;
+
+ char *_fontOverrideName;
+
+ wchar_t _hotkey; // the hotkey contained in the text
+
+ bool m_bWrap;
+ bool m_bCenterWrap;
+ bool m_bAllCaps;
+ bool m_bAutoWideToContents;
+ bool m_bAutoWideDirty;
+ bool m_bUseProportionalInsets;
+
+};
+
+} // namespace vgui
+
+#endif // LABEL_H