public final class HiDPISupport extends java.lang.Object
BaseMultiResolutionImage
via reflection,
in case it is on classpath. This is to be expected for Java 9, but not for Java 8 runtime.Modifier and Type | Field and Description |
---|---|
private static java.util.Optional<java.lang.Class<? extends java.awt.Image>> |
baseMultiResolutionImageClass |
private static java.util.Optional<java.lang.reflect.Constructor<? extends java.awt.Image>> |
baseMultiResolutionImageConstructor |
private static java.util.Optional<java.lang.reflect.Method> |
resolutionVariantsMethod |
Modifier | Constructor and Description |
---|---|
private |
HiDPISupport() |
Modifier and Type | Method and Description |
---|---|
static java.awt.Image |
getBaseImage(java.awt.Image img)
Wrapper for the method
java.awt.image.BaseMultiResolutionImage#getBaseImage() . |
private static java.util.Optional<java.lang.Class<? extends java.awt.Image>> |
getBaseMultiResolutionImageClass() |
private static java.util.Optional<java.lang.reflect.Constructor<? extends java.awt.Image>> |
getBaseMultiResolutionImageConstructor() |
private static double |
getHiDPIScale()
Detect the GUI scale for HiDPI mode.
|
static java.awt.Image |
getMultiResolutionImage(java.awt.Image base,
ImageResource ir)
Create a multi-resolution image from a base image and an
ImageResource . |
static java.awt.Image |
getMultiResolutionImage(java.util.List<java.awt.Image> imgs)
Create a multi-resolution image from a list of images.
|
static java.util.List<java.awt.Image> |
getResolutionVariants(java.awt.Image img)
Wrapper for the method
java.awt.image.MultiResolutionImage#getResolutionVariants() . |
private static java.util.Optional<java.lang.reflect.Method> |
getResolutionVariantsMethod() |
static java.awt.Image |
processMRImage(java.awt.Image img,
java.util.function.Function<java.awt.Image,java.awt.Image> processor)
Perform an operation on multi-resolution images.
|
static java.awt.Image |
processMRImages(java.util.List<java.awt.Image> imgs,
java.util.function.Function<java.util.List<java.awt.Image>,java.awt.Image> processor)
Perform an operation on multi-resolution images.
|
private static volatile java.util.Optional<java.lang.Class<? extends java.awt.Image>> baseMultiResolutionImageClass
private static volatile java.util.Optional<java.lang.reflect.Constructor<? extends java.awt.Image>> baseMultiResolutionImageConstructor
private static volatile java.util.Optional<java.lang.reflect.Method> resolutionVariantsMethod
private HiDPISupport()
public static java.awt.Image getMultiResolutionImage(java.awt.Image base, ImageResource ir)
ImageResource
.
Will only return multi-resolution image, if HiDPI-mode is detected. Then the image stack will consist of the base image and one that fits the HiDPI scale of the main display.
base
- the base imageir
- a corresponding image resourcepublic static java.awt.Image getMultiResolutionImage(java.util.List<java.awt.Image> imgs)
imgs
- the images, supposedly the same image at different resolutions,
must not be emptypublic static java.awt.Image getBaseImage(java.awt.Image img)
java.awt.image.BaseMultiResolutionImage#getBaseImage()
.
Will return the argument img
unchanged, if it is not a multi-resolution image.
img
- the imageimg
is a java.awt.image.BaseMultiResolutionImage
,
then the base image, otherwise the image itselfpublic static java.util.List<java.awt.Image> getResolutionVariants(java.awt.Image img)
java.awt.image.MultiResolutionImage#getResolutionVariants()
.
Will return the argument as a singleton list, in case it is not a multi-resolution image.
img
- the imageimg
is a java.awt.image.BaseMultiResolutionImage
,
then the result of the method #getResolutionVariants()
, otherwise the image
itself as a singleton listprivate static double getHiDPIScale()
This method may not work as expected for a multi-monitor setup. It will only take the default screen device into account.
public static java.awt.Image processMRImage(java.awt.Image img, java.util.function.Function<java.awt.Image,java.awt.Image> processor)
img
- input image, possibly multi-resolutionprocessor
- processor taking a plain image as input and returning a single
plain image as outputprocessor
for each resolution variantpublic static java.awt.Image processMRImages(java.util.List<java.awt.Image> imgs, java.util.function.Function<java.util.List<java.awt.Image>,java.awt.Image> processor)
imgs
- input images, possibly multi-resolutionprocessor
- processor taking a list of plain images as input and returning
a single plain image as outputprocessor
for each resolution variantprivate static java.util.Optional<java.lang.Class<? extends java.awt.Image>> getBaseMultiResolutionImageClass()
private static java.util.Optional<java.lang.reflect.Constructor<? extends java.awt.Image>> getBaseMultiResolutionImageConstructor()
private static java.util.Optional<java.lang.reflect.Method> getResolutionVariantsMethod()