Fortschritt.h 8.4 KB

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