On 27.07.2020 23:43, Alexander Zuev wrote:
As for the test i have a manual test that i use to reproduce the situation but i am not sure i can make the automated test case - the configuration required is quite unique. I tried to play with the setting that manages the magnification factor but changing it does not trigger the bug.
I guess something like this should work: import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.image.BaseMultiResolutionImage; import java.awt.image.BufferedImage; import java.awt.image.ImageObserver; import java.awt.image.ImageProducer; import static java.awt.image.BufferedImage.TYPE_INT_RGB; public final class SkipRequestedImageVariant { public static void main(String[] args) { var mri = new BaseMultiResolutionImage(1, generateFakeImage(), generateImage(200, Color.GREEN), generateFakeImage()); BufferedImage target = new BufferedImage(500, 500, TYPE_INT_RGB); Graphics2D g2d = target.createGraphics(); g2d.drawImage(mri, 0, 0, 500, 500, null); g2d.dispose(); if (Color.GREEN.getRGB() != target.getRGB(1, 1)) { throw new RuntimeException("Wrong resolution variant was used"); } } private static BufferedImage generateImage(int size, Color c) { BufferedImage img = new BufferedImage(size, size, TYPE_INT_RGB); Graphics g = img.createGraphics(); g.setColor(c); g.fillRect(0, 0, size, size); g.dispose(); return img; } private static Image generateFakeImage() { return new Image(){ @Override public int getWidth(ImageObserver observer) { return -1; } @Override public int getHeight(ImageObserver observer) { return -1; } @Override public ImageProducer getSource() { return null; } @Override public Graphics getGraphics() { return null; } @Override public Object getProperty(String name, ImageObserver observer) { return null; } }; } }