| /********************************************************************* |
| * Copyright (c) 2005, 2019 SAP SE |
| * |
| * This program and the accompanying materials are made |
| * available under the terms of the Eclipse Public License 2.0 |
| * which is available at https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * Contributors: |
| * SAP SE - initial API, implementation and documentation |
| * fvelasco - Bug 396247 - ImageDescriptor changes |
| * mwenz - Bug 413139 - Visibility of convertImageToBytes in DefaultSaveImageFeature |
| * Laurent Le Moux (mwenz) - Bug 423018 - Direct Graphiti diagram exporter |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| **********************************************************************/ |
| package org.eclipse.graphiti.ui.services; |
| |
| import org.eclipse.graphiti.mm.pictograms.Diagram; |
| import org.eclipse.jface.resource.ImageDescriptor; |
| import org.eclipse.swt.graphics.Image; |
| import org.eclipse.swt.graphics.ImageLoader; |
| |
| /** |
| * This interface provides services for the creation of images. |
| * |
| * @noimplement This interface is not intended to be implemented by clients. |
| * @noextend This class is not intended to be subclassed by clients. |
| */ |
| public interface IImageService { |
| |
| /** |
| * Gets an image descriptor for the given image id. This image id must be |
| * supported by an graphiti image provider, and available to the given |
| * DiagramTypeProvider. The image registry of the plugin |
| * <code>org.eclipse.graphiti.ui</code> is used. This ensures that the image |
| * descriptor will only created once. |
| * |
| * @param imageId |
| * the image id which is supported by an graphiti image provider |
| * @param diagramTypeProviderId |
| * |
| * |
| * @return the image descriptor for the id |
| * |
| * @see org.eclipse.jface.resource.ImageDescriptor |
| * @since 0.10 |
| */ |
| ImageDescriptor getImageDescriptorForId(String diagramTypeProviderId, String imageId); |
| |
| /** |
| * Gets an image for the given image id. This image id must be supported by |
| * an graphiti image provider, and available to the given |
| * DiagramTypeProvider. The image registry of the plugin |
| * <code>org.eclipse.graphiti.ui</code> is used. This ensures that the image |
| * will only created once. The image returned must not be disposed by the |
| * caller. |
| * |
| * @param imageId |
| * the image id which is supported by an graphiti image provider |
| * |
| * @return the image for the id |
| * |
| * @see org.eclipse.swt.graphics.Image |
| * @since 0.10 |
| */ |
| Image getImageForId(String diagramTypeProviderId, String imageId); |
| |
| /** |
| * Removes the corresponding image entry from the image registry and |
| * disposes the corresponding image (if existent). The passed image id must |
| * be supported by an graphiti image provider. The image registry of the |
| * plugin <code>org.eclipse.graphiti.ui</code> is used. Only call this |
| * method if you can guarantee that the image/image descriptor is no longer |
| * in use. |
| * |
| * @param imageId |
| * the image id which is supported by an graphiti image provider |
| * |
| * @see org.eclipse.swt.graphics.Image |
| * @since 0.9 |
| */ |
| void removeImageFromRegistry(String imageId); |
| |
| /** |
| * Gets an image descriptor for the given image id. This image id must be |
| * supported by the graphiti platform image provider. The image registry of |
| * the plugin <code>org.eclipse.graphiti.ui</code> is used. This ensures |
| * that the image descriptor will only created once. |
| * |
| * @param imageId |
| * the image id which is supported by the graphiti platform image |
| * provider |
| * |
| * @return the image descriptor for the id |
| * |
| * @see org.eclipse.jface.resource.ImageDescriptor |
| * @since 0.10 |
| */ |
| ImageDescriptor getPlatformImageDescriptorForId(String imageId); |
| |
| /** |
| * Gets an image for the given image id. This image id must be supported by |
| * the graphiti platform image provider. The image registry of the plugin |
| * <code>org.eclipse.graphiti.ui</code> is used. This ensures that the image |
| * will only created once. The image returned must not be disposed by the |
| * caller. |
| * |
| * @param imageId |
| * the image id which is supported by the graphiti platform image |
| * provider |
| * |
| * @return the image for the id |
| * |
| * @see org.eclipse.swt.graphics.Image |
| * @since 0.10 |
| */ |
| Image getPlatformImageForId(String imageId); |
| |
| /** |
| * Converts the given {@link Image} into a byte array in the given format |
| * that could be directly saved to a file in that format. Supported formats |
| * are BMP (Windows or OS/2 Bitmap), ICO (Windows Icon), JPEG, GIF, PNG and |
| * TIFF, see {@link ImageLoader} for details.<br> |
| * In case GIF is the target format this method will check that the image |
| * does not contain more than 256 colors (limit for GIF format). In case |
| * there are more colors this method will throw an |
| * {@link IllegalStateException}. |
| * |
| * @param image |
| * The image to convert to a byte array |
| * @param format |
| * The format to use see {@link ImageLoader} |
| * @return A byte array containing the image |
| * @throws In |
| * case of GIF format and the image having more than 256 colors. |
| * |
| * @since 0.11 |
| */ |
| byte[] convertImageToBytes(Image image, int format); |
| |
| /** |
| * Converts the given diagram into an image byte array in the given format.<br> |
| * This allows end users to export diagrams without having to run the |
| * associated GEF editor. |
| * |
| * @param diagram |
| * The diagram to convert to a byte array |
| * @param format |
| * The format to use see {@link ImageLoader} |
| * @return A byte array containing the diagram image |
| * |
| * @since 0.13 |
| */ |
| byte[] convertDiagramToBytes(Diagram diagram, int format); |
| } |