< prev index next >
src/java.desktop/macosx/classes/com/apple/laf/AquaUtils.java
Print this page
*** 46,55 ****
--- 46,56 ----
import sun.reflect.misc.ReflectUtil;
import sun.security.action.GetPropertyAction;
import sun.swing.SwingUtilities2;
import com.apple.laf.AquaImageFactory.SlicedImageControl;
+ import java.util.function.Function;
import sun.awt.image.MultiResolutionCachedImage;
final class AquaUtils {
private static final String ANIMATIONS_PROPERTY = "swing.enableAnimations";
*** 102,143 ****
static Creator getCImageCreator() {
return cImageCreator.get();
}
static Image generateSelectedDarkImage(final Image image) {
! final ImageProducer prod = new FilteredImageSource(image.getSource(), new IconImageFilter() {
@Override
int getGreyFor(final int gray) {
return gray * 75 / 100;
}
! });
! return Toolkit.getDefaultToolkit().createImage(prod);
}
static Image generateDisabledImage(final Image image) {
! final ImageProducer prod = new FilteredImageSource(image.getSource(), new IconImageFilter() {
@Override
int getGreyFor(final int gray) {
return 255 - ((255 - gray) * 65 / 100);
}
! });
! return Toolkit.getDefaultToolkit().createImage(prod);
}
static Image generateLightenedImage(final Image image, final int percent) {
final GrayFilter filter = new GrayFilter(true, percent);
! return (image instanceof MultiResolutionCachedImage)
! ? ((MultiResolutionCachedImage) image).map(
! rv -> generateLightenedImage(rv, filter))
! : generateLightenedImage(image, filter);
}
! static Image generateLightenedImage(Image image, ImageFilter filter) {
final ImageProducer prod = new FilteredImageSource(image.getSource(), filter);
return Toolkit.getDefaultToolkit().createImage(prod);
}
private abstract static class IconImageFilter extends RGBImageFilter {
IconImageFilter() {
super();
canFilterIndexColorModel = true;
}
--- 103,153 ----
static Creator getCImageCreator() {
return cImageCreator.get();
}
static Image generateSelectedDarkImage(final Image image) {
! final ImageFilter filter = new IconImageFilter() {
@Override
int getGreyFor(final int gray) {
return gray * 75 / 100;
}
! };
! return map(image, (img) -> generateFilteredImage(img, filter));
}
static Image generateDisabledImage(final Image image) {
! final ImageFilter filter = new IconImageFilter() {
@Override
int getGreyFor(final int gray) {
return 255 - ((255 - gray) * 65 / 100);
}
! };
! return map(image, (img) -> generateFilteredImage(img, filter));
}
static Image generateLightenedImage(final Image image, final int percent) {
final GrayFilter filter = new GrayFilter(true, percent);
! return map(image, (img) -> generateFilteredImage(img, filter));
}
! static Image generateFilteredImage(Image image, ImageFilter filter) {
final ImageProducer prod = new FilteredImageSource(image.getSource(), filter);
return Toolkit.getDefaultToolkit().createImage(prod);
}
+ private static Image map(Image image, Function<Image, Image> mapper) {
+ if (image instanceof MultiResolutionCachedImage) {
+ return ((MultiResolutionCachedImage) image).map(mapper);
+ } else if (image instanceof MultiResolutionImage) {
+ MultiResolutionImage mrImage = (MultiResolutionImage) image;
+ Image[] mappedImages = mrImage.getResolutionVariants().stream()
+ .map(mapper).toArray(Image[]::new);
+ return new BaseMultiResolutionImage(mappedImages);
+ }
+ return mapper.apply(image);
+ }
+
private abstract static class IconImageFilter extends RGBImageFilter {
IconImageFilter() {
super();
canFilterIndexColorModel = true;
}
< prev index next >