Diagramm.h 33 KB

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