#ifndef Knopf_H #define Knopf_H #include "TextFeld.h" namespace Framework { class TextFeld; //! TextFeld.h class AlphaFeld; //! AlphaFeld.h class Text; //! Text.h class Schrift; //! Schrift.h class Rahmen; //! Rahmen.h class LTDBDatei; //! Dateisystem.h class Knopf; //! aus dieser Datei class KontrollKnopf; //! aus dieser Datei class TextRenderer; //! Eine Zeichnung des 2D GUI Frameworks, die einen Knopf zeichnet, den der //! Benutzer drücken kann class Knopf : public TextFeld { public: class Style : public ZeichnungHintergrund::Style { public: //! Legt fest, ob der Text des Knopfes mehrere //! Farben haben darf static const __int64 MehrfarbigText = 0x0010000; //! Legt fest, ob der Knopf während er gedrückt //! wird eine Hintergrund Farbe hat static const __int64 KlickFarbe = 0x0020000; //! Legt fest, ob der Knopf während er gedrückt //! wird ein Bild als Hintergrund hat static const __int64 KlickBild = 0x0040000; //! Legt fest, ob der Knopf während er gedrückt //! wird für das Zeichnen des Hintergrundes alpha //! blending verwendet static const __int64 KlickAlpha = 0x0080000; //! Legt fest, ob der Knopf während er gedrückt //! wird einen Farbübergang besitzt static const __int64 KlickBuffer = 0x0100000; //! Vereint di Flags Sichtbar, Erlaubt, Rahmen, //! Buffered, MehrfarbigText, KlickBuffer static const __int64 Normal = Sichtbar | Erlaubt | Rahmen | Buffered | MehrfarbigText | KlickBuffer; }; private: int klickFarbe; Bild* klickBild; AlphaFeld* klickBuffer; int klickIndex; //! Verarbeitet Maus Nachrichten //! \param me Das Ereignis, was durch die Mauseingabe ausgelößt wurde DLLEXPORT void doMausEreignis(MausEreignis& me, bool userRet) override; public: //! Konstruktor DLLEXPORT Knopf(); //! Destruktor DLLEXPORT virtual ~Knopf(); //! Setzt die Farbe, die als Hintergrund verwendet wird, wenn der Knopf //! gedrückt wird \param fc Die Farbe im A8R8G8B8 Format DLLEXPORT void setKlickFarbe(int fc); //! Setzt das Hintergrund Bild durch kopieren, das verwendet wird, wenn //! der Knopf gedrückt wird \param bild Das Bild, das kopiert werden //! soll DLLEXPORT void setKlickBild(Bild* bild); //! Setzt einen Zeiger auf das Hintergrund Bild, das verwendet wird, //! wenn der Knopf gedrückt wird \param bild Das neue Bild DLLEXPORT void setKlickBildZ(Bild* bild); //! Setzt einen Zeiger auf den Farbübergang, der verwendet wird, wenn //! der Knopf gedrückt wird \param af Der neue Farbübergang DLLEXPORT void setKBZ(AlphaFeld* af); //! Setzt die Stärke des Farbübergangs, der verwendet wird, wenn der //! Knopf gedrückt wird \param st Die Stärke DLLEXPORT void setKBStrength(int st); //! Setzt die Farbe des Farbübergangs, der verwendet wird, wenn der //! Knopf gedrückt wird \param fc Die Farbe im A8R8G8B8 Format DLLEXPORT void setKBFarbe(int fc); //! Verarbeitet Maus Nachrichten //! \param te Das Ereignis, was durch die Tastatur Eingabe ausgelößt //! wurde DLLEXPORT void doTastaturEreignis(TastaturEreignis& te) override; //! Zeichnet das Objekt nach zRObj, falls es sichtbar ist //! \param zRObj Das Bild, in welches gezeichnet werden soll DLLEXPORT void render(Bild& zRObj) override; //! Gibt die Hintergrund Farbe im A8R8G8B8 Format zurück, die verwendet //! wird, wenn der Knopf gedrückt wird DLLEXPORT int getKlickFarbe() const; //! Gibt das Hintergrund Bild zurück, das verwendet wird, wenn der Knopf //! gedrückt wird DLLEXPORT Bild* getKlickBild() const; //! Gibt das Hintergrund Bild ohne erhöhten Reference Counter zurück, //! das verwendet wird, wenn der Knopf gedrückt wird DLLEXPORT Bild* zKlickBild() const; //! Gibt den Farbübergang zurück, der verwendet wird, wenn der Knopf //! gedrückt wird DLLEXPORT AlphaFeld* getKB() const; //! Gibt den Farbübergang ohne erhöhten Reference Counter zurück, der //! verwendet wird, wenn der Knopf gedrückt wird DLLEXPORT AlphaFeld* zKB() const; //! Gibt die Farbe des Farbübergangs im A8R8G8B8 Format zurück, der //! verwendet wird, wenn der Knopf gedrückt wird DLLEXPORT int getKBFarbe() const; //! Gibt die Stärke des Farbübergangs zurück, der verwendet wird, wenn //! der Knopf gedrückt wird DLLEXPORT int getKBStrength() const; //! Kopiert den Knopf, so das er ohne auswirkungen auf das Original //! verändert werden kann DLLEXPORT Zeichnung* dublizieren() const override; }; //! Eine Zeichnung des 2D GUI Frameworks, die einen Auswählbares Kästchen //! mit beschriftung zeichnet class KontrollKnopf : public ZeichnungHintergrund { public: class Style : public ZeichnungHintergrund::Style { public: //! Legt fest, ob das Kästchen ausgewählt ist static const __int64 Selected = 0x1000000; //! Legt Fest, ob der Beschriftungs Text mehrfarbig //! sein kann static const __int64 MehrfarbigText = 0x001000; //! Legt fest, ob das Kästchen während ed gedrückt //! wird eine Hintergrund Farbe hat static const __int64 KlickFarbe = 0x002000; //! Legt fest, ob das Kästchen beim Klicken ein //! Hintergrund Bild hat static const __int64 KlickBild = 0x004000; //! Legt fest, ob für den Hintergrund des Kästchens //! beim Klicken alpha blending verwendet wird static const __int64 KlickAlpha = 0x008000; //! Legt fest, ob das Kästchen beim Klicken einen //! Farbübergang hat static const __int64 KlickBuffer = 0x010000; //! Legt fest, ob das Kästchen wärhend es ausgewählt //! ist eine Hintergrund Farbe hat static const __int64 SelectFarbe = 0x020000; //! Legt fest, ob das Kästchen wärhend es ausgewählt //! ist ein Hintergrund Bild hat static const __int64 SelectBild = 0x040000; //! Legt fest, ob das Kästchen wärhend es ausgewählt //! ist für den Hintergrund alpha blending verwendet static const __int64 SelectAlpha = 0x080000; //! Legt fest, ob das Kästchen wärhend es ausgewählt //! ist einen Farbübergang hat static const __int64 SelectBuffer = 0x100000; //! Legt fest, ob das Kästchen wärhend es ausgewählt //! ist eine andere Beschriftung hat static const __int64 SelectText = 0x200000; //! Legt fest, ob das Kästchen eine Mehrzeilige //! Beschriftung haben kann static const __int64 MehrzeiligText = 0x400000; //! Legt fest, ob gerade mit der Maus auf das //! Kästchen geklickt wird. (Wird vom Kästchen //! selbst verwaltet) static const __int64 MausKlick = 0x800000; //! Vereint die Flags Sichtbar, Erlaubt, Rahmen, //! KlickBuffer static const __int64 Normal = Sichtbar | Erlaubt | Rahmen | KlickBuffer; }; private: Text* txt; Text* sTxt; int sBgF; int kBgF; Bild* sBgB; Bild* kBgB; AlphaFeld* sAf; AlphaFeld* kAf; Bild* kasten; Bild* sKasten; TextRenderer* textRd; int sF; int sGr; //! Verarbeitet Maus Nachrichten //! \param me Das Ereignis, was durch die Mauseingabe ausgelößt wurde DLLEXPORT void doMausEreignis(MausEreignis& me, bool userRet) override; public: //! Konstruktor DLLEXPORT KontrollKnopf(); //! Destruktor DLLEXPORT virtual ~KontrollKnopf(); //! Setzt den Zeiger auf den Beschriftungs Text //! \param txt Der Text DLLEXPORT void setTextZ(Text* txt); //! Setzt den Beschriftungs Text //! \param txt Der Text DLLEXPORT void setText(Text* txt); //! Setzt den Beschriftungs Text //! \param txt Der Text DLLEXPORT void setText(const char* txt); //! Setzt den Zeiger auf den Beschriftungs Text, der angezeigt wird, //! während das Kästchen ausgewählt ist \param txt Der Text DLLEXPORT void setSTextZ(Text* txt); //! Setzt den Beschriftungs Text, der angezeigt wird, während das //! Kästchen ausgewählt ist \param txt Der Text DLLEXPORT void setSText(Text* txt); //! Setzt den Beschriftungs Text, der angezeigt wird, während das //! Kästchen ausgewählt ist \param txt Der Text DLLEXPORT void setSText(const char* txt); //! Setzt den verwendeten TextRenderer //! \param textRd Der Textrenderer DLLEXPORT void setTextRendererZ(TextRenderer* textRd); //! Setzt die Schrift, die für die Beschriftung verwendet werden soll //! \param schrift Die Schrift DLLEXPORT void setSchriftZ(Schrift* schrift); //! Setzt die Farbe der Schrift, die für die Beschriftung verwendet //! werden soll \param f Die Farbe im A8R8G8B8 Format DLLEXPORT void setSFarbe(int f); //! Setzt die Größe der Schrift, die für die Beschriftung verwendet //! werden soll \param f Die Höhe einer Zeile in Pixeln DLLEXPORT void setSSize(int gr); //! Setzt die Hintergrund Farbe, die verwendet wird, während das //! Kästchen ausgewählt ist \param f Die Farbe im A8R8G8B8 Format DLLEXPORT void setSBgFarbe(int f); //! Setzt die Hintergrund Farbe, die verwendet wird, während auf das //! Kästchen geklickt wird \param f Die Farbe im A8R8G8B8 Format DLLEXPORT void setKBgFarbe(int f); //! Setzt einen Zeiger auf das Hintergrund Bild, das verwendet wird, //! während das Kästchen ausgewählt ist \param b Das Bild DLLEXPORT void setSBgBildZ(Bild* b); //! Setzt das Hintergrund Bild durch kopieren, das verwendet wird, //! während das Kästchen ausgewählt ist \param b Das Bild, das kopiert //! werden soll DLLEXPORT void setSBgBild(Bild* b); //! Setzt einen Zeiger auf das Hintergrund Bild, das verwendet wird, //! während auf das Kästchen geklickt wird \param b Das Bild DLLEXPORT void setKBgBildZ(Bild* b); //! Setzt das Hintergrund Bild durch kopieren, das verwendet wird, //! während auf das Kästchen geklickt wird \param b Das Bild, das //! kopiert werden soll DLLEXPORT void setKBgBild(Bild* b); //! Setzt einen Zeiger auf den Farbübergang, der verwendet wird, während //! das Kästchen ausgewählt ist \param af Der Farbübergang DLLEXPORT void setSAlphaFeldZ(AlphaFeld* af); //! Setzt die Farbe des Farbübergangs, der verwendet wird, während das //! Kästchen ausgewählt ist \param f Die Farbe im A8R8G8B8 Format DLLEXPORT void setSAFFarbe(int f); //! Setzt die Stärke des Farbübergangs, der verwendet wird, während das //! Kästchen ausgewählt ist \param st Die Stärke DLLEXPORT void setSAFStrength(int st); //! Setzt einen Zeiger auf den Farbübergang, der verwendet wird, während //! auf das Kästchen geklickt wird \param af Der Farbübergang DLLEXPORT void setKAlphaFeldZ(AlphaFeld* af); //! Setzt die Farbe des Farbübergangs, der verwendet wird, während auf //! das Kästchen geklickt wird \param f Die Farbe im A8R8G8B8 Format DLLEXPORT void setKAFFarbe(int f); //! Setzt die Stärke des Farbübergangs, der verwendet wird, während auf //! das Kästchen geklickt wird \param st Die Stärke DLLEXPORT void setKAFStrength(int st); //! Lädt die Bilder "kasten.gif" und "skasten.gif" aus einer LTDB Datei //! Das Bild kasten.gif wird gezeichnet, wenn das Kästchen nicht //! ausgewählt ist. Das Bild skasten.gif wird gezeichnet, wenn das //! Kästchen ausgewählt wird \param zDat Die LTDB Datei DLLEXPORT void loadData(LTDBDatei* zDat); //! Lädt die Bilder "kasten.gif" und "skasten.gif" aus einer LTDB Datei //! Das Bild kasten.gif wird gezeichnet, wenn das Kästchen nicht //! ausgewählt ist. Das Bild skasten.gif wird gezeichnet, wenn das //! Kästchen ausgewählt wird \param ltdb Der Pfad zur LTDB Datei DLLEXPORT void loadData(const char* ltdb); //! Zeichnet das Objekt nach zRObj, falls es sichtbar ist //! \param zRObj Das Bild, in welches gezeichnet werden soll DLLEXPORT void render(Bild& zRObj) override; //! Gibt die beschriftung zurück DLLEXPORT Text* getText() const; //! Gibt die beschriftung ohne erhöhten Reference Counter zurück DLLEXPORT Text* zText() const; //! Gibt die beschriftung zurück, die verwendet wird, während das //! Kästchen ausgewählt ist DLLEXPORT Text* getSText() const; //! Gibt die beschriftung ohne erhöhten Reference Counter zurück, die //! verwendet wird, während das Kästchen ausgewählt ist DLLEXPORT Text* zSText() const; //! Gibt die verwendete Schrift zurück DLLEXPORT Schrift* getSchrift() const; //! Gibt die verwendete Schrift ohne Reference Counter zurück DLLEXPORT Schrift* zSchrift() const; //! Gibt die Schrift Farbe im A8R8G8B8 Format zurück DLLEXPORT int getSFarbe() const; //! Gibt die Schrift Größe zurück DLLEXPORT int getSSize() const; //! Gibt die Hintergrund Farbe im A8R8G8B8 Format zurück, die verwendet //! wird, während das Kästchen ausgewählt ist DLLEXPORT int getSBgFarbe() const; //! Gibt die Hintergrund Farbe im A8R8G8B8 Format zurück, die verwendet //! wird, während auf das Kästchen geklickt wird DLLEXPORT int getKBgFarbe() const; //! Gibt das Hintergrund Bild zurück, das verwendet wird, während das //! Kästchen ausgewählt ist DLLEXPORT Bild* getSBgBild() const; //! Gibt das Hintergrund Bild ohne erhöhten Reference Counter zurück, //! das verwendet wird, während das Kästchen ausgewählt ist DLLEXPORT Bild* zSBgBild() const; //! Gibt das Hintergrund Bild zurück, das verwendet wird, während auf //! das Kästchen geklickt wird DLLEXPORT Bild* getKBgBild() const; //! Gibt das Hintergrund Bild ohne erhöhten Reference Counter zurück, //! das verwendet wird, während auf das Kästchen geklickt wird DLLEXPORT Bild* zKBgBild() const; //! Gibt den Farbübergang zurück, der verwendet wird, während das //! Kästchen ausgewählt ist DLLEXPORT AlphaFeld* getSAlphaFeld() const; //! Gibt den Farbübergang ohne erhöhten Reference COunter zurück, der //! verwendet wird, während das Kästchen ausgewählt ist DLLEXPORT AlphaFeld* zSAlphaFeld() const; //! Gibt den Farbübergang zurück, der verwendet wird, während auf das //! Kästchen geklickt wird DLLEXPORT AlphaFeld* getKAlphaFeld() const; //! Gibt den Farbübergang ohne erhöhten Reference COunter zurück, der //! verwendet wird, während auf das Kästchen geklickt wird DLLEXPORT AlphaFeld* zKAlphaFeld() const; }; } // namespace Framework #endif