DateiSystem.h 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. #ifndef DateiSystem_H
  2. #define DateiSystem_H
  3. #include <fstream>
  4. #include "Array.h"
  5. namespace Framework
  6. {
  7. class Bild; // Bild.h
  8. class Text; // Text.h
  9. class Punkt; // Punkt.h
  10. class Farbe; // Farbe.h
  11. class Buchstabe; // Schrift.h
  12. class Alphabet; // Schrift.h
  13. class Schrift; // Schrift.h
  14. class FBalken; // Fortschritt.h
  15. class LTDSPixel; // aus dieser Datei
  16. class LTDSDateiKopf; // aus dieser Datei
  17. class LTDSSchriftKopf; // aus dieser Datei
  18. class LTDSBuchstabenKopf; // aus dieser Datei
  19. class LTDSBuchstabenKörper; // aus dieser Datei
  20. class LTDSDatei; // aus dieser Datei
  21. // LTDS Dateivormat --- Dient zum speichern von Schriftarten
  22. class LTDSPixel
  23. {
  24. private:
  25. int ref;
  26. char index;
  27. char iA;
  28. char miA;
  29. char maxIndex; // Länge des Pixels
  30. bool änder;
  31. bool änderA;
  32. unsigned char komp : 3; // Komprimierung der Farbwerte
  33. unsigned char alpha;
  34. LTDSPixel * davor;
  35. bool addBitZuFarbe( unsigned char bit ); // Fügt den Farbwerten ein Bit hinzu
  36. bool getNextFarbeBit( char &byte, int i ); // Speichert das nächste Farbbit in byte
  37. public:
  38. // Konstruktor
  39. LTDSPixel( LTDSPixel *davor );
  40. // Destruktor
  41. ~LTDSPixel();
  42. // nicht constant
  43. // zum Laden gedacht
  44. char addByte( char byte, char begin ); // gibt ende des Pixels zurück, -1 wenn nicht zu ende
  45. // zum speichern gedacht
  46. void setAlpha( unsigned char alpha ); // setzt die Farbe des Pixels
  47. void Komp(); // Komprimiert den Pixel
  48. char getNextByte( char &byte, int bbegin ); // Gibt die nächsten Bits Zurück, -1 wenn der Pixel nicht zu ende ist
  49. // constant
  50. unsigned char getKomp() const; // hat sich die Komprimierung geändert
  51. bool getÄnderA() const;
  52. unsigned char getA() const; // gibt Alpha zurück
  53. // Reference Counting
  54. LTDSPixel *getThis();
  55. LTDSPixel *release();
  56. };
  57. class LTDSDateiKopf
  58. {
  59. private:
  60. int ref;
  61. unsigned char sganzahl;
  62. unsigned char *gr;
  63. int *pos;
  64. public:
  65. // Konstruktor
  66. LTDSDateiKopf();
  67. // Destruktor
  68. ~LTDSDateiKopf();
  69. // nicht constant
  70. void laden( std::ifstream *inF ); // Lät aus inF
  71. void addSG( char sg ); // Schriftgröße hinzufügen
  72. void removeSG( char sg ); // Schriftgröße entfernen
  73. // constant
  74. void speichern( std::ofstream *outF ) const; // Speichert nach outF
  75. unsigned char *getSchriftGrößeList() const; // gibt eine Liste mit gespeicherten Schriftgrößen zurück
  76. int *getPositionList() const; // gibt eine Positionsliste der gespeicherten Schriftgrößen zurück
  77. int getSchriftGrößeAnzahl() const; // gibt die Anzahl der gespeicherten Schriftgrößen zurück
  78. // Reference Counting
  79. LTDSDateiKopf *getThis();
  80. LTDSDateiKopf *release();
  81. };
  82. class LTDSSchriftKopf
  83. {
  84. private:
  85. int ref;
  86. unsigned char schriftGröße;
  87. unsigned char *zeichen;
  88. int *pos;
  89. unsigned char zeichenAnzahl;
  90. public:
  91. // Konstruktor
  92. LTDSSchriftKopf();
  93. // Destruktor
  94. ~LTDSSchriftKopf();
  95. // nicht constant
  96. void laden( std::ifstream *inF ); // läht von inF
  97. void setSchriftgröße( unsigned char gr ); // setze schriftgröße
  98. void setZeichenAlphabet( Alphabet *alphabet ); // setzt die Zeichen von alphabet
  99. void addZeichen( unsigned char zeichen ); // Zeichen hinzufügen
  100. void removeZeichen( unsigned char zeich ); // Zeichen entfernen
  101. // constant
  102. void speichern( std::ofstream *outF ) const; // speichert nach outF
  103. unsigned char getSchriftGröße() const; // gibt die Schriftgröße zurück
  104. unsigned char getZeichenAnzahl() const; // gibt die Zeichenanzahl zurück
  105. int *getPositionen() const; // gibt die Zeichenpositionen zurück
  106. unsigned char *getZeichen() const; // gibt die zeichen zurück
  107. // Reference Counting
  108. LTDSSchriftKopf *getThis();
  109. LTDSSchriftKopf *release();
  110. };
  111. class LTDSBuchstabenKopf
  112. {
  113. private:
  114. int ref;
  115. unsigned char zeichen;
  116. Punkt *größe;
  117. public:
  118. // Konstruktor
  119. LTDSBuchstabenKopf();
  120. // Destruktor
  121. ~LTDSBuchstabenKopf();
  122. // nicht constant
  123. void laden( std::ifstream *inF ); // lät aus inF
  124. void init( unsigned char zeichen, Punkt *größe ); // initialisierung( für speichern )
  125. void init( unsigned char zeichen, int br, int hö );
  126. // constant
  127. void speichern( std::ofstream *outF ) const; // speichertn nach outF
  128. unsigned char getZeichen() const; // gibt das Zeichen zurück
  129. int getBreite() const; // gibt die Breite zurück
  130. int getHöhe() const; // gibt die höhe zurück
  131. Punkt *getGröße() const; // gibt die Größe zurück
  132. // Reference Counting
  133. LTDSBuchstabenKopf *getThis();
  134. LTDSBuchstabenKopf *release();
  135. };
  136. class LTDSBuchstabenKörper
  137. {
  138. private:
  139. int ref;
  140. Punkt *größe;
  141. unsigned char zeichen;
  142. Buchstabe *buchstabe;
  143. public:
  144. // Konstruktor
  145. LTDSBuchstabenKörper( LTDSBuchstabenKopf *kopf );
  146. // Destruktor
  147. ~LTDSBuchstabenKörper();
  148. // nicht constant
  149. void setBuchstabe( Buchstabe *zeichen ); // setzt den Buchstaben
  150. void laden( std::ifstream *inF ); // Läht aus inF
  151. // constant
  152. void speichern( std::ofstream *outF ) const; // speichert nach outF
  153. Buchstabe *getBuchstabe() const; // gibt den Buchstaben zurück
  154. unsigned char getZeichen() const; // gibt das Zeichen zurück
  155. // Reference Counting
  156. LTDSBuchstabenKörper *getThis();
  157. LTDSBuchstabenKörper *release();
  158. };
  159. class LTDSDatei
  160. {
  161. private:
  162. int ref;
  163. Text *pfad;
  164. LTDSDateiKopf *dateiKopf;
  165. CRITICAL_SECTION thread_Save;
  166. public:
  167. // Konstruktor
  168. LTDSDatei();
  169. // Destruktor
  170. ~LTDSDatei();
  171. // nicht constant
  172. void lockDatei();
  173. void unlockDatei();
  174. void setPfad( Text *txt ); // setzt den Pfad zur Datei
  175. void leseDaten(); // ließt den Dateikopf
  176. void addSchriftgröße( Alphabet *alphabet ); // fügt eine Schriftgröße hinzu
  177. void addBuchstabe( int gr, Buchstabe *zeich, unsigned char zeichen ); // Fügt einer Schriftgröße einen Buchstaben hinzu
  178. void löscheSchrifrGröße( int gr ); // Löscht eine Schriftgröße aus der Datei
  179. void löscheBuchstabe( int gr, unsigned char zeichen ); // Löscht einen Buchstaben aus der Datei
  180. void löscheDatei(); // Löscht die gesamte Datei
  181. void erstelleDatei(); // erstellt die Datei
  182. void speicherSchrift( Schrift *schrift ); // Speichert die übergebene Schrift
  183. // constant
  184. Schrift *ladeSchrift(); // gibt die geladene Schrift zurück
  185. Alphabet *ladeAlphabet( int schriftgröße ); // gibt eine geladene Schrift nur mit der angegebenen Schriftgröße zurück
  186. Buchstabe *ladeBuchstabe( int schriftgröße, unsigned char zeichen ); // Läd einen bestimmten Buchstaben
  187. Text *getPfad() const; // gibt den Dateipfad zurück
  188. int getAnzahlSchriftgrößen() const; // gibt die Anzahl der Schriftgrößen aus der Datei zurück
  189. unsigned char *getSchriftGrößen() const; // gibt einen Array von Schriftgrößen zurück
  190. unsigned char getAnzahlBuchstaben( int sg ); // gibt die anzahl gespeicherter Buchstaben einer Schriftgröße zurück
  191. unsigned char *getBuchstaben( int sg ); // gibt einen Array von Buchstaben einer Schriftgröße zurück
  192. // Reference Counting
  193. LTDSDatei *getThis();
  194. LTDSDatei *release();
  195. };
  196. // Bit Funktionen
  197. int Bits( int a ); // gibt 1-bits in gewinschter anzahl zurück
  198. int getBits( char c ); // gibt zurück, wie viele Bits c benötigt
  199. }
  200. #endif