ca.utoronto.cs.prefuseextensions.render
Class RotationLabelRenderer

java.lang.Object
  extended by prefuse.render.AbstractShapeRenderer
      extended by ca.utoronto.cs.prefuseextensions.render.RotationLabelRenderer
All Implemented Interfaces:
prefuse.render.Renderer
Direct Known Subclasses:
DecoratorLabelRenderer

public class RotationLabelRenderer
extends prefuse.render.AbstractShapeRenderer

CMC Modified copy of LabelRenderer v 2.2 Renderer that draws a label, which consists of a text string, an image, or both. Label is drawn rotated by the amount given in the "rotation" field (in degrees).

When created using the default constructor, the renderer attempts to use text from the "label" field. To use a different field, use the appropriate constructor or use the setTextField(String) method. To perform custom String selection, subclass this Renderer and override the getText(VisualItem) method. When the text field is null, no text label will be shown. Labels can span multiple lines of text, determined by the presence of newline characters ('\n') within the text string.

By default, no image is shown. To show an image, the image field needs to be set, either using the appropriate constructor or the setImageField(String) method. The value of the image field should be a text string indicating the location of the image file to use. The string should be either a URL, a file located on the current classpath, or a file on the local filesystem. If found, the image will be managed internally by an ImageFactory instance, which maintains a cache of loaded images.

The position of the image relative to text can be set using the setImagePosition(int) method. Images can be placed to the left, right, above, or below the text. The horizontal and vertical alignments of either the text or the image can be set explicitly using the appropriate methods of this class (e.g., setHorizontalTextAlignment(int)). By default, both the text and images are centered along both the horizontal and vertical directions.

Author:
jeffrey heer,
Field Summary
 
Fields inherited from class prefuse.render.AbstractShapeRenderer
RENDER_TYPE_DRAW, RENDER_TYPE_DRAW_AND_FILL, RENDER_TYPE_FILL, RENDER_TYPE_NONE
 
Fields inherited from interface prefuse.render.Renderer
DEFAULT_GRAPHICS
 
Constructor Summary
RotationLabelRenderer()
          Create a new LabelRenderer.
RotationLabelRenderer(java.lang.String textField)
          Create a new LabelRenderer.
RotationLabelRenderer(java.lang.String textField, java.lang.String imageField)
          Create a new LabelRenderer.
 
Method Summary
 int getHorizontalAlignment()
          Get the horizontal alignment of this node with respect to its x, y coordinates.
 int getHorizontalImageAlignment()
          Get the horizontal image alignment within the layout.
 int getHorizontalPadding()
          Returns the amount of padding in pixels between the content and the border of this item along the horizontal dimension.
 int getHorizontalTextAlignment()
          Get the horizontal text alignment within the layout.
 prefuse.render.ImageFactory getImageFactory()
          Returns the image factory used by this renderer.
 java.lang.String getImageField()
          Get the data field for image locations.
 int getImagePosition()
          Get the image position, determining where the image is placed with respect to the text.
 int getImageTextPadding()
          Get the padding, in pixels, between an image and text.
 java.lang.String getTextField()
          Get the field name to use for text labels.
 int getVerticalAlignment()
          Get the vertical alignment of this node with respect to its x, y coordinates.
 int getVerticalImageAlignment()
          Get the vertical image alignment within the layout.
 int getVerticalPadding()
          Returns the amount of padding in pixels between the content and the border of this item along the vertical dimension.
 int getVerticalTextAlignment()
          Get the vertical text alignment within the layout.
 void render(java.awt.Graphics2D g, prefuse.visual.VisualItem item)
           
 void setHorizontalAlignment(int align)
          Set the horizontal alignment of this node with respect to its x, y coordinates.
 void setHorizontalImageAlignment(int halign)
          Set the horizontal image alignment within the layout.
 void setHorizontalPadding(int xpad)
          Sets the amount of padding in pixels between the content and the border of this item along the horizontal dimension.
 void setHorizontalTextAlignment(int halign)
          Set the horizontal text alignment within the layout.
 void setImageFactory(prefuse.render.ImageFactory ifact)
          Sets the image factory used by this renderer.
 void setImageField(java.lang.String imageField)
          Set the data field for image locations.
 void setImagePosition(int pos)
          Set the image position, determining where the image is placed with respect to the text.
 void setImageTextPadding(int pad)
          Set the padding, in pixels, between an image and text.
 void setMaxImageDimensions(int width, int height)
          Sets the maximum image dimensions, used to control scaling of loaded images.
 void setMaxTextWidth(int maxWidth)
          Sets the maximum width that should be allowed of the text label.
 void setRoundedCorner(int arcWidth, int arcHeight)
          Rounds the corners of the bounding rectangle in which the text string is rendered.
 void setTextField(java.lang.String textField)
          Set the field name to use for text labels.
 void setVerticalAlignment(int align)
          Set the vertical alignment of this node with respect to its x, y coordinates.
 void setVerticalImageAlignment(int valign)
          Set the vertical image alignment within the layout.
 void setVerticalPadding(int ypad)
          Sets the amount of padding in pixels between the content and the border of this item along the vertical dimension.
 void setVerticalTextAlignment(int valign)
          Set the vertical text alignment within the layout.
 
