Fortschritt.h 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. #ifndef Fortschritt_H
  2. #define Fortschritt_H
  3. #include "Zeichnung.h"
  4. namespace Framework
  5. {
  6. class Rahmen; //! Rahmen.h
  7. class AlphaFeld; //! AlphaFeld.h
  8. class Bild; //! Bild.h
  9. class Schrift; //! Schrift.h
  10. class FBalken; //! aus dieser Datei
  11. class TextRenderer;
  12. //! Eine Zeichnung des 2D GuI Frameworks, die einen Fortschrittsbalken
  13. //! zeichnet
  14. class FBalken : public ZeichnungHintergrund
  15. {
  16. public:
  17. class Style : public ZeichnungHintergrund::Style
  18. {
  19. public:
  20. static const __int64 Prozent
  21. = 0x001000; //! Legt fest, ob eine Prozentangebe gezechnet wird
  22. static const __int64 Aktionen
  23. = 0x01000000; //! Legt fest, ob die Aktionsschritte gezeichnet
  24. //! werden
  25. static const __int64 FRahmen
  26. = 0x002000; //! Legt fest, ob der vom fortschritt erfasste Teil
  27. //! des Balkens einen eigenen Rahmen hat
  28. static const __int64 FFarbe
  29. = 0x004000; //! Legt fest, ob der vom fortschritt erfasste Teil
  30. //! des Balkens eine eigene Hintergrund Farbe hat
  31. static const __int64 FBild
  32. = 0x008000; //! Legt fest, ob der vom fortschritt erfasste Teil
  33. //! des Balkens ein eigenes Hintergrund Bild hat
  34. static const __int64 FAlpha
  35. = 0x10000; //! Legt fest, ob der vom fortschritt erfasste Teil
  36. //! des Balkens zum zeichnen seines Hintergrundes
  37. //! alpha blending verwendet
  38. static const __int64 FBuffered
  39. = 0x20000; //! Legt fest, ob der vom fortschritt erfasste Teil
  40. //! des Balkens einen eigenen Frbübergang hat
  41. static const __int64 L_R
  42. = 0x0100000; //! Legt fest, ob sich der Fortschritt von lenks
  43. //! nach rechts ausbreitet
  44. static const __int64 R_L
  45. = 0x0200000; //! Legt fest, ob sich der Fortschritt von rechts
  46. //! nach links ausbreitet
  47. static const __int64 U_O
  48. = 0x0400000; //! Legt fest, ob sich der Fortschritt von unten
  49. //! nach oben ausbreitet
  50. static const __int64 O_U
  51. = 0x0800000; //! Legt fest, ob sich der Fortschritt von oben
  52. //! nach unten ausbreitet
  53. static const __int64 normal
  54. = Sichtbar | Rahmen | Hintergrund | HBild | FRahmen | FBild
  55. | L_R | Prozent
  56. | Aktionen; //! Vereint die Flags Sichtbar, Rahmen, Hintergrund,
  57. //! HBild, FRahmen, FBild, L_R, Prozent
  58. };
  59. private:
  60. __int64 maxAk;
  61. __int64 ak;
  62. Rahmen* fRahmen;
  63. AlphaFeld* fBuffer;
  64. int fBgF;
  65. Bild* fBgBild;
  66. TextRenderer* textRd;
  67. int schriftFarbe;
  68. unsigned char schriftSize;
  69. public:
  70. //! Konstruktor
  71. DLLEXPORT FBalken();
  72. //! Destructor
  73. DLLEXPORT virtual ~FBalken();
  74. //! Setzt die Anzahl an benötigten Operationen um 100% Fortschritt zu
  75. //! erreichen \param ak Die Anzahl an Operationen
  76. DLLEXPORT void setAktionAnzahl(__int64 ak);
  77. //! Legt fest, dass eine bestimmte Anzahl an Operationen seit dem
  78. //! letzten Aufruf der Funktion durchgeführt wurden \param aktionen Die
  79. //! durchgeführten Operationen. Standartmäßig auf 1
  80. DLLEXPORT void aktionPlus(__int64 aktionen = 1);
  81. //! Setzt alle fertigen Operationen zurück, so dass der Fortschritt
  82. //! wieder von 0% beginnt
  83. DLLEXPORT void reset();
  84. //! Setzt einen Zeiger auf den Rahmen, der in dem Teil des Balkens
  85. //! gezeichnet wird, der vom Fortschritt erfasst wurde \param ram Der
  86. //! Rahmen
  87. DLLEXPORT void setFRahmenZ(Rahmen* ram);
  88. //! Setzt die Farbe des Rahmens, der in dem Teil des Balkens gezeichnet
  89. //! wird, der vom Fortschritt erfasst wurde \param f Die Farbe im
  90. //! A8R8G8B8 Format
  91. DLLEXPORT void setFRFarbe(int f);
  92. //! Setzt die Breite des Rahmens, der in dem Teil des Balkens gezeichnet
  93. //! wird, der vom Fortschritt erfasst wurde \param br Die Breite in
  94. //! Pixeln
  95. DLLEXPORT void setFRBreite(int br);
  96. //! Setzt einen Zeiger auf den Farbverlauf, der in dem Teil des Balkens
  97. //! gezeichnet wird, der vom Fortschritt erfasst wurde \param af Der
  98. //! Farbverlauf
  99. DLLEXPORT void setFAlphaFeldZ(AlphaFeld* af);
  100. //! Setzt die Farbe des Farbverlaufs, der in dem Teil des Balkens
  101. //! gezeichnet wird, der vom Fortschritt erfasst wurde \param f Die
  102. //! Farbe im A8R8G8B8 Format
  103. DLLEXPORT void setFAFFarbe(int f);
  104. //! Setzt die Stärke des Farbverlaufs, der in dem Teil des Balkens
  105. //! gezeichnet wird, der vom Fortschritt erfasst wurde \param st Die
  106. //! Stärke
  107. DLLEXPORT void setFAFStrength(int st);
  108. //! Setzt die Hintergrund Farbe, die in dem Teil des Balkens gezeichnet
  109. //! wird, der vom Fortschritt erfasst wurde \param f Die Farbe im
  110. //! A8R8G8B8 Format
  111. DLLEXPORT void setFBgFarbe(int f);
  112. //! Setzt einen Zeiger auf das Hintergrund Bild, das in dem Teil des
  113. //! Balkens gezeichnet wird, der vom Fortschritt erfasst wurde \param b
  114. //! Das Bild
  115. DLLEXPORT void setFBgBildZ(Bild* b);
  116. //! Setzt das Hintergrund Bild durch kopieren, das in dem Teil des
  117. //! Balkens gezeichnet wird, der vom Fortschritt erfasst wurde \param b
  118. //! Das Bild, das kopiert werden soll
  119. DLLEXPORT void setFBgBild(Bild* b);
  120. //! Setzt den verwendeten TextRenderer
  121. //! \param textRd Der Textrenderer
  122. DLLEXPORT void setTextRendererZ(TextRenderer* textRd);
  123. //! Setzt die Schrift, die verwendet wird, um die Prozentanzeige zu
  124. //! zeichnen
  125. DLLEXPORT void setSchriftZ(Schrift* b);
  126. //! Setzt die Farbe der Prozentanzeige
  127. //! \param f Die Farbe im A8R8G8B8 Format
  128. DLLEXPORT void setSFarbe(int f);
  129. //! Setzt die Schriftgröße der Prozentanzeige
  130. //! \param gr Die Größe einer Zeile in Pixeln
  131. DLLEXPORT void setSSize(unsigned char gr);
  132. //! Zeichnet das Objekt nach zRObj, falls es sichtbar ist
  133. //! \param zRObj Das Bild, in welches gezeichnet werden soll
  134. DLLEXPORT void render(Bild& zRObj) override;
  135. //! Gibt die Anzahl an benötigten Operationen zurück, die für 100%
  136. //! benötigt werden
  137. DLLEXPORT __int64 getAktionAnzahl() const;
  138. //! Gibt die momentan erreichte Prozentzahl des Fortschritts zurück
  139. DLLEXPORT double getProzent() const;
  140. //! Gibt die Anzahl an fertigen Operationen zurück
  141. DLLEXPORT __int64 getAktion() const;
  142. //! Gibt den Rahmen zurück, der in dem Teil des Balkens gezeichnet wird,
  143. //! der vom Fortschritt erfasst wurde
  144. DLLEXPORT Rahmen* getFRahmen() const;
  145. //! Gibt den Rahmen ohne erhöhten Reference Counter zurück, der in dem
  146. //! Teil des Balkens gezeichnet wird, der vom Fortschritt erfasst wurde
  147. DLLEXPORT Rahmen* zFRahmen() const;
  148. //! Gibt den Farbübergang zurück, der in dem Teil des Balkens gezeichnet
  149. //! wird, der vom Fortschritt erfasst wurde
  150. DLLEXPORT AlphaFeld* getFAlphaFeld() const;
  151. //! Gibt den Farbübergang ohne erhöhten Reference Counter zurück, der in
  152. //! dem Teil des Balkens gezeichnet wird, der vom Fortschritt erfasst
  153. //! wurde
  154. DLLEXPORT AlphaFeld* zFAlphaFeld() const;
  155. //! Gibt die Hintergrund Farbe im A8R8G8B8 Format zurück, die in dem
  156. //! Teil des Balkens gezeichnet wird, der vom Fortschritt erfasst wurde
  157. DLLEXPORT int getFBgFarbe() const;
  158. //! Gibt das Hintergrund Bild zurück, das in dem Teil des Balkens
  159. //! gezeichnet wird, der vom Fortschritt erfasst wurde
  160. DLLEXPORT Bild* getFBgBild() const;
  161. //! Gibt das Hintergrund Bild ohne erhöhten Reference COunter zurück,
  162. //! das in dem Teil des Balkens gezeichnet wird, der vom Fortschritt
  163. //! erfasst wurde
  164. DLLEXPORT Bild* zFBgBild() const;
  165. //! Gibt die Schrift zurück, die für die Prozentanzeige verwendet wird
  166. DLLEXPORT Schrift* getSchrift() const;
  167. //! Gibt die Schrift ohne erhöhten Reference Counter zurück, die für die
  168. //! Prozentanzeige verwendet wird
  169. DLLEXPORT Schrift* zSchrift() const;
  170. //! Gibt die Farbe der Prozentanzeige im A8R8G8B8 Format zurück
  171. DLLEXPORT int getSFarbe() const;
  172. };
  173. } // namespace Framework
  174. #endif