Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ private static CursorHandle setupCursorFromImageData(Device device, ImageData so
if (mask == null) {
mask = source.getTransparencyMask();
}
long [] result = Image.initIcon(device, source, mask);
long [] result = Image.initIcon(device, source, mask, SWT.NONE);
hBitmap = result[0];
hMask = result[1];
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,8 +172,7 @@ private boolean isReusable(int width, int height) {
private Optional<ImageHandle> createHandleAtExactSize(int width, int height) {
Optional<ImageData> imageData = imageProvider.loadImageDataAtExactSize(width, height);
if (imageData.isPresent()) {
ImageData adaptedData = adaptImageDataIfDisabledOrGray(imageData.get());
ImageHandle imageHandle = init(adaptedData, -1);
ImageHandle imageHandle = init(imageData.get(), -1);
return Optional.of(imageHandle);
}
return Optional.empty();
Expand All @@ -187,8 +186,7 @@ private ImageHandle getOrCreateImageHandleAtClosestSize(int widthHint, int heigh
ImageHandle bestFittingHandle = zoomLevelToImageHandle.get(imageZoom);
if (bestFittingHandle == null) {
ImageData bestFittingImageData = imageProvider.loadImageData(imageZoom).element();
ImageData adaptedData = adaptImageDataIfDisabledOrGray(bestFittingImageData);
bestFittingHandle = init(adaptedData, -1);
bestFittingHandle = init(bestFittingImageData, -1);
}
return bestFittingHandle;
}
Expand Down Expand Up @@ -333,21 +331,11 @@ public Image(Device device, Image srcImage, int flag) {
}
break;
}
case SWT.IMAGE_DISABLE: {
for (ImageHandle imageHandle : srcImage.zoomLevelToImageHandle.values()) {
Rectangle rect = imageHandle.getBounds();
ImageData data = srcImage.getImageData(imageHandle.zoom);
ImageData newData = applyDisableImageData(data, rect.height, rect.width);
init (newData, imageHandle.zoom);
}
break;
}
case SWT.IMAGE_GRAY: {
case SWT.IMAGE_DISABLE:
case SWT.IMAGE_GRAY:{
for (ImageHandle imageHandle : srcImage.zoomLevelToImageHandle.values()) {
Rectangle rect = imageHandle.getBounds();
ImageData data = srcImage.getImageData(imageHandle.zoom);
ImageData newData = applyGrayImageData(data, rect.height, rect.width);
init (newData, imageHandle.zoom);
init (data, imageHandle.zoom);
}
break;
}
Expand Down Expand Up @@ -698,9 +686,9 @@ public Image(Device device, ImageGcDrawer imageGcDrawer, int width, int height)
init();
}

private ImageData adaptImageDataIfDisabledOrGray(ImageData data) {
private static ImageData adaptImageDataIfDisabledOrGray(ImageData data, int styleFlag) {
ImageData returnImageData = null;
switch (this.styleFlag) {
switch (styleFlag) {
case SWT.IMAGE_DISABLE: {
ImageData newData = applyDisableImageData(data, data.height, data.width);
returnImageData = newData;
Expand All @@ -726,7 +714,7 @@ void init() {
this.isInitialized = true;
}

private ImageData applyDisableImageData(ImageData data, int height, int width) {
private static ImageData applyDisableImageData(ImageData data, int height, int width) {
PaletteData palette = data.palette;
ImageData newData = new ImageData(width, height, 32, new PaletteData(0xFF, 0xFF00, 0xFF0000));
newData.alpha = data.alpha;
Expand Down Expand Up @@ -775,7 +763,7 @@ private ImageData applyDisableImageData(ImageData data, int height, int width) {
return newData;
}

private ImageData applyGrayImageData(ImageData data, int pHeight, int pWidth) {
private static ImageData applyGrayImageData(ImageData data, int pHeight, int pWidth) {
PaletteData palette = data.palette;
ImageData newData = data;
if (!palette.isDirect) {
Expand Down Expand Up @@ -1456,7 +1444,8 @@ private static ImageData directToDirect(ImageData src, int newDepth, PaletteData

private record HandleForImageDataContainer(int type, ImageData imageData, long[] handles) {}

private static HandleForImageDataContainer init(Device device, ImageData i) {
private static HandleForImageDataContainer init(Device device, ImageData i, int styleFlag) {
i = adaptImageDataIfDisabledOrGray(i, styleFlag);
/* Windows does not support 2-bit images. Convert to 4-bit image. */
if (i.depth == 2) {
i = indexToIndex(i, 4);
Expand Down Expand Up @@ -1665,7 +1654,7 @@ private void setImageMetadataForHandle(ImageHandle imageMetadata, int zoom) {

private ImageHandle initIconHandle(Device device, ImageData source, ImageData mask, Integer zoom) {
ImageData imageData = applyMask(source, mask);
HandleForImageDataContainer imageDataHandle = init(device, imageData);
HandleForImageDataContainer imageDataHandle = init(device, imageData, this.styleFlag);
return initIconHandle(imageDataHandle.handles, zoom);
}

Expand All @@ -1688,9 +1677,9 @@ private ImageHandle initBitmapHandle(ImageData imageData, long handle, Integer z
return new ImageHandle(handle, zoom, imageData.transparentPixel);
}

static long [] initIcon(Device device, ImageData source, ImageData mask) {
static long [] initIcon(Device device, ImageData source, ImageData mask, int styleFlag) {
ImageData imageData = applyMask(source, mask);
return init(device, imageData).handles;
return init(device, imageData, styleFlag).handles;
}

private static ImageData applyMask(ImageData source, ImageData mask) {
Expand Down Expand Up @@ -1770,7 +1759,7 @@ private static ImageData applyMask(ImageData source, ImageData mask) {

private ImageHandle init(ImageData i, int zoom) {
if (i == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
HandleForImageDataContainer imageDataHandle = init(device, i);
HandleForImageDataContainer imageDataHandle = init(device, i, this.styleFlag);
switch (imageDataHandle.type()) {
case SWT.ICON: {
return initIconHandle(imageDataHandle.handles(), zoom);
Expand Down Expand Up @@ -2121,7 +2110,6 @@ protected ImageHandle newImageHandle(ZoomContext zoomContext) {
private ImageHandle initializeHandleFromSource(ZoomContext zoomContext) {
ElementAtZoom<ImageData> imageDataAtZoom = loadImageData(zoomContext.targetZoom());
ImageData imageData = DPIUtil.scaleImageData(device, imageDataAtZoom.element(), zoomContext.targetZoom(), imageDataAtZoom.zoom());
imageData = adaptImageDataIfDisabledOrGray(imageData);
return newImageHandle(imageData, zoomContext);
}
}
Expand Down Expand Up @@ -2415,7 +2403,6 @@ protected ImageHandle newImageHandle(ZoomContext zoomContext) {
private ImageHandle initializeHandleFromSource(int zoom) {
ElementAtZoom<ImageData> imageDataAtZoom = loadImageData(zoom);
ImageData imageData = DPIUtil.scaleImageData (device, imageDataAtZoom.element(), zoom, imageDataAtZoom.zoom());
imageData = adaptImageDataIfDisabledOrGray(imageData);
return init(imageData, zoom);
}

Expand Down Expand Up @@ -2765,8 +2752,7 @@ protected ImageHandle newImageHandle(ZoomContext zoomContext) {
drawer.drawOn(gc, width, height);
ImageData imageData = image.getImageData(targetZoom);
drawer.postProcess(imageData);
ImageData newData = adaptImageDataIfDisabledOrGray(imageData);
return init(newData, targetZoom);
return init(imageData, targetZoom);
} finally {
gc.dispose();
image.dispose();
Expand Down
Loading