123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672 |
- #ifndef Diagramm_H
- #define Diagramm_H
- #include "Array.h"
- #include "Critical.h"
- #include "Zeichnung.h"
- namespace Framework
- {
- class Rahmen; //! Rahmen.h
- class AlphaFeld; //! AlphaFeld.h
- class Text; //! Text.h
- class Schrift; //! Schrift.h
- class HScrollBar; //! Scroll.h
- class VScrollBar; //! Scroll.h
- class SLDiag; //! aus dieser Datei
- class LDiag; //! aus dieser Datei
- class TextRenderer;
- //! Eine Zeichnung de 2D GUI Frameworks, die ein live Diagramm von werten
- //! zeichnet
- class SLDiag : public ZeichnungHintergrund
- {
- public:
- class Style : public ZeichnungHintergrund::Style
- {
- public:
- //! Es wird ein Gitter im Diagramm zur Orientierung
- //! gezeichnet
- static const __int64 Gitter = 0x01000;
- //! Es werden die Namen der Graphen angezeigt
- static const __int64 LinienName = 0x02000;
- //! Vereinigung der Flags Sichtbar, Hintergrund,
- //! Rahmen, Gitter, LinienName
- static const __int64 normal
- = Sichtbar | Hintergrund | Rahmen | Gitter | LinienName;
- };
- private:
- int gF;
- Array<int>* lFarbe;
- RCArray<Text>* lName;
- RCArray<Array<int>>* ph;
- RCArray<Array<int>>* pb;
- Array<int>* lastValue;
- TextRenderer* textRd;
- Punkt gitterGr;
- int lines;
- public:
- //! Konstruktor
- DLLEXPORT SLDiag();
- //! Destruktor
- DLLEXPORT virtual ~SLDiag();
- //! Setzt den verwendeten TextRenderer
- //! \param textRd Der Textrenderer
- DLLEXPORT void setTextRendererZ(TextRenderer* textRd);
- //! Setzt einen Zeiger zur verwendeten Schrift
- //! \param schrift Die Schrift
- DLLEXPORT void setSchriftZ(Schrift* schrift);
- //! Setzt die Abstände zwischen den Linien des Gitters
- //! \param gr Für x den Abstand zwischen jeder vertikalen Linie in
- //! Pixeln und für y den Abstand zwischen jeder Horizontalen Linie in
- //! den dargestellen y Werten
- DLLEXPORT void setGSize(Punkt& gr);
- //! Setzt die Farbe der Raster Linien
- //! \param f Die Farbe im A8R8G8B8 Format
- DLLEXPORT void setGFarbe(int f);
- //! Fügt dem Diagramm einen neuen Graphen hinzu
- //! \param name Der Name des Graphen. Er wird bei dem Flag LinienName im
- //! Diagramm angezeigt
- DLLEXPORT void addLinie(const char* name);
- //! Fügt dem Diagramm einen neuen Graphen hinzu
- //! \param name Der Name des Graphen. Er wird bei dem Flag LinienName im
- //! Diagramm angezeigt
- DLLEXPORT void addLinie(Text* txt);
- //! Setzt die Farbe eines Graphen
- //! \param lNum Der Index des Graphen
- //! \param f Die Farbe im A8R8G8B8 Format
- DLLEXPORT void setLFarbe(int lNum, int f);
- //! Fügt einem Graphen einen Punkt hinzu. Hierdurch verschieben sich
- //! alle Punkte des Graphen so weit nach Links, dass der neue Punkt
- //! rechts auftaucht. Geht ein Punkt links aus dem Diagramm raus, wird
- //! er gelöscht. Auf diese Weise erscheint das Diagramm wie eine
- //! Abbildung einer Live Messung \param x Der Abstand zum Letzten Punkt
- //! in Pixeln \param y Den Wert der abgebildeten Funktion in dem Punkt
- DLLEXPORT void addPunkt(int lNum, int x, int h);
- //! Entfernt einen Graphen
- //! \param lNum Der Index des Graphen
- DLLEXPORT void removeLinie(int lNum);
- //! Zeichnet das Diagramm
- //! \param zRObj Das Bild, in das gezeichnet werden soll
- DLLEXPORT void render(Bild& zRObj) override;
- //! Gibt die verwendete Schrift zurück
- DLLEXPORT Schrift* getSchrift() const;
- //! Gibt die verwendete Schrift ohne erhöhten Reference Counter zurück
- DLLEXPORT Schrift* zSchrift() const;
- //! Gibt die Größe eines Quadrats des Gitters zurück, wobei die Braite
- //! in Pixeln und die Höhe in Werten der y Achse ist
- DLLEXPORT const Punkt& getGSize() const;
- //! Gibt die Farbe des Gitters in A8R8G8B8 Format zurück
- DLLEXPORT int getGFarbe() const;
- //! Gibt den Index eines Graphen zurück
- //! \param name Der Name des Graphen
- DLLEXPORT int getLinienNummer(const char* name) const;
- //! Gibt den Index eines Graphen zurück
- //! \param name Der Name des Graphen
- DLLEXPORT int getLinienNummer(Text* name) const;
- //! Gibt den Namen eines Graphen zurück
- //! \param lNum Der Index des Graphen
- DLLEXPORT Text* getLinienName(int lNum) const;
- //! Gibt den Namen eines Graphen ohne erhöhten Reference Counter zurück
- //! \param lNum Der Index des Graphen
- DLLEXPORT Text* zLinienNamen(int lNum) const;
- //! Gibt den Höchsten y Wert von allen Graphen zurück
- DLLEXPORT int getHighestValue() const;
- //! Gibt den Höchsten y Wert von einem Bestimmten Graphen zurück
- //! \param lNum Der Index des Graphen
- DLLEXPORT int getHighestValue(int lNum) const;
- //! Gibt den Durchschnittswert aller im Diagramm gespeicherten Punkten
- //! eines Graphen zurück \param lNum Der Index des Graphen
- DLLEXPORT int getMedian(int lNum) const;
- //! Gibt die Anzahl an Graphen zurück
- DLLEXPORT int getLAnzahl() const;
- //! Gibt den y Wert des letzten Punktes eines Graphen zurück
- //! \param lNum Der Index des Graphen
- DLLEXPORT int getLastValue(int lNum) const;
- };
- //! Punkt eines Wertes eines Diagramms
- struct DiagPunkt
- {
- //! Position des Punktes auf dem Horizontalen Intervall des Diagramms
- double hIntervall;
- //! Position des punktes auf dem Vertikalen Intervall des Diagramms
- double vIntervall;
- };
- //! Wert der in einem Diagramm visualisiert wird
- struct DiagWert : public virtual ReferenceCounter
- {
- //! Style eines Diagramm Wertes
- class Style
- {
- public:
- static const int Sichtbar
- = 0x01; //! Legt fest, ob der Wert angezeigt werden soll
- static const int Alpha
- = 0x02; //! Legt fest, ob beim zeichnen des Wertes Alphablending
- //! verwendet werden soll
- static const int Hintergrund
- = 0x04; //! Legt fest, ob der Wert einen Hintergrund hat
- static const int HAlpha
- = 0x08; //! Legt fest, ob beim zeichnen des Hintergrundes
- //! Alphablending verwendet werden soll
- static const int Name = 0x10; //! Legt fest, ob der Name des Wertes
- //! gezeichnet werden soll
- };
- //! Style des Wertes
- int style;
- //! Farbe des Wertes
- int farbe;
- //! Hintergrundfarbe des Wertes
- int hintergrund;
- //! Name des Wertes
- Text* name;
- //! Punkte des Wertes
- Array<DiagPunkt*>* punkte;
- //! Konstruktor
- DLLEXPORT DiagWert();
- //! Destruktor
- DLLEXPORT ~DiagWert();
- };
- //! Daten für ein Diagramm
- struct DiagDaten : public virtual ReferenceCounter
- {
- class Style
- {
- public:
- static const int Sichtbar
- = 0x0001; //! Legt Fest, ob die Daten sichtbar sein sollen
- static const int Raster
- = 0x0002; //! Legt fest, ob ein Raster zur Orientierung
- //! angezeigt werden soll
- static const int RasterAlpha
- = 0x0004; //! Legt fest, ob zum Zeichnen des Rasters
- //! Alphablending verwendet werden soll
- static const int AutoIntervallHeight
- = 0x0008; //! Legt fest, dass alle Werte automatisch so auf der
- //! y Achse Skalliert werden, dass immer die komplette
- //! Höhe des Diagramms genutzt wird
- static const int AutoIntervallBreite
- = 0x0010; //! Legt fest, dass alle Wert automatisch so auf der x
- //! Achse Skalliert werden, dass immer die komplette
- //! Breite des Diagramms genutzt wird
- static const int HIntervall
- = 0x0020; //! Legt fest, ob die X Achse gezeichnet werden soll
- static const int VIntervall
- = 0x0040; //! Legt fest, ob die Y Achse gezeichnet werden soll
- static const int HIntervallTexte
- = 0x0200; //! Legt fest, ob spezielle Texte für die Werte der X
- //! Achse gezeichnet werden sollen
- static const int VIntervallTexte
- = 0x0400; //! Left fest, ob spezielle Texte für die Werte der Y
- //! Achse gezeichnet werden sollen
- static const int AutoRasterBreite
- = 0x0800; //! Legt fest, ob der Abstand zwischen den Vertikalen
- //! Linien des Rasters automatisch gewählt werden soll
- static const int AutoRasterHeight
- = 0x1000; //! Legt fest, ob der Abstand zwischen den
- //! Horizontalen Rasterlinien automatisch gewählt
- //! werden soll
- static const int intervalle
- = HIntervall
- | VIntervall; //! Vereiniegt die Flags HIntervall, VIntervall
- static const int intervallTexte
- = HIntervallTexte
- | VIntervallTexte; //! Vereint die Flags HIntervallTexte,
- //! VIntervallTexte
- static const int autoRaster
- = AutoRasterHeight | AutoRasterBreite
- | Raster; //! Vereint die Flags AutoRasterHöhe,
- //! AutoRasterBreite, Raster
- static const int autoIntervall
- = AutoIntervallHeight
- | AutoIntervallBreite; //! Vereint die Flags AutoIntervallHöhe,
- //! AutoIntervallBreite
- };
- //! Style eines Diagramms
- int style;
- //! Breite einer Rasterlinie
- int rasterDicke;
- //! Breite eines Rasterkästchens
- double rasterBreite;
- //! Höhe eines Rasterkästchens
- double rasterHeight;
- //! Farbe des Rasters
- int rasterFarbe;
- //! Schriftfarbe des Horizontalen Intervalls
- int hIntervallFarbe;
- //! Schriftfarbe des Vertikalen Intervalls
- int vIntervallFarbe;
- //! Name des Horizontalen Intervalls
- Text* hIntervallName;
- //! Name des Vertikalen Intervalls
- Text* vIntervallName;
- //! Anzeigen des Horizontalen Intervalls
- RCArray<Text>* hIntervallTexte;
- //! Anzeigen des Vertikalen Intervalls
- RCArray<Text>* vIntervallTexte;
- //! einzelne Horizontale Intervalle
- Array<double>* hIntervallWerte;
- //! einzelne Vertikale Intervalle
- Array<double>* vIntervallWerte;
- //! Breite des Wertes 1 in Pixeln bei dem horizontalen Intervall ( wird
- //! durch das setzen von AutoIntervallBreite überschrieben )
- double hIntervallBreite;
- //! Höhe des Wertes 1 in Pixeln bei dem vertikalen Intervall ( wird
- //! durch das setzen von AutoIntervallHöhe überschrieben )
- double vIntervallHeight;
- //! Werte, die in dem Diagramm visualisiert werden
- RCArray<DiagWert>* werte;
- //! Konstruktor
- DLLEXPORT DiagDaten();
- //! Destruktor
- DLLEXPORT ~DiagDaten();
- };
- //! Basisklasse der verschiedenen Diagramm Arten
- class BaseDiag
- {
- protected:
- DiagDaten* daten;
- bool changed;
- Critical* lock;
- public:
- //! Konstruktor
- //! \param lock Ein Zeiger zur Critical, mit der die Diagramm Klasse,
- //! die von dieser Klasse erbt Multithread sicher gemacht wird
- DLLEXPORT BaseDiag(Critical* lock);
- //! Destruktor
- DLLEXPORT virtual ~BaseDiag();
- //! Setzt einen Zeiger auf die Daten des Diagramms
- //! \param dd Die Daten
- DLLEXPORT void setDiagDatenZ(DiagDaten* dd);
- //! Kopiert die Daten eines Diagramms
- //! \param dd Die Daten
- DLLEXPORT void setDiagDaten(DiagDaten* dd);
- //! Rasterdicke setzen
- //! \param d Die Breite einer Rasterlinie in Pixeln
- DLLEXPORT void setRasterDicke(int d);
- //! Rasterbreite setzen
- //! \param br Der Abstand zwischen zwei Vertikalen Rasterlinien in
- //! Pixeln
- DLLEXPORT void setRasterBreite(int br);
- //! Rasterhöhe setzen
- //! \param hi Der Abstand zwischen zwei Horizontalen Rasterlinien in
- //! Pixeln
- DLLEXPORT void setRasterHeight(int hi);
- //! Rasterfarbe setzen
- //! \param f Die Farbe im A8R8G8B8 Format
- DLLEXPORT void setRasterFarbe(int f);
- //! Setzt die Intervall Breite
- //! \param br Der Abstand zwischen den Werten 0 und 1 auf der X Achse in
- //! Pixeln
- DLLEXPORT void setHIntervallBreite(double br);
- //! Setzt die Intervall Höhe
- //! \param hi Der Abstand zwischen den Werten 0 und 1 auf der Y Achse in
- //! Pixeln
- DLLEXPORT void setVIntervallHeight(double hi);
- //! Setzt die Farbe der X Achse
- //! \param f Die Farbe im A8R8G8B8 Format
- DLLEXPORT void setHIntervallFarbe(int f);
- //! Setzt die Farbe der Y Achse
- //! \param f Die Farbe im A8R8G8B8 Formats
- DLLEXPORT void setVIntervallFarbe(int f);
- //! Setzt den Namen der X Achse
- //! \param name Der Name
- DLLEXPORT void setHIntervallName(const char* name);
- //! Setzt den Namen der X Achse
- //! \param name Der Name
- DLLEXPORT void setHIntervallName(Text* name);
- //! Setzt den Namen der Y Achse
- //! \param name Der Name
- DLLEXPORT void setVIntervallName(const char* name);
- //! Setzt den Namen der Y Achse
- //! \param name Der Name
- DLLEXPORT void setVIntervallName(Text* name);
- //! Beschriftet einen Betimmten Wert der X Achse, falls der Flag
- //! HIntervallTexte in den DiagDaten gesetzt wurde \param hIntervall Der
- //! Wert, der beschriftet werden soll \param text Die Beschriftung
- DLLEXPORT void addHIntervallText(double hIntervall, const char* text);
- //! Beschriftet einen Betimmten Wert der X Achse, falls der Flag
- //! HIntervallTexte in den DiagDaten gesetzt wurde \param hIntervall Der
- //! Wert, der beschriftet werden soll \param text Die Beschriftung
- DLLEXPORT void addHIntervallText(double hIntervall, Text* text);
- //! setzt den Zeiger auf eine Beschriftung in einen Betimmten Wert der X
- //! Achse, falls der Flag HIntervallTexte in den DiagDaten gesetzt wurde
- //! \param hIntervall Der Wert, der beschriftet werden soll
- //! \param text Die Beschriftung
- DLLEXPORT void setHIntervallTextZ(double hIntervall, Text* text);
- //! Ändert eine Beschriftung in einen Betimmten Wert der X Achse, falls
- //! der Flag HIntervallTexte in den DiagDaten gesetzt wurde \param
- //! hIntervall Der Wert, der beschriftet werden soll \param text Die
- //! Beschriftung
- DLLEXPORT void setHIntervallText(double hIntervall, Text* text);
- //! Ändert eine Beschriftung in einen Betimmten Wert der X Achse, falls
- //! der Flag HIntervallTexte in den DiagDaten gesetzt wurde \param
- //! hIntervall Der Wert, der beschriftet werden soll \param text Die
- //! Beschriftung
- DLLEXPORT void setHIntervallText(double hIntervall, const char* text);
- //! Entfernt eine Beschriftung in einen Betimmten Wert der X Achse,
- //! falls der Flag HIntervallTexte in den DiagDaten gesetzt wurde \param
- //! hIntervall Der Wert, der nicht mehr beschriftet sein soll
- DLLEXPORT void removeHIntervallText(double hIntervall);
- //! Beschriftet einen Betimmten Wert der Y Achse, falls der Flag
- //! VIntervallTexte in den DiagDaten gesetzt wurde \param vIntervall Der
- //! Wert, der beschriftet werden soll \param text Die Beschriftung
- DLLEXPORT void addVIntervallText(double vIntervall, const char* text);
- //! Beschriftet einen Betimmten Wert der Y Achse, falls der Flag
- //! VIntervallTexte in den DiagDaten gesetzt wurde \param vIntervall Der
- //! Wert, der beschriftet werden soll \param text Die Beschriftung
- DLLEXPORT void addVIntervallText(double vIntervall, Text* text);
- //! setzt den Zeiger auf eine Beschriftung in einen Betimmten Wert der Y
- //! Achse, falls der Flag VIntervallTexte in den DiagDaten gesetzt wurde
- //! \param vIntervall Der Wert, der beschriftet werden soll
- //! \param text Die Beschriftung
- DLLEXPORT void setVIntervallTextZ(double vIntervall, Text* text);
- //! Ändert eine Beschriftung in einen Betimmten Wert der Y Achse, falls
- //! der Flag VIntervallTexte in den DiagDaten gesetzt wurde \param
- //! vIntervall Der Wert, der beschriftet werden soll \param text Die
- //! Beschriftung
- DLLEXPORT void setVIntervallText(double vIntervall, Text* text);
- //! Ändert eine Beschriftung in einen Betimmten Wert der Y Achse, falls
- //! der Flag VIntervallTexte in den DiagDaten gesetzt wurde \param
- //! vIntervall Der Wert, der beschriftet werden soll \param text Die
- //! Beschriftung
- DLLEXPORT void setVIntervallText(double vIntervall, const char* text);
- //! Entfernt eine Beschriftung in einen Betimmten Wert der Y Achse,
- //! falls der Flag VIntervallTexte in den DiagDaten gesetzt wurde \param
- //! vIntervall Der Wert, der nicht mehr beschriftet sein soll
- DLLEXPORT void removeVIntervallText(double vIntervall);
- //! Fügt einen im Diagramm dargestellten Wert (Graph) hinzu
- //! \param w Der neue Wert
- DLLEXPORT void addWertZ(DiagWert* w);
- //! Fügt einen im Diagramm dargestellten Wert (Graph) hinzu, indem ein
- //! anderer Kopiert wird \param w Der Wert, der Kopiert werden soll
- DLLEXPORT void addWert(DiagWert* w);
- //! Fügt einen im Diagramm dargestellten Wert (Graph) hinzu
- //! \param name Der Name des Wertes
- DLLEXPORT void addWert(const char* name);
- //! Fügt einen im Diagramm dargestellten Wert (Graph) hinzu
- //! \param name Der Name des Wertes
- DLLEXPORT void addWert(Text* txt);
- //! setzt die Farbe eines Wertes
- //! \param wNum Der Index des Wertes
- //! \param fc Die Farbe im A8R8G8B8 Format
- DLLEXPORT void setWertFarbe(int wNum, int fc);
- //! fügt einem Wert einen Punkt hinzu
- //! \param wNum Der Index des Wertes
- //! \param p Der neue Punkt
- DLLEXPORT void addPunktZ(int wNum, DiagPunkt* p);
- //! fügt einem Wert einen Punkt hinzu, indem ein Punkt kopiert wird
- //! \param wNum Der Index des Wertes
- //! \param p Der Punkt, der kopiert werden soll
- DLLEXPORT void addPunkt(int wNum, DiagPunkt* p);
- //! Fügt einem Wert einen Punkt hinzu
- //! \param wNum Der Index des Wertes
- //! \param hI Der Wert des Punktes auf der X Achse
- //! \param vI Der Wert des Punktes auf der Y Achse
- DLLEXPORT void addPunkt(int wNum, double hI, double vI);
- //! Setzt einen Zeiger auf einen vorhandenen Punkt eines Wertes
- //! \param wNum Der Index des Wertes
- //! \param hI Der Wert des Punktes auf der X Achse, der ersetzt werden
- //! soll \param p Der neue Punkt
- DLLEXPORT void setPunktZ(int wNum, double hI, DiagPunkt* p);
- //! Setzt einen vorhandenen Punkt eines Wertes, indem ein Punkt kopiert
- //! wird \param wNum Der Index des Wertes \param hI Der Wert des Punktes
- //! auf der X Achse, der ersetzt werden soll \param p Der neue Punkt
- DLLEXPORT void setPunkt(int wNum, double hI, DiagPunkt* p);
- //! Setzt einen vorhandenen Punkt eines Wertes
- //! \param wNum Der Index des Wertes
- //! \param hI Der Wert des Punktes auf der X Achse, der ersetzt werden
- //! soll \param h Der Wert auf der X Achse des neuen Punktes \param v
- //! Der Wert auf der Y Achse des neuen Punktes
- DLLEXPORT void setPunkt(int wNum, double hI, double h, double v);
- //! Setzt einen Zeiger auf einen vorhandenen Punkt eines Wertes
- //! \param wNum Der Index des Wertes
- //! \param pNum Der Index des Punktes im Wert
- //! \param p Der neue Punkt
- DLLEXPORT void setPunktZ(int wNum, int pNum, DiagPunkt* p);
- //! Setzt einen vorhandenen Punkt eines Wertes, indem ein Punkt kopiert
- //! wird \param wNum Der Index des Wertes \param pNum Der Index des
- //! Punktes im Wert \param p Der neue Punkt
- DLLEXPORT void setPunkt(int wNum, int pNum, DiagPunkt* p);
- //! Setzt einen vorhandenen Punkt eines Wertes
- //! \param wNum Der Index des Wertes
- //! \param pNum Der Index des Punktes im Wert
- //! \param h Der Wert auf der X Achse des neuen Punktes
- //! \param v Der Wert auf der Y Achse des neuen Punktes
- DLLEXPORT void setPunkt(int wNum, int pNum, double h, double v);
- //! Löscht einen vorhandenen Punkt
- //! \param wNum Der Index des Wertes
- //! \param hI Der Wert auf der X Achse des Punktes, der gelöscht werden
- //! soll
- DLLEXPORT void removePunkt(int wNum, double hI);
- //! Löscht einen vorhandenen Punkt
- //! \param wNum Der Index des Wertes
- //! \param pNum Der Index des Punktes im Wert
- DLLEXPORT void removePunkt(int wNum, int pNum);
- //! entfernt einen Wert
- //! \param wNum Der Index des Wertes
- DLLEXPORT void removeWert(int wNum);
- //! entfernt einen Wert
- //! \param name Der Name des Wertes
- DLLEXPORT void removeWert(const char* name);
- //! entfernt einen Wert
- //! \param name Der Name des Wertes
- DLLEXPORT void removeWert(Text* name);
- //! Fügt den DiagDaten bestimmte Styles hinzu
- //! \param style Die neuen Styles
- DLLEXPORT void addDatenStyle(int style);
- //! Setzt die Styles der DiagDaten
- //! \param style Die neuen Styles
- DLLEXPORT void setDatenStyle(int style);
- //! Setzt die Styles der DiagDaten
- //! \param style Die Styles
- //! \param addRemove 1, falls die Styles hinzugefügt werden sollem. 0,
- //! falls die Styles entfernt werden sollen
- DLLEXPORT void setDatenStyle(int style, bool addRemove);
- //! Entfernt Styles der DiagDaten
- //! \param style Die Styles, die entfernt werden sollen
- DLLEXPORT void removeDatenStyle(int style);
- //! Fügt einem bestimmten Wert bestimmte Styles hinzu
- //! \param wNum Der Index des Wertes
- //! \param style Die neuen Styles
- DLLEXPORT void addWertStyle(int wNum, int style);
- //! Setzt die Styles eines Bestimmten Wertes
- //! \param wNum Der Index des Wertes
- //! \param style Die neuen Styles
- DLLEXPORT void setWertStyle(int wNum, int style);
- //! Setzt die Styles eines Bestimmten Wertes
- //! \param wNum Der Index des Wertes
- //! \param style Die Styles
- //! \param addRemove 1, falls die Styles hinzugefügt werden sollem. 0,
- //! falls die Styles entfernt werden sollen
- DLLEXPORT void setWertStyle(int wNum, int style, bool addRemove);
- //! Entfernt Styles eines Bestimmten Wertes
- //! \param wNum Der Index des Wertes
- //! \param style Die Styles, die entfernt werden sollen
- DLLEXPORT void removeWertStyle(int wNum, int style);
- //! Gibt die Daten des Diagramms zurück
- DLLEXPORT DiagDaten* getDiagDaten() const;
- //! Gibt die Daten des Diagramms ohne erhöhten Reference Counter zurück
- DLLEXPORT DiagDaten* zDiagDaten() const;
- //! Gibt die Daten eines Wertes zurück
- //! \param wNum Der Index des Wertes
- DLLEXPORT DiagWert* getDiagWert(int wNum) const;
- //! Gibt die Daten eines Wertes ohne erhöhten Reference Counter zurück
- //! \param wNum Der Index des Wertes
- DLLEXPORT DiagWert* zDiagWert(int wNum) const;
- //! Gibt die Daten eines Wertes zurück
- //! \param name Der Name des Wertes
- DLLEXPORT DiagWert* getDiagWert(const char* name) const;
- //! Gibt die Daten eines Wertes ohne erhöhten Reference Counter zurück
- //! \param name Der Name des Wertes
- DLLEXPORT DiagWert* zDiagWert(const char* name) const;
- //! Gibt den Index eines Wertes zurück
- //! \param name Der Name des Wertes
- DLLEXPORT int getDiagWertPos(const char* name) const;
- //! Gibt den Index eines Punktes von einem Wert zurück
- //! \param wNum Der Index des Wertes
- //! \param hI Der Wert auf der X Achse des Punktes
- DLLEXPORT int getDiagPunktPos(int wNum, double hI) const;
- //! Gibt den Index eines Punktes von einem Wert zurück
- //! \param wName Der Name des Wertes
- //! \param hI Der Wert auf der X Achse des Punktes
- DLLEXPORT int getDiagPunktPos(char* wName, double hI) const;
- //! Prüft, ob bestimmte Styles in den DiagDaten gesetzt wurden
- //! \param style Die Styles
- DLLEXPORT inline bool hatDatenStyle(int style) const;
- //! Prüft, ob bestimmte Styles in den DiagDaten nicht gesetzt wurden
- //! \param style Die Styles
- DLLEXPORT inline bool hatDatenStyleNicht(int style) const;
- //! Prüft, ob bestimmte Styles für einen bestimmten Wert gesetzt wurden
- //! \param wNum Der Index des Wertes
- //! \param style Die Styles
- DLLEXPORT inline bool hatWertStyle(int wNum, int style) const;
- //! Prüft, ob bestimmte Styles für einen bestimmten Wert nicht gesetzt
- //! wurden \param wNum Der Index des Wertes \param style Die Styles
- DLLEXPORT inline bool hatWertStyleNicht(int wNum, int style) const;
- };
- //! Eine Zeichnung des 2D GUI Frameworks, die die Diagrammdaten als
- //! Liniengraphen darstellt
- class LDiag : public ZeichnungHintergrund,
- public BaseDiag
- {
- public:
- class Style : public ZeichnungHintergrund::Style
- {
- public:
- //! Legt fest, ob um die daten ein Rahmen
- //! gezeichnet wird
- static const __int64 DatenRahmen = 0x0001000;
- //! legt fest, ob die Daten einen Hintergrund haben
- static const __int64 DatenHintergrund = 0x02000;
- //! legt fest, ob beim zeichnen des Hintergrunds der
- //! Daten alpha blending benutzt wird
- static const __int64 DatenHAlpha = 0x04000;
- //! Legt fest, ob für den Hintergrund der Daten ein
- //! Bild verwendet werden soll
- static const __int64 DatenHBild = 0x008000;
- //! Legt fest, ob die Daten einen Farbübergang haben
- static const __int64 DatenBuffered = 0x010000;
- //! Vereint die Flags VScroll und HScroll
- static const __int64 scroll = VScroll | HScroll;
- //! Vereint die Flags Hintergrund, scroll,
- //! DatenRahmen
- static const __int64 normal = Hintergrund | scroll | DatenRahmen;
- };
- private:
- TextRenderer* textRd;
- Rahmen* dRam;
- int dBgF;
- Bild* dBgB;
- AlphaFeld* dAf;
- Bild* vIntervallRB;
- Bild* hIntervallRB;
- int schriftGr;
- //! Verarbeitet Maus Nachrichten
- //! \param me Das Ereignis, was durch die Mauseingabe ausgelößt wurde
- DLLEXPORT void doMausEreignis(MausEreignis& me, bool userRet) override;
- public:
- //! Konstruktor
- DLLEXPORT LDiag();
- //! Destruktor
- DLLEXPORT virtual ~LDiag();
- //! Setzt den verwendeten TextRenderer
- //! \param textRd Der Textrenderer
- DLLEXPORT void setTextRendererZ(TextRenderer* textRd);
- //! Setzt die Schrift
- //! \param schrift Die Schrift
- DLLEXPORT void setSchriftZ(Schrift* schrift);
- //! Setzt die größe der Schrift
- //! \param gr Die Höhe einer Zeile in Pixeln
- DLLEXPORT void setSchriftSize(int gr);
- //! Setzt den inneren Rahmen um das eigentliche Diagramm (Rahmen um die
- //! Daten) \param ram Der Rahmen
- DLLEXPORT void setDatenRahmenZ(Rahmen* ram);
- //! Setzt den inneren Rahmen um das eigentliche Diagramm (Rahmen um die
- //! Daten), indem ein Rahmen kopiert wird \param ram Der Rahmen, der
- //! kopiert werden soll
- DLLEXPORT void setDatenRahmen(Rahmen* ram);
- //! Setzt die Breite des inneren Rahmen um das eigentliche Diagramm
- //! (Rahmen um die Daten) \param br Die Breite in Pixeln
- DLLEXPORT void setDatenRahmenBreite(int br);
- //! Setzt die Farbe des inneren Rahmen um das eigentliche Diagramm
- //! (Rahmen um die Daten) \param fc Die Farbe im A8R8G8B8 Format
- DLLEXPORT void setDatenRahmenFarbe(int fc);
- //! Setzt den Hintergrund des eigentlichen Diagramms
- DLLEXPORT void setDatenHintergrundFarbe(int fc);
- DLLEXPORT void setDatenHintergrundBildZ(Bild* b);
- DLLEXPORT void setDatenHintergrundBild(Bild* b);
- //! Setzt den Farbübergang des eigentlichen Diagramms (Farbübergang der
- //! Daten) \param af Der Farbübergang
- DLLEXPORT void setDatenAlphaFeldZ(AlphaFeld* af);
- //! Setzt den Farbübergang des eigentlichen Diagramms (Farbübergang der
- //! Daten), indem ein Farbübergang kopiert wird \param af Der
- //! Farbübergang, der Kopiert werden soll
- DLLEXPORT void setDatenAlphaFeld(AlphaFeld* af);
- //! Setzt die Farbe des Farbübergangs des eigentlichen Diagramms
- //! (Farbübergang der Daten) \param fc Die Farbe im A8R8G8B8 Format
- DLLEXPORT void setDatenAlphaFeldFarbe(int fc);
- //! Setzt die FaStärkerbe des Farbübergangs des eigentlichen Diagramms
- //! (Farbübergang der Daten) \param st Die Stärke
- DLLEXPORT void setDatenAlphaFeldStrength(int st);
- //! Zeichnet das Objekt nach zRObj, falls es sichtbar ist
- //! \param zRObj Das Bild, in welches gezeichnet werden soll
- DLLEXPORT void render(Bild& zRObj) override;
- //! Gibt die Schrift zurück
- DLLEXPORT Schrift* getSchrift() const;
- //! Gibt die Schrift ohne erhöhten Reference Counter zurück
- DLLEXPORT Schrift* zSchrift() const;
- //! Gibt den inneren Rahmen um das eigentliche Diagramm zurück (Rahmen
- //! um die Daten)
- DLLEXPORT Rahmen* getDatenRahmen() const;
- //! Gibt den inneren Rahmen um das eigentliche Diagramm ohne erhöhten
- //! Reference Counter zurück (Rahmen um die Daten)
- DLLEXPORT Rahmen* zDatenRahmen() const;
- //! Gibt die Farbe des inneren Rahmens um das eigentliche Diagramm im
- //! A8R8G8B8 Format zurück (Rahmen um die Daten)
- DLLEXPORT int getDatenRahmenFarbe() const;
- //! Gibt die Breite des inneren Rahmens um das eigentliche Diagramm in
- //! Pixeln zurück (Rahmen um die Daten)
- DLLEXPORT int getDatenRahmenBreite() const;
- //! Gibt die Farbe des Hintergrunds des eigentlichen Diagramms im
- //! A8R8G8B8 Format zurück (Hintergrund der Daten)
- DLLEXPORT int getDatenHintergrundFarbe() const;
- //! Gibt das Hintergrund Bild des eigentlichen Diagramms zurück
- //! (Hintergrund Bild der Daten)
- DLLEXPORT Bild* getDatenHintergrundBild() const;
- //! Gibt das Hintergrund Bild des eigentlichen Diagramms ohne erhöhten
- //! Reference Counter zurück (Hintergrund Bild der Daten)
- DLLEXPORT Bild* zDatenHintergrundBild() const;
- //! Gibt den Farbübergang des eigentlichen Diagramms zurück
- //! (Farbübergang der Daten)
- DLLEXPORT AlphaFeld* getDatenAlphaFeld() const;
- //! Gibt den Farbübergang des eigentlichen Diagramms ohne erhöhten
- //! Reference Counter zurück (Farbübergang der Daten)
- DLLEXPORT AlphaFeld* zDatenAlphaFeld() const;
- //! Gibt die Farbe des Farbübergangs des eigentlichen Diagramms im
- //! A8R8G8B8 Format zurück (Farbübergang der Daten)
- DLLEXPORT int getDatenAlphaFeldFarbe() const;
- //! Gibt die Stärke des Farbübergangs des eigentlichen Diagramms zurück
- //! (Farbübergang der Daten)
- DLLEXPORT int getDatenAlphaFeldStrength() const;
- };
- } // namespace Framework
- #endif
|