Diagramm.h 33 KB

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