Mir fiel leider kein besser Titel ein.
Ich überlege mir gerade eine Design-Lösung und würde gerne eure Meinungen und weiteren Input hören.
Und zwar habe ich eine Surface struct die mehr oder minder eine
SDL_Surface* wrappt.
Beim Erstellen einer
SDL_Surface kann man angeben, wie die Masken für Rot, Grün Blau und Transparenz definiert werden sollen (jeweils ein
uint). Das ganze wrappe ich in einer struct Masks.
Diese Masken müssen nur für Spezialfälle definiert werden (z.B. wenn ich eine Transparente Grafik brauche). Ansonsten kann/könnte ich auf eine Default Version zugreifen, wo alle Masken 0 sind (oder eben 0xffffffff, je nachdem was öfter zutrifft).
Nun geht es darum, wie ich das der Surface sozusagen injecten kann. Ich habe mehrere mögliche Lösungen die ich aber irgendwie alle nicht so ganz toll finde:
1. Das Ding einfach im CTor übergeben. Wird bisher gemacht, ist das einfachste bläht aber IMO den CTor so auf. Damit sind es vier Parameter für den CTor, neben Breite, Höhe und Tiefe.
2. Als static Member halten. Default hat es einen Wert, soll der sich ändern, muss dieser vor dem Erstellen eben angepasst werden. Nachteil: wirkt sich natürlich ab da an auf _alle_ folgenden Instanzen aus. Ich könnte es nach der Benutzung wieder auf dem Default Wert resetten, aber ich weiß nicht ob das ganze im Sinne des Erfinders ist.
3. Eine Art Config struct einführen. Darin befinden sich dann alle vier Parameter und die struct hält auch direkt Default Werte für solche, die sich nur selten ändern und nicht immer mit angegeben werden sollen/müssen (auch wenn das in diesem Fall nur der eine ist). Dann wird die angepasste Config an den CTor übergeben. Wirkt auf mich irgendwie, als würde man das Problem nur verschieben.
Was schlagt ihr vor, oder habt ihr noch eine bessere/andere Idee?