Mercurial > projects > dwt-addons
diff dwtx/jface/resource/ColorDescriptor.d @ 8:a3ff22a98bef
Dialog
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sat, 29 Mar 2008 01:25:27 +0100 |
parents | |
children | ea8ff534f622 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dwtx/jface/resource/ColorDescriptor.d Sat Mar 29 01:25:27 2008 +0100 @@ -0,0 +1,110 @@ +/******************************************************************************* + * Copyright (c) 2004, 2006 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 + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + * Port to the D programming language: + * Frank Benoit <benoit@tionex.de> + *******************************************************************************/ +module dwtx.jface.resource.ColorDescriptor; + +import dwtx.jface.resource.DeviceResourceDescriptor; +import dwtx.jface.resource.RGBColorDescriptor; + +import dwt.graphics.Color; +import dwt.graphics.Device; +import dwt.graphics.RGB; + +import dwt.dwthelper.utils; + +/** + * Lightweight descriptor for an DWT color. Each ColorDescriptor will create a particular DWT + * Color on demand. This object will be compared so hashCode(...) and equals(...) must + * return meaningful values. + * + * @since 3.1 + */ +public abstract class ColorDescriptor : DeviceResourceDescriptor { + + /** + * Creates a ColorDescriptor from an existing Color, given the Device associated + * with the original Color. This is the usual way to convert a Color into + * a ColorDescriptor. Note that the returned ColorDescriptor depends on the + * original Color, and disposing the Color will invalidate the ColorDescriptor. + * + * @deprecated use {@link ColorDescriptor#createFrom(Color)} + * + * @since 3.1 + * + * @param toCreate Color to convert into a ColorDescriptor. + * @param originalDevice this must be the same Device that was passed into the + * original Color's constructor. + * @return a newly created ColorDescriptor that describes the given Color. + */ + public static ColorDescriptor createFrom(Color toCreate, Device originalDevice) { + return new RGBColorDescriptor(toCreate); + } + + /** + * Creates a ColorDescriptor from an existing color. + * + * The returned ColorDescriptor depends on the original Color. Disposing + * the original colour while the color descriptor is still in use may cause + * DWT to throw a graphic disposed exception. + * + * @since 3.1 + * + * @param toCreate Color to generate a ColorDescriptor from + * @return a newly created ColorDescriptor + */ + public static ColorDescriptor createFrom(Color toCreate) { + return new RGBColorDescriptor(toCreate); + } + + /** + * Returns a color descriptor for the given RGB values + * @since 3.1 + * + * @param toCreate RGB values to create + * @return a new ColorDescriptor + */ + public static ColorDescriptor createFrom(RGB toCreate) { + return new RGBColorDescriptor(toCreate); + } + + /** + * Returns the Color described by this descriptor. + * + * @param device DWT device on which to allocate the Color + * @return a newly allocated DWT Color object (never null) + * @throws DeviceResourceException if unable to allocate the Color + */ + public abstract Color createColor(Device device); + + /** + * Undoes whatever was done by createColor. + * + * @since 3.1 + * + * @param toDestroy a Color that was previously allocated by an equal ColorDescriptor + */ + public abstract void destroyColor(Color toDestroy); + + /* (non-Javadoc) + * @see dwtx.jface.resource.DeviceResourceDescriptor#createResource(dwt.graphics.Device) + */ + public final Object createResource(Device device){ + return createColor(device); + } + + /* (non-Javadoc) + * @see dwtx.jface.resource.DeviceResourceDescriptor#destroyResource(java.lang.Object) + */ + public final void destroyResource(Object previouslyCreatedObject) { + destroyColor(cast(Color)previouslyCreatedObject); + } +}