From 666356d88ba7544a9cd64a502c564db3e6edb535 Mon Sep 17 00:00:00 2001 From: Niraj Modi Date: Mon, 7 May 2018 12:27:46 +0530 Subject: Bug 532443 - Creating a new Image using SWT.IMAGE_GRAY returns an Image equal to the old Image - Also fixed the JavaDoc typo in ImageDataProvider.java and ImageFileNameProvider.java Change-Id: I2d40061a256e5feba717b765f7cbe9b3e359e508 Signed-off-by: Niraj Modi --- .../Eclipse SWT/cocoa/org/eclipse/swt/graphics/Image.java | 14 +++++++++++--- .../common/org/eclipse/swt/graphics/ImageDataProvider.java | 4 ++-- .../org/eclipse/swt/graphics/ImageFileNameProvider.java | 4 ++-- .../Eclipse SWT/gtk/org/eclipse/swt/graphics/Image.java | 14 +++++++++++--- .../Eclipse SWT/win32/org/eclipse/swt/graphics/Image.java | 14 +++++++++++--- 5 files changed, 37 insertions(+), 13 deletions(-) (limited to 'bundles/org.eclipse.swt/Eclipse SWT') diff --git a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Image.java b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Image.java index fe7317c754..3fb4ac30df 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Image.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/graphics/Image.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2017 IBM Corporation and others. + * Copyright (c) 2000, 2018 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -131,6 +131,13 @@ public final class Image extends Resource implements Drawable { */ private ImageDataProvider imageDataProvider; + /** + * Style flag used to differentiate normal, gray-scale and disabled images based + * on image data providers. Without this, a normal and a disabled image of the + * same image data provider would be considered equal. + */ + private int styleFlag = SWT.IMAGE_COPY; + /** * Alpha information objects for 100%, 200% */ @@ -366,6 +373,7 @@ public Image(Device device, Image srcImage, int flag) { imageFileNameProvider = srcImage.imageFileNameProvider; imageDataProvider = srcImage.imageDataProvider; + this.styleFlag = srcImage.styleFlag | flag; if (imageFileNameProvider != null || imageDataProvider != null) { /* If source image has 200% representation then create the 200% representation for the new image & apply flag */ NSBitmapImageRep rep200 = srcImage.getRepresentation_200(); @@ -1102,9 +1110,9 @@ public boolean equals (Object object) { Image image = (Image)object; if (device != image.device || alphaInfo_100.transparentPixel != image.alphaInfo_100.transparentPixel) return false; if (imageDataProvider != null && image.imageDataProvider != null) { - return imageDataProvider.equals (image.imageDataProvider); + return styleFlag == image.styleFlag && imageDataProvider.equals (image.imageDataProvider); } else if (imageFileNameProvider != null && image.imageFileNameProvider != null) { - return imageFileNameProvider.equals (image.imageFileNameProvider); + return styleFlag == image.styleFlag && imageFileNameProvider.equals (image.imageFileNameProvider); } else { return handle == image.handle; } diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/ImageDataProvider.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/ImageDataProvider.java index dba352f604..965858893a 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/ImageDataProvider.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/ImageDataProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2015 IBM Corporation and others. + * Copyright (c) 2018 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -28,7 +28,7 @@ public interface ImageDataProvider { *

* If no image is available for a particular zoom level, this method should * return null. For zoom == 100, returning - * null in not allowed, and SWT will throw an exception. + * null is not allowed, and SWT will throw an exception. * * @param zoom * The zoom level in % of the standard resolution (which is 1 diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/ImageFileNameProvider.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/ImageFileNameProvider.java index 5781d880bc..93c96464bf 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/ImageFileNameProvider.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/graphics/ImageFileNameProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2015 IBM Corporation and others. + * Copyright (c) 2018 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -27,7 +27,7 @@ public interface ImageFileNameProvider { *

* If no image is available for a particular zoom level, this method should * return null. For zoom == 100, returning - * null in not allowed, and SWT will throw an exception. + * null is not allowed, and SWT will throw an exception. * * @param zoom * The zoom level in % of the standard resolution (which is 1 diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Image.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Image.java index 9533a1155e..d6e493cfb1 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Image.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Image.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2017 IBM Corporation and others. + * Copyright (c) 2000, 2018 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -171,6 +171,13 @@ public final class Image extends Resource implements Drawable { */ private ImageDataProvider imageDataProvider; + /** + * Style flag used to differentiate normal, gray-scale and disabled images based + * on image data providers. Without this, a normal and a disabled image of the + * same image data provider would be considered equal. + */ + private int styleFlag = SWT.IMAGE_COPY; + /** * Attribute to cache current device zoom level */ @@ -276,6 +283,7 @@ public Image(Device device, Image srcImage, int flag) { this.type = srcImage.type; this.imageDataProvider = srcImage.imageDataProvider; this.imageFileNameProvider = srcImage.imageFileNameProvider; + this.styleFlag = srcImage.styleFlag | flag; this.currentDeviceZoom = srcImage.currentDeviceZoom; if (flag != SWT.IMAGE_DISABLE) transparentPixel = srcImage.transparentPixel; @@ -1074,9 +1082,9 @@ public boolean equals (Object object) { Image image = (Image)object; if (device != image.device || transparentPixel != image.transparentPixel) return false; if (imageDataProvider != null && image.imageDataProvider != null) { - return imageDataProvider.equals (image.imageDataProvider); + return (styleFlag == image.styleFlag) && imageDataProvider.equals (image.imageDataProvider); } else if (imageFileNameProvider != null && image.imageFileNameProvider != null) { - return imageFileNameProvider.equals (image.imageFileNameProvider); + return (styleFlag == image.styleFlag) && imageFileNameProvider.equals (image.imageFileNameProvider); } else { return surface == image.surface; } diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Image.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Image.java index c78ec94891..ed69d81b4a 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Image.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/graphics/Image.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2017 IBM Corporation and others. + * Copyright (c) 2000, 2018 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -128,6 +128,13 @@ public final class Image extends Resource implements Drawable { */ private ImageDataProvider imageDataProvider; + /** + * Style flag used to differentiate normal, gray-scale and disabled images based + * on image data providers. Without this, a normal and a disabled image of the + * same image data provider would be considered equal. + */ + private int styleFlag = SWT.IMAGE_COPY; + /** * Attribute to cache current device zoom level */ @@ -245,6 +252,7 @@ public Image(Device device, Image srcImage, int flag) { this.type = srcImage.type; this.imageDataProvider = srcImage.imageDataProvider; this.imageFileNameProvider = srcImage.imageFileNameProvider; + this.styleFlag = srcImage.styleFlag | flag; this.currentDeviceZoom = srcImage.currentDeviceZoom; switch (flag) { case SWT.IMAGE_COPY: { @@ -1165,9 +1173,9 @@ public boolean equals (Object object) { Image image = (Image) object; if (device != image.device || transparentPixel != image.transparentPixel) return false; if (imageDataProvider != null && image.imageDataProvider != null) { - return imageDataProvider.equals (image.imageDataProvider); + return (styleFlag == image.styleFlag) && imageDataProvider.equals (image.imageDataProvider); } else if (imageFileNameProvider != null && image.imageFileNameProvider != null) { - return imageFileNameProvider.equals (image.imageFileNameProvider); + return (styleFlag == image.styleFlag) && imageFileNameProvider.equals (image.imageFileNameProvider); } else { return handle == image.handle; } -- cgit v1.2.3