MyGUI  3.4.0
MyGUI_EditText.cpp
Go to the documentation of this file.
1 /*
2  * This source file is part of MyGUI. For the latest info, see http://mygui.info/
3  * Distributed under the MIT License
4  * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT)
5  */
6 
7 #include "MyGUI_Precompiled.h"
8 #include "MyGUI_EditText.h"
9 #include "MyGUI_RenderItem.h"
10 #include "MyGUI_FontManager.h"
11 #include "MyGUI_RenderManager.h"
12 #include "MyGUI_LanguageManager.h"
13 #include "MyGUI_TextIterator.h"
14 #include "MyGUI_IRenderTarget.h"
15 #include "MyGUI_FontData.h"
16 #include "MyGUI_CommonStateInfo.h"
17 
18 namespace MyGUI
19 {
20 
22 
25  mEmptyView(false),
26  mCurrentColourNative(0xFFFFFFFF),
27  mInverseColourNative(0xFF000000),
28  mShadowColourNative(0x00000000),
29  mTextOutDate(false),
30  mTextAlign(Align::Default),
31  mColour(Colour::White),
32  mShadowColour(Colour::Black),
33  mAlpha(ALPHA_MAX),
34  mFont(nullptr),
35  mTexture(nullptr),
36  mFontHeight(0),
37  mBackgroundNormal(true),
38  mStartSelect(0),
39  mEndSelect(0),
40  mCursorPosition(0),
41  mVisibleCursor(false),
42  mInvertSelect(true),
43  mShadow(false),
44  mNode(nullptr),
45  mRenderItem(nullptr),
46  mCountVertex(SIMPLETEXT_COUNT_VERTEX),
47  mIsAddCursorWidth(true),
48  mShiftText(false),
49  mWordWrap(false),
50  mManualColour(false),
51  mOldWidth(0)
52  {
54  }
55 
56  void EditText::setVisible(bool _visible)
57  {
58  if (mVisible == _visible)
59  return;
60  mVisible = _visible;
61 
62  if (nullptr != mNode)
64  }
65 
67  {
68  if (nullptr != mNode)
70  }
71 
72  void EditText::_setAlign(const IntSize& _oldsize)
73  {
74  if (mWordWrap)
75  {
76  // передается старая координата всегда
77  int width = mCroppedParent->getWidth();
78  if (mOldWidth != width)
79  {
80  mOldWidth = width;
81  mTextOutDate = true;
82  }
83  }
84 
85  // необходимо разобраться
86  bool need_update = true;//_update;
87 
88  // первоначальное выравнивание
89  if (mAlign.isHStretch())
90  {
91  // растягиваем
92  mCoord.width = mCoord.width + (mCroppedParent->getWidth() - _oldsize.width);
93  need_update = true;
94  mIsMargin = true; // при изменении размеров все пересчитывать
95  }
96  else if (mAlign.isRight())
97  {
98  // двигаем по правому краю
99  mCoord.left = mCoord.left + (mCroppedParent->getWidth() - _oldsize.width);
100  need_update = true;
101  }
102  else if (mAlign.isHCenter())
103  {
104  // выравнивание по горизонтали без растяжения
106  need_update = true;
107  }
108 
109  if (mAlign.isVStretch())
110  {
111  // растягиваем
113  need_update = true;
114  mIsMargin = true; // при изменении размеров все пересчитывать
115  }
116  else if (mAlign.isBottom())
117  {
118  // двигаем по нижнему краю
119  mCoord.top = mCoord.top + (mCroppedParent->getHeight() - _oldsize.height);
120  need_update = true;
121  }
122  else if (mAlign.isVCenter())
123  {
124  // выравнивание по вертикали без растяжения
126  need_update = true;
127  }
128 
129  if (need_update)
130  {
132  _updateView();
133  }
134  }
135 
137  {
138  bool margin = _checkMargin();
139 
140  mEmptyView = ((0 >= _getViewWidth()) || (0 >= _getViewHeight()));
141 
144 
145  // вьюпорт стал битым
146  if (margin)
147  {
148  // проверка на полный выход за границу
149  if (_checkOutside())
150  {
151  // запоминаем текущее состояние
152  mIsMargin = margin;
153 
154  // обновить перед выходом
155  if (nullptr != mNode)
157  return;
158  }
159  }
160 
161  // мы обрезаны или были обрезаны
162  if (mIsMargin || margin)
163  {
166  }
167 
168  // запоминаем текущее состояние
169  mIsMargin = margin;
170 
171  if (nullptr != mNode)
173  }
174 
175  void EditText::setCaption(const UString& _value)
176  {
177  mCaption = _value;
178  mTextOutDate = true;
179 
180  checkVertexSize();
181 
182  if (nullptr != mNode)
184  }
185 
186  void EditText::checkVertexSize()
187  {
188  // если вершин не хватит, делаем реалок, с учетом выделения * 2 и курсора
189  size_t need = (mCaption.size() * (mShadow ? 3 : 2) + 2) * VertexQuad::VertexCount;
190  if (mCountVertex < need)
191  {
193  if (nullptr != mRenderItem)
195  }
196  }
197 
198  unsigned int EditText::getMixedNativeAlpha(float secondAlpha)
199  {
200  return (uint8)(mAlpha * secondAlpha * 255) << 24;
201  }
202 
204  {
205  return mCaption;
206  }
207 
208  void EditText::setTextColour(const Colour& _value)
209  {
210  mManualColour = true;
211  _setTextColour(_value);
212  }
213 
214  void EditText::_setTextColour(const Colour& _value)
215  {
216  if (mColour == _value)
217  return;
218 
219  mColour = _value;
221 
223 
224  mCurrentColourNative = (mCurrentColourNative & 0x00FFFFFF) | getMixedNativeAlpha(mColour.alpha);
226 
227  if (nullptr != mNode)
229  }
230 
232  {
233  return mColour;
234  }
235 
236  void EditText::setAlpha(float _value)
237  {
238  if (mAlpha == _value)
239  return;
240  mAlpha = _value;
241 
242  mCurrentColourNative = (mCurrentColourNative & 0x00FFFFFF) | getMixedNativeAlpha(mColour.alpha);
243  mShadowColourNative = (mShadowColourNative & 0x00FFFFFF) | getMixedNativeAlpha(mShadowColour.alpha);
245 
246  if (nullptr != mNode)
248  }
249 
250  void EditText::setFontName(const std::string& _value)
251  {
252  mTexture = nullptr;
254  if (mFont != nullptr)
255  {
257 
258  // если надо, устанавливаем дефолтный размер шрифта
259  if (mFont->getDefaultHeight() != 0)
260  {
262  }
263  }
264 
265  mTextOutDate = true;
266 
267  // если мы были приаттаченны, то удаляем себя
268  if (nullptr != mRenderItem)
269  {
271  mRenderItem = nullptr;
272  }
273 
274  // если есть текстура, то приаттачиваемся
275  if (nullptr != mTexture && nullptr != mNode)
276  {
277  mRenderItem = mNode->addToRenderItem(mTexture, false, false);
279  }
280 
281  if (nullptr != mNode)
283  }
284 
285  const std::string& EditText::getFontName() const
286  {
287  return mFont->getResourceName();
288  }
289 
290  void EditText::setFontHeight(int _value)
291  {
292  mFontHeight = _value;
293  mTextOutDate = true;
294 
295  if (nullptr != mNode)
297  }
298 
300  {
301  return mFontHeight;
302  }
303 
305  {
306  mNode = _node;
307  // если уже есть текстура, то атачимся, актуально для смены леера
308  if (nullptr != mTexture)
309  {
310  MYGUI_ASSERT(!mRenderItem, "mRenderItem must be nullptr");
311 
312  mRenderItem = mNode->addToRenderItem(mTexture, false, false);
314  }
315  }
316 
318  {
319  if (nullptr != mRenderItem)
320  {
322  mRenderItem = nullptr;
323  }
324  mNode = nullptr;
325  }
326 
328  {
329  return mStartSelect;
330  }
331 
333  {
334  return mEndSelect;
335  }
336 
337  void EditText::setTextSelection(size_t _start, size_t _end)
338  {
339  mStartSelect = _start;
340  mEndSelect = _end;
341 
342  if (nullptr != mNode)
344  }
345 
347  {
348  return mBackgroundNormal;
349  }
350 
351  void EditText::setSelectBackground(bool _normal)
352  {
353  if (mBackgroundNormal == _normal)
354  return;
355  mBackgroundNormal = _normal;
356 
357  if (nullptr != mNode)
359  }
360 
362  {
363  return mVisibleCursor;
364  }
365 
366  void EditText::setVisibleCursor(bool _value)
367  {
368  if (mVisibleCursor == _value)
369  return;
370  mVisibleCursor = _value;
371 
372  if (nullptr != mNode)
374  }
375 
377  {
378  return mCursorPosition;
379  }
380 
381  void EditText::setCursorPosition(size_t _index)
382  {
383  if (mCursorPosition == _index)
384  return;
385  mCursorPosition = _index;
386 
387  if (nullptr != mNode)
389  }
390 
392  {
393  mTextAlign = _value;
394 
395  if (nullptr != mNode)
397  }
398 
400  {
401  return mTextAlign;
402  }
403 
405  {
406  // если нуно обновить, или изменились пропорции экрана
407  if (mTextOutDate)
408  updateRawData();
409 
410  IntSize size = mTextView.getViewSize();
411  // плюс размер курсора
412  if (mIsAddCursorWidth)
413  size.width += 2;
414 
415  if (mShadow)
416  {
417  if (!mIsAddCursorWidth)
418  size.width ++;
419  size.height ++;
420  }
421 
422  return size;
423  }
424 
426  {
427  return mTextView.getData();
428  }
429 
430  void EditText::setViewOffset(const IntPoint& _point)
431  {
432  mViewOffset = _point;
433 
434  if (nullptr != mNode)
436  }
437 
439  {
440  return mViewOffset;
441  }
442 
443  size_t EditText::getCursorPosition(const IntPoint& _point)
444  {
445  if (nullptr == mFont)
446  return 0;
447 
448  if (mTextOutDate)
449  updateRawData();
450 
451  IntPoint point = _point;
453  point += mViewOffset;
454  point -= mCoord.point();
455 
456  return mTextView.getCursorPosition(point);
457  }
458 
460  {
461  if (nullptr == mFont)
462  return IntCoord();
463 
464  if (mTextOutDate)
465  updateRawData();
466 
467  IntPoint point = mTextView.getCursorPoint(_position);
469  point -= mViewOffset;
470  point += mCoord.point();
471 
472  return IntCoord(point.left, point.top, 2, mFontHeight);
473  }
474 
475  void EditText::setShiftText(bool _value)
476  {
477  if (mShiftText == _value)
478  return;
479  mShiftText = _value;
480 
481  if (nullptr != mNode)
483  }
484 
485  void EditText::setWordWrap(bool _value)
486  {
487  mWordWrap = _value;
488  mTextOutDate = true;
489 
490  if (nullptr != mNode)
492  }
493 
495  {
496  if (nullptr == mFont)
497  return;
498  // сбрасывам флаги
499  mTextOutDate = false;
500 
501  int width = -1;
502  if (mWordWrap)
503  {
504  width = mCoord.width;
505  // обрезать слова нужно по шарине, которую мы реально используем
506  if (mIsAddCursorWidth)
507  width -= 2;
508  }
509 
511  }
512 
514  {
515  EditTextStateInfo* data = _data->castType<EditTextStateInfo>();
516  if (!mManualColour && data->getColour() != Colour::Zero)
517  _setTextColour(data->getColour());
518  setShiftText(data->getShift());
519  }
520 
522  {
523  if (nullptr == mFont || !mVisible || mEmptyView)
524  return;
525 
527  updateRawData();
528 
530 
531  const RenderTargetInfo& renderTargetInfo = mRenderItem->getRenderTarget()->getInfo();
532 
533  // колличество отрисованных вершин
534  size_t vertexCount = 0;
535 
536  // текущие цвета
537  uint32 colour = mCurrentColourNative;
538  uint32 inverseColour = mInverseColourNative;
539  uint32 selectedColour = mInvertSelect ? inverseColour : colour | 0x00FFFFFF;
540 
541  const VectorLineInfo& textViewData = mTextView.getData();
542 
543  float top = (float)(-mViewOffset.top + mCoord.top);
544 
545  FloatRect vertexRect;
546 
548 
549  size_t index = 0;
550 
551  for (VectorLineInfo::const_iterator line = textViewData.begin(); line != textViewData.end(); ++line)
552  {
553  float left = (float)(line->offset - mViewOffset.left + mCoord.left);
554 
555  for (VectorCharInfo::const_iterator sim = line->simbols.begin(); sim != line->simbols.end(); ++sim)
556  {
557  if (sim->isColour())
558  {
559  colour = sim->getColour() | (colour & 0xFF000000);
560  inverseColour = colour ^ 0x00FFFFFF;
561  selectedColour = mInvertSelect ? inverseColour : colour | 0x00FFFFFF;
562  continue;
563  }
564 
565  // смещение текстуры для фона
566  bool select = index >= mStartSelect && index < mEndSelect;
567 
568  float fullAdvance = sim->getBearingX() + sim->getAdvance();
569 
570  // Render the selection, if any, first.
571  if (select)
572  {
573  vertexRect.set(left, top, left + fullAdvance, top + (float)mFontHeight);
574 
575  drawGlyph(renderTargetInfo, vertex, vertexCount, vertexRect, selectedUVRect, selectedColour);
576  }
577 
578  // Render the glyph shadow, if any.
579  if (mShadow)
580  {
581  vertexRect.left = left + sim->getBearingX() + 1.0f;
582  vertexRect.top = top + sim->getBearingY() + 1.0f;
583  vertexRect.right = vertexRect.left + sim->getWidth();
584  vertexRect.bottom = vertexRect.top + sim->getHeight();
585 
586  drawGlyph(renderTargetInfo, vertex, vertexCount, vertexRect, sim->getUVRect(), mShadowColourNative);
587  }
588 
589  // Render the glyph itself.
590  vertexRect.left = left + sim->getBearingX();
591  vertexRect.top = top + sim->getBearingY();
592  vertexRect.right = vertexRect.left + sim->getWidth();
593  vertexRect.bottom = vertexRect.top + sim->getHeight();
594 
595  drawGlyph(renderTargetInfo, vertex, vertexCount, vertexRect, sim->getUVRect(), (!select || !mInvertSelect) ? colour : inverseColour);
596 
597  left += fullAdvance;
598  ++index;
599  }
600 
601  top += mFontHeight;
602  ++index;
603  }
604 
605  // Render the cursor, if any, last.
606  if (mVisibleCursor)
607  {
609  GlyphInfo* cursorGlyph = mFont->getGlyphInfo(static_cast<Char>(FontCodeType::Cursor));
610  vertexRect.set((float)point.left, (float)point.top, (float)point.left + cursorGlyph->width, (float)(point.top + mFontHeight));
611 
612  drawGlyph(renderTargetInfo, vertex, vertexCount, vertexRect, cursorGlyph->uvRect, mCurrentColourNative | 0x00FFFFFF);
613  }
614 
615  // колличество реально отрисованных вершин
616  mRenderItem->setLastVertexCount(vertexCount);
617  }
618 
619  void EditText::setInvertSelected(bool _value)
620  {
621  if (mInvertSelect == _value)
622  return;
623  mInvertSelect = _value;
624 
625  if (nullptr != mNode)
627  }
628 
630  {
631  return mInvertSelect;
632  }
633 
634  bool EditText::getShadow() const
635  {
636  return mShadow;
637  }
638 
639  void EditText::setShadow(bool _value)
640  {
641  mShadow = _value;
642  mTextOutDate = true;
643 
644  checkVertexSize();
645 
646  if (nullptr != mNode)
648  }
649 
650  void EditText::setShadowColour(const Colour& _value)
651  {
652  mShadowColour = _value;
654 
656 
657  mShadowColourNative = (mShadowColourNative & 0x00FFFFFF) | getMixedNativeAlpha(mShadowColour.alpha);
658 
659  if (nullptr != mNode)
661  }
662 
664  {
665  return mShadowColour;
666  }
667 
668  void EditText::drawQuad(
669  Vertex*& _vertex,
670  size_t& _vertexCount,
671  const FloatRect& _vertexRect,
672  float _vertexZ,
673  const FloatRect& _textureRect,
674  uint32 _colour) const
675  {
676  _vertex[0].x = _vertexRect.left;
677  _vertex[0].y = _vertexRect.top;
678  _vertex[0].z = _vertexZ;
679  _vertex[0].colour = _colour;
680  _vertex[0].u = _textureRect.left;
681  _vertex[0].v = _textureRect.top;
682 
683  _vertex[2].x = _vertexRect.left;
684  _vertex[2].y = _vertexRect.bottom;
685  _vertex[2].z = _vertexZ;
686  _vertex[2].colour = _colour;
687  _vertex[2].u = _textureRect.left;
688  _vertex[2].v = _textureRect.bottom;
689 
690  _vertex[1].x = _vertexRect.right;
691  _vertex[1].y = _vertexRect.top;
692  _vertex[1].z = _vertexZ;
693  _vertex[1].colour = _colour;
694  _vertex[1].u = _textureRect.right;
695  _vertex[1].v = _textureRect.top;
696 
697  _vertex[3].x = _vertexRect.right;
698  _vertex[3].y = _vertexRect.top;
699  _vertex[3].z = _vertexZ;
700  _vertex[3].colour = _colour;
701  _vertex[3].u = _textureRect.right;
702  _vertex[3].v = _textureRect.top;
703 
704  _vertex[5].x = _vertexRect.left;
705  _vertex[5].y = _vertexRect.bottom;
706  _vertex[5].z = _vertexZ;
707  _vertex[5].colour = _colour;
708  _vertex[5].u = _textureRect.left;
709  _vertex[5].v = _textureRect.bottom;
710 
711  _vertex[4].x = _vertexRect.right;
712  _vertex[4].y = _vertexRect.bottom;
713  _vertex[4].z = _vertexZ;
714  _vertex[4].colour = _colour;
715  _vertex[4].u = _textureRect.right;
716  _vertex[4].v = _textureRect.bottom;
717 
718  _vertex += VertexQuad::VertexCount;
719  _vertexCount += VertexQuad::VertexCount;
720  }
721 
722  void EditText::drawGlyph(
723  const RenderTargetInfo& _renderTargetInfo,
724  Vertex*& _vertex,
725  size_t& _vertexCount,
726  FloatRect _vertexRect,
727  FloatRect _textureRect,
728  uint32 _colour) const
729  {
730  // символ залазиет влево
731  float leftClip = (float)mCurrentCoord.left - _vertexRect.left;
732  if (leftClip > 0.0f)
733  {
734  if ((float)mCurrentCoord.left < _vertexRect.right)
735  {
736  _textureRect.left += _textureRect.width() * leftClip / _vertexRect.width();
737  _vertexRect.left += leftClip;
738  }
739  else
740  {
741  return;
742  }
743  }
744 
745  // символ залазиет вправо
746  float rightClip = _vertexRect.right - (float)mCurrentCoord.right();
747  if (rightClip > 0.0f)
748  {
749  if (_vertexRect.left < (float)mCurrentCoord.right())
750  {
751  _textureRect.right -= _textureRect.width() * rightClip / _vertexRect.width();
752  _vertexRect.right -= rightClip;
753  }
754  else
755  {
756  return;
757  }
758  }
759 
760  // символ залазиет вверх
761  float topClip = (float)mCurrentCoord.top - _vertexRect.top;
762  if (topClip > 0.0f)
763  {
764  if ((float)mCurrentCoord.top < _vertexRect.bottom)
765  {
766  _textureRect.top += _textureRect.height() * topClip / _vertexRect.height();
767  _vertexRect.top += topClip;
768  }
769  else
770  {
771  return;
772  }
773  }
774 
775  // символ залазиет вниз
776  float bottomClip = _vertexRect.bottom - (float)mCurrentCoord.bottom();
777  if (bottomClip > 0.0f)
778  {
779  if (_vertexRect.top < (float)mCurrentCoord.bottom())
780  {
781  _textureRect.bottom -= _textureRect.height() * bottomClip / _vertexRect.height();
782  _vertexRect.bottom -= bottomClip;
783  }
784  else
785  {
786  return;
787  }
788  }
789 
790  float pix_left = mCroppedParent->getAbsoluteLeft() - _renderTargetInfo.leftOffset + _vertexRect.left;
791  float pix_top = mCroppedParent->getAbsoluteTop() - _renderTargetInfo.topOffset + (mShiftText ? 1.0f : 0.0f) + _vertexRect.top;
792 
793  FloatRect vertexRect(
794  ((_renderTargetInfo.pixScaleX * pix_left + _renderTargetInfo.hOffset) * 2.0f) - 1.0f,
795  -(((_renderTargetInfo.pixScaleY * pix_top + _renderTargetInfo.vOffset) * 2.0f) - 1.0f),
796  ((_renderTargetInfo.pixScaleX * (pix_left + _vertexRect.width()) + _renderTargetInfo.hOffset) * 2.0f) - 1.0f,
797  -(((_renderTargetInfo.pixScaleY * (pix_top + _vertexRect.height()) + _renderTargetInfo.vOffset) * 2.0f) - 1.0f));
798 
799  drawQuad(_vertex, _vertexCount, vertexRect, mNode->getNodeDepth(), _textureRect, _colour);
800  }
801 
802 } // namespace MyGUI
MyGUI::TextView::getViewSize
const IntSize & getViewSize() const
Definition: MyGUI_TextView.cpp:373
MyGUI::Char
unsigned int Char
Definition: MyGUI_Types.h:48
MyGUI::EditText::setShadowColour
void setShadowColour(const Colour &_value) override
Definition: MyGUI_EditText.cpp:650
MyGUI::Singleton< RenderManager >::getInstance
static RenderManager & getInstance()
Definition: MyGUI_Singleton.h:44
MyGUI::EditText::setFontName
void setFontName(const std::string &_value) override
Definition: MyGUI_EditText.cpp:250
MyGUI::EditText::mVisibleCursor
bool mVisibleCursor
Definition: MyGUI_EditText.h:158
MyGUI::types::TRect::bottom
T bottom
Definition: MyGUI_TRect.h:23
MyGUI::RenderItem::setLastVertexCount
void setLastVertexCount(size_t _count)
Definition: MyGUI_RenderItem.cpp:235
MyGUI::EditText::getTextSelectionStart
size_t getTextSelectionStart() const override
Definition: MyGUI_EditText.cpp:327
MyGUI::Align::isHCenter
bool isHCenter() const
Definition: MyGUI_Align.h:44
MyGUI::ISubWidgetText
Definition: MyGUI_ISubWidgetText.h:20
MyGUI::EditText::isVisibleCursor
bool isVisibleCursor() const override
Definition: MyGUI_EditText.cpp:361
MyGUI::FontCodeType::Selected
@ Selected
Definition: MyGUI_FontData.h:30
MyGUI::EditText::mCursorPosition
size_t mCursorPosition
Definition: MyGUI_EditText.h:157
MyGUI::EditText::getFontHeight
int getFontHeight() const override
Definition: MyGUI_EditText.cpp:299
MyGUI::EditText::mOldWidth
int mOldWidth
Definition: MyGUI_EditText.h:172
MyGUI::EditTextStateInfo
Definition: MyGUI_CommonStateInfo.h:175
MyGUI::types::TSize::height
T height
Definition: MyGUI_TSize.h:21
MyGUI::types::TCoord::bottom
T bottom() const
Definition: MyGUI_TCoord.h:155
MyGUI::TextView::update
void update(const UString &_text, IFont *_font, int _height, Align _align, VertexColourType _format, int _maxWidth=-1)
Definition: MyGUI_TextView.cpp:100
MyGUI::RenderItem::reallockDrawItem
void reallockDrawItem(ISubWidget *_item, size_t _count)
Definition: MyGUI_RenderItem.cpp:143
MyGUI::EditText::mFontHeight
int mFontHeight
Definition: MyGUI_EditText.h:152
MyGUI::EditText::createDrawItem
void createDrawItem(ITexture *_texture, ILayerNode *_node) override
Definition: MyGUI_EditText.cpp:304
MyGUI::types::TCoord::left
T left
Definition: MyGUI_TCoord.h:22
MyGUI::ICroppedRectangle::mIsMargin
bool mIsMargin
Definition: MyGUI_ICroppedRectangle.h:248
MyGUI::IFont::getGlyphInfo
virtual GlyphInfo * getGlyphInfo(Char _id)=0
MyGUI::ICroppedRectangle::getAbsolutePosition
const IntPoint & getAbsolutePosition() const
Definition: MyGUI_ICroppedRectangle.h:67
MyGUI::types::TPoint::top
T top
Definition: MyGUI_TPoint.h:21
MyGUI::EditText::mManualColour
bool mManualColour
Definition: MyGUI_EditText.h:171
MyGUI::EditText::getCursorPosition
size_t getCursorPosition() const override
Definition: MyGUI_EditText.cpp:376
MyGUI::FontCodeType::SelectedBack
@ SelectedBack
Definition: MyGUI_FontData.h:31
MyGUI::EditText::mBackgroundNormal
bool mBackgroundNormal
Definition: MyGUI_EditText.h:154
MyGUI::texture_utility::convertColour
void convertColour(uint32 &_colour, VertexColourType _format)
Definition: MyGUI_TextureUtility.h:23
MyGUI::EditTextStateInfo::getShift
bool getShift() const
Definition: MyGUI_CommonStateInfo.h:190
MyGUI::ICroppedRectangle::_getViewHeight
int _getViewHeight() const
Definition: MyGUI_ICroppedRectangle.h:153
MyGUI::types::TCoord::top
T top
Definition: MyGUI_TCoord.h:23
MyGUI::EditText::setShiftText
void setShiftText(bool _shift) override
Definition: MyGUI_EditText.cpp:475
MyGUI::types::TRect::set
void set(T const &_left, T const &_top, T const &_right, T const &_bottom)
Definition: MyGUI_TRect.h:121
MyGUI::ICroppedRectangle::getAbsoluteTop
int getAbsoluteTop() const
Definition: MyGUI_ICroppedRectangle.h:88
MyGUI::EditText::_correctView
void _correctView() override
Definition: MyGUI_EditText.cpp:66
MyGUI::uint8
unsigned char uint8
Definition: MyGUI_Types.h:44
MyGUI::types::TRect< float >
MyGUI::EditText::getSelectBackground
bool getSelectBackground() const override
Definition: MyGUI_EditText.cpp:346
MyGUI::ILayerNode::addToRenderItem
virtual RenderItem * addToRenderItem(ITexture *_texture, bool _firstQueue, bool _separate)=0
MyGUI::EditText::getShadowColour
const Colour & getShadowColour() const override
Definition: MyGUI_EditText.cpp:663
MyGUI::EditText::getTextSize
IntSize getTextSize() override
Definition: MyGUI_EditText.cpp:404
MyGUI_FontManager.h
MyGUI::EditText::getInvertSelected
bool getInvertSelected() const override
Definition: MyGUI_EditText.cpp:629
MyGUI::ALPHA_MAX
const float ALPHA_MAX
Definition: MyGUI_Macros.h:19
MyGUI::ILayerNode::outOfDate
virtual void outOfDate(RenderItem *_item)=0
MyGUI::EditText::mInvertSelect
bool mInvertSelect
Definition: MyGUI_EditText.h:159
MyGUI::types::TRect::right
T right
Definition: MyGUI_TRect.h:22
MyGUI::ILayerNode
Definition: MyGUI_ILayerNode.h:30
MyGUI::EditText::getTextColour
const Colour & getTextColour() const override
Definition: MyGUI_EditText.cpp:231
MyGUI::IntCoord
types::TCoord< int > IntCoord
Definition: MyGUI_Types.h:35
MyGUI::Vertex::y
float y
Definition: MyGUI_VertexData.h:28
MyGUI::ICroppedRectangle::getAbsoluteLeft
int getAbsoluteLeft() const
Definition: MyGUI_ICroppedRectangle.h:83
MyGUI::EditText::mRenderItem
RenderItem * mRenderItem
Definition: MyGUI_EditText.h:165
MyGUI::ICroppedRectangle::mMargin
IntRect mMargin
Definition: MyGUI_ICroppedRectangle.h:244
MyGUI::Align::isVCenter
bool isVCenter() const
Definition: MyGUI_Align.h:49
MyGUI::types::TPoint< int >
MyGUI_CommonStateInfo.h
MyGUI::EditText::getLineInfo
virtual const VectorLineInfo & getLineInfo() const
Definition: MyGUI_EditText.cpp:425
MyGUI::Vertex::z
float z
Definition: MyGUI_VertexData.h:28
MyGUI::EditText::setTextColour
void setTextColour(const Colour &_value) override
Definition: MyGUI_EditText.cpp:208
MyGUI::types::TSize::width
T width
Definition: MyGUI_TSize.h:20
MyGUI::Colour::alpha
float alpha
Definition: MyGUI_Colour.h:53
MyGUI::EditText::mTextAlign
Align mTextAlign
Definition: MyGUI_EditText.h:143
MyGUI::Align
Definition: MyGUI_Align.h:20
MyGUI::types::TRect::left
T left
Definition: MyGUI_TRect.h:20
MyGUI::TextView::getData
const VectorLineInfo & getData() const
Definition: MyGUI_TextView.cpp:383
MyGUI::types::TCoord::right
T right() const
Definition: MyGUI_TCoord.h:150
MyGUI::ISubWidget::mVisible
bool mVisible
Definition: MyGUI_ISubWidget.h:60
MyGUI::IFont::getTextureFont
virtual ITexture * getTextureFont()=0
MyGUI::EditText::mTexture
ITexture * mTexture
Definition: MyGUI_EditText.h:151
MyGUI::IResource::getResourceName
const std::string & getResourceName() const
Definition: MyGUI_IResource.h:32
MyGUI::ILayerNode::getNodeDepth
virtual float getNodeDepth()=0
MyGUI::EditText::mEndSelect
size_t mEndSelect
Definition: MyGUI_EditText.h:156
MyGUI::EditText::mAlpha
float mAlpha
Definition: MyGUI_EditText.h:147
MyGUI::GlyphInfo::uvRect
FloatRect uvRect
Definition: MyGUI_FontData.h:65
MyGUI::UString
A UTF-16 string with implicit conversion to/from std::string and std::wstring.
Definition: MyGUI_UString.h:168
MyGUI::IStateInfo
Definition: MyGUI_IStateInfo.h:18
MyGUI_Precompiled.h
MyGUI::ICroppedRectangle::_checkOutside
bool _checkOutside() const
Definition: MyGUI_ICroppedRectangle.h:235
MyGUI::EditText::doRender
void doRender() override
Definition: MyGUI_EditText.cpp:521
MyGUI::EditText::EditText
EditText()
Definition: MyGUI_EditText.cpp:23
MyGUI::GlyphInfo
Definition: MyGUI_FontData.h:40
MyGUI::EditText::mVertexFormat
VertexColourType mVertexFormat
Definition: MyGUI_EditText.h:148
MyGUI::EditText::mCurrentCoord
IntCoord mCurrentCoord
Definition: MyGUI_EditText.h:139
MyGUI::EditText::setCursorPosition
void setCursorPosition(size_t _index) override
Definition: MyGUI_EditText.cpp:381
MyGUI::EditText::mShadowColour
Colour mShadowColour
Definition: MyGUI_EditText.h:146
MyGUI::EditText::getCursorCoord
IntCoord getCursorCoord(size_t _position) override
Definition: MyGUI_EditText.cpp:459
MyGUI::ICroppedRectangle::mCroppedParent
ICroppedRectangle * mCroppedParent
Definition: MyGUI_ICroppedRectangle.h:249
MyGUI::Vertex::x
float x
Definition: MyGUI_VertexData.h:28
MyGUI::ICroppedRectangle::mCoord
IntCoord mCoord
Definition: MyGUI_ICroppedRectangle.h:245
MyGUI::EditText::_updateView
void _updateView() override
Definition: MyGUI_EditText.cpp:136
MyGUI::SIMPLETEXT_COUNT_VERTEX
const size_t SIMPLETEXT_COUNT_VERTEX
Definition: MyGUI_EditText.cpp:21
MyGUI::EditText::mTextOutDate
bool mTextOutDate
Definition: MyGUI_EditText.h:142
MyGUI::EditText::mCurrentColourNative
uint32 mCurrentColourNative
Definition: MyGUI_EditText.h:136
MyGUI::types::TPoint::left
T left
Definition: MyGUI_TPoint.h:20
MyGUI::EditText::mWordWrap
bool mWordWrap
Definition: MyGUI_EditText.h:170
MyGUI::EditText::mCaption
UString mCaption
Definition: MyGUI_EditText.h:141
MyGUI::uint32
unsigned int uint32
Definition: MyGUI_Types.h:46
MyGUI::EditText::mCountVertex
size_t mCountVertex
Definition: MyGUI_EditText.h:166
MyGUI::FontCodeType::Cursor
@ Cursor
Definition: MyGUI_FontData.h:32
MyGUI::IRenderTarget::getInfo
virtual const RenderTargetInfo & getInfo()=0
MyGUI::Vertex::v
float v
Definition: MyGUI_VertexData.h:30
MYGUI_ASSERT
#define MYGUI_ASSERT(exp, dest)
Definition: MyGUI_Diagnostic.h:34
MyGUI::IObject::castType
Type * castType(bool _throw=true)
Definition: MyGUI_IObject.h:18
MyGUI::EditText::getViewOffset
IntPoint getViewOffset() const override
Definition: MyGUI_EditText.cpp:438
MyGUI::EditText::getCaption
const UString & getCaption() const override
Definition: MyGUI_EditText.cpp:203
MyGUI::FontManager::getByName
IFont * getByName(const std::string &_name) const
Definition: MyGUI_FontManager.cpp:89
MyGUI::VertexQuad::VertexCount
@ VertexCount
Definition: MyGUI_VertexData.h:43
MyGUI::EditText::mShadow
bool mShadow
Definition: MyGUI_EditText.h:160
MyGUI::Align::isVStretch
bool isVStretch() const
Definition: MyGUI_Align.h:84
MyGUI::EditText::mViewOffset
IntPoint mViewOffset
Definition: MyGUI_EditText.h:162
MyGUI::RenderItem::getRenderTarget
IRenderTarget * getRenderTarget()
Definition: MyGUI_RenderItem.cpp:240
MyGUI::FloatRect
types::TRect< float > FloatRect
Definition: MyGUI_Types.h:33
MyGUI_LanguageManager.h
MyGUI_FontData.h
MyGUI::EditText::setFontHeight
void setFontHeight(int _value) override
Definition: MyGUI_EditText.cpp:290
MyGUI_IRenderTarget.h
MyGUI::EditText::mShadowColourNative
uint32 mShadowColourNative
Definition: MyGUI_EditText.h:138
MyGUI::types::TSize< int >
MyGUI::EditText::destroyDrawItem
void destroyDrawItem() override
Definition: MyGUI_EditText.cpp:317
MyGUI::EditText::mFont
IFont * mFont
Definition: MyGUI_EditText.h:150
MyGUI::EditText::setViewOffset
void setViewOffset(const IntPoint &_point) override
Definition: MyGUI_EditText.cpp:430
MyGUI::EditText::mTextView
TextView mTextView
Definition: MyGUI_EditText.h:174
MyGUI::TextView::getCursorPosition
size_t getCursorPosition(const IntPoint &_value)
Definition: MyGUI_TextView.cpp:294
MyGUI_RenderItem.h
MyGUI::ISubWidget::mAlign
Align mAlign
Definition: MyGUI_ISubWidget.h:59
MyGUI::IFont::getDefaultHeight
virtual int getDefaultHeight()=0
MyGUI::UString::size
size_type size() const
Returns the number of code points in the current string.
Definition: MyGUI_UString.cpp:586
MyGUI::EditText::setCaption
void setCaption(const UString &_value) override
Definition: MyGUI_EditText.cpp:175
MyGUI::Align::isRight
bool isRight() const
Definition: MyGUI_Align.h:64
MyGUI::EditText::getTextAlign
Align getTextAlign() const override
Definition: MyGUI_EditText.cpp:399
MyGUI::TextView::getCursorPoint
IntPoint getCursorPoint(size_t _position)
Definition: MyGUI_TextView.cpp:341
MyGUI::ITexture
Definition: MyGUI_ITexture.h:28
MyGUI::types::TCoord::point
TPoint< T > point() const
Definition: MyGUI_TCoord.h:185
MyGUI::EditText::setWordWrap
void setWordWrap(bool _value) override
Definition: MyGUI_EditText.cpp:485
MyGUI::EditText::setAlpha
void setAlpha(float _value) override
Definition: MyGUI_EditText.cpp:236
MyGUI::Colour
Definition: MyGUI_Colour.h:17
MyGUI::types::TRect::top
T top
Definition: MyGUI_TRect.h:21
MyGUI::EditText::updateRawData
virtual void updateRawData()
Definition: MyGUI_EditText.cpp:494
MyGUI::RenderTargetInfo
Definition: MyGUI_RenderTargetInfo.h:16
MyGUI_RenderManager.h
MyGUI::Align::isBottom
bool isBottom() const
Definition: MyGUI_Align.h:79
MyGUI::types::TCoord::width
T width
Definition: MyGUI_TCoord.h:24
MyGUI::RenderItem::removeDrawItem
void removeDrawItem(ISubWidget *_item)
Definition: MyGUI_RenderItem.cpp:100
MyGUI::EditText::mShiftText
bool mShiftText
Definition: MyGUI_EditText.h:169
MyGUI::ICroppedRectangle::_checkMargin
bool _checkMargin()
Definition: MyGUI_ICroppedRectangle.h:185
MyGUI::ICroppedRectangle::_getViewWidth
int _getViewWidth() const
Definition: MyGUI_ICroppedRectangle.h:149
MyGUI::RenderManager::getVertexFormat
virtual VertexColourType getVertexFormat()=0
MyGUI::ICroppedRectangle::getHeight
int getHeight() const
Definition: MyGUI_ICroppedRectangle.h:119
MyGUI::EditText::getTextSelectionEnd
size_t getTextSelectionEnd() const override
Definition: MyGUI_EditText.cpp:332
MyGUI::RenderItem::addDrawItem
void addDrawItem(ISubWidget *_item, size_t _count)
Definition: MyGUI_RenderItem.cpp:125
MyGUI::EditText::_setAlign
void _setAlign(const IntSize &_oldsize) override
Definition: MyGUI_EditText.cpp:72
MyGUI::EditText::setSelectBackground
void setSelectBackground(bool _normal) override
Definition: MyGUI_EditText.cpp:351
MyGUI::Vertex
Definition: MyGUI_VertexData.h:17
MyGUI::EditText::mColour
Colour mColour
Definition: MyGUI_EditText.h:145
MyGUI::EditText::setInvertSelected
void setInvertSelected(bool _value) override
Definition: MyGUI_EditText.cpp:619
MyGUI::RenderItem::getCurrentVertexBuffer
Vertex * getCurrentVertexBuffer() const
Definition: MyGUI_RenderItem.cpp:230
MyGUI::RenderItem::getCurrentUpdate
bool getCurrentUpdate() const
Definition: MyGUI_RenderItem.cpp:225
MyGUI::EditText::setTextSelection
void setTextSelection(size_t _start, size_t _end) override
Definition: MyGUI_EditText.cpp:337
MyGUI::EditText::mEmptyView
bool mEmptyView
Definition: MyGUI_EditText.h:135
MyGUI::EditText::setTextAlign
void setTextAlign(Align _value) override
Definition: MyGUI_EditText.cpp:391
MyGUI::types::TCoord< int >
MyGUI::EditText::mInverseColourNative
uint32 mInverseColourNative
Definition: MyGUI_EditText.h:137
MyGUI_EditText.h
MyGUI::ICroppedRectangle::getWidth
int getWidth() const
Definition: MyGUI_ICroppedRectangle.h:114
MyGUI::VectorLineInfo
std::vector< LineInfo > VectorLineInfo
Definition: MyGUI_TextViewData.h:137
MyGUI::GlyphInfo::width
float width
Definition: MyGUI_FontData.h:60
MyGUI::Vertex::colour
uint32 colour
Definition: MyGUI_VertexData.h:29
MyGUI::EditText::setShadow
void setShadow(bool _value) override
Definition: MyGUI_EditText.cpp:639
MyGUI::types::TCoord::height
T height
Definition: MyGUI_TCoord.h:25
MyGUI
Definition: MyGUI_ActionController.h:15
MyGUI::EditTextStateInfo::getColour
const Colour & getColour() const
Definition: MyGUI_CommonStateInfo.h:185
MyGUI::EditText::setStateData
void setStateData(IStateInfo *_data) override
Definition: MyGUI_EditText.cpp:513
MyGUI::Align::isHStretch
bool isHStretch() const
Definition: MyGUI_Align.h:69
MyGUI::Vertex::u
float u
Definition: MyGUI_VertexData.h:30
MyGUI::texture_utility::toColourARGB
uint32 toColourARGB(const Colour &_colour)
Definition: MyGUI_TextureUtility.cpp:68
MyGUI::Colour::Zero
static const Colour Zero
Definition: MyGUI_Colour.h:55
MyGUI::EditText::mStartSelect
size_t mStartSelect
Definition: MyGUI_EditText.h:155
MyGUI::EditText::setVisibleCursor
void setVisibleCursor(bool _value) override
Definition: MyGUI_EditText.cpp:366
MyGUI::EditText::getShadow
bool getShadow() const override
Definition: MyGUI_EditText.cpp:634
MyGUI::EditText::setVisible
void setVisible(bool _value) override
Definition: MyGUI_EditText.cpp:56
MyGUI::EditText::mIsAddCursorWidth
bool mIsAddCursorWidth
Definition: MyGUI_EditText.h:167
MyGUI_TextIterator.h
MyGUI::EditText::getFontName
const std::string & getFontName() const override
Definition: MyGUI_EditText.cpp:285
MyGUI::EditText::mNode
ILayerNode * mNode
Definition: MyGUI_EditText.h:164