Nicely done; being lazy I wonder if can look at your source code and adapt it to use in SWT?
Jody
Jody wrote:
Slowly I get the impression the best thing (from a UI developer
perspective) is
- a) hard coding the DIFFERENT supported file formats for the UI and
just check if at least one writer can support them and is able to write the
image (spi.canEncodeImage()) and
- b) let ImageIO decide which writer to take for each format (similar to
what you had done, except you used the file extension).
I looked at the code ImageIO does not decide; it just chooses the first one near as I can tell. The FactorySPI system can sort them into some kind of order - but the IIRegistry thing would get that order as well.

Correct.
Today I created a Swing file chooser for images - and I tried a new approach 
quite successfully:
- I iterate the list of writer SPIs and filter those capable for writing my 
image
- I fetch all their file extensions (not image formats)
- I create SimpleFileFilter instances (a class from my own library) from them
- Using a hard coded map of duplicates I can turn jpg/jpeg and tif/tiff into 
ONE file filter each.
- File filters already in the list are not added again.
- After the user has chosen one filter in the file chooser dialog I can fetch 
the first file extension of this filter
- I iterate the list of writer SPIs again
- The first writer SPI supporting the selected extension and capable of writing 
my image is used.
  Since the SPIs are returned in a best first order this is perfectly fine.
- I set the output stream and let the writer write the image.

This works very well. The only downside is that I don't have any useful descriptions for 
the file filters. They read "(*.jpg;*.jpeg)" or some such. But this is 
cosmetical. At least I have two things solved:
- No duplicate entries
- Best suitable writer is used.

Next step for me is to utilize the image parameters (they can seemingly be 
automatically discovered) to let the user set compression type and compression 
quality in the file save dialog for formats supporting this.

_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel

Reply via email to