001: /*
002: * ============================================================================
003: * GNU Lesser General Public License
004: * ============================================================================
005: *
006: * JasperReports - Free Java report-generating library.
007: * Copyright (C) 2001-2006 JasperSoft Corporation http://www.jaspersoft.com
008: *
009: * This library is free software; you can redistribute it and/or
010: * modify it under the terms of the GNU Lesser General Public
011: * License as published by the Free Software Foundation; either
012: * version 2.1 of the License, or (at your option) any later version.
013: *
014: * This library is distributed in the hope that it will be useful,
015: * but WITHOUT ANY WARRANTY; without even the implied warranty of
016: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
017: * Lesser General Public License for more details.
018: *
019: * You should have received a copy of the GNU Lesser General Public
020: * License along with this library; if not, write to the Free Software
021: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
022: *
023: * JasperSoft Corporation
024: * 303 Second Street, Suite 450 North
025: * San Francisco, CA 94107
026: * http://www.jaspersoft.com
027: */
028: package net.sf.jasperreports.engine.util;
029:
030: import java.awt.font.TextAttribute;
031: import java.text.AttributedCharacterIterator;
032:
033: /**
034: * @author Teodor Danciu (teodord@users.sourceforge.net)
035: * @version $Id: MaxFontSizeFinder.java 1229 2006-04-19 10:27:35Z teodord $
036: */
037: public abstract class MaxFontSizeFinder {
038:
039: /**
040: *
041: */
042: public static final MaxFontSizeFinder STYLED_TEXT_MAX_FONT_FINDER = new MaxFontSizeFinder() {
043: /**
044: *
045: */
046: private final Float ZERO = new Float(0);
047:
048: /**
049: *
050: */
051: public int findMaxFontSize(AttributedCharacterIterator line,
052: int defaultFontSize) {
053: line.setIndex(0);
054: Float maxFontSize = ZERO;
055: int runLimit = 0;
056:
057: while (runLimit < line.getEndIndex()
058: && (runLimit = line.getRunLimit(TextAttribute.SIZE)) <= line
059: .getEndIndex()) {
060: Float size = (Float) line
061: .getAttribute(TextAttribute.SIZE);
062: if (maxFontSize.compareTo(size) < 0) {
063: maxFontSize = size;
064: }
065: line.setIndex(runLimit);
066: }
067:
068: return maxFontSize.intValue();
069: }
070: };
071:
072: /**
073: *
074: */
075: public static final MaxFontSizeFinder DEFAULT_MAX_FONT_FINDER = new MaxFontSizeFinder() {
076: /**
077: *
078: */
079: public int findMaxFontSize(AttributedCharacterIterator line,
080: int defaultFontSize) {
081: return defaultFontSize;
082: }
083: };
084:
085: /**
086: *
087: */
088: public static MaxFontSizeFinder getInstance(boolean isStyledText) {
089: if (isStyledText) {
090: return MaxFontSizeFinder.STYLED_TEXT_MAX_FONT_FINDER;
091: }
092: return MaxFontSizeFinder.DEFAULT_MAX_FONT_FINDER;
093: }
094:
095: /**
096: *
097: */
098: public abstract int findMaxFontSize(
099: AttributedCharacterIterator line, int defaultFontSize);
100: }
|