diff options
Diffstat (limited to 'examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet141.java')
-rw-r--r-- | examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet141.java | 157 |
1 files changed, 0 insertions, 157 deletions
diff --git a/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet141.java b/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet141.java deleted file mode 100644 index 0117aecd59..0000000000 --- a/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet141.java +++ /dev/null @@ -1,157 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 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 - *******************************************************************************/ -package org.eclipse.swt.snippets; - -/* - * Image example snippet: display an animated GIF - * - * For a list of all SWT example snippets see - * http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets - */ -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.widgets.*; - -public class Snippet141 { - static Display display; - static Shell shell; - static GC shellGC; - static Color shellBackground; - static ImageLoader loader; - static ImageData[] imageDataArray; - static Thread animateThread; - static Image image; - static final boolean useGIFBackground = false; - - public static void main(String[] args) { - display = new Display(); - shell = new Shell(display); - shell.setSize(300, 300); - shell.open(); - shellGC = new GC(shell); - shellBackground = shell.getBackground(); - - FileDialog dialog = new FileDialog(shell); - dialog.setFilterExtensions(new String[] {"*.gif"}); - String fileName = dialog.open(); - if (fileName != null) { - loader = new ImageLoader(); - try { - imageDataArray = loader.load(fileName); - if (imageDataArray.length > 1) { - animateThread = new Thread("Animation") { - public void run() { - /* Create an off-screen image to draw on, and fill it with the shell background. */ - Image offScreenImage = new Image(display, loader.logicalScreenWidth, loader.logicalScreenHeight); - GC offScreenImageGC = new GC(offScreenImage); - offScreenImageGC.setBackground(shellBackground); - offScreenImageGC.fillRectangle(0, 0, loader.logicalScreenWidth, loader.logicalScreenHeight); - - try { - /* Create the first image and draw it on the off-screen image. */ - int imageDataIndex = 0; - ImageData imageData = imageDataArray[imageDataIndex]; - if (image != null && !image.isDisposed()) image.dispose(); - image = new Image(display, imageData); - offScreenImageGC.drawImage( - image, - 0, - 0, - imageData.width, - imageData.height, - imageData.x, - imageData.y, - imageData.width, - imageData.height); - - /* Now loop through the images, creating and drawing each one - * on the off-screen image before drawing it on the shell. */ - int repeatCount = loader.repeatCount; - while (loader.repeatCount == 0 || repeatCount > 0) { - switch (imageData.disposalMethod) { - case SWT.DM_FILL_BACKGROUND: - /* Fill with the background color before drawing. */ - Color bgColor = null; - if (useGIFBackground && loader.backgroundPixel != -1) { - bgColor = new Color(display, imageData.palette.getRGB(loader.backgroundPixel)); - } - offScreenImageGC.setBackground(bgColor != null ? bgColor : shellBackground); - offScreenImageGC.fillRectangle(imageData.x, imageData.y, imageData.width, imageData.height); - if (bgColor != null) bgColor.dispose(); - break; - case SWT.DM_FILL_PREVIOUS: - /* Restore the previous image before drawing. */ - offScreenImageGC.drawImage( - image, - 0, - 0, - imageData.width, - imageData.height, - imageData.x, - imageData.y, - imageData.width, - imageData.height); - break; - } - - imageDataIndex = (imageDataIndex + 1) % imageDataArray.length; - imageData = imageDataArray[imageDataIndex]; - image.dispose(); - image = new Image(display, imageData); - offScreenImageGC.drawImage( - image, - 0, - 0, - imageData.width, - imageData.height, - imageData.x, - imageData.y, - imageData.width, - imageData.height); - - /* Draw the off-screen image to the shell. */ - shellGC.drawImage(offScreenImage, 0, 0); - - /* Sleep for the specified delay time (adding commonly-used slow-down fudge factors). */ - try { - int ms = imageData.delayTime * 10; - if (ms < 20) ms += 30; - if (ms < 30) ms += 10; - Thread.sleep(ms); - } catch (InterruptedException e) { - } - - /* If we have just drawn the last image, decrement the repeat count and start again. */ - if (imageDataIndex == imageDataArray.length - 1) repeatCount--; - } - } catch (SWTException ex) { - System.out.println("There was an error animating the GIF"); - } finally { - if (offScreenImage != null && !offScreenImage.isDisposed()) offScreenImage.dispose(); - if (offScreenImageGC != null && !offScreenImageGC.isDisposed()) offScreenImageGC.dispose(); - if (image != null && !image.isDisposed()) image.dispose(); - } - } - }; - animateThread.setDaemon(true); - animateThread.start(); - } - } catch (SWTException ex) { - System.out.println("There was an error loading the GIF"); - } - } - - while (!shell.isDisposed()) { - if (!display.readAndDispatch()) display.sleep(); - } - display.dispose(); - } -} |