Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cXStaticMulti.h
Go to the documentation of this file.
1 //
4 //
5 #ifndef _INC_cXStaticMulti_H
6 #define _INC_cXStaticMulti_H
7 #pragma once
8 
9 #include "cXStatic.h"
10 
11 namespace GrayGUI
12 {
13 #define STATIC_INDENT_X 3
14 #define STATIC_INDENT_Y 0
15 
17 {
20 
21  bool bServerCommand; // send this to the server to exec.
22  cString m_sCommand; // The command to exec.
23 };
24 
26 {
32 public:
33  cXStaticTextBlock( cXWindow* pParent, const GChar_t* pszText="", D3DCOLOR TextColor=0, DWORD dwTextFormat=0, cRefBase* pBlockUserData=nullptr );
34 
35 public:
36  // includes offset within parent. calculated from any other text
37  cRefBasePtr m_pBlockUserData; // user data points back to CXChatLine or cXStaticTextHyperlink
38 
39  // The current state of rendering of this block of text.
40  cRectI m_rect; // the measured rectangle this takes up.
41  int m_iTotalBlockLines; // Number of lines in the block at current wrap width
42  cArrayVal<int> m_aLineOffsets; // array of line positions within the block beginning with UL corner
43 };
44 
46 
48 {
51 
52 public:
55 
57  {
58  return m_aTextBlocks.GetAt(i);
59  }
60 
61  void put_AutoSizePercentMax( int iAutoSizePercent );
63  {
64  return m_iAutoSizePercentMax;
65  }
66 
67  void put_DisplayTopBlock( int iDisplayTop );
68  int get_DisplayTopBlock() const
69  {
70  return m_iDisplayTopBlock;
71  }
72 
73  int get_BlockCount() const
74  {
75  return m_aTextBlocks.GetSize();
76  }
77 
79  {
80  return m_iDisplayBlockCount;
81  }
82 
83  int get_DisplayTopLine() const
84  {
85  return m_iDisplayTopLine;
86  }
87 
88  //Get the number of lines that can be seen in the window
90  {
91  return get_Height() / m_Font.get_FontHeight();
92  }
93  //Get the number of lines in a certain block
94  int get_BlockLines( int iBlock ) const
95  {
96  return m_aTextBlocks.GetAt(iBlock)->m_iTotalBlockLines;
97  }
98 
99  void put_WordWrap( bool bWrap )
100  {
101  m_bWordWrap = bWrap;
103  }
104 
105  virtual void put_Text( const GChar_t* pszText );
106  int GetBlockFromLine( int iLine ) const;
107  int GetBlockOffsetFromLine( int iLine) const;
108  void put_DisplayTopLine( int iLine );
109 
110  void InvalidateDisplay();
111  DWORD GetTextFormatMod( DWORD dwFormatMod = 0 ) const;
112  void ClearText();
113  cXStaticTextBlockPtr AppendText( const GChar_t* pszText, D3DCOLOR TextColor = D3DCOLOR_XRGB(0,0,0), DWORD dwTextFormat = DT_LEFT, cRefBase* pUserData=nullptr );
114  bool CalcTextBlocks();
115  void put_TextColorAll( D3DCOLOR color );
116  cXStaticTextBlockPtr FindHitLocation( int x, int y );
117  void FitTextToWindow(float fScale = 1.00); //fits all text into the current window
118  void FitWindowToText( void ); //resizes m_WindowRect to contain all the text at current size
119  void RemoveBlockAt(int iBlock);
120 
121  void SetTextParagraphs( char* pszText );
122  bool SetTextFromFile( cFile& file );
123 
124  // event handlers.
125  virtual bool OnRender();
126  virtual void OnSize( UINT uType, int cx, int cy );
127 
128 public:
129  // allow an individual text blob to wrap. allows the text to go to multi lines using \n
130  // else DT_SINGLELINE and text just goes to the end of the rectangle.
132  bool m_bAllowNewLines; // allow new lines in text. else ignore them
133  bool m_bAutoNewLine; // assume each text blob has a newline at the end.
134  bool m_bScrollLock; // allow scroll on new text added.
135  bool m_bUseLinesToPosition; //New style uses lines to position text, for chat window, used to preserve other windows like char creation
136  int m_iTotalLines; // The total number of lines wrapped at current window width
137 
138 private:
139  int m_iDisplayTopBlock; // top block of display
140  int m_iDisplayTopLine; // top line (block + offset) of display
141  int m_iDisplayBlockCount; // with the current width and lines. how many blocks are displaying?
142  int m_iDisplayAvail; // How many could i display ? // Does this mean how many we could display given window size?
143  // or how many are available to be displayed?
144  // naming ambiguity
145 
146  int m_iAutoSizePercentMax; // if the text changes resize the window to match. // max percent of the display size.
147  cWinSize m_AutoSizeMax; // if the text changes resize the window to match.
148 
149  cArrayRef<cXStaticTextBlock> m_aTextBlocks;
150 };
151 
153 };
154 #endif
DWORD D3DCOLOR
Stuff normally defined in windows.h or DirectX headers.
Definition: cColorRef.h:24
#define D3DCOLOR_XRGB(r, g, b)
0xff = COLOR_ALPHA_OPAQUE, but don't change it because it conflicts with DX9 "#define".
Definition: cColorRef.h:29
Definition: cXStaticMulti.h:48
void put_WordWrap(bool bWrap)
Definition: cXStaticMulti.h:99
void put_DisplayTopBlock(int iDisplayTop)
Definition: cXStaticMulti.cpp:362
void put_AutoSizePercentMax(int iAutoSizePercent)
Definition: cXStaticMulti.cpp:46
int GetBlockOffsetFromLine(int iLine) const
Definition: cXStaticMulti.cpp:272
int m_iTotalLines
Definition: cXStaticMulti.h:136
void ClearText()
Definition: cXStaticMulti.cpp:54
int get_BlockLines(int iBlock) const
Definition: cXStaticMulti.h:94
bool m_bWordWrap
Definition: cXStaticMulti.h:131
bool m_bUseLinesToPosition
Definition: cXStaticMulti.h:135
bool SetTextFromFile(cFile &file)
Definition: cXStaticMulti.cpp:437
int get_DisplayTopBlock() const
Definition: cXStaticMulti.h:68
virtual bool OnRender()
Definition: cXStaticMulti.cpp:479
virtual void put_Text(const GChar_t *pszText)
Definition: cXStaticMulti.cpp:400
cXStaticTextBlockPtr AppendText(const GChar_t *pszText, D3DCOLOR TextColor=D3DCOLOR_XRGB(0, 0, 0), DWORD dwTextFormat=DT_LEFT, cRefBase *pUserData=nullptr)
Definition: cXStaticMulti.cpp:372
int get_AutoSizePercentMax() const
Definition: cXStaticMulti.h:62
void FitWindowToText(void)
Definition: cXStaticMulti.cpp:343
bool m_bScrollLock
Definition: cXStaticMulti.h:134
void SetTextParagraphs(char *pszText)
Definition: cXStaticMulti.cpp:406
cXStaticTextBlockPtr FindHitLocation(int x, int y)
Definition: cXStaticMulti.cpp:75
~cXStaticMulti()
Definition: cXStaticMulti.cpp:42
void RemoveBlockAt(int iBlock)
Definition: cXStaticMulti.cpp:61
bool m_bAutoNewLine
Definition: cXStaticMulti.h:133
bool CalcTextBlocks()
Definition: cXStaticMulti.cpp:102
int get_DisplayTopLine() const
Definition: cXStaticMulti.h:83
virtual void OnSize(UINT uType, int cx, int cy)
Definition: cXStaticMulti.cpp:464
void FitTextToWindow(float fScale=1.00)
Definition: cXStaticMulti.cpp:303
int get_DisplayBlockCount() const
Definition: cXStaticMulti.h:78
void put_DisplayTopLine(int iLine)
Definition: cXStaticMulti.cpp:291
int get_BlockCount() const
Definition: cXStaticMulti.h:73
cXStaticTextBlockPtr get_Block(int i) const
Definition: cXStaticMulti.h:56
int get_MaxVisibleLines()
Definition: cXStaticMulti.h:89
void put_TextColorAll(D3DCOLOR color)
Definition: cXStaticMulti.cpp:67
void InvalidateDisplay()
Definition: cXStaticMulti.cpp:357
DWORD GetTextFormatMod(DWORD dwFormatMod=0) const
Definition: cXStaticMulti.cpp:91
bool m_bAllowNewLines
Definition: cXStaticMulti.h:132
cXStaticMulti(cXWindow *pParent, DLGID_t id=k_DLGID_Static)
Definition: cXStaticMulti.cpp:23
int GetBlockFromLine(int iLine) const
Definition: cXStaticMulti.cpp:251
Definition: cXStaticMulti.h:26
int m_iTotalBlockLines
Definition: cXStaticMulti.h:41
cXStaticTextBlock(cXWindow *pParent, const GChar_t *pszText="", D3DCOLOR TextColor=0, DWORD dwTextFormat=0, cRefBase *pBlockUserData=nullptr)
Definition: cXStaticMulti.cpp:12
cRectI m_rect
Definition: cXStaticMulti.h:40
cArrayVal< int > m_aLineOffsets
Definition: cXStaticMulti.h:42
cRefBasePtr m_pBlockUserData
Definition: cXStaticMulti.h:37
Definition: cXStatic.h:14
Definition: cXWindow.h:484
Definition: cXWindow.h:94
PIXELS_t get_Height(void) const noexcept
Definition: cXWindow.h:297
Definition: cRectI.h:22
Definition: WinTypes.h:128
Definition: cArrayRef.h:21
Definition: cFile.h:137
Definition: cRefPtr.h:22
Definition: cRefPtr.h:225
Definition: GrayGUI.cpp:11
const DLGID_t k_DLGID_Static
Definition: cXWindow.h:27
cRefPtr< cXStaticMulti > cXStaticMultiPtr
Definition: cXStaticMulti.h:152
cRefPtr< cXStaticTextBlock > cXStaticTextBlockPtr
Definition: cXStaticMulti.h:45
UINT DLGID_t
old window format this was a WORD, EX format this is UINT32.
Definition: cResDialog.h:68
__DECL_IMPORT cRefPtr cRefBasePtr
Definition: cRefPtr.h:376
char GChar_t
My version of TCHAR, _TCHAR.
Definition: StrConst.h:26