📄 valuelabelrenderer.java
字号:
/*************************************************************************************************
*
* @param axisValueRenderEvent
* @param formattedTextTag
* @return float
************************************************************************************************/
private float calculateYHorizontalPlot( AxisValueRenderEvent axisValueRenderEvent,
TextTag formattedTextTag )
{
float y = axisValueRenderEvent.getValueY();
if( this.isLabelVertical )
{
y += (formattedTextTag.getWidth() / 2);
}
else
{
y += formattedTextTag.getFontDescent();
}
return y;
}
/*************************************************************************************************
*
* @param axisValueRenderEvent
* @param formattedTextTag
* @param isNegative
* @return
************************************************************************************************/
private float calculateXHorizontalPlot( AxisValueRenderEvent axisValueRenderEvent,
TextTag formattedTextTag,
boolean isNegative )
{
float x = axisValueRenderEvent.getValueX();
if( this.valueLabelPosition.equals( ValueLabelPosition.ON_TOP ) )
{
//---if the value is negative, 'top' is to the left
if( isNegative )
{
x -= (this.isLabelVertical) ? 0 : formattedTextTag.getWidth();
x -= this.pixelValuePadding;
}
else
{
x += (this.isLabelVertical) ? formattedTextTag.getFontAscent() : 0;
x += this.pixelValuePadding;
}
}
else if( this.valueLabelPosition.equals( ValueLabelPosition.AT_TOP ) )
{
if( isNegative )
{
x += (this.isLabelVertical) ? formattedTextTag.getFontAscent() : 0;
x += this.pixelValuePadding;
}
else
{
x -= (this.isLabelVertical) ? formattedTextTag.getFontDescent() : formattedTextTag.getWidth();
x -= this.pixelValuePadding;
}
}
else if( this.valueLabelPosition.equals( ValueLabelPosition.ABOVE_ZERO_LINE ) )
{
x = axisValueRenderEvent.getZeroLineCoordinate();
if( isNegative )
{
x += (this.isLabelVertical) ? formattedTextTag.getFontAscent() : 0;
x += this.pixelValuePadding;
}
else
{
x -= (this.isLabelVertical) ? formattedTextTag.getFontDescent() : formattedTextTag.getWidth();
x -= this.pixelValuePadding;
}
}
else if( this.valueLabelPosition.equals( ValueLabelPosition.AXIS_TOP ) )
{
x = axisValueRenderEvent.getTotalItemAxisArea().x + axisValueRenderEvent.getTotalItemAxisArea().width;
x -= (this.isLabelVertical) ? 0 : formattedTextTag.getWidth();
x -= this.pixelValuePadding;
}
else if( this.valueLabelPosition.equals( ValueLabelPosition.AXIS_BOTTOM ) )
{
x = axisValueRenderEvent.getTotalItemAxisArea().x;
x += (this.isLabelVertical) ? formattedTextTag.getFontAscent() : 0;
x += this.pixelValuePadding;
}
//VALIDATION - force labels into plot area, in case there is a user defined scale.
//todo could we skip this validation for non-user defined scales?
//---if label goes off the right edge, force it to stay in the plot area.
if( (x + formattedTextTag.getWidth())
> (axisValueRenderEvent.getTotalItemAxisArea().x + axisValueRenderEvent.getTotalItemAxisArea().width) )
{
x = axisValueRenderEvent.getTotalItemAxisArea().x + axisValueRenderEvent.getTotalItemAxisArea().width;
x -= formattedTextTag.getWidth();
x -= this.pixelValuePadding;
}
//---if label goes off left edge, force to the right
else if( x < axisValueRenderEvent.getTotalItemAxisArea().x )
{
x = axisValueRenderEvent.getTotalItemAxisArea().x;
x += this.pixelValuePadding;
}
return x;
}
/*************************************************************************************************
*
* @param axisValueRenderEvent
* @param formattedTextTag
* @param isNegative
* @return
************************************************************************************************/
private float calculateYVerticalPlot( AxisValueRenderEvent axisValueRenderEvent,
TextTag formattedTextTag,
boolean isNegative )
{
float y = axisValueRenderEvent.getValueY();
if( this.valueLabelPosition.equals( ValueLabelPosition.ON_TOP ) )
{
//---if the value is negative, 'top' is to the bottom
if( isNegative )
{
y += (this.isLabelVertical) ? formattedTextTag.getWidth() : formattedTextTag.getHeight();
y += this.pixelValuePadding;
}
else
{
y -= this.pixelValuePadding;
}
}
else if( this.valueLabelPosition.equals( ValueLabelPosition.AT_TOP ) )
{
//---if the value is negative, 'top' is to the bottom
if( isNegative )
{
y -= this.pixelValuePadding;
}
else
{
y += (this.isLabelVertical) ? formattedTextTag.getWidth() : formattedTextTag.getHeight();
y += this.pixelValuePadding;
}
}
else if( this.valueLabelPosition.equals( ValueLabelPosition.ABOVE_ZERO_LINE ) )
{
y = axisValueRenderEvent.getZeroLineCoordinate();
//---if the value is negative, 'top' is to the bottom
if( isNegative )
{
y -= this.pixelValuePadding;
}
else
{
y += (this.isLabelVertical) ? formattedTextTag.getWidth() : formattedTextTag.getHeight();
y += this.pixelValuePadding;
}
}
else if( this.valueLabelPosition.equals( ValueLabelPosition.AXIS_TOP ) )
{
y = axisValueRenderEvent.getTotalItemAxisArea().y;
y += (this.isLabelVertical) ? formattedTextTag.getWidth() : formattedTextTag.getHeight();
y += this.pixelValuePadding;
}
else if( this.valueLabelPosition.equals( ValueLabelPosition.AXIS_BOTTOM ) )
{
y = axisValueRenderEvent.getTotalItemAxisArea().y + axisValueRenderEvent.getTotalItemAxisArea().height;
y -= this.pixelValuePadding;
}
//VALIDATION - force labels into plot area, in case there is a user defined scale.
if( isLabelVertical )
{
//---if label goes off the bottom edge, force it to stay in the plot area.
if( ( y - formattedTextTag.getWidth() ) < axisValueRenderEvent.getTotalItemAxisArea().y )
{
y = axisValueRenderEvent.getTotalItemAxisArea().y;
y += formattedTextTag.getWidth();
y += this.pixelValuePadding;
}
//---if label goes off bottom edge, force to the up
else if( y > axisValueRenderEvent.getTotalItemAxisArea().y + axisValueRenderEvent.getTotalItemAxisArea().height )
{
y = axisValueRenderEvent.getTotalItemAxisArea().y + axisValueRenderEvent.getTotalItemAxisArea().height;
y -= this.pixelValuePadding;
}
}
else
{
//---if label goes off the top edge, force it to stay in the plot area.
if( ( y - formattedTextTag.getHeight() ) < axisValueRenderEvent.getTotalItemAxisArea().y )
{
y = axisValueRenderEvent.getTotalItemAxisArea().y;
y += formattedTextTag.getHeight();
y += this.pixelValuePadding;
}
//---if label goes off bottom edge, force to the up
else if( y > axisValueRenderEvent.getTotalItemAxisArea().y + axisValueRenderEvent.getTotalItemAxisArea().height )
{
y = axisValueRenderEvent.getTotalItemAxisArea().y + axisValueRenderEvent.getTotalItemAxisArea().height;
y -= this.pixelValuePadding;
}
}
return y;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -