All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.swt.graphics.ImageLoader Maven / Gradle / Ivy

The newest version!
/*******************************************************************************
 * Copyright (c) 2000, 2008, 2012 IBM Corporation, Gerhardt Informatics Kft. 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
 *     Gerhardt Informatics Kft. - GEFGWT port
 *******************************************************************************/
package org.eclipse.swt.graphics;

import java.io.IOException;
import java.io.OutputStream;
import java.util.Vector;

import org.eclipse.swt.SWT;
import org.eclipse.swt.SWTException;
import org.eclipse.swt.internal.Compatibility;
import org.eclipse.swt.internal.image.FileFormat;

/**
 * Instances of this class are used to load images from, and save images to, a
 * file or stream.
 * 

* Currently supported image formats are: *

*
    *
  • BMP (Windows or OS/2 Bitmap)
  • *
  • ICO (Windows Icon)
  • *
  • JPEG
  • *
  • GIF
  • *
  • PNG
  • *
  • TIFF
  • *
* ImageLoaders can be used to: *
    *
  • load/save single images in all formats
  • *
  • load/save multiple images (GIF/ICO/TIFF)
  • *
  • load/save animated GIF images
  • *
  • load interlaced GIF/PNG images
  • *
  • load progressive JPEG images
  • *
* * @see SWT Example: * ImageAnalyzer * @see Sample code and further * information */ public class ImageLoader { /** * the array of ImageData objects in this ImageLoader. This array is read in * when the load method is called, and it is written out when the save * method is called */ public ImageData[] data; /** * the width of the logical screen on which the images reside, in pixels * (this corresponds to the GIF89a Logical Screen Width value) */ public int logicalScreenWidth; /** * the height of the logical screen on which the images reside, in pixels * (this corresponds to the GIF89a Logical Screen Height value) */ public int logicalScreenHeight; /** * the background pixel for the logical screen (this corresponds to the * GIF89a Background Color Index value). The default is -1 which means * 'unspecified background' * */ public int backgroundPixel; /** * the number of times to repeat the display of a sequence of animated * images (this corresponds to the commonly-used GIF application extension * for "NETSCAPE 2.0 01"). The default is 1. A value of 0 means 'display * repeatedly' */ public int repeatCount; /* * the set of ImageLoader event listeners, created on demand */ Vector imageLoaderListeners; /** * Construct a new empty ImageLoader. */ public ImageLoader() { reset(); } /** * Resets the fields of the ImageLoader, except for the * imageLoaderListeners field. */ void reset() { data = null; logicalScreenWidth = 0; logicalScreenHeight = 0; backgroundPixel = -1; repeatCount = 1; } /** * Loads an array of ImageData objects from the specified input * stream. Throws an error if either an error occurs while loading the * images, or if the images are not of a supported type. Returns the loaded * image data array. * * @param stream * the input stream to load the images from * @return an array of ImageData objects loaded from the * specified input stream * * @exception IllegalArgumentException *
    *
  • ERROR_NULL_ARGUMENT - if the stream is null
  • *
* @exception SWTException *
    *
  • ERROR_IO - if an IO error occurs while reading from * the stream
  • *
  • ERROR_INVALID_IMAGE - if the image stream contains * invalid data
  • *
  • ERROR_UNSUPPORTED_FORMAT - if the image stream * contains an unrecognized format
  • *
*/ // public ImageData[] load(InputStream stream) { // if (stream == null) // SWT.error(SWT.ERROR_NULL_ARGUMENT); // reset(); // data = FileFormat.load(stream, this); // return data; // } /** * Loads an array of ImageData objects from the file with the * specified name. Throws an error if either an error occurs while loading * the images, or if the images are not of a supported type. Returns the * loaded image data array. * * @param filename * the name of the file to load the images from * @return an array of ImageData objects loaded from the * specified file * * @exception IllegalArgumentException *
    *
  • ERROR_NULL_ARGUMENT - if the file name is null
  • *
* @exception SWTException *
    *
  • ERROR_IO - if an IO error occurs while reading from * the file
  • *
  • ERROR_INVALID_IMAGE - if the image file contains * invalid data
  • *
  • ERROR_UNSUPPORTED_FORMAT - if the image file contains * an unrecognized format
  • *
*/ public ImageData[] load(String filename) { return null; } /** * Saves the image data in this ImageLoader to the specified stream. The * format parameter can have one of the following values: *
*
IMAGE_BMP
*
Windows BMP file format, no compression
*
IMAGE_BMP_RLE
*
Windows BMP file format, RLE compression if appropriate
*
IMAGE_GIF
*
GIF file format
*
IMAGE_ICO
*
Windows ICO file format
*
IMAGE_JPEG
*
JPEG file format
*
IMAGE_PNG
*
PNG file format
*
* * @param stream * the output stream to write the images to * @param format * the format to write the images in * * @exception IllegalArgumentException *
    *
  • ERROR_NULL_ARGUMENT - if the stream is null
  • *
* @exception SWTException *
    *
  • ERROR_IO - if an IO error occurs while writing to the * stream
  • *
  • ERROR_INVALID_IMAGE - if the image data contains * invalid data
  • *
  • ERROR_UNSUPPORTED_FORMAT - if the image data cannot be * saved to the requested format
  • *
*/ public void save(OutputStream stream, int format) { if (stream == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); FileFormat.save(stream, format, this); } /** * Saves the image data in this ImageLoader to a file with the specified * name. The format parameter can have one of the following values: *
*
IMAGE_BMP
*
Windows BMP file format, no compression
*
IMAGE_BMP_RLE
*
Windows BMP file format, RLE compression if appropriate
*
IMAGE_GIF
*
GIF file format
*
IMAGE_ICO
*
Windows ICO file format
*
IMAGE_JPEG
*
JPEG file format
*
IMAGE_PNG
*
PNG file format
*
* * @param filename * the name of the file to write the images to * @param format * the format to write the images in * * @exception IllegalArgumentException *
    *
  • ERROR_NULL_ARGUMENT - if the file name is null
  • *
* @exception SWTException *
    *
  • ERROR_IO - if an IO error occurs while writing to the * file
  • *
  • ERROR_INVALID_IMAGE - if the image data contains * invalid data
  • *
  • ERROR_UNSUPPORTED_FORMAT - if the image data cannot be * saved to the requested format
  • *
*/ public void save(String filename, int format) { if (filename == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); OutputStream stream = null; try { stream = Compatibility.newFileOutputStream(filename); } catch (IOException e) { SWT.error(SWT.ERROR_IO, e); } save(stream, format); // try { // stream.close(); // } catch (IOException e) { // } } /** * Adds the listener to the collection of listeners who will be notified * when image data is either partially or completely loaded. *

* An ImageLoaderListener should be added before invoking one of the * receiver's load methods. The listener's imageDataLoaded * method is called when image data has been partially loaded, as is * supported by interlaced GIF/PNG or progressive JPEG images. * * @param listener * the listener which should be notified * * @exception IllegalArgumentException *

    *
  • ERROR_NULL_ARGUMENT - if the listener is null
  • *
* * @see ImageLoaderListener * @see ImageLoaderEvent */ public void addImageLoaderListener(ImageLoaderListener listener) { if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); if (imageLoaderListeners == null) { imageLoaderListeners = new Vector(); } imageLoaderListeners.addElement(listener); } /** * Removes the listener from the collection of listeners who will be * notified when image data is either partially or completely loaded. * * @param listener * the listener which should no longer be notified * * @exception IllegalArgumentException *
    *
  • ERROR_NULL_ARGUMENT - if the listener is null
  • *
* * @see #addImageLoaderListener(ImageLoaderListener) */ public void removeImageLoaderListener(ImageLoaderListener listener) { if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); if (imageLoaderListeners == null) return; imageLoaderListeners.removeElement(listener); } /** * Returns true if the receiver has image loader listeners, and * false otherwise. * * @return true if there are ImageLoaderListeners, * and false otherwise * * @see #addImageLoaderListener(ImageLoaderListener) * @see #removeImageLoaderListener(ImageLoaderListener) */ public boolean hasListeners() { return imageLoaderListeners != null && imageLoaderListeners.size() > 0; } /** * Notifies all image loader listeners that an image loader event has * occurred. Pass the specified event object to each listener. * * @param event * the ImageLoaderEvent to send to each * ImageLoaderListener */ public void notifyListeners(ImageLoaderEvent event) { if (!hasListeners()) return; int size = imageLoaderListeners.size(); for (int i = 0; i < size; i++) { ImageLoaderListener listener = (ImageLoaderListener) imageLoaderListeners .elementAt(i); listener.imageDataLoaded(event); } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy