Für eine Auftragsarbeit musst ich mich Farbräumen und deren Konvertierungen herumschlagen. Herausgefallen ist dabei so eine Art kleine „Farbverwaltungs“-Klassenbibliothek, mal sehen vielleicht wird ja in Zukunft noch mehr draus, es gibt ja noch viele Farbräume zu begutachten.
Anfangen tut das mit den verschiedenen Farbmodellen die es gibt, konkret brauchte ich nur einige wenige:
- L*ab – ein gängiger (uralter) Standard in der „Farbenindustrie“
- L*CH – eine andere Darstellung der Farbwerte
- XYZ – eine Beschreibung des CIE Farbraumes
- sRGB – wird u.a. von Windows verwendet um Farben auf dem Bildschirm darzustellen
Falls ihr mehr zu diesem Thema wissen wollt findet ihr ganz viele Ressourcen unter: Easy RGB
Um kurz auf die Programmiertechnik einzugehen: ich habe mich dazu entschieden die Klassen so in der Art immutable zu machen, das heisst eine einmal erzeugte Instanz kann nicht mehr geändert werden. Man kann die Werte einer Instanz nur über den Konstruktor ändern. So richtig immutable ist es aber wiederum doch nicht programmier, weil instanzen der gleichen Klasse bzw. die von einer dieser Modelklassen erben könnten ja theoretisch Werte ändern. Aber ich hatte jetzt keine Lust mich da im Moment weiter einzulesen und das wirklich 100%ig zu machen.
Und nun zu den Listings, die Namespaces hab ich rausgenommen, könnt ihr ja euch ganz einfach dazudenken 😉