uk.ac.starlink.ttools.plot2.layer
Class ClipPixellator

java.lang.Object
  extended by uk.ac.starlink.ttools.plot2.layer.ClipPixellator
All Implemented Interfaces:
Pixellator

public class ClipPixellator
extends Object
implements Pixellator

Pixellator implementation that wraps another pixellator and only retains the pixels that fall within a given clip rectangle.

Note: Pixellator bounds are reported such that the points of the pixellator are included, but not the outer bounds of the 1-pixel-wide lines they generate are included. This means that the pixellator bounds need effectively to be extended by one pixel down and right before comparing with a graphics clip. This is probably an unfortunate/wrong part of the pixellator API, but for now we just deal with it here.

In most cases you should call the clip(uk.ac.starlink.ttools.plot.Pixellator, java.awt.Rectangle) factory method rather than the constructor of this class.

Since:
12 Feb 2013
Author:
Mark Taylor

Constructor Summary
ClipPixellator(Pixellator base, Rectangle clip)
          Constructor.
 
Method Summary
static Pixellator clip(Pixellator pixellator, Rectangle clip)
          Returns a pixellator which is guaranteed to fall within a given clip.
 Rectangle getBounds()
          Returns a copy of the bounding rectangle for this pixellator.
 int getX()
          Returns the X value for the current point.
 int getY()
          Returns the Y value for the current point.
 boolean next()
          Moves to the next point in the sequence.
 void start()
          Makes this object ready to iterate.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ClipPixellator

public ClipPixellator(Pixellator base,
                      Rectangle clip)
Constructor.

Parameters:
base - base pixellator
clip - clipping rectangle to impose on base
Method Detail

getBounds

public Rectangle getBounds()
Description copied from interface: Pixellator
Returns a copy of the bounding rectangle for this pixellator. All points iterated over by this object will fall within this rectangle. If this object has no points, null may be returned.

Specified by:
getBounds in interface Pixellator
Returns:
bounds

start

public void start()
Description copied from interface: Pixellator
Makes this object ready to iterate. Should be called before any call to Pixellator.next().

Specified by:
start in interface Pixellator

next

public boolean next()
Description copied from interface: Pixellator
Moves to the next point in the sequence. Must be called before any call to Pixellator.getX()/Pixellator.getY(). Returns value indicates whether there is a next point.

Specified by:
next in interface Pixellator
Returns:
next true iff there are more points

getX

public int getX()
Description copied from interface: Pixellator
Returns the X value for the current point.

Specified by:
getX in interface Pixellator
Returns:
x

getY

public int getY()
Description copied from interface: Pixellator
Returns the Y value for the current point.

Specified by:
getY in interface Pixellator
Returns:
y

clip

public static Pixellator clip(Pixellator pixellator,
                              Rectangle clip)
Returns a pixellator which is guaranteed to fall within a given clip. If the supplied base pixellator is already within that clip, it is returned unchanged, otherwise a new ClipPixellator will be created and returned.

Parameters:
pixellator - base pixellator
Returns:
clip region


Copyright © 2013 Central Laboratory of the Research Councils. All Rights Reserved.