cdox.util.image
Class GammaCorrection

java.lang.Object
  extended byjava.util.Observable
      extended bycdox.util.image.CorrectorSlider
          extended bycdox.util.image.GammaCorrection
All Implemented Interfaces:
javax.swing.event.ChangeListener, java.util.EventListener, ImageCorrector

public class GammaCorrection
extends CorrectorSlider
implements ImageCorrector

This class highers or loweres the gamma of a BufferedImage. It uses a lookupTable to do so. To use this class you can call one of its two constructors. If you've designed your own Jslider classes you can use the constructor which takes a float-value. You than can use the setValue(float val) method to set the value to work with. And than call the filter method to filter the BufferedImage.

Version:
May 22nd 2002
Author:
Rutger Bezema, Andreas Schmitz
See Also:
CorrectorSlider

Field Summary
 
Fields inherited from class cdox.util.image.CorrectorSlider
corSlider, imageCorrector, obs, sliderPane, value
 
Constructor Summary
GammaCorrection(float val)
          This constructor creates a new GammaCorrection Object with its initial-Value set to val.
GammaCorrection(java.util.Observer obs, java.lang.String paneTitle)
          This constructor creates a new GammaCorrection Object, with a JSlider in a JPanel with a titledBorder set with the name paneTitle.
 
Method Summary
 java.awt.image.BufferedImage filter(java.awt.image.BufferedImage source, java.awt.image.BufferedImage dest)
          The actual filtering is done in this method defined in ImageCorrector.
 
Methods inherited from class cdox.util.image.CorrectorSlider
getRedrawnImage, getSliderPane, getValue, setValue, stateChanged
 
Methods inherited from class java.util.Observable
addObserver, clearChanged, countObservers, deleteObserver, deleteObservers, hasChanged, notifyObservers, notifyObservers, setChanged
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface cdox.util.image.ImageCorrector
getValue
 

Constructor Detail

GammaCorrection

public GammaCorrection(java.util.Observer obs,
                       java.lang.String paneTitle)
This constructor creates a new GammaCorrection Object, with a JSlider in a JPanel with a titledBorder set with the name paneTitle. The values of the JSlider are standardly min=-0, max = 300, initValue=100, spacings=100, textatSpacing=-1,(constructs a new Hashmap) graptogrid=false. The Observer is called when the JSlider is moved. This Observer could be a preview pane or anything else.

Parameters:
obs - The Observer to handle the BufferedImage.
paneTitle - the title of the titledBorder of the JPane surrounding the JSlider.
See Also:
CorrectorSlider.CorrectorSlider(Observer, String, int, int, int, int, int, boolean).

GammaCorrection

public GammaCorrection(float val)
This constructor creates a new GammaCorrection Object with its initial-Value set to val. It has no JSlider and the value of this class (to work with) should be set by calling setValue(float val).

Parameters:
val - the initial float value.
See Also:
CorrectorSlider.CorrectorSlider(float), CorrectorSlider.setValue(float)
Method Detail

filter

public java.awt.image.BufferedImage filter(java.awt.image.BufferedImage source,
                                           java.awt.image.BufferedImage dest)

The actual filtering is done in this method defined in ImageCorrector. It uses a ShortLookupTable to make the gamma higher or lower for all the four chanels (Red, Green, Blue, Alpha). First the short-array is filled with the values, the colornumber = i(between 0-255)are powered to(1/current-value)(set by the JSlider or setValue(float val)) which is afterwards multiplied with 255(white) this ensures that all dark colors (small i) are upped and the light colors(large i) are upped a little (to none). After that this short-array is copied in a 2-dimensional-short-array, which represent the color-chanels. With BufferedImageOp a new LookupOp is done, which will be used to filter the source BufferedImage.

To make sure the source-BufferedImage can be "gamma-ed" the image is redrawn on a new BufferedImage which will be filtered. If the destination BufferedImage is null, a new BufferedImage is returned, if not it must have the same height and width as the source-BufferedImage. If not a new BufferedImage is returned.

Specified by:
filter in interface ImageCorrector
Parameters:
source - the BufferedImage to be filtered,
dest - the Destination-BufferedImage with the same height and width as Source, and which may be null.
Returns:
the filtered BufferedImage.
See Also:
ImageCorrector, CorrectorSlider.setValue(float)