add --shared
[pylucene.git] / lucene-java-3.4.0 / lucene / contrib / highlighter / src / java / org / apache / lucene / search / highlight / SpanGradientFormatter.java
1 package org.apache.lucene.search.highlight;
2 /**
3  * Licensed to the Apache Software Foundation (ASF) under one or more
4  * contributor license agreements.  See the NOTICE file distributed with
5  * this work for additional information regarding copyright ownership.
6  * The ASF licenses this file to You under the Apache License, Version 2.0
7  * (the "License"); you may not use this file except in compliance with
8  * the License.  You may obtain a copy of the License at
9  *
10  *     http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18
19 /**
20  * Formats text with different color intensity depending on the score of the
21  * term using the span tag.  GradientFormatter uses a bgcolor argument to the font tag which
22  * doesn't work in Mozilla, thus this class.
23  *
24  * @see GradientFormatter
25  *
26  */
27
28 public class SpanGradientFormatter
29         extends GradientFormatter
30 {
31         public SpanGradientFormatter(float maxScore, String minForegroundColor,
32             String maxForegroundColor, String minBackgroundColor,
33             String maxBackgroundColor)
34     {
35                 super( maxScore, minForegroundColor,
36                            maxForegroundColor, minBackgroundColor,
37                            maxBackgroundColor);
38         }
39         
40
41         
42         @Override
43         public String highlightTerm(String originalText, TokenGroup tokenGroup)
44     {
45         if (tokenGroup.getTotalScore() == 0)
46             return originalText;
47         float score = tokenGroup.getTotalScore();
48         if (score == 0)
49         {
50             return originalText;
51         }
52
53                 // try to size sb correctly
54         StringBuilder sb = new StringBuilder( originalText.length() + EXTRA);
55                 
56                 sb.append("<span style=\""); 
57                 if (highlightForeground) 
58                 {
59                         sb.append("color: "); 
60                         sb.append(getForegroundColorString(score)); 
61                         sb.append("; "); 
62                 }
63                 if (highlightBackground)
64                 {
65                         sb.append("background: ");
66                         sb.append(getBackgroundColorString(score));
67                         sb.append("; ");
68                 }
69                 sb.append("\">");
70                 sb.append(originalText);
71                 sb.append("</span>");
72         return sb.toString();
73     }
74
75         // guess how much extra text we'll add to the text we're highlighting to try to avoid a  StringBuilder resize
76         private static final String TEMPLATE = "<span style=\"background: #EEEEEE; color: #000000;\">...</span>";
77         private static final int EXTRA = TEMPLATE.length();     
78 }