Diagramm.h 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610
  1. #ifndef Diagramm_H
  2. #define Diagramm_H
  3. #include "Zeichnung.h"
  4. #include "Array.h"
  5. #include "Critical.h"
  6. namespace Framework
  7. {
  8. class Rahmen; // Rahmen.h
  9. class AlphaFeld; // AlphaFeld.h
  10. class Text; // Text.h
  11. class Schrift; // Schrift.h
  12. class HScrollBar; // Scroll.h
  13. class VScrollBar; // Scroll.h
  14. class SLDiag; // aus dieser Datei
  15. class LDiag; // aus dieser Datei
  16. class TextRenderer;
  17. // Eine Zeichnung de 2D GUI Frameworks, die ein live Diagramm von werten zeichnet
  18. class SLDiag : public ZeichnungHintergrund
  19. {
  20. public:
  21. class Style : public ZeichnungHintergrund::Style
  22. {
  23. public:
  24. const static __int64 Gitter = 0x01000; // Es wird ein Gitter im Diagramm zur Orientierung gezeichnet
  25. const static __int64 LinienName = 0x02000; // Es werden die Namen der Graphen angezeigt
  26. const static __int64 normal = Sichtbar | Hintergrund | Rahmen | Gitter | LinienName; // Vereinigung der Flags Sichtbar, Hintergrund, Rahmen, Gitter, LinienName
  27. };
  28. private:
  29. int gF;
  30. Array< int > *lFarbe;
  31. RCArray< Text > *lName;
  32. RCArray< Array< int > > *ph;
  33. RCArray< Array< int > > *pb;
  34. Array< int > *lastValue;
  35. TextRenderer *textRd;
  36. Punkt gitterGr;
  37. int lines;
  38. int ref;
  39. public:
  40. // Konstruktor
  41. __declspec( dllexport ) SLDiag();
  42. // Destruktor
  43. __declspec( dllexport ) virtual ~SLDiag();
  44. // Setzt den verwendeten TextRenderer
  45. // textRd: Der Textrenderer
  46. __declspec( dllexport ) void setTextRendererZ( TextRenderer *textRd );
  47. // Setzt einen Zeiger zur verwendeten Schrift
  48. // schrift: Die Schrift
  49. __declspec( dllexport ) void setSchriftZ( Schrift *schrift );
  50. // Setzt die Abstände zwischen den Linien des Gitters
  51. // 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
  52. __declspec( dllexport ) void setGSize( Punkt &gr );
  53. // Setzt die Farbe der Raster Linien
  54. // f: Die Farbe im A8R8G8B8 Format
  55. __declspec( dllexport ) void setGFarbe( int f );
  56. // Fügt dem Diagramm einen neuen Graphen hinzu
  57. // name: Der Name des Graphen. Er wird bei dem Flag LinienName im Diagramm angezeigt
  58. __declspec( dllexport ) void addLinie( const char *name );
  59. // Fügt dem Diagramm einen neuen Graphen hinzu
  60. // name: Der Name des Graphen. Er wird bei dem Flag LinienName im Diagramm angezeigt
  61. __declspec( dllexport ) void addLinie( Text *txt );
  62. // Setzt die Farbe eines Graphen
  63. // lNum: Der Index des Graphen
  64. // f: Die Farbe im A8R8G8B8 Format
  65. __declspec( dllexport ) void setLFarbe( int lNum, int f );
  66. // 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.
  67. // Auf diese Weise erscheint das Diagramm wie eine Abbildung einer Live Messung
  68. // x: Der Abstand zum Letzten Punkt in Pixeln
  69. // y: Den Wert der abgebildeten Funktion in dem Punkt
  70. __declspec( dllexport ) void addPunkt( int lNum, int x, int h );
  71. // Entfernt einen Graphen
  72. // lNum: Der Index des Graphen
  73. __declspec( dllexport ) void removeLinie( int lNum );
  74. // Zeichnet das Diagramm
  75. // zRObj: Das Bild, in das gezeichnet werden soll
  76. __declspec( dllexport ) void render( Bild &zRObj ) override;
  77. // Gibt die verwendete Schrift zurück
  78. __declspec( dllexport ) Schrift *getSchrift() const;
  79. // Gibt die verwendete Schrift ohne erhöhten Reference Counter zurück
  80. __declspec( dllexport ) Schrift *zSchrift() const;
  81. // 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
  82. __declspec( dllexport ) const Punkt &getGSize() const;
  83. // Gibt die Farbe des Gitters in A8R8G8B8 Format zurück
  84. __declspec( dllexport ) int getGFarbe() const;
  85. // Gibt den Index eines Graphen zurück
  86. // name: Der Name des Graphen
  87. __declspec( dllexport ) int getLinienNummer( const char *name ) const;
  88. // Gibt den Index eines Graphen zurück
  89. // name: Der Name des Graphen
  90. __declspec( dllexport ) int getLinienNummer( Text *name ) const;
  91. // Gibt den Namen eines Graphen zurück
  92. // lNum: Der Index des Graphen
  93. __declspec( dllexport ) Text *getLinienName( int lNum ) const;
  94. // Gibt den Namen eines Graphen ohne erhöhten Reference Counter zurück
  95. // lNum: Der Index des Graphen
  96. __declspec( dllexport ) Text *zLinienNamen( int lNum ) const;
  97. // Gibt den Höchsten y Wert von allen Graphen zurück
  98. __declspec( dllexport ) int getHighestValue() const;
  99. // Gibt den Höchsten y Wert von einem Bestimmten Graphen zurück
  100. // lNum: Der Index des Graphen
  101. __declspec( dllexport ) int getHighestValue( int lNum ) const;
  102. // Gibt den Durchschnittswert aller im Diagramm gespeicherten Punkten eines Graphen zurück
  103. // lNum: Der Index des Graphen
  104. __declspec( dllexport ) int getMedian( int lNum ) const;
  105. // Gibt die Anzahl an Graphen zurück
  106. __declspec( dllexport ) int getLAnzahl() const;
  107. // Gibt den y Wert des letzten Punktes eines Graphen zurück
  108. // lNum: Der Index des Graphen
  109. __declspec( dllexport ) int getLastValue( int lNum ) const;
  110. // Erhöht den Reference Counting Zähler.
  111. // return: this.
  112. __declspec( dllexport ) SLDiag *getThis();
  113. // Verringert den Reference Counting Zähler. Wenn der Zähler 0 erreicht, wird das Objekt automatisch gelöscht.
  114. // return: 0.
  115. __declspec( dllexport ) SLDiag *release();
  116. };
  117. // Punkt eines Wertes eines Diagramms
  118. struct DiagPunkt
  119. {
  120. // Position des Punktes auf dem Horizontalen Intervall des Diagramms
  121. double hIntervall;
  122. // Position des punktes auf dem Vertikalen Intervall des Diagramms
  123. double vIntervall;
  124. };
  125. // Wert der in einem Diagramm visualisiert wird
  126. struct DiagWert
  127. {
  128. // Style eines Diagramm Wertes
  129. class Style
  130. {
  131. public:
  132. const static int Sichtbar = 0x01; // Legt fest, ob der Wert angezeigt werden soll
  133. const static int Alpha = 0x02; // Legt fest, ob beim zeichnen des Wertes Alphablending verwendet werden soll
  134. const static int Hintergrund = 0x04; // Legt fest, ob der Wert einen Hintergrund hat
  135. const static int HAlpha = 0x08; // Legt fest, ob beim zeichnen des Hintergrundes Alphablending verwendet werden soll
  136. const static int Name = 0x10; // Legt fest, ob der Name des Wertes gezeichnet werden soll
  137. };
  138. // Style des Wertes
  139. int style;
  140. // Farbe des Wertes
  141. int farbe;
  142. // Hintergrundfarbe des Wertes
  143. int hintergrund;
  144. // Name des Wertes
  145. Text *name;
  146. // Punkte des Wertes
  147. Array< DiagPunkt* > *punkte;
  148. // Konstruktor
  149. __declspec( dllexport ) DiagWert();
  150. // Destruktor
  151. __declspec( dllexport ) ~DiagWert();
  152. // Erhöht den Reference Counting Zähler.
  153. // return: this.
  154. __declspec( dllexport ) DiagWert *getThis();
  155. // Verringert den Reference Counting Zähler. Wenn der Zähler 0 erreicht, wird das Objekt automatisch gelöscht.
  156. // return: 0.
  157. __declspec( dllexport ) DiagWert *release();
  158. private:
  159. // Reference Counting
  160. int ref;
  161. };
  162. // Daten für ein Diagramm
  163. struct DiagDaten
  164. {
  165. class Style
  166. {
  167. public:
  168. const static int Sichtbar = 0x0001; // Legt Fest, ob die Daten sichtbar sein sollen
  169. const static int Raster = 0x0002; // Legt fest, ob ein Raster zur Orientierung angezeigt werden soll
  170. const static int RasterAlpha = 0x0004; // Legt fest, ob zum Zeichnen des Rasters Alphablending verwendet werden soll
  171. const static 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
  172. const static 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
  173. const static int HIntervall = 0x0020; // Legt fest, ob die X Achse gezeichnet werden soll
  174. const static int VIntervall = 0x0040; // Legt fest, ob die Y Achse gezeichnet werden soll
  175. const static int HIntervallTexte = 0x0200; // Legt fest, ob spezielle Texte für die Werte der X Achse gezeichnet werden sollen
  176. const static int VIntervallTexte = 0x0400; // Left fest, ob spezielle Texte für die Werte der Y Achse gezeichnet werden sollen
  177. const static int AutoRasterBreite = 0x0800; // Legt fest, ob der Abstand zwischen den Vertikalen Linien des Rasters automatisch gewählt werden soll
  178. const static int AutoRasterHeight = 0x1000; // Legt fest, ob der Abstand zwischen den Horizontalen Rasterlinien automatisch gewählt werden soll
  179. const static int intervalle = HIntervall | VIntervall; // Vereiniegt die Flags HIntervall, VIntervall
  180. const static int intervallTexte = HIntervallTexte | VIntervallTexte; // Vereint die Flags HIntervallTexte, VIntervallTexte
  181. const static int autoRaster = AutoRasterHeight | AutoRasterBreite | Raster; // Vereint die Flags AutoRasterHöhe, AutoRasterBreite, Raster
  182. const static int autoIntervall = AutoIntervallHeight | AutoIntervallBreite; // Vereint die Flags AutoIntervallHöhe, AutoIntervallBreite
  183. };
  184. // Style eines Diagramms
  185. int style;
  186. // Breite einer Rasterlinie
  187. int rasterDicke;
  188. // Breite eines Rasterkästchens
  189. double rasterBreite;
  190. // Höhe eines Rasterkästchens
  191. double rasterHeight;
  192. // Farbe des Rasters
  193. int rasterFarbe;
  194. // Schriftfarbe des Horizontalen Intervalls
  195. int hIntervallFarbe;
  196. // Schriftfarbe des Vertikalen Intervalls
  197. int vIntervallFarbe;
  198. // Name des Horizontalen Intervalls
  199. Text *hIntervallName;
  200. // Name des Vertikalen Intervalls
  201. Text *vIntervallName;
  202. // Anzeigen des Horizontalen Intervalls
  203. RCArray< Text > *hIntervallTexte;
  204. // Anzeigen des Vertikalen Intervalls
  205. RCArray< Text > *vIntervallTexte;
  206. // einzelne Horizontale Intervalle
  207. Array< double > *hIntervallWerte;
  208. // einzelne Vertikale Intervalle
  209. Array< double > *vIntervallWerte;
  210. // Breite des Wertes 1 in Pixeln bei dem horizontalen Intervall ( wird durch das setzen von AutoIntervallBreite überschrieben )
  211. double hIntervallBreite;
  212. // Höhe des Wertes 1 in Pixeln bei dem vertikalen Intervall ( wird durch das setzen von AutoIntervallHöhe überschrieben )
  213. double vIntervallHeight;
  214. // Werte, die in dem Diagramm visualisiert werden
  215. RCArray< DiagWert > *werte;
  216. // Konstruktor
  217. __declspec( dllexport ) DiagDaten();
  218. // Destruktor
  219. __declspec( dllexport ) ~DiagDaten();
  220. // Erhöht den Reference Counting Zähler.
  221. // return: this.
  222. __declspec( dllexport ) DiagDaten *getThis();
  223. // Verringert den Reference Counting Zähler. Wenn der Zähler 0 erreicht, wird das Objekt automatisch gelöscht.
  224. // return: 0.
  225. __declspec( dllexport ) DiagDaten *release();
  226. private:
  227. // Reference Counting
  228. int ref;
  229. };
  230. // Basisklasse der verschiedenen Diagramm Arten
  231. class BaseDiag
  232. {
  233. protected:
  234. DiagDaten *daten;
  235. bool changed;
  236. Critical *lock;
  237. int ref;
  238. public:
  239. // Konstruktor
  240. // lock: Ein Zeiger zur Critical, mit der die Diagramm Klasse, die von dieser Klasse erbt Multithread sicher gemacht wird
  241. __declspec( dllexport ) BaseDiag( Critical *lock );
  242. // Destruktor
  243. __declspec( dllexport ) virtual ~BaseDiag();
  244. // Setzt einen Zeiger auf die Daten des Diagramms
  245. // dd: Die Daten
  246. __declspec( dllexport ) void setDiagDatenZ( DiagDaten *dd );
  247. // Kopiert die Daten eines Diagramms
  248. // dd: Die Daten
  249. __declspec( dllexport ) void setDiagDaten( DiagDaten *dd );
  250. // Rasterdicke setzen
  251. // d: Die Breite einer Rasterlinie in Pixeln
  252. __declspec( dllexport ) void setRasterDicke( int d );
  253. // Rasterbreite setzen
  254. // br: Der Abstand zwischen zwei Vertikalen Rasterlinien in Pixeln
  255. __declspec( dllexport ) void setRasterBreite( int br );
  256. // Rasterhöhe setzen
  257. // hi: Der Abstand zwischen zwei Horizontalen Rasterlinien in Pixeln
  258. __declspec( dllexport ) void setRasterHeight( int hi );
  259. // Rasterfarbe setzen
  260. // f: Die Farbe im A8R8G8B8 Format
  261. __declspec( dllexport ) void setRasterFarbe( int f );
  262. // Setzt die Intervall Breite
  263. // br: Der Abstand zwischen den Werten 0 und 1 auf der X Achse in Pixeln
  264. __declspec( dllexport ) void setHIntervallBreite( double br );
  265. // Setzt die Intervall Höhe
  266. // hi: Der Abstand zwischen den Werten 0 und 1 auf der Y Achse in Pixeln
  267. __declspec( dllexport ) void setVIntervallHeight( double hi );
  268. // Setzt die Farbe der X Achse
  269. // f: Die Farbe im A8R8G8B8 Format
  270. __declspec( dllexport ) void setHIntervallFarbe( int f );
  271. // Setzt die Farbe der Y Achse
  272. // f: Die Farbe im A8R8G8B8 Formats
  273. __declspec( dllexport ) void setVIntervallFarbe( int f );
  274. // Setzt den Namen der X Achse
  275. // name: Der Name
  276. __declspec( dllexport ) void setHIntervallName( char *name );
  277. // Setzt den Namen der X Achse
  278. // name: Der Name
  279. __declspec( dllexport ) void setHIntervallName( Text *name );
  280. // Setzt den Namen der Y Achse
  281. // name: Der Name
  282. __declspec( dllexport ) void setVIntervallName( char *name );
  283. // Setzt den Namen der Y Achse
  284. // name: Der Name
  285. __declspec( dllexport ) void setVIntervallName( Text *name );
  286. // Beschriftet einen Betimmten Wert der X Achse, falls der Flag HIntervallTexte in den DiagDaten gesetzt wurde
  287. // hIntervall: Der Wert, der beschriftet werden soll
  288. // text: Die Beschriftung
  289. __declspec( dllexport ) void addHIntervallText( double hIntervall, char *text );
  290. // Beschriftet einen Betimmten Wert der X Achse, falls der Flag HIntervallTexte in den DiagDaten gesetzt wurde
  291. // hIntervall: Der Wert, der beschriftet werden soll
  292. // text: Die Beschriftung
  293. __declspec( dllexport ) void addHIntervallText( double hIntervall, Text *text );
  294. // setzt den Zeiger auf eine Beschriftung in einen Betimmten Wert der X Achse, falls der Flag HIntervallTexte in den DiagDaten gesetzt wurde
  295. // hIntervall: Der Wert, der beschriftet werden soll
  296. // text: Die Beschriftung
  297. __declspec( dllexport ) void setHIntervallTextZ( double hIntervall, Text *text );
  298. // Ändert eine Beschriftung in einen Betimmten Wert der X Achse, falls der Flag HIntervallTexte in den DiagDaten gesetzt wurde
  299. // hIntervall: Der Wert, der beschriftet werden soll
  300. // text: Die Beschriftung
  301. __declspec( dllexport ) void setHIntervallText( double hIntervall, Text *text );
  302. // Ändert eine Beschriftung in einen Betimmten Wert der X Achse, falls der Flag HIntervallTexte in den DiagDaten gesetzt wurde
  303. // hIntervall: Der Wert, der beschriftet werden soll
  304. // text: Die Beschriftung
  305. __declspec( dllexport ) void setHIntervallText( double hIntervall, char *text );
  306. // Entfernt eine Beschriftung in einen Betimmten Wert der X Achse, falls der Flag HIntervallTexte in den DiagDaten gesetzt wurde
  307. // hIntervall: Der Wert, der nicht mehr beschriftet sein soll
  308. __declspec( dllexport ) void removeHIntervallText( double hIntervall );
  309. // Beschriftet einen Betimmten Wert der Y Achse, falls der Flag VIntervallTexte in den DiagDaten gesetzt wurde
  310. // vIntervall: Der Wert, der beschriftet werden soll
  311. // text: Die Beschriftung
  312. __declspec( dllexport ) void addVIntervallText( double vIntervall, char *text );
  313. // Beschriftet einen Betimmten Wert der Y Achse, falls der Flag VIntervallTexte in den DiagDaten gesetzt wurde
  314. // vIntervall: Der Wert, der beschriftet werden soll
  315. // text: Die Beschriftung
  316. __declspec( dllexport ) void addVIntervallText( double vIntervall, Text *text );
  317. // setzt den Zeiger auf eine Beschriftung in einen Betimmten Wert der Y Achse, falls der Flag VIntervallTexte in den DiagDaten gesetzt wurde
  318. // vIntervall: Der Wert, der beschriftet werden soll
  319. // text: Die Beschriftung
  320. __declspec( dllexport ) void setVIntervallTextZ( double vIntervall, Text *text );
  321. // Ändert eine Beschriftung in einen Betimmten Wert der Y Achse, falls der Flag VIntervallTexte in den DiagDaten gesetzt wurde
  322. // vIntervall: Der Wert, der beschriftet werden soll
  323. // text: Die Beschriftung
  324. __declspec( dllexport ) void setVIntervallText( double vIntervall, Text *text );
  325. // Ändert eine Beschriftung in einen Betimmten Wert der Y Achse, falls der Flag VIntervallTexte in den DiagDaten gesetzt wurde
  326. // vIntervall: Der Wert, der beschriftet werden soll
  327. // text: Die Beschriftung
  328. __declspec( dllexport ) void setVIntervallText( double vIntervall, char *text );
  329. // Entfernt eine Beschriftung in einen Betimmten Wert der Y Achse, falls der Flag VIntervallTexte in den DiagDaten gesetzt wurde
  330. // vIntervall: Der Wert, der nicht mehr beschriftet sein soll
  331. __declspec( dllexport ) void removeVIntervallText( double vIntervall );
  332. // Fügt einen im Diagramm dargestellten Wert (Graph) hinzu
  333. // w: Der neue Wert
  334. __declspec( dllexport ) void addWertZ( DiagWert *w );
  335. // Fügt einen im Diagramm dargestellten Wert (Graph) hinzu, indem ein anderer Kopiert wird
  336. // w: Der Wert, der Kopiert werden soll
  337. __declspec( dllexport ) void addWert( DiagWert *w );
  338. // Fügt einen im Diagramm dargestellten Wert (Graph) hinzu
  339. // name: Der Name des Wertes
  340. __declspec( dllexport ) void addWert( const char *name );
  341. // Fügt einen im Diagramm dargestellten Wert (Graph) hinzu
  342. // name: Der Name des Wertes
  343. __declspec( dllexport ) void addWert( Text *txt );
  344. // setzt die Farbe eines Wertes
  345. // wNum: Der Index des Wertes
  346. // fc: Die Farbe im A8R8G8B8 Format
  347. __declspec( dllexport ) void setWertFarbe( int wNum, int fc );
  348. // fügt einem Wert einen Punkt hinzu
  349. // wNum: Der Index des Wertes
  350. // p: Der neue Punkt
  351. __declspec( dllexport ) void addPunktZ( int wNum, DiagPunkt *p );
  352. // fügt einem Wert einen Punkt hinzu, indem ein Punkt kopiert wird
  353. // wNum: Der Index des Wertes
  354. // p: Der Punkt, der kopiert werden soll
  355. __declspec( dllexport ) void addPunkt( int wNum, DiagPunkt *p );
  356. // Fügt einem Wert einen Punkt hinzu
  357. // wNum: Der Index des Wertes
  358. // hI: Der Wert des Punktes auf der X Achse
  359. // vI: Der Wert des Punktes auf der Y Achse
  360. __declspec( dllexport ) void addPunkt( int wNum, double hI, double vI );
  361. // Setzt einen Zeiger auf einen vorhandenen Punkt eines Wertes
  362. // wNum: Der Index des Wertes
  363. // hI: Der Wert des Punktes auf der X Achse, der ersetzt werden soll
  364. // p: Der neue Punkt
  365. __declspec( dllexport ) void setPunktZ( int wNum, double hI, DiagPunkt *p );
  366. // Setzt einen vorhandenen Punkt eines Wertes, indem ein Punkt kopiert wird
  367. // wNum: Der Index des Wertes
  368. // hI: Der Wert des Punktes auf der X Achse, der ersetzt werden soll
  369. // p: Der neue Punkt
  370. __declspec( dllexport ) void setPunkt( int wNum, double hI, DiagPunkt *p );
  371. // Setzt einen vorhandenen Punkt eines Wertes
  372. // wNum: Der Index des Wertes
  373. // hI: Der Wert des Punktes auf der X Achse, der ersetzt werden soll
  374. // h: Der Wert auf der X Achse des neuen Punktes
  375. // v: Der Wert auf der Y Achse des neuen Punktes
  376. __declspec( dllexport ) void setPunkt( int wNum, double hI, double h, double v );
  377. // Setzt einen Zeiger auf einen vorhandenen Punkt eines Wertes
  378. // wNum: Der Index des Wertes
  379. // pNum: Der Index des Punktes im Wert
  380. // p: Der neue Punkt
  381. __declspec( dllexport ) void setPunktZ( int wNum, int pNum, DiagPunkt *p );
  382. // Setzt einen vorhandenen Punkt eines Wertes, indem ein Punkt kopiert wird
  383. // wNum: Der Index des Wertes
  384. // pNum: Der Index des Punktes im Wert
  385. // p: Der neue Punkt
  386. __declspec( dllexport ) void setPunkt( int wNum, int pNum, DiagPunkt *p );
  387. // Setzt einen vorhandenen Punkt eines Wertes
  388. // wNum: Der Index des Wertes
  389. // pNum: Der Index des Punktes im Wert
  390. // h: Der Wert auf der X Achse des neuen Punktes
  391. // v: Der Wert auf der Y Achse des neuen Punktes
  392. __declspec( dllexport ) void setPunkt( int wNum, int pNum, double h, double v );
  393. // Löscht einen vorhandenen Punkt
  394. // wNum: Der Index des Wertes
  395. // hI: Der Wert auf der X Achse des Punktes, der gelöscht werden soll
  396. __declspec( dllexport ) void removePunkt( int wNum, double hI );
  397. // Löscht einen vorhandenen Punkt
  398. // wNum: Der Index des Wertes
  399. // pNum: Der Index des Punktes im Wert
  400. __declspec( dllexport ) void removePunkt( int wNum, int pNum );
  401. // entfernt einen Wert
  402. // wNum: Der Index des Wertes
  403. __declspec( dllexport ) void removeWert( int wNum );
  404. // entfernt einen Wert
  405. // name: Der Name des Wertes
  406. __declspec( dllexport ) void removeWert( char *name );
  407. // entfernt einen Wert
  408. // name: Der Name des Wertes
  409. __declspec( dllexport ) void removeWert( Text *name );
  410. // Fügt den DiagDaten bestimmte Styles hinzu
  411. // style: Die neuen Styles
  412. __declspec( dllexport ) void addDatenStyle( int style );
  413. // Setzt die Styles der DiagDaten
  414. // style: Die neuen Styles
  415. __declspec( dllexport ) void setDatenStyle( int style );
  416. // Setzt die Styles der DiagDaten
  417. // style: Die Styles
  418. // addRemove: 1, falls die Styles hinzugefügt werden sollem. 0, falls die Styles entfernt werden sollen
  419. __declspec( dllexport ) void setDatenStyle( int style, bool addRemove );
  420. // Entfernt Styles der DiagDaten
  421. // style: Die Styles, die entfernt werden sollen
  422. __declspec( dllexport ) void removeDatenStyle( int style );
  423. // Fügt einem bestimmten Wert bestimmte Styles hinzu
  424. // wNum: Der Index des Wertes
  425. // style: Die neuen Styles
  426. __declspec( dllexport ) void addWertStyle( int wNum, int style );
  427. // Setzt die Styles eines Bestimmten Wertes
  428. // wNum: Der Index des Wertes
  429. // style: Die neuen Styles
  430. __declspec( dllexport ) void setWertStyle( int wNum, int style );
  431. // Setzt die Styles eines Bestimmten Wertes
  432. // wNum: Der Index des Wertes
  433. // style: Die Styles
  434. // addRemove: 1, falls die Styles hinzugefügt werden sollem. 0, falls die Styles entfernt werden sollen
  435. __declspec( dllexport ) void setWertStyle( int wNum, int style, bool addRemove );
  436. // Entfernt Styles eines Bestimmten Wertes
  437. // wNum: Der Index des Wertes
  438. // style: Die Styles, die entfernt werden sollen
  439. __declspec( dllexport ) void removeWertStyle( int wNum, int style );
  440. // Gibt die Daten des Diagramms zurück
  441. __declspec( dllexport ) DiagDaten *getDiagDaten() const;
  442. // Gibt die Daten des Diagramms ohne erhöhten Reference Counter zurück
  443. __declspec( dllexport ) DiagDaten *zDiagDaten() const;
  444. // Gibt die Daten eines Wertes zurück
  445. // wNum: Der Index des Wertes
  446. __declspec( dllexport ) DiagWert *getDiagWert( int wNum ) const;
  447. // Gibt die Daten eines Wertes ohne erhöhten Reference Counter zurück
  448. // wNum: Der Index des Wertes
  449. __declspec( dllexport ) DiagWert *zDiagWert( int wNum ) const;
  450. // Gibt die Daten eines Wertes zurück
  451. // name: Der Name des Wertes
  452. __declspec( dllexport ) DiagWert *getDiagWert( char *name ) const;
  453. // Gibt die Daten eines Wertes ohne erhöhten Reference Counter zurück
  454. // name: Der Name des Wertes
  455. __declspec( dllexport ) DiagWert *zDiagWert( char *name ) const;
  456. // Gibt den Index eines Wertes zurück
  457. // name: Der Name des Wertes
  458. __declspec( dllexport ) int getDiagWertPos( char *name ) const;
  459. // Gibt den Index eines Punktes von einem Wert zurück
  460. // wNum: Der Index des Wertes
  461. // hI: Der Wert auf der X Achse des Punktes
  462. __declspec( dllexport ) int getDiagPunktPos( int wNum, double hI ) const;
  463. // Gibt den Index eines Punktes von einem Wert zurück
  464. // wName: Der Name des Wertes
  465. // hI: Der Wert auf der X Achse des Punktes
  466. __declspec( dllexport ) int getDiagPunktPos( char *wName, double hI ) const;
  467. // Prüft, ob bestimmte Styles in den DiagDaten gesetzt wurden
  468. // style: Die Styles
  469. __declspec( dllexport ) inline bool hatDatenStyle( int style ) const;
  470. // Prüft, ob bestimmte Styles in den DiagDaten nicht gesetzt wurden
  471. // style: Die Styles
  472. __declspec( dllexport ) inline bool hatDatenStyleNicht( int style ) const;
  473. // Prüft, ob bestimmte Styles für einen bestimmten Wert gesetzt wurden
  474. // wNum: Der Index des Wertes
  475. // style: Die Styles
  476. __declspec( dllexport ) inline bool hatWertStyle( int wNum, int style ) const;
  477. // Prüft, ob bestimmte Styles für einen bestimmten Wert nicht gesetzt wurden
  478. // wNum: Der Index des Wertes
  479. // style: Die Styles
  480. __declspec( dllexport ) inline bool hatWertStyleNicht( int wNum, int style ) const;
  481. // Erhöht den Reference Counting Zähler.
  482. // return: this.
  483. __declspec( dllexport ) BaseDiag *getThis();
  484. // Verringert den Reference Counting Zähler. Wenn der Zähler 0 erreicht, wird das Objekt automatisch gelöscht.
  485. // return: 0.
  486. __declspec( dllexport ) virtual BaseDiag *release();
  487. };
  488. // Eine Zeichnung des 2D GUI Frameworks, die die Diagrammdaten als Liniengraphen darstellt
  489. class LDiag : public ZeichnungHintergrund, public BaseDiag
  490. {
  491. public:
  492. class Style : public ZeichnungHintergrund::Style
  493. {
  494. public:
  495. const static __int64 DatenRahmen = 0x0001000; // Legt fest, ob um die daten ein Rahmen gezeichnet wird
  496. const static __int64 DatenHintergrund = 0x02000; // legt fest, ob die Daten einen Hintergrund haben
  497. const static __int64 DatenHAlpha = 0x04000; // legt fest, ob beim zeichnen des Hintergrunds der Daten alpha blending benutzt wird
  498. const static __int64 DatenHBild = 0x008000; // Legt fest, ob für den Hintergrund der Daten ein Bild verwendet werden soll
  499. const static __int64 DatenBuffered = 0x010000; // Legt fest, ob die Daten einen Farbübergang haben
  500. const static __int64 scroll = VScroll | HScroll; // Vereint die Flags VScroll und HScroll
  501. const static __int64 normal = Hintergrund | scroll | DatenRahmen; // Vereint die Flags Hintergrund, scroll, DatenRahmen
  502. };
  503. private:
  504. TextRenderer *textRd;
  505. Rahmen *dRam;
  506. int dBgF;
  507. Bild *dBgB;
  508. AlphaFeld *dAf;
  509. Bild *vIntervallRB;
  510. Bild *hIntervallRB;
  511. int schriftGr;
  512. public:
  513. // Konstruktor
  514. __declspec( dllexport ) LDiag();
  515. // Destruktor
  516. __declspec( dllexport ) virtual ~LDiag();
  517. // Setzt den verwendeten TextRenderer
  518. // textRd: Der Textrenderer
  519. __declspec( dllexport ) void setTextRendererZ( TextRenderer *textRd );
  520. // Setzt die Schrift
  521. // schrift: Die Schrift
  522. __declspec( dllexport ) void setSchriftZ( Schrift *schrift );
  523. // Setzt die größe der Schrift
  524. // gr: Die Höhe einer Zeile in Pixeln
  525. __declspec( dllexport ) void setSchriftSize( int gr );
  526. // Setzt den inneren Rahmen um das eigentliche Diagramm (Rahmen um die Daten)
  527. // ram: Der Rahmen
  528. __declspec( dllexport ) void setDatenRahmenZ( Rahmen *ram );
  529. // Setzt den inneren Rahmen um das eigentliche Diagramm (Rahmen um die Daten), indem ein Rahmen kopiert wird
  530. // ram: Der Rahmen, der kopiert werden soll
  531. __declspec( dllexport ) void setDatenRahmen( Rahmen *ram );
  532. // Setzt die Breite des inneren Rahmen um das eigentliche Diagramm (Rahmen um die Daten)
  533. // br: Die Breite in Pixeln
  534. __declspec( dllexport ) void setDatenRahmenBreite( int br );
  535. // Setzt die Farbe des inneren Rahmen um das eigentliche Diagramm (Rahmen um die Daten)
  536. // fc: Die Farbe im A8R8G8B8 Format
  537. __declspec( dllexport ) void setDatenRahmenFarbe( int fc );
  538. // Setzt den Hintergrund des eigentlichen Diagramms
  539. __declspec( dllexport ) void setDatenHintergrundFarbe( int fc );
  540. __declspec( dllexport ) void setDatenHintergrundBildZ( Bild *b );
  541. __declspec( dllexport ) void setDatenHintergrundBild( Bild *b );
  542. // Setzt den Farbübergang des eigentlichen Diagramms (Farbübergang der Daten)
  543. // af: Der Farbübergang
  544. __declspec( dllexport ) void setDatenAlphaFeldZ( AlphaFeld *af );
  545. // Setzt den Farbübergang des eigentlichen Diagramms (Farbübergang der Daten), indem ein Farbübergang kopiert wird
  546. // af: Der Farbübergang, der Kopiert werden soll
  547. __declspec( dllexport ) void setDatenAlphaFeld( AlphaFeld *af );
  548. // Setzt die Farbe des Farbübergangs des eigentlichen Diagramms (Farbübergang der Daten)
  549. // fc: Die Farbe im A8R8G8B8 Format
  550. __declspec( dllexport ) void setDatenAlphaFeldFarbe( int fc );
  551. // Setzt die FaStärkerbe des Farbübergangs des eigentlichen Diagramms (Farbübergang der Daten)
  552. // st: Die Stärke
  553. __declspec( dllexport ) void setDatenAlphaFeldStrength( int st );
  554. // Verarbeitet Maus Nachrichten
  555. // me: Das Ereignis, was durch die Mauseingabe ausgelößt wurde
  556. __declspec( dllexport ) void doMausEreignis( MausEreignis &me ) override;
  557. // Zeichnet das Objekt nach zRObj, falls es sichtbar ist
  558. // zRObj: Das Bild, in welches gezeichnet werden soll
  559. __declspec( dllexport ) void render( Bild &zRObj ) override;
  560. // Gibt die Schrift zurück
  561. __declspec( dllexport ) Schrift *getSchrift() const;
  562. // Gibt die Schrift ohne erhöhten Reference Counter zurück
  563. __declspec( dllexport ) Schrift *zSchrift() const;
  564. // Gibt den inneren Rahmen um das eigentliche Diagramm zurück (Rahmen um die Daten)
  565. __declspec( dllexport ) Rahmen *getDatenRahmen() const;
  566. // Gibt den inneren Rahmen um das eigentliche Diagramm ohne erhöhten Reference Counter zurück (Rahmen um die Daten)
  567. __declspec( dllexport ) Rahmen *zDatenRahmen() const;
  568. // Gibt die Farbe des inneren Rahmens um das eigentliche Diagramm im A8R8G8B8 Format zurück (Rahmen um die Daten)
  569. __declspec( dllexport ) int getDatenRahmenFarbe() const;
  570. // Gibt die Breite des inneren Rahmens um das eigentliche Diagramm in Pixeln zurück (Rahmen um die Daten)
  571. __declspec( dllexport ) int getDatenRahmenBreite() const;
  572. // Gibt die Farbe des Hintergrunds des eigentlichen Diagramms im A8R8G8B8 Format zurück (Hintergrund der Daten)
  573. __declspec( dllexport ) int getDatenHintergrundFarbe() const;
  574. // Gibt das Hintergrund Bild des eigentlichen Diagramms zurück (Hintergrund Bild der Daten)
  575. __declspec( dllexport ) Bild *getDatenHintergrundBild() const;
  576. // Gibt das Hintergrund Bild des eigentlichen Diagramms ohne erhöhten Reference Counter zurück (Hintergrund Bild der Daten)
  577. __declspec( dllexport ) Bild *zDatenHintergrundBild() const;
  578. // Gibt den Farbübergang des eigentlichen Diagramms zurück (Farbübergang der Daten)
  579. __declspec( dllexport ) AlphaFeld *getDatenAlphaFeld() const;
  580. // Gibt den Farbübergang des eigentlichen Diagramms ohne erhöhten Reference Counter zurück (Farbübergang der Daten)
  581. __declspec( dllexport ) AlphaFeld *zDatenAlphaFeld() const;
  582. // Gibt die Farbe des Farbübergangs des eigentlichen Diagramms im A8R8G8B8 Format zurück (Farbübergang der Daten)
  583. __declspec( dllexport ) int getDatenAlphaFeldFarbe() const;
  584. // Gibt die Stärke des Farbübergangs des eigentlichen Diagramms zurück (Farbübergang der Daten)
  585. __declspec( dllexport ) int getDatenAlphaFeldStrength() const;
  586. // Verringert den Reference Counting Zähler. Wenn der Zähler 0 erreicht, wird das Objekt automatisch gelöscht.
  587. // return: 0.
  588. __declspec( dllexport ) BaseDiag *release() override;
  589. };
  590. }
  591. #endif