net.sf.jasperreports.engine.util.MaxFontSizeFinder Maven / Gradle / Ivy
/*
* JasperReports - Free Java Reporting Library.
* Copyright (C) 2001 - 2016 TIBCO Software Inc. All rights reserved.
* http://www.jaspersoft.com
*
* Unless you have purchased a commercial license agreement from Jaspersoft,
* the following license terms apply:
*
* This program is part of JasperReports.
*
* JasperReports is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* JasperReports is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with JasperReports. If not, see .
*/
package net.sf.jasperreports.engine.util;
import java.awt.font.TextAttribute;
import java.text.AttributedCharacterIterator;
/**
* @author Teodor Danciu ([email protected])
*/
public abstract class MaxFontSizeFinder//FIXMETAB deprecate?
{
/**
*
*/
public static final MaxFontSizeFinder STYLED_TEXT_MAX_FONT_FINDER =
new MaxFontSizeFinder()
{
/**
*
*/
private final Float ZERO = new Float(0);
@Override
public float findMaxFontSize(AttributedCharacterIterator line, float defaultFontSize)
{
line.setIndex(0);
Float maxFontSize = ZERO;
int runLimit = 0;
while(runLimit < line.getEndIndex() && (runLimit = line.getRunLimit(TextAttribute.SIZE)) <= line.getEndIndex())
{
Float size = (Float)line.getAttribute(TextAttribute.SIZE);
if (maxFontSize.compareTo(size) < 0)
{
maxFontSize = size;
}
line.setIndex(runLimit);
}
return maxFontSize;
}
/**
* @deprecated Replaced by {@link #findMaxFontSize(AttributedCharacterIterator, float)}.
*/
@Override
public int findMaxFontSize(AttributedCharacterIterator line, int defaultFontSize)
{
return (int)findMaxFontSize(line, (float)defaultFontSize);
}
};
/**
*
*/
public static final MaxFontSizeFinder DEFAULT_MAX_FONT_FINDER =
new MaxFontSizeFinder()
{
@Override
public float findMaxFontSize(AttributedCharacterIterator line, float defaultFontSize)
{
return defaultFontSize;
}
/**
* @deprecated Replaced by {@link #findMaxFontSize(AttributedCharacterIterator, float)}.
*/
@Override
public int findMaxFontSize(AttributedCharacterIterator line, int defaultFontSize)
{
return (int)findMaxFontSize(line, (float)defaultFontSize);
}
};
/**
*
*/
public static MaxFontSizeFinder getInstance(boolean isStyledText)
{
if (isStyledText)
{
return MaxFontSizeFinder.STYLED_TEXT_MAX_FONT_FINDER;
}
return MaxFontSizeFinder.DEFAULT_MAX_FONT_FINDER;
}
/**
*
*/
public abstract float findMaxFontSize(AttributedCharacterIterator line, float defaultFontSize);
/**
* @deprecated Replaced by {@link #findMaxFontSize(AttributedCharacterIterator, float)}.
*/
public abstract int findMaxFontSize(AttributedCharacterIterator line, int defaultFontSize);
}