Methods inherited from class prefuse.render.AbstractShapeRenderer
getRenderType, getShape, locatePoint, setBounds, setManageBounds, setRenderType
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RotationLabelRenderer

public RotationLabelRenderer()
Create a new LabelRenderer. By default the field "label" is used as the field name for looking up text, and no image is used.


RotationLabelRenderer

public RotationLabelRenderer(java.lang.String textField)
Create a new LabelRenderer. Draws a text label using the given text data field and does not draw an image.

Parameters:
textField - the data field for the text label.

RotationLabelRenderer

public RotationLabelRenderer(java.lang.String textField,
                             java.lang.String imageField)
Create a new LabelRenderer. Draws a text label using the given text data field, and draws the image at the location reported by the given image data field.

Parameters:
textField - the data field for the text label
imageField - the data field for the image location. This value in the data field should be a URL, a file within the current classpath, a file on the filesystem, or null for no image. If the imageField parameter is null, no images at all will be drawn.
Method Detail

setRoundedCorner

public void setRoundedCorner(int arcWidth,
                             int arcHeight)
Rounds the corners of the bounding rectangle in which the text string is rendered. This will only be seen if either the stroke or fill color is non-transparent.

Parameters:
arcWidth - the width of the curved corner
arcHeight - the height of the curved corner

getTextField

public java.lang.String getTextField()
Get the field name to use for text labels.

Returns:
the data field for text labels, or null for no text

setTextField

public void setTextField(java.lang.String textField)
Set the field name to use for text labels.

Parameters:
textField - the data field for text labels, or null for no text

setMaxTextWidth

public void setMaxTextWidth(int maxWidth)
Sets the maximum width that should be allowed of the text label. A value of -1 specifies no limit (this is the default).

Parameters:
maxWidth - the maximum width of the text or -1 for no limit

getImageField

public java.lang.String getImageField()
Get the data field for image locations. The value stored in the data field should be a URL, a file within the current classpath, a file on the filesystem, or null for no image.

Returns:
the data field for image locations, or null for no images

setImageField

public void setImageField(java.lang.String imageField)
Set the data field for image locations. The value stored in the data field should be a URL, a file within the current classpath, a file on the filesystem, or null for no image. If the imageField parameter is null, no images at all will be drawn.

Parameters:
imageField - the data field for image locations, or null for no images

setMaxImageDimensions

public void setMaxImageDimensions(int width,
                                  int height)
Sets the maximum image dimensions, used to control scaling of loaded images. This scaling is enforced immediately upon loading of the image.

Parameters:
width - the maximum width of images (-1 for no limit)
height - the maximum height of images (-1 for no limit)

render

public void render(java.awt.Graphics2D g,
                   prefuse.visual.VisualItem item)
Specified by:
render in interface prefuse.render.Renderer
Overrides:
render in class prefuse.render.AbstractShapeRenderer
See Also:
Renderer.render(java.awt.Graphics2D, prefuse.visual.VisualItem)

getImageFactory

public prefuse.render.ImageFactory getImageFactory()
Returns the image factory used by this renderer.

Returns:
the image factory

setImageFactory

public void setImageFactory(prefuse.render.ImageFactory ifact)
Sets the image factory used by this renderer.

Parameters:
ifact - the image factory

getHorizontalTextAlignment

public int getHorizontalTextAlignment()
Get the horizontal text alignment within the layout. One of Constants.LEFT, Constants.RIGHT, or Constants.CENTER. The default is centered text.

Returns:
the horizontal text alignment

setHorizontalTextAlignment

public void setHorizontalTextAlignment(int halign)
Set the horizontal text alignment within the layout. One of Constants.LEFT, Constants.RIGHT, or Constants.CENTER. The default is centered text.

Parameters:
halign - the desired horizontal text alignment

getVerticalTextAlignment

public int getVerticalTextAlignment()
Get the vertical text alignment within the layout. One of Constants.TOP, Constants.BOTTOM, or Constants.CENTER. The default is centered text.

Returns:
the vertical text alignment

setVerticalTextAlignment

public void setVerticalTextAlignment(int valign)
Set the vertical text alignment within the layout. One of Constants.TOP, Constants.BOTTOM, or Constants.CENTER. The default is centered text.

Parameters:
valign - the desired vertical text alignment

getHorizontalImageAlignment

public int getHorizontalImageAlignment()
Get the horizontal image alignment within the layout. One of Constants.LEFT, Constants.RIGHT, or Constants.CENTER. The default is a centered image.

Returns:
the horizontal image alignment

setHorizontalImageAlignment

public void setHorizontalImageAlignment(int halign)
Set the horizontal image alignment within the layout. One of Constants.LEFT, Constants.RIGHT, or Constants.CENTER. The default is a centered image.

Parameters:
halign - the desired horizontal image alignment

getVerticalImageAlignment

public int getVerticalImageAlignment()
Get the vertical image alignment within the layout. One of Constants.TOP, Constants.BOTTOM, or Constants.CENTER. The default is a centered image.

Returns:
the vertical image alignment

setVerticalImageAlignment

public void setVerticalImageAlignment(int valign)
Set the vertical image alignment within the layout. One of Constants.TOP, Constants.BOTTOM, or Constants.CENTER. The default is a centered image.

Parameters:
valign - the desired vertical image alignment

getImagePosition

public int getImagePosition()
Get the image position, determining where the image is placed with respect to the text. One of Constants.LEFT, Constants.RIGHT, Constants.TOP, or Constants.BOTTOM. The default is left.

Returns:
the image position

setImagePosition

public void setImagePosition(int pos)
Set the image position, determining where the image is placed with respect to the text. One of Constants.LEFT, Constants.RIGHT, Constants.TOP, or Constants.BOTTOM. The default is left.

Parameters:
pos - the desired image position

getHorizontalAlignment

public int getHorizontalAlignment()
Get the horizontal alignment of this node with respect to its x, y coordinates.

Returns:
the horizontal alignment, one of Constants.LEFT, Constants.RIGHT, or Constants.CENTER.

getVerticalAlignment

public int getVerticalAlignment()
Get the vertical alignment of this node with respect to its x, y coordinates.

Returns:
the vertical alignment, one of Constants.TOP, Constants.BOTTOM, or Constants.CENTER.

setHorizontalAlignment

public void setHorizontalAlignment(int align)
Set the horizontal alignment of this node with respect to its x, y coordinates.

Parameters:
align - the horizontal alignment, one of Constants.LEFT, Constants.RIGHT, or Constants.CENTER.

setVerticalAlignment

public void setVerticalAlignment(int align)
Set the vertical alignment of this node with respect to its x, y coordinates.

Parameters:
align - the vertical alignment, one of Constants.TOP, Constants.BOTTOM, or Constants.CENTER.

getHorizontalPadding

public int getHorizontalPadding()
Returns the amount of padding in pixels between the content and the border of this item along the horizontal dimension.

Returns:
the horizontal padding

setHorizontalPadding

public void setHorizontalPadding(int xpad)
Sets the amount of padding in pixels between the content and the border of this item along the horizontal dimension.

Parameters:
xpad - the horizontal padding to set

getVerticalPadding

public int getVerticalPadding()
Returns the amount of padding in pixels between the content and the border of this item along the vertical dimension.

Returns:
the vertical padding

setVerticalPadding

public void setVerticalPadding(int ypad)
Sets the amount of padding in pixels between the content and the border of this item along the vertical dimension.

Parameters:
ypad - the vertical padding

getImageTextPadding

public int getImageTextPadding()
Get the padding, in pixels, between an image and text.

Returns:
the padding between an image and text

setImageTextPadding

public void setImageTextPadding(int pad)
Set the padding, in pixels, between an image and text.

Parameters:
pad - the padding to use between an image and text