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