pm_multi_textbox.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*
  2. * File : pm_multi_textbox.h
  3. * COPYRIGHT (C) 2012-2017, Shanghai Real-Thread Technology Co., Ltd
  4. *
  5. * Change Logs:
  6. * Date Author Notes
  7. * 2017-11-05 realthread the first version
  8. */
  9. #pragma once
  10. #include <pm_widget.h>
  11. #include <vector>
  12. namespace Persimmon
  13. {
  14. class MultiTextBox : public Widget
  15. {
  16. public:
  17. MultiTextBox(const Rect& rect, int lines);
  18. MultiTextBox(struct rtgui_font* font, const Rect& rect, int lines);
  19. virtual ~MultiTextBox();
  20. void addText(char* text);
  21. void addText(char text);
  22. void addText(int num);
  23. char *getText(void);
  24. int getCurrentLineNum(void)
  25. {
  26. return textLinesPtr.size();
  27. }
  28. char *getLineText(int index);
  29. void cutText(void);
  30. void clearText(void);
  31. void setTextMaxLen(int len)
  32. {
  33. textMaxLen = len;
  34. }
  35. virtual void render(struct rtgui_dc* dc, const Point &dcPoint = Point(),
  36. const Rect &srcRect = Rect(),
  37. RenderFlag flags = DrawNormal);
  38. private:
  39. void updateText(const char* fmt, ...);
  40. void branch(void);
  41. std::vector<char *> textLinesPtr;
  42. char *text;
  43. int textLines, currentLine;
  44. int textMaxLen, textTotalLen;
  45. };
  46. }