1 /*
2 * JasperReports - Free Java Reporting Library.
3 * Copyright (C) 2001 - 2019 TIBCO Software Inc. All rights reserved.
4 * http://www.jaspersoft.com
5 *
6 * Unless you have purchased a commercial license agreement from Jaspersoft,
7 * the following license terms apply:
8 *
9 * This program is part of JasperReports.
10 *
11 * JasperReports is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License as published by
13 * the Free Software Foundation, either version 3 of the License, or
14 * (at your option) any later version.
15 *
16 * JasperReports is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU Lesser General Public License for more details.
20 *
21 * You should have received a copy of the GNU Lesser General Public License
22 * along with JasperReports. If not, see <http://www.gnu.org/licenses/>.
23 */
24 package net.sf.jasperreports.engine.util;
25
26 import java.awt.font.TextAttribute;
27 import java.text.AttributedCharacterIterator;
28
29
30 /**
31 * @author Teodor Danciu (teodord@users.sourceforge.net)
32 */
33 public abstract class MaxFontSizeFinder//FIXMETAB deprecate?
34 {
35
36 /**
37 *
38 */
39 public static final MaxFontSizeFinder STYLED_TEXT_MAX_FONT_FINDER =
40 new MaxFontSizeFinder()
41 {
42 /**
43 *
44 */
45 private final Float ZERO = 0f;
46
47 @Override
48 public float findMaxFontSize(AttributedCharacterIterator line, float defaultFontSize)
49 {
50 line.setIndex(0);
51 Float maxFontSize = ZERO;
52 int runLimit = 0;
53
54 while(runLimit < line.getEndIndex() && (runLimit = line.getRunLimit(TextAttribute.SIZE)) <= line.getEndIndex())
55 {
56 Float size = (Float)line.getAttribute(TextAttribute.SIZE);
57 if (maxFontSize.compareTo(size) < 0)
58 {
59 maxFontSize = size;
60 }
61 line.setIndex(runLimit);
62 }
63
64 return maxFontSize;
65 }
66
67 /**
68 * @deprecated Replaced by {@link #findMaxFontSize(AttributedCharacterIterator, float)}.
69 */
70 @Override
71 public int findMaxFontSize(AttributedCharacterIterator line, int defaultFontSize)
72 {
73 return (int)findMaxFontSize(line, (float)defaultFontSize);
74 }
75 };
76
77
78 /**
79 *
80 */
81 public static final MaxFontSizeFinder DEFAULT_MAX_FONT_FINDER =
82 new MaxFontSizeFinder()
83 {
84 @Override
85 public float findMaxFontSize(AttributedCharacterIterator line, float defaultFontSize)
86 {
87 return defaultFontSize;
88 }
89
90 /**
91 * @deprecated Replaced by {@link #findMaxFontSize(AttributedCharacterIterator, float)}.
92 */
93 @Override
94 public int findMaxFontSize(AttributedCharacterIterator line, int defaultFontSize)
95 {
96 return (int)findMaxFontSize(line, (float)defaultFontSize);
97 }
98 };
99
100
101 /**
102 *
103 */
104 public static MaxFontSizeFinder getInstance(boolean isStyledText)
105 {
106 if (isStyledText)
107 {
108 return MaxFontSizeFinder.STYLED_TEXT_MAX_FONT_FINDER;
109 }
110 return MaxFontSizeFinder.DEFAULT_MAX_FONT_FINDER;
111 }
112
113
114 /**
115 *
116 */
117 public abstract float findMaxFontSize(AttributedCharacterIterator line, float defaultFontSize);
118
119
120 /**
121 * @deprecated Replaced by {@link #findMaxFontSize(AttributedCharacterIterator, float)}.
122 */
123 public abstract int findMaxFontSize(AttributedCharacterIterator line, int defaultFontSize);
124 }
125