org.jCharts.chartText
Class TextTagGroup

java.lang.Object
  extended by org.jCharts.chartText.TextTagGroup
All Implemented Interfaces:
java.io.Serializable, HTMLTestable
Direct Known Subclasses:
NumericTagGroup

public class TextTagGroup
extends java.lang.Object
implements HTMLTestable, java.io.Serializable

See Also:
Serialized Form

Field Summary
private  ChartFont chartFont
           
private  java.awt.font.FontRenderContext fontRenderContext
           
private  float tallestLabel
           
private  java.util.ArrayList textTags
           
private  float totalLabelWidths
           
private  float widestLabel
           
 
Constructor Summary
TextTagGroup(ChartFont chartFont, java.awt.font.FontRenderContext fontRenderContext)
          Constructor
 
Method Summary
 void addLabel(java.lang.String label)
           
 float getTallestLabel()
           
 TextTag getTextTag(int index)
           
 float getTotalLabelWidths()
           
 float getWidestLabel()
          Calculates the width and height needed by the passed String when rendered // * @param iDataSeries / * @param font // * @param fontRenderContext public void processLabels( IDataSeries iDataSeries) { //LOOP for( int i = 0; i < iDataSeries.getNumberOfXAxisLabels(); i++ ) { this.axisLabelProcessor.processLabel( iDataSeries.getXAxisLabel( i ), axisLabelFont, fontRenderContext ); } TextLayout textLayout = new TextLayout( label, font, fontRenderContext ); //---WIDTH this.labelWidths[ counter ] = textLayout.getAdvance(); this.widestLabel = Math.max( this.labelWidths[ counter ], this.widestLabel ); this.totalLabelWidths += this.labelWidths[ counter ]; //---HEIGHT this.labelHeights[ counter ] = textLayout.getAscent() + textLayout.getDescent(); this.tallestLabel = Math.max( this.labelHeights[ counter ], this.tallestLabel ); //---need this to offset font rendering, as rendering is at the baseline not bottom or top, this.fontDescent = textLayout.getDescent(); this.counter++; } /******************************************************************************************
 void render(int index, java.awt.Graphics2D g2d, float x, float y)
          Renders the text, at the position - renders from the top (instead of baseline)
 void reverse()
          Horizontal plots render the data from top down so rendering alogorithm needs to get the labels in reverse order to make things easier.
 int size()
          Returns the number of labels
 void toHTML(HTMLGenerator htmlGenerator)
          Renders all the text in this group.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

widestLabel

private float widestLabel

tallestLabel

private float tallestLabel

totalLabelWidths

private float totalLabelWidths

textTags

private java.util.ArrayList textTags

chartFont

private ChartFont chartFont

fontRenderContext

private java.awt.font.FontRenderContext fontRenderContext
Constructor Detail

TextTagGroup

public TextTagGroup(ChartFont chartFont,
                    java.awt.font.FontRenderContext fontRenderContext)
Constructor

Parameters:
chartFont -
fontRenderContext -
Method Detail

addLabel

public void addLabel(java.lang.String label)
Parameters:
label -

size

public int size()
Returns the number of labels

Returns:
int

reverse

public void reverse()
Horizontal plots render the data from top down so rendering alogorithm needs to get the labels in reverse order to make things easier.


getWidestLabel

public float getWidestLabel()
Calculates the width and height needed by the passed String when rendered // * @param iDataSeries / * @param font // * @param fontRenderContext public void processLabels( IDataSeries iDataSeries) { //LOOP for( int i = 0; i < iDataSeries.getNumberOfXAxisLabels(); i++ ) { this.axisLabelProcessor.processLabel( iDataSeries.getXAxisLabel( i ), axisLabelFont, fontRenderContext ); } TextLayout textLayout = new TextLayout( label, font, fontRenderContext ); //---WIDTH this.labelWidths[ counter ] = textLayout.getAdvance(); this.widestLabel = Math.max( this.labelWidths[ counter ], this.widestLabel ); this.totalLabelWidths += this.labelWidths[ counter ]; //---HEIGHT this.labelHeights[ counter ] = textLayout.getAscent() + textLayout.getDescent(); this.tallestLabel = Math.max( this.labelHeights[ counter ], this.tallestLabel ); //---need this to offset font rendering, as rendering is at the baseline not bottom or top, this.fontDescent = textLayout.getDescent(); this.counter++; } /******************************************************************************************


getTallestLabel

public float getTallestLabel()

getTotalLabelWidths

public float getTotalLabelWidths()

getTextTag

public TextTag getTextTag(int index)
Parameters:
index -
Returns:
TextTag

render

public void render(int index,
                   java.awt.Graphics2D g2d,
                   float x,
                   float y)
Renders the text, at the position - renders from the top (instead of baseline)

Parameters:
index -
g2d -
x -
y -

toHTML

public void toHTML(HTMLGenerator htmlGenerator)
Renders all the text in this group. public void renderTag( int index, Graphics2D g2d ) { TextTag tag; //Paint p = this.fontColor; g2d.setPaint( this. ); //g2d.setFont( (this.derivedFont == null) ? baseFont : derivedFont ); for( int i = 0; i < group.size(); i++ ) { tag = ( TextTag ) group.get( i ); tag.render( g2d, p ); // Text tag sets the Paint every time if not null // So, we might save a small bit of time by changing // this to null after first time. p = null; } } /********************************************************************************************* Enables the testing routines to display the contents of this Object.

Specified by:
toHTML in interface HTMLTestable
Parameters:
htmlGenerator -