#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* lFarbe; RCArray* lName; RCArray>* ph; RCArray>* pb; Array* 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* 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* hIntervallTexte; //! Anzeigen des Vertikalen Intervalls RCArray* vIntervallTexte; //! einzelne Horizontale Intervalle Array* hIntervallWerte; //! einzelne Vertikale Intervalle Array* 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* 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