diff options
Diffstat (limited to 'target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/decorators/PhantomImageDescriptor.java')
-rw-r--r-- | target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/decorators/PhantomImageDescriptor.java | 224 |
1 files changed, 0 insertions, 224 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/decorators/PhantomImageDescriptor.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/decorators/PhantomImageDescriptor.java deleted file mode 100644 index 1200daf7b..000000000 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.filesystem.ui/src/org/eclipse/tcf/te/tcf/filesystem/ui/internal/decorators/PhantomImageDescriptor.java +++ /dev/null @@ -1,224 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2012 Wind River Systems, Inc. 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 http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tcf.te.tcf.filesystem.ui.internal.decorators; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.ImageData; -import org.eclipse.swt.graphics.PaletteData; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.graphics.RGB; -import org.eclipse.tcf.te.tcf.filesystem.ui.activator.UIPlugin; -import org.eclipse.tcf.te.ui.jface.images.AbstractImageDescriptor; - -/** - * The descriptor for a phantom-like image. - */ -public class PhantomImageDescriptor extends AbstractImageDescriptor { - // The alpha data when highlight the base image. - private static final int HIGHLIGHT_ALPHA = 127; - // The key to store the cut mask image. - private static final String ID_FS_NODE_CUT_MASK = "FS_NODE_CUT_MASK@"; //$NON-NLS-1$ - // The key to store the cut decoration image. - private static final String ID_FS_NODE_CUT = "FS_NODE_CUT@"; //$NON-NLS-1$ - // the base image to decorate with overlays - private Image baseImage; - - /** - * Constructor. - */ - public PhantomImageDescriptor(final Image baseImage) { - super(UIPlugin.getDefault().getImageRegistry()); - this.baseImage = baseImage; - // build up the key for the image registry - String key = ID_FS_NODE_CUT + baseImage.hashCode(); - setDecriptorKey(key); - } - - /* - * (non-Javadoc) - * @see org.eclipse.jface.resource.CompositeImageDescriptor#drawCompositeImage(int, int) - */ - @Override - protected void drawCompositeImage(int width, int height) { - drawCentered(baseImage, width, height); - drawCentered(getMaskImage(), width, height); - } - - /** - * Get the mask image of the base image. The mask image is an image which - * has the data of the decorator image and the transparent mask of the - * base image. The decorator image (the key of which is CUT_DECORATOR_IMAGE) - * is a translucent white board, which will be drawn over the base image and - * make the base image sightly lighter. Try to the cut a file in a file explorer - * on Windows host, you'll see its icon is changed to a lighter version. The - * mask image created by this method will be drawn over the base image and - * generate the similar effect. - * - * @return The mask image used to decorate the base image. - */ - private Image getMaskImage() { - String maskKey = ID_FS_NODE_CUT_MASK + baseImage.hashCode(); - Image maskImage = UIPlugin.getImage(maskKey); - if (maskImage == null) { - ImageData baseData = baseImage.getImageData(); - PaletteData palette = new PaletteData(new RGB[]{new RGB(255, 255, 255), new RGB(0,0,0)}); - ImageData imageData = new ImageData(baseData.width, baseData.height, 1, palette); - // Get the base image's transparency mask. - imageData.alphaData = createAlphaData(); - maskImage = new Image(baseImage.getDevice(), imageData); - UIPlugin.getDefault().getImageRegistry().put(maskKey, maskImage); - } - return maskImage; - } - - /** - * Create the alpha data that will be used in the mask image data. - * - * @return The alpha data. - */ - private byte[] createAlphaData() { - ImageData imageData = baseImage.getImageData(); - if (imageData.maskData != null) { - if (imageData.depth == 32) { - return maskAlpha32(); - } - return maskAlpha(); - } - return nonMaskAlpha(); - } - - /** - * Create the alpha data for the base image that has no mask data. - * - * @return The alpha data. - */ - private byte[] nonMaskAlpha() { - ImageData imageData = baseImage.getImageData(); - Assert.isTrue(imageData.maskData == null); - - byte[] alphaData = new byte[imageData.width * imageData.height]; - int i = 0; - for (int y = 0; y < imageData.height; y++) { - for (int x = 0; x < imageData.width; x++) { - int pixel = imageData.getPixel(x, y); - int alpha = 255; - if (imageData.transparentPixel != -1 && imageData.transparentPixel == pixel) { - // If it has a transparent pixel and the current pixel is the transparent. - alpha = 0; - } - else if (imageData.alpha != -1) { - // If it has a global alpha value. - alpha = imageData.alpha; - } - else if (imageData.alphaData != null) { - // If it has alpha data. - alpha = imageData.getAlpha(x, y); - } - alphaData[i++] = (byte) (alpha * HIGHLIGHT_ALPHA / 255); - } - } - return alphaData; - } - - /** - * Create the alpha data for the base image that has mask data, and the color depth is not of - * 32-bit. - * - * @return The alpha data - */ - private byte[] maskAlpha() { - ImageData imageData = baseImage.getImageData(); - Assert.isTrue(imageData.maskData != null && imageData.depth != 32); - - ImageData mask = imageData.getTransparencyMask(); - // Get the black index. - int blackIndex = getBlackIndex(mask); - byte[] alphaData = new byte[imageData.width * imageData.height]; - int i = 0; - for (int y = 0; y < imageData.height; y++) { - for (int x = 0; x < imageData.width; x++) { - int alpha = mask.getPixel(x, y) == blackIndex ? 0 : 255; - alphaData[i++] = (byte) (alpha * HIGHLIGHT_ALPHA / 255); - } - } - return alphaData; - } - - /** - * Create the alpha data for the base image that has mask data and the color depth is of 32-bit. - * - * @return The alpha data. - */ - private byte[] maskAlpha32() { - ImageData imageData = baseImage.getImageData(); - Assert.isTrue(imageData.maskData != null && imageData.depth == 32); - - ImageData mask = imageData.getTransparencyMask(); - // Get the black index. - int blackIndex = getBlackIndex(mask); - // Calculate the alpha mask and the alpha shift. - int alphaMask = ~(imageData.palette.redMask | imageData.palette.greenMask | imageData.palette.blueMask); - int alphaShift = 0; - while (alphaMask != 0 && ((alphaMask >>> alphaShift) & 1) == 0) - alphaShift++; - byte[] alphaData = new byte[imageData.width * imageData.height]; - int i = 0; - for (int y = 0; y < imageData.height; y++) { - for (int x = 0; x < imageData.width; x++) { - int pixel = imageData.getPixel(x, y); - int alpha = (pixel & alphaMask) >>> alphaShift; - if (alpha <= 0 || alpha > 255) { - // If the alpha value is illegal, try to get it from the mask data. - alpha = mask.getPixel(x, y) == blackIndex ? 0 : 255; - } - alphaData[i++] = (byte) (alpha * HIGHLIGHT_ALPHA / 255); - } - } - return alphaData; - } - - /** - * Get the black index from the palette of the mask data. - * - * @param mask - * @return - */ - private int getBlackIndex(ImageData mask) { - RGB[] rgbs = mask.getRGBs(); - if (rgbs != null) { - for (int i = 0; i < rgbs.length; i++) { - RGB rgb = rgbs[i]; - if (rgb.red == 0 && rgb.green == 0 && rgb.blue == 0) { - return i; - } - } - } - return 0; - } - - /* - * (non-Javadoc) - * @see org.eclipse.jface.resource.CompositeImageDescriptor#getSize() - */ - @Override - protected Point getSize() { - return new Point(baseImage.getImageData().width, baseImage.getImageData().height); - } - - /* - * (non-Javadoc) - * @see org.eclipse.tcf.te.tcf.ide.util.ui.AbstractImageDescriptor#getBaseImage() - */ - @Override - protected Image getBaseImage() { - return baseImage; - } -}
\ No newline at end of file |