<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2005. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <title>SWT - Image Analyzer Example</title>
</head>
<body>

<h2>SWT standalone example - Image Analyzer</h2>

<p>
The ImageAnalyzer example opens image files and displays their visual contents and
an image data summary.
The user can make adjustments to various elements of the image such as scaling and Alpha
blending, and can save these changes to a file.
</p>
<p>
The ImageAnalyzer can load and display image files of type GIF, JPEG, BMP, ICO, and PNG.
If a loaded file is an interlaced GIF or PNG, or a progressive JPEG, and <strong>Incremental Display</strong> is selected,
then the ImageAnalyzer will display the image increments as they are loaded.
If the file contains an animated GIF, then the <strong>Next</strong>, <strong>Previous</strong>, and <strong>Animate</strong> buttons become enabled,
and can be used to cycle through and animate the images in the file. If a GIF defines a background color,
as many animated GIFs do, then selecting <strong>Background</strong> will use the GIF's background color.
If the image has transparency, which is possible with images of type GIF, PNG, and ICO, then selecting <strong>Display Mask</strong> will draw the image's transparency
mask to the right of the image. You can change the background color of the ImageAnalyzer in order to see the transparency work.
To turn off transparency, deselect <strong>Display Transparency</strong>.
After an image is loaded, it can be scaled with the <strong>Scale</strong> combo, or have alpha transparency applied to it using the <strong>Alpha-K</strong> combo
and <strong>Alpha</strong> menu. <strong>File</strong> &gt; <strong>Reopen</strong> restores the scaling and alpha attributes to their default values and reloads the current image file.
If the image has transparency,
<strong>File</strong> &gt; <strong>Save Mask As...</strong> can be used to save the image's transparency mask.
</p>
<p>
When SWT loads an image file, an instance of <code>org.eclipse.swt.graphics.ImageData</code> is created (though in the case of an ICO file or
multi-image GIF an array of <code>ImageData</code> instances is created). The ImageAnalyzer displays all of the data stored in the <code>ImageData</code>
instance(s) for the currently loaded image file, including the pixel data. Hovering over a pixel in the image display will show the RGB
color data for that pixel. For certain images, particularly animated GIFs, additional data is stored in the <code>org.eclipse.swt.graphics.ImageLoader</code>
instance that is used to load the image. The ImageAnalyzer displays this data as well.
</p>

<h3>Running the example</h3>

<p>
Follow the <a href="swt_manual_setup.html">SWT standalone examples setup</a> 
instructions to install and run the example from your workspace.
</p>
<p>
The "Main" class is <code>org.eclipse.swt.examples.imageanalyzer.ImageAnalyzer</code>.
</p>
<p>
This example can also be run using the <a href="swt_launcher_ex.html">Example Launcher</a>.
Select the <strong>Image Analyzer</strong> item from the <strong>Standalone</strong> category and click <strong>Run</strong>.
</p>

</body>
</html>
