KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > jasperreports > engine > util > MaxFontSizeFinder


1 /*
2  * ============================================================================
3  * GNU Lesser General Public License
4  * ============================================================================
5  *
6  * JasperReports - Free Java report-generating library.
7  * Copyright (C) 2001-2006 JasperSoft Corporation http://www.jaspersoft.com
8  *
9  * This library is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU Lesser General Public
11  * License as published by the Free Software Foundation; either
12  * version 2.1 of the License, or (at your option) any later version.
13  *
14  * This library is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17  * Lesser General Public License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public
20  * License along with this library; if not, write to the Free Software
21  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
22  *
23  * JasperSoft Corporation
24  * 303 Second Street, Suite 450 North
25  * San Francisco, CA 94107
26  * http://www.jaspersoft.com
27  */

28 package net.sf.jasperreports.engine.util;
29
30 import java.awt.font.TextAttribute JavaDoc;
31 import java.text.AttributedCharacterIterator JavaDoc;
32
33
34 /**
35  * @author Teodor Danciu (teodord@users.sourceforge.net)
36  * @version $Id: MaxFontSizeFinder.java 1229 2006-04-19 13:27:35 +0300 (Wed, 19 Apr 2006) teodord $
37  */

38 public abstract class MaxFontSizeFinder
39 {
40     
41     /**
42      *
43      */

44     public static final MaxFontSizeFinder STYLED_TEXT_MAX_FONT_FINDER =
45         new MaxFontSizeFinder()
46         {
47             /**
48              *
49              */

50             private final Float JavaDoc ZERO = new Float JavaDoc(0);
51             
52             /**
53              *
54              */

55             public int findMaxFontSize(AttributedCharacterIterator JavaDoc line, int defaultFontSize)
56             {
57                 line.setIndex(0);
58                 Float JavaDoc maxFontSize = ZERO;
59                 int runLimit = 0;
60     
61                 while(runLimit < line.getEndIndex() && (runLimit = line.getRunLimit(TextAttribute.SIZE)) <= line.getEndIndex())
62                 {
63                     Float JavaDoc size = (Float JavaDoc)line.getAttribute(TextAttribute.SIZE);
64                     if (maxFontSize.compareTo(size) < 0)
65                     {
66                         maxFontSize = size;
67                     }
68                     line.setIndex(runLimit);
69                 }
70     
71                 return maxFontSize.intValue();
72             }
73         };
74     
75     
76     /**
77      *
78      */

79     public static final MaxFontSizeFinder DEFAULT_MAX_FONT_FINDER =
80         new MaxFontSizeFinder()
81         {
82             /**
83              *
84              */

85             public int findMaxFontSize(AttributedCharacterIterator JavaDoc line, int defaultFontSize)
86             {
87                 return defaultFontSize;
88             }
89         };
90         
91     
92     /**
93      *
94      */

95     public static MaxFontSizeFinder getInstance(boolean isStyledText)
96     {
97         if (isStyledText)
98         {
99             return MaxFontSizeFinder.STYLED_TEXT_MAX_FONT_FINDER;
100         }
101         return MaxFontSizeFinder.DEFAULT_MAX_FONT_FINDER;
102     }
103
104         
105     /**
106      *
107      */

108     public abstract int findMaxFontSize(AttributedCharacterIterator JavaDoc line, int defaultFontSize);
109 }
110
Popular Tags