TextFeld.h 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. #ifndef TextFeld_H
  2. #define TextFeld_H
  3. #include "Zeichnung.h"
  4. namespace Framework
  5. {
  6. class Schrift; // Schrift.h
  7. class Text; // Text.h
  8. class AlphaFeld; // AlphaFeld.h
  9. class Rahmen; // Rahmen.h
  10. class TextFeld; // aus dieser Datei
  11. class VScrollBar; // Scroll.h
  12. class HScrollBar; // Scroll.h
  13. class TextRenderer;
  14. // Verwaltet ein Textfeld
  15. class TextFeld : public ZeichnungHintergrund
  16. {
  17. public:
  18. class Style : public ZeichnungHintergrund::Style
  19. {
  20. public:
  21. const static __int64 Mehrzeilig = 0x001000; // Wenn dieser Flag nicht gesetzt wird, werden alle Zeilenumbrüche automatisch aus dem Text entfernt
  22. const static __int64 HCenter = 0x002000; // Wenn dieser Flag gesetzt wird, wird der Text genau in der horizontaen Mitte des Feldes plaziert
  23. const static __int64 VCenter = 0x004000; // Wenn dieser Flag gesetzt wird, wird der Text genau in der vertikalen Mitte des Feldes plaziert
  24. const static __int64 Mehrfarbig = 0x008000; // Wenn dieser Flag gesetzt wird, kann der Text mehrfarbig sein. Die Textfarbe wird im Text selbst gesetzt mit "\r0xAARRGGBB"
  25. const static __int64 Center = HCenter | VCenter; // Vereint die Flags HCenter und VCenter
  26. const static __int64 TextFeld = Sichtbar | Erlaubt | Rahmen | Buffered | VCenter; // Vereint die Flags Sichtbar, Erlaubt, Rahmen, Buffered, VCenter
  27. const static __int64 Text = Sichtbar | Mehrfarbig | Mehrzeilig; // Vereint die Flags Sichtbar, Mehrfarbig, Mehrzeilig
  28. const static __int64 TextGebiet = Sichtbar | Erlaubt | Rahmen | Hintergrund | Mehrfarbig | Mehrzeilig | VScroll; // Vereint die Flags Sichtbar, Erlaubt, Rahmen, Hintergrund, Mehrzeilig, Mehrfarbig, VScroll
  29. const static __int64 Scroll = VScroll | HScroll; // Vereint die Flags VScroll und HScroll
  30. };
  31. private:
  32. unsigned char schriftSize;
  33. TextRenderer *textRd;
  34. Text *text;
  35. int sF;
  36. unsigned char showChar;
  37. int begf, cpos;
  38. double tickVal;
  39. bool mausKlick;
  40. protected:
  41. public:
  42. // Konstruktor
  43. __declspec( dllexport ) TextFeld();
  44. // Destruktor
  45. __declspec( dllexport ) virtual ~TextFeld();
  46. // setzt einen Zeiger auf den Text im Textfeld
  47. // txt: Der Zeiger auf den Text
  48. __declspec( dllexport ) void setTextZ( Text *txt );
  49. // setzt den Text des Textfeldes
  50. // txt: der Text
  51. __declspec( dllexport ) void setText( Text *txt );
  52. // setzt den Text des Textfeldes
  53. // txt: der Text
  54. __declspec( dllexport ) void setText( const char *txt );
  55. // Fügt eine Zeile an den Text an
  56. // zeile: Die neue Zeile
  57. __declspec( dllexport ) void addZeile( const char *zeile );
  58. // Setzt den ausgewählten textabschnitt fest (benötigt Flag zum Zeichnen: Erlaubt, Fokus)
  59. // pos1: Die Cursorposition im Text
  60. // pos2: Die Position im Text, bis zu der der Text eingefärbt werden soll
  61. __declspec( dllexport ) void setAuswahl( int pos1, int pos2 );
  62. // Setzt den ausgewählten textabschnitt fest (benötigt Flag zum Zeichnen: Erlaubt, Fokus)
  63. // auswahl: Ein punkt mit x als Cursorposition und y als der Position, bis zu der der Text eingefärbt werden soll
  64. __declspec( dllexport ) void setAuswahl( Punkt &auswahl );
  65. // Setzt den verwendeten TextRenderer
  66. // textRd: Der Textrenderer
  67. __declspec( dllexport ) void setTextRendererZ( TextRenderer *textRd );
  68. // Setzt einen Zeiger zur Schrift
  69. // schrift: Die Schrift, die zum Textzeichnen verwendet werden soll.
  70. __declspec( dllexport ) void setSchriftZ( Schrift *schrift );
  71. // Setzt die Schriftgröße (Standart: 12)
  72. // gr: Die Schriftgröße, die zum Textzeichnen verwendet werden soll
  73. __declspec( dllexport ) void setSchriftSize( unsigned char gr );
  74. // Setzt die Schrift Farbe
  75. // fc: Die Farbe, die zum Textzeichnen verwendet werden soll
  76. __declspec( dllexport ) void setSchriftFarbe( int fc );
  77. // Legt einen Buchstaben fest, der zum zeichnen verwendet werden soll, unabhängig vom Text des Textfeldes (benötigt Flag zum Zeichnen: Rahmen)
  78. // c: Der Buchstabe, der gezeichnet werden soll
  79. // Beispiel: setShowChar( '*' ); Bei Passwort Textfeldern
  80. __declspec( dllexport ) void setSchowChar( unsigned char c );
  81. // Scrollt zu einer bestimmten Zeile (benötigt Flag zum Zeichnen: VScroll)
  82. // zeile: Der Index der Zeile, die als oberste Zeile zu sehen sein soll
  83. __declspec( dllexport ) void setVScrollZuZeile( int zeile );
  84. // Scrollt zu einer bestimmten Position im Text. Ohne den Flag Erlaubt wrd immer ganz nach unten gescrollt. (benötigt Flag zum Zeichnen: VScroll)
  85. // pos: Der Index des Zeichens, zu dem gescrollt werden soll. Standartmäßig wird zur Cursorposition gescrollt
  86. __declspec( dllexport ) void updateVScroll( int pos = -1 );
  87. // Scrollt zu einer bestimmten Position im Text. Benötigt den Flag Erlaubt. (benötigt Flag zum Zeichnen: HScroll)
  88. // pos: Der Index des Zeichens, zu dem gescrollt werden soll. Standartmäßig wird zur Cursorposition gescrollt
  89. __declspec( dllexport ) void updateHScroll( int pos = -1 );
  90. // Aktualisiert das Objekt. Wird vom Framework aufgerufen
  91. // tickVal: Die Zeit in sekunden, die seit dem lezten Aufruf dieser Funktion vergangen ist
  92. // return: 1, wenn sich etwas verändert hat und das Bild neu gezeichnet werden muss. 0 sonst
  93. __declspec( dllexport ) virtual bool tick( double tickval ) override;
  94. // Verarbeitet Maus Nachrichten
  95. // me: Das Ereignis, was durch die Mauseingabe ausgelößt wurde
  96. __declspec( dllexport ) virtual void doMausEreignis( MausEreignis &me ) override;
  97. // Verarbeitet Tastatur Nachrichten
  98. // me: Das Ereignis, was durch die Tastatureingabe ausgelößt wurde
  99. __declspec( dllexport ) void doTastaturEreignis( TastaturEreignis &te ) override;
  100. // Zeichnet das Objekt nach zRObj, falls es sichtbar ist
  101. // zRObj: Das Bild, in welches gezeichnet werden soll
  102. __declspec( dllexport ) virtual void render( Bild &zRObj ) override;
  103. // Gibt den Text aus dem Textfeld zurück
  104. __declspec( dllexport ) Text *getText() const;
  105. // Gibt den Text aus dem Textfeld ohne erhöhten Reference Counter zurück
  106. __declspec( dllexport ) Text *zText() const;
  107. // Gibt die Schrift zurück.
  108. // return: 0, falls die Schrift nicht gesetzt wurde
  109. __declspec( dllexport ) Schrift *getSchrift() const;
  110. // Gibt die Schrift ohne erhöhten Reference Counter zurük
  111. // return: 0, falls die Schrift nicht gesetzt wurde
  112. __declspec( dllexport ) Schrift *zSchrift() const;
  113. // Gibt den TextRenderer zurück.
  114. // return: 0, falls der TextRenderer nicht gesetzt wurde
  115. __declspec( dllexport ) TextRenderer *getTextRenderer() const;
  116. // Gibt dien TextRenderer ohne erhöhten Reference Counter zurük
  117. // return: 0, falls der TextRenderer nicht gesetzt wurde
  118. __declspec( dllexport ) TextRenderer *zTextRenderer() const;
  119. // Gibt die Schriftgröße zurück
  120. __declspec( dllexport ) unsigned char getSchriftSize() const;
  121. // Gibt die Schriftfarbe im A8R8G8B8 Format zurück
  122. __declspec( dllexport ) int getSchriftFarbe() const;
  123. // Gibt den Anzeigebuchstabe zurück
  124. __declspec( dllexport ) unsigned char getShowChar() const;
  125. // Gibt die Cursorposition zurück
  126. __declspec( dllexport ) int getCursorPos() const;
  127. // Gibt den Index des Buchstaben zurück, con dem an der Text bis zur Cursorposition eingefärbt ist
  128. __declspec( dllexport ) int getSelectionPos() const;
  129. // Erzeugt eine Komplette Kopie des Textfeldes, welches ohne auswirkungen verändert werden kann
  130. __declspec( dllexport ) Zeichnung *dublizieren() const override;
  131. };
  132. }
  133. #endif