<AWT Dev> RFR: 8212226 SurfaceManager throws "Invalid Image variant" for MultiResolutionImage (Windows)
Sergey Bylokhov
Sergey.Bylokhov at oracle.com
Tue Aug 4 06:08:36 UTC 2020
Looks fine.
On 31.07.2020 11:08, Alexander Zuev wrote:
> 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;
>> }
>> };
>> }
>> }
>
--
Best regards, Sergey.
More information about the awt-dev
mailing list