> This PR is an improved version of #1093.
> 
> JavaFX can load BMP, GIF, PNG, and JPEG images with its built-in image 
> loaders. It has been a long-standing request to support more image formats, 
> most notably (but not limited to) SVG. However, adding more built-in image 
> loaders is a significant effort not only in creating the functionality, but 
> also in maintaining the additional dependencies.
> 
> This will probably not happen any time soon, so we are left with three 
> alternatives:
> 1. Accept the fact that JavaFX will never be able to load additional image 
> formats.
> 2. Create a public image loader API, and hope that developers in the JavaFX 
> ecosystem will create image loader plugins.
> 3. Leverage the existing Java Image I/O API.
> 
> From these options, I think we should simply support existing Java APIs; both 
> because it is the shortest and most realistic path forward, but also because 
> I don't think it is sensible to bifurcate pluggable image loading in the Java 
> ecosystem.
> 
> Of course, Java Image I/O is a part of the `java.desktop` module, which as of 
> now, all JavaFX applications require. However, it has been noted in the 
> previous PR that we shouldn't lock JavaFX into the `java.desktop` dependency 
> even further.
> 
> I've improved this PR to not permanently require the `java.desktop` 
> dependency: if the module is present, then JavaFX will use Image I/O for 
> image formats that it can't load with the built-in loaders; if the module is 
> not present, only the built-in loaders are available.
> 
> I have prepared a small sample application that showcases how the feature can 
> be used to load SVG images in a JavaFX application: 
> https://github.com/mstr2/jfx-imageio-sample

Michael Strauß has updated the pull request with a new target base due to a 
merge or a rebase. The pull request now contains 26 commits:

 - Merge branch 'master' into feature/ximageloader
 - validate max image width/height
 - catch NoClassDefFoundError
   
   Co-authored-by: Kevin Rushforth <kevin.rushfo...@oracle.com>
 - Merge branch 'master' into feature/ximageloader
 - review comments
 - Merge branch 'master' into feature/ximageloader
 - Merge branch 'master' into feature/ximageloader
 - review changes
 - scanline stride always measured in bytes
 - remove unused code
 - ... and 16 more: https://git.openjdk.org/jfx/compare/58cd76a8...2900ef0a

-------------

Changes: https://git.openjdk.org/jfx/pull/1593/files
  Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=1593&range=13
  Stats: 3834 lines in 37 files changed: 3033 ins; 632 del; 169 mod
  Patch: https://git.openjdk.org/jfx/pull/1593.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/1593/head:pull/1593

PR: https://git.openjdk.org/jfx/pull/1593

Reply via email to