module;
#include <print>
#include <string>

export module window;
// Fensterklasse
// Alle Fenster der Klassen haben eine gemeinsame
// Titel- und Fensterfarbe aber unterschiedliche Titel
export class Window
{
   inline static unsigned long titleColor {0UL}; // Titelfarbe
   inline static unsigned long winColor {0xffffffUL};   // Fensterfarbe
   std::string title;							 // Fenstertitel
 public:
   // ctor
   // Beachte: string ist ein Objekt und sollte deshalb
   // per Initialisiererliste initialisiert werden
   Window(const char* t): title(t)
   {}
   // Fenster darstellen
   void Draw() const;
   // statische Memberfunktionen zum setzen der Farben
   static void SetTitleColor(unsigned char r, unsigned char g, unsigned char b);
   static void SetWinColor(unsigned char r, unsigned char g, unsigned char b);
};

// Fenstereigenschaften ausgeben
void Window::Draw() const
{
	std::println("Titelfarbe: {:#08x}, Titel: {}\nFensterfarbe: {:#08x}\n",
		titleColor, title, winColor);
}
// Titelfarbe setzen
void Window::SetTitleColor(unsigned char r, unsigned char g, unsigned char b)
{
   titleColor = (r<<16) + (g<<8) + b;
}
// Fensterfarbe setzen
void Window::SetWinColor(unsigned char r, unsigned char g, unsigned char b)
{
   winColor = (r<<16) + (g<<8) + b;
}
