benfry / processing4

Processing 4.x releases for Java 17
https://processing.org
Other
1.35k stars 239 forks source link

Move `loadImage()` into `Surface`, and AWT out of `PImage` #56

Open benfry opened 4 years ago

benfry commented 4 years ago

Several changes necessary to move image handling into Surface so that we're not invoking AWT.

However, if that's done, we need to replace the image loading for JOGL and JavaFX as well, or have those subclass a LameKindaSurfaceAWT which has the AWT code.

There's a constructor, resizer, and some IO options in PImage that all make use of AWT code. These will all be moved to PImageJava2D inside the processing.awt package, but will need replacements for JOGL and JavaFX.

neilcsmith-net commented 4 years ago

Are you trying to remove all AWT usage or just allow headless (for eg. LWJGL use)? Because large portion of Processing AWT code, such as in PImage, PFont, etc. works fine headless.

sampottinger commented 4 years ago

Yeah I agree with @neilcsmith-net. There's some stuff like image saving where it's headless-OK but where AWT-dependent code has become standard. For example, it looks like even in JavaFX and JOGL, BufferedImage is still the canonical solution. There might not be a way to avoid using it.

benfry commented 4 years ago

More here: https://github.com/processing/processing4/wiki/Exorcising-AWT

neilcsmith-net commented 4 years ago

As per @sampottinger comment, LWJGL might be better placed in terms of library integration to allow a complete removal of AWT / java.desktop dependencies for a particular renderer. @benfry interesting page, but surprised to see LWJGL still under discussion - thought that had been dropped? My issue to discuss necessary changes to PApplet to support it were closed.