123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- #ifndef DateiSystem_H
- #define DateiSystem_H
- #include <fstream>
- #include "Array.h"
- namespace Framework
- {
- class Bild; // Bild.h
- class Text; // Text.h
- class Punkt; // Punkt.h
- class Farbe; // Farbe.h
- class Buchstabe; // Schrift.h
- class Alphabet; // Schrift.h
- class Schrift; // Schrift.h
- class FBalken; // Fortschritt.h
- class LTDSPixel; // aus dieser Datei
- class LTDSDateiKopf; // aus dieser Datei
- class LTDSSchriftKopf; // aus dieser Datei
- class LTDSBuchstabenKopf; // aus dieser Datei
- class LTDSBuchstabenKörper; // aus dieser Datei
- class LTDSDatei; // aus dieser Datei
- // LTDS Dateivormat --- Dient zum speichern von Schriftarten
- class LTDSPixel
- {
- private:
- int ref;
- char index;
- char iA;
- char miA;
- char maxIndex; // Länge des Pixels
- bool änder;
- bool änderA;
- unsigned char komp : 3; // Komprimierung der Farbwerte
- unsigned char alpha;
- LTDSPixel * davor;
- bool addBitZuFarbe( unsigned char bit ); // Fügt den Farbwerten ein Bit hinzu
- bool getNextFarbeBit( char &byte, int i ); // Speichert das nächste Farbbit in byte
- public:
- // Konstruktor
- LTDSPixel( LTDSPixel *davor );
- // Destruktor
- ~LTDSPixel();
- // nicht constant
- // zum Laden gedacht
- char addByte( char byte, char begin ); // gibt ende des Pixels zurück, -1 wenn nicht zu ende
- // zum speichern gedacht
- void setAlpha( unsigned char alpha ); // setzt die Farbe des Pixels
- void Komp(); // Komprimiert den Pixel
- char getNextByte( char &byte, int bbegin ); // Gibt die nächsten Bits Zurück, -1 wenn der Pixel nicht zu ende ist
- // constant
- unsigned char getKomp() const; // hat sich die Komprimierung geändert
- bool getÄnderA() const;
- unsigned char getA() const; // gibt Alpha zurück
- // Reference Counting
- LTDSPixel *getThis();
- LTDSPixel *release();
- };
- class LTDSDateiKopf
- {
- private:
- int ref;
- unsigned char sganzahl;
- unsigned char *gr;
- int *pos;
- public:
- // Konstruktor
- LTDSDateiKopf();
- // Destruktor
- ~LTDSDateiKopf();
- // nicht constant
- void laden( std::ifstream *inF ); // Lät aus inF
- void addSG( char sg ); // Schriftgröße hinzufügen
- void removeSG( char sg ); // Schriftgröße entfernen
- // constant
- void speichern( std::ofstream *outF ) const; // Speichert nach outF
- unsigned char *getSchriftGrößeList() const; // gibt eine Liste mit gespeicherten Schriftgrößen zurück
- int *getPositionList() const; // gibt eine Positionsliste der gespeicherten Schriftgrößen zurück
- int getSchriftGrößeAnzahl() const; // gibt die Anzahl der gespeicherten Schriftgrößen zurück
- // Reference Counting
- LTDSDateiKopf *getThis();
- LTDSDateiKopf *release();
- };
- class LTDSSchriftKopf
- {
- private:
- int ref;
- unsigned char schriftGröße;
- unsigned char *zeichen;
- int *pos;
- unsigned char zeichenAnzahl;
- public:
- // Konstruktor
- LTDSSchriftKopf();
- // Destruktor
- ~LTDSSchriftKopf();
- // nicht constant
- void laden( std::ifstream *inF ); // läht von inF
- void setSchriftgröße( unsigned char gr ); // setze schriftgröße
- void setZeichenAlphabet( Alphabet *alphabet ); // setzt die Zeichen von alphabet
- void addZeichen( unsigned char zeichen ); // Zeichen hinzufügen
- void removeZeichen( unsigned char zeich ); // Zeichen entfernen
- // constant
- void speichern( std::ofstream *outF ) const; // speichert nach outF
- unsigned char getSchriftGröße() const; // gibt die Schriftgröße zurück
- unsigned char getZeichenAnzahl() const; // gibt die Zeichenanzahl zurück
- int *getPositionen() const; // gibt die Zeichenpositionen zurück
- unsigned char *getZeichen() const; // gibt die zeichen zurück
- // Reference Counting
- LTDSSchriftKopf *getThis();
- LTDSSchriftKopf *release();
- };
- class LTDSBuchstabenKopf
- {
- private:
- int ref;
- unsigned char zeichen;
- Punkt *größe;
- public:
- // Konstruktor
- LTDSBuchstabenKopf();
- // Destruktor
- ~LTDSBuchstabenKopf();
- // nicht constant
- void laden( std::ifstream *inF ); // lät aus inF
- void init( unsigned char zeichen, Punkt *größe ); // initialisierung( für speichern )
- void init( unsigned char zeichen, int br, int hö );
- // constant
- void speichern( std::ofstream *outF ) const; // speichertn nach outF
- unsigned char getZeichen() const; // gibt das Zeichen zurück
- int getBreite() const; // gibt die Breite zurück
- int getHöhe() const; // gibt die höhe zurück
- Punkt *getGröße() const; // gibt die Größe zurück
- // Reference Counting
- LTDSBuchstabenKopf *getThis();
- LTDSBuchstabenKopf *release();
- };
- class LTDSBuchstabenKörper
- {
- private:
- int ref;
- Punkt *größe;
- unsigned char zeichen;
- Buchstabe *buchstabe;
- public:
- // Konstruktor
- LTDSBuchstabenKörper( LTDSBuchstabenKopf *kopf );
- // Destruktor
- ~LTDSBuchstabenKörper();
- // nicht constant
- void setBuchstabe( Buchstabe *zeichen ); // setzt den Buchstaben
- void laden( std::ifstream *inF ); // Läht aus inF
- // constant
- void speichern( std::ofstream *outF ) const; // speichert nach outF
- Buchstabe *getBuchstabe() const; // gibt den Buchstaben zurück
- unsigned char getZeichen() const; // gibt das Zeichen zurück
- // Reference Counting
- LTDSBuchstabenKörper *getThis();
- LTDSBuchstabenKörper *release();
- };
- class LTDSDatei
- {
- private:
- int ref;
- Text *pfad;
- LTDSDateiKopf *dateiKopf;
- CRITICAL_SECTION thread_Save;
- public:
- // Konstruktor
- LTDSDatei();
- // Destruktor
- ~LTDSDatei();
- // nicht constant
- void lockDatei();
- void unlockDatei();
- void setPfad( Text *txt ); // setzt den Pfad zur Datei
- void leseDaten(); // ließt den Dateikopf
- void addSchriftgröße( Alphabet *alphabet ); // fügt eine Schriftgröße hinzu
- void addBuchstabe( int gr, Buchstabe *zeich, unsigned char zeichen ); // Fügt einer Schriftgröße einen Buchstaben hinzu
- void löscheSchrifrGröße( int gr ); // Löscht eine Schriftgröße aus der Datei
- void löscheBuchstabe( int gr, unsigned char zeichen ); // Löscht einen Buchstaben aus der Datei
- void löscheDatei(); // Löscht die gesamte Datei
- void erstelleDatei(); // erstellt die Datei
- void speicherSchrift( Schrift *schrift ); // Speichert die übergebene Schrift
- // constant
- Schrift *ladeSchrift(); // gibt die geladene Schrift zurück
- Alphabet *ladeAlphabet( int schriftgröße ); // gibt eine geladene Schrift nur mit der angegebenen Schriftgröße zurück
- Buchstabe *ladeBuchstabe( int schriftgröße, unsigned char zeichen ); // Läd einen bestimmten Buchstaben
- Text *getPfad() const; // gibt den Dateipfad zurück
- int getAnzahlSchriftgrößen() const; // gibt die Anzahl der Schriftgrößen aus der Datei zurück
- unsigned char *getSchriftGrößen() const; // gibt einen Array von Schriftgrößen zurück
- unsigned char getAnzahlBuchstaben( int sg ); // gibt die anzahl gespeicherter Buchstaben einer Schriftgröße zurück
- unsigned char *getBuchstaben( int sg ); // gibt einen Array von Buchstaben einer Schriftgröße zurück
- // Reference Counting
- LTDSDatei *getThis();
- LTDSDatei *release();
- };
- // Bit Funktionen
- int Bits( int a ); // gibt 1-bits in gewinschter anzahl zurück
- int getBits( char c ); // gibt zurück, wie viele Bits c benötigt
- }
- #endif
|