Auf Thema antworten

Naja... wirklich hilfreich waren meine bisherigen Rückmeldungen ja nicht ... einerseits ist es zwar interessant, andererseits habe ich kaum Anlass und vor allem Zeit mir da wirklich tiefergehende Gedanken zu machen :oops:


Die eigentliche Konvertierung erfolgt, wie du sagtest, durch "Auswahl oder Implementierung eines geeigneten RawImageDataAdapters". Du hast ja schon einige Default-Implementierungen dafür anskizziert, und vermutlich schon konkretere Ideen, welche Möglichen Rohformate es geben kann. Für alles andere würde sich der Benutzer dann eine minimale Menge von Methoden bauen müssen - also in erster Linie die getChannelAs*-Methode. Man könnte sich überlegen, ob man das noch ein bißchen ... abstrakter oder einfacher erweiterbar macht - aber vermutlich hast du schon sowas wie einen vollständig mit Default-Werten vor-Implementierten AbstractRawImageDataAdapter nachgedacht.


Was ich persönlich jetzt (nach kurzem Drüberschauen - deswegen nicht unbedingt so ernst nehmen) nicht so hübsch finde, sind die redundant wirkenden Methoden

AlphaCreationAlgorithm#getAlphaAsInt

AlphaCreationAlgorithm#getAlphaAsFloat

AlphaCreationAlgorithm#getAlphaAsDouble

und

RawImageDataAdapter#getChannelAsInt

RawImageDataAdapter#getChannelAsFloat

RawImageDataAdapter#getChannelAsDouble

(bei letzteren stimmen im zuletzt geposteten auch die Rückabetypen noch nicht).


Erstens müßte man ja noch

RawImageDataAdapter#getChannelAsChar?

RawImageDataAdapter#getChannelAsBoolean?

RawImageDataAdapter#getChannelAsLong

RawImageDataAdapter#getChannelAsShort

RawImageDataAdapter#getChannelAsByte !!!

einfügen - insbesondere das letzte ist ja "klassisch" das, was benötigt wird, um ein RGB-Bild zu erstellen. Aber natürlich wäre es dadurch noch weniger schön. Man könnte schauen, ob man das schön und sinnvoll mit Generics lösen könnte, oder vielleicht mit einem ByteBuffer (Java Platform SE 6) den man dann als Long- Float- oder sonstigen Buffer ansehen kann. Wie man das dann schön, typsicher und einfach zu verwenden hinkriegen könnte, müßte man sich überlegen.


Abgesehen davon ist Alpha ja eigentlich auch nur ein Channel. Man könnte sich überlegen, ob man das irgendwie ausnutzen könnte - in dem Sinne, dass ... der "AlphaCreationAlgorithm" sozusagen(!) durch einen speziellen RawImageDataAdapter ersetzt wird, oder dass der RawImageDataAdapter aus mehreren "ChannelCreationAlgorithms" besteht (also der Alpha-Channel irgendwie genauso behandelt wird wie die anderen). Da jetzt nicht so draufhüpfen, das ist wirklich nur ganz grob rumgesponnen... aber vielleicht weißt du ja, was ich meine ;)



Oben