Package org.geotools.renderer.label
Class LabelPainter
- Object
-
- LabelPainter
-
public class LabelPainter extends Object
This class performs the layouting and painting of the single label (leaving the label cache the task to sort labels and locate the best label points)- Author:
- Andrea Aime
-
-
Constructor Summary
Constructors Constructor Description LabelPainter(Graphics2D graphics, LabelCacheImpl.LabelRenderingMode labelRenderingMode)
Builds a new painter
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description double
getAscent()
The full size above the baselineRectangle2D
getFullLabelBounds()
Get the straight label bounds, taking into account halo, shield and line wrappingLabelCacheItem
getLabel()
Returns the current label itemRectangle2D
getLabelBounds()
Get the straight label bounds, without taking into account halo and shieldint
getLineCount()
Number of lines for this label (more than 1 if the label has embedded newlines or if we're auto-wrapping it)double
getLineHeight()
Returns the line height for this label in pixels (for multiline labels, it's the height of the first line)double
getLineHeightForAnchorY(double anchorY)
Returns appropriate line height for the given displacemntY Should give Top line for max displacementY (1) and Bottom line for min displacemntY (0)double
getLinePlacementYAnchor()
Vertical centering is not trivial, because visually we want centering on characters such as a,m,e, and not centering on d,g whose center is affected by the full ascent or the full descent.int
getStraightLabelWidth()
Returns the width of the label, as painted in straight form (void
paintCurvedLabel(LineStringCursor cursor)
Paints a label that follows the line, centered in the current cursor positionvoid
paintStraightLabel(AffineTransform transform)
Paints the label as a non curved one.void
paintStraightLabel(AffineTransform transform, Coordinate labelPoint)
Paints the label as a non curved one.void
setLabel(LabelCacheItem labelItem)
Sets the current label.
-
-
-
Constructor Detail
-
LabelPainter
public LabelPainter(Graphics2D graphics, LabelCacheImpl.LabelRenderingMode labelRenderingMode)
Builds a new painter
-
-
Method Detail
-
setLabel
public void setLabel(LabelCacheItem labelItem)
Sets the current label. The label will be laid out according to the label item settings (curved lines, auto wrapping, curved line usage) and the painter will be ready to draw it.
-
getLabel
public LabelCacheItem getLabel()
Returns the current label item
-
getLineHeight
public double getLineHeight()
Returns the line height for this label in pixels (for multiline labels, it's the height of the first line)
-
getLineHeightForAnchorY
public double getLineHeightForAnchorY(double anchorY)
Returns appropriate line height for the given displacemntY Should give Top line for max displacementY (1) and Bottom line for min displacemntY (0)- Returns:
- height of appropriate line for passed label displacementY
-
getAscent
public double getAscent()
The full size above the baseline
-
getStraightLabelWidth
public int getStraightLabelWidth()
Returns the width of the label, as painted in straight form (
-
getLineCount
public int getLineCount()
Number of lines for this label (more than 1 if the label has embedded newlines or if we're auto-wrapping it)
-
getFullLabelBounds
public Rectangle2D getFullLabelBounds()
Get the straight label bounds, taking into account halo, shield and line wrapping
-
getLabelBounds
public Rectangle2D getLabelBounds()
Get the straight label bounds, without taking into account halo and shield
-
paintStraightLabel
public void paintStraightLabel(AffineTransform transform) throws Exception
Paints the label as a non curved one. The positioning and rotation are provided by the transformation- Throws:
Exception
-
paintStraightLabel
public void paintStraightLabel(AffineTransform transform, Coordinate labelPoint) throws Exception
Paints the label as a non curved one. The positioning and rotation are provided by the transformation- Throws:
Exception
-
paintCurvedLabel
public void paintCurvedLabel(LineStringCursor cursor)
Paints a label that follows the line, centered in the current cursor position
-
getLinePlacementYAnchor
public double getLinePlacementYAnchor()
Vertical centering is not trivial, because visually we want centering on characters such as a,m,e, and not centering on d,g whose center is affected by the full ascent or the full descent. This method tries to computes the y anchor taking into account those.
-
-