Schrift.h 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. #ifndef Schrift_H
  2. #define Schrift_H
  3. #define WIN32_LEAN_AND_MEAN
  4. #include <Windows.h>
  5. namespace Framework
  6. {
  7. class Farbe; // Farbe.h
  8. class Punkt; // Punkt.h
  9. class Bild; // Bild.h
  10. class Text; // Text.h
  11. class Buchstabe; // aus dieser Datei
  12. class Alphabet; // aus dieser Datei
  13. class Schrift; // aus dieser Datei
  14. class Buchstabe
  15. {
  16. private:
  17. Punkt *größe;
  18. Punkt *pos;
  19. unsigned char *alpha;
  20. Farbe *f;
  21. int schriftGröße;
  22. int drawSg;
  23. int ref;
  24. public:
  25. // Konstruktor
  26. Buchstabe();
  27. // Destruktor
  28. ~Buchstabe();
  29. // nicht constant
  30. void NeuBuchstabe( Punkt *größe ); // Initialisierung
  31. void setPixel( Punkt *pos, unsigned char alpha ); // setzt den alphawert des Pixels
  32. void setPixel( int x, int y, unsigned char alpha );
  33. void setPixel( int i, unsigned char alpha );
  34. void setPosition( Punkt *pos ); // setzt die Buchstabenposition
  35. void setPosition( int x, int y );
  36. void setFarbe( int fc ); // setzt die Buchstabenfarbe
  37. void setFarbe( Farbe *f );
  38. void setSchriftGröße( int sg ); // setzt die Schriftgröße des Buchstaben
  39. void setDrawSchriftGröße( int dsg ); // setzt die Zeichengröße des Buchstaben
  40. // constant
  41. unsigned char *getBuff() const;
  42. Farbe *getFarbe() const; // gibt die Buchstabenfarbe zurück
  43. Punkt *getGröße() const; // gibt die Buchstabenbildgröße zurück
  44. int getBreite() const; // Buchstabenbreite
  45. int getHöhe() const; // Buchstabenhöhe
  46. void render( Bild *zrObj ) const; // Zeichnet nach rObj
  47. // Reference Counting
  48. Buchstabe *getThis();
  49. Buchstabe *release();
  50. };
  51. class Alphabet
  52. {
  53. private:
  54. Buchstabe **zeichen;
  55. int schriftGröße;
  56. int drawSchriftGröße;
  57. Punkt *pos;
  58. int zeilenHöhe;
  59. int zeilenAbstand;
  60. Farbe *f;
  61. int ref;
  62. public:
  63. // Konstruktor
  64. Alphabet();
  65. // Destruktor
  66. ~Alphabet();
  67. // nicht constant
  68. void NeuAlphabet(); // Initialisierung
  69. void setBuchstabe( unsigned char i, Buchstabe *buchstabe ); // setzt einen Buchstaben
  70. void setSchriftgröße( int gr ); // setzt die Schriftgröße
  71. void setDrawSchriftgröße( int gr ); // setzt die Zeichengröße
  72. void setZeilenAbstand( int za ); // setzt den Zeilenabstand
  73. void setDrawPosition( Punkt *pos ); // setzt die Draw Position
  74. void setDrawPosition( int x, int y );
  75. void setFarbe( Farbe *f ); // setzt die Schriftfarbe
  76. void setFarbe( int fc );
  77. // constant
  78. Buchstabe *getBuchstabe( unsigned char i ) const; // gibt einen Buchstaben zurück
  79. int getSchriftgröße() const; // gibt die Schriftgröße zurück
  80. int getDrawSchriftGröße() const; // gibt die Zeichengröße zurück
  81. int getZeilenAbstand() const; // gibt den Zeilenabstand zurück
  82. int getZeilenHöhe() const; // gibt die Höhe des höchsten Zeichens zurück
  83. Punkt *getPosition() const; // gibt die DrawPosition zurück
  84. Farbe *getFarbe() const; // gibt die Farbe zurück
  85. int getTextBreite( Text *txt ) const; // gibt die Breite des Textes zurück
  86. int getTextHöhe( Text *txt ) const; // gibt die Höhe des Textes zurück
  87. int textPos( Text *txt, int mausX, int mausY ) const; // gibt den Buchstaben zurück, auf den die Maus zeigt
  88. void render( Text *txt, Bild *zrObj ) const; // Zeichnet txt nach renderObj
  89. void render( int xOff, int yOff, int bOff, int hOff, Text *txt, Bild *zrObj ) const;
  90. void render( Text *txt, Bild *zrObj, int cpos, int cf, int fbeg, int ff ) const;
  91. void render( int xOff, int yOff, int bOff, int hOff, Text *txt, Bild *zrObj, int cpos, int cf, int fbeg, int ff ) const;
  92. // Reference Counting
  93. Alphabet *getThis();
  94. Alphabet *release();
  95. };
  96. class AlphabetArray
  97. {
  98. private:
  99. AlphabetArray *next;
  100. Alphabet *This;
  101. public:
  102. // Konstruktor
  103. AlphabetArray();
  104. // Destruktor
  105. ~AlphabetArray();
  106. // nicht constant
  107. void addAlphabet( Alphabet *alphabet ); // Fügt ein Alphabet hinzu
  108. bool removeAlphabet( int sg ); // entfernt ein Alphabet
  109. void setDrawSchriftGröße( int sg ); // Setzt die Draw Schriftgröße aller Alphabete
  110. void setZeilenAbstand( int za ); // setzt den Zeilenabstant aller Alphabete
  111. void setSchriftFarbe( Farbe *farbe ); // setzt die Schriftfarbe aller Alphabete
  112. void setSchriftFarbe( int fc );
  113. void setNext0(); // setzt den next Zeiger zu 0
  114. // constant
  115. Alphabet *getAlphabet( unsigned char sg ) const; // gibt getThis von einem Alphabet zurück
  116. Alphabet *zAlphabet( unsigned char sg ) const; // gibt ein Alphabet zurück
  117. Alphabet *getAlphabetI( int index, int count ) const;
  118. AlphabetArray *getNext() const; // gibt das nächste Alphabet zurück
  119. };
  120. class Schrift
  121. {
  122. private:
  123. unsigned char alphabetAnzahl;
  124. AlphabetArray *alphabet;
  125. int schriftGröße;
  126. int zeilenAbstand;
  127. Punkt *drawPos;
  128. Farbe *farbe;
  129. CRITICAL_SECTION threadSave;
  130. int ref;
  131. public:
  132. // Konstruktor
  133. Schrift();
  134. // Destruktor
  135. ~Schrift();
  136. // nicht constant
  137. void addAlphabet( Alphabet *alphabet ); // Fügt der Schrift ein Alphabet hinzu
  138. void removeAlphabet( int sg ); // Entfernt ein Alphabet
  139. void setDrawPosition( int x, int y ); // setzt die Zeichenposition
  140. void setDrawPosition( Punkt *pos );
  141. void setSchriftGröße( int sg ); // setzt die Schriftgröße
  142. void setZeilenAbstand( int za ); // setzt den Zeilenabstand
  143. void setFarbe( Farbe *f ); // setzt die Schriftfarbe
  144. void setFarbe( int fc );
  145. void renderText( Text *txt, Bild *zrObj ); // zeichnet txt nach rObj
  146. void renderText( int xOff, int yOff, int bOff, int hOff, Text *txt, Bild *zrObj );
  147. void renderText( Text *txt, Bild *zrObj, int cpos, int cf, int fbeg, int ff );
  148. void renderText( int xOff, int yOff, int bOff, int hOff, Text *txt, Bild *zrObj, int cpos, int cf, int fbeg, int ff );
  149. void lockSchrift(); // blockiert die Schrift für andere Threads
  150. void unlockSchrift(); // gibt die Schrift für andere Threads frei
  151. // constant
  152. Alphabet *getAlphabet( int sg ) const; // gibt einen Alphaberarray zurück
  153. Alphabet *getAlphabetI( int index ) const;
  154. unsigned char getAlphabetAnzahl() const; // gibt die anzahl von in der Schrift enthaltenen Alphabeten zurück
  155. int getSchriftGröße() const; // gibt die Schriftgröße zurück
  156. int getZeilenabstand() const; // gibt den Zeilenabstand zurück
  157. int getDrawX() const; // gibt die Zeichenposition zurück
  158. int getDrawY() const;
  159. Punkt *getDrawPosition() const;
  160. Farbe *getFarbe() const; // gibt die Farbe zurück
  161. unsigned int getFarbeCode() const;
  162. int getTextBreite( Text *txt ) const; // gibt die Breite des Textes zurück
  163. int getTextHöhe( Text *txt ) const; // gibt die Höhe des Textes zurück
  164. int textPos( Text *txt, int mausX, int mausY ) const; // gibt den Buchstaben zurück, auf den die Maus zeigt
  165. // Reference Counting
  166. Schrift *getThis();
  167. Schrift *release();
  168. };
  169. }
  170. #endif