<AWT Dev> RFR: 8212226 SurfaceManager throws "Invalid Image variant" for MultiResolutionImage (Windows)

Alexander Zuev alexander.zuev at oracle.com
Fri Jul 31 18:08:04 UTC 2020


I slightly fixed the test and added it to the fix. New webrev is here:
http://cr.openjdk.java.net/~kizune/8212226/webrev.03/

On 7/29/2020 1:11 AM, Sergey Bylokhov wrote:
> 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;
>             }
>         };
>     }
> }



More information about the awt-dev mailing list