001: /**
002: * ===========================================
003: * JFreeReport : a free Java reporting library
004: * ===========================================
005: *
006: * Project Info: http://reporting.pentaho.org/
007: *
008: * (C) Copyright 2001-2007, by Object Refinery Ltd, Pentaho Corporation and Contributors.
009: *
010: * This library is free software; you can redistribute it and/or modify it under the terms
011: * of the GNU Lesser General Public License as published by the Free Software Foundation;
012: * either 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, but WITHOUT ANY WARRANTY;
015: * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
016: * See the GNU Lesser General Public License for more details.
017: *
018: * You should have received a copy of the GNU Lesser General Public License along with this
019: * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
020: * Boston, MA 02111-1307, USA.
021: *
022: * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
023: * in the United States and other countries.]
024: *
025: * ------------
026: * OutputProcessorFeature.java
027: * ------------
028: * (C) Copyright 2001-2007, by Object Refinery Ltd, Pentaho Corporation and Contributors.
029: */package org.jfree.report.layout.output;
030:
031: import java.io.Serializable;
032:
033: /**
034: * Creation-Date: 14.12.2005, 13:47:47
035: *
036: * @author Thomas Morgner
037: */
038: public abstract class OutputProcessorFeature implements Serializable {
039: public static final class BooleanOutputProcessorFeature extends
040: OutputProcessorFeature {
041: public BooleanOutputProcessorFeature(final String name) {
042: super (name);
043: }
044: }
045:
046: public static final class NumericOutputProcessorFeature extends
047: OutputProcessorFeature {
048: public NumericOutputProcessorFeature(final String name) {
049: super (name);
050: }
051: }
052:
053: public static final BooleanOutputProcessorFeature UNALIGNED_PAGEBANDS = new BooleanOutputProcessorFeature(
054: "unaligned-pagebands");
055:
056: public static final BooleanOutputProcessorFeature PAGEBREAKS = new BooleanOutputProcessorFeature(
057: "page-breaks");
058:
059: public static final BooleanOutputProcessorFeature ITERATIVE_RENDERING = new BooleanOutputProcessorFeature(
060: "iterative-rendering");
061:
062: public static final BooleanOutputProcessorFeature FAST_FONTRENDERING = new BooleanOutputProcessorFeature(
063: "fast-font-rendering");
064:
065: public static final BooleanOutputProcessorFeature SPACING_SUPPORTED = new BooleanOutputProcessorFeature(
066: "spacing-supported");
067:
068: /**
069: * Defines, whether the output target allows the use of water-mark sections. All table-exports and the plain-text
070: * export will ignore the watermark section.
071: */
072: public static final BooleanOutputProcessorFeature WATERMARK_SECTION = new BooleanOutputProcessorFeature(
073: "watermark-section");
074:
075: /**
076: * Defines, whether the output target allows the generation of page-sections. Page-sections can be surpressed for
077: * table-targets.
078: */
079: public static final BooleanOutputProcessorFeature PAGE_SECTIONS = new BooleanOutputProcessorFeature(
080: "page-sections");
081:
082: /**
083: * Defines, whether the output target allows background images. The 'excel' export and the plain-text export are known
084: * to ignore background images.
085: */
086: public static final BooleanOutputProcessorFeature BACKGROUND_IMAGE = new BooleanOutputProcessorFeature(
087: "background-image");
088:
089: /**
090: * Defines, whether the output uses fractional metrics. Integer metrics might be faster, but they are also
091: * inaccurate.
092: */
093: public static final BooleanOutputProcessorFeature FONT_FRACTIONAL_METRICS = new BooleanOutputProcessorFeature(
094: "font-fractional-metrics");
095:
096: /**
097: * Defines, whether the output target allows the configuration of anti-aliasing of fonts.
098: * <p/>
099: * The Graphics2D is one of the targets that support this feature, while the PDF-export ignores aliasing requests.
100: */
101: public static final BooleanOutputProcessorFeature FONT_SUPPORTS_ANTI_ALIASING = new BooleanOutputProcessorFeature(
102: "font-anti-aliasing");
103:
104: /**
105: * Defines, whether the output system will support paddings. If this feature indicator is set, all the paddings will
106: * automatically compute to zero. The output targets will not generate paddings, even if the report-element explicitly
107: * defined them.
108: */
109: public static final BooleanOutputProcessorFeature DISABLE_PADDING = new BooleanOutputProcessorFeature(
110: "disable-padding");
111:
112: /**
113: * Defines, that the output system will try to emulate paddings. This is a technical key indicating that the generated
114: * output-format is not capable to express paddings. The table-export will therefore generate artifical boundaries to
115: * generate the visual effect of the defined paddings.
116: */
117: public static final BooleanOutputProcessorFeature EMULATE_PADDING = new BooleanOutputProcessorFeature(
118: "emulate-padding");
119:
120: /**
121: * Defines the minimum size for the font smoothing. Fonts below that size will not have aliasing enabled, as this may
122: * render the font unreadable.
123: */
124: public static final NumericOutputProcessorFeature FONT_SMOOTH_THRESHOLD = new NumericOutputProcessorFeature(
125: "font-smooth-threshold");
126:
127: /**
128: * Defines the device resolution in Pixel-per-inch. This is a hint to make scaling of images more effective. LibLayout
129: * still uses the default 72dpi resolution defined by Java for all computations.
130: */
131: public static final NumericOutputProcessorFeature DEVICE_RESOLUTION = new NumericOutputProcessorFeature(
132: "device-resolution");
133:
134: public static final NumericOutputProcessorFeature DEFAULT_FONT_SIZE = new NumericOutputProcessorFeature(
135: "default-font-size");
136:
137: public static final BooleanOutputProcessorFeature IMAGE_RESOLUTION_MAPPING = new BooleanOutputProcessorFeature(
138: "image-resolution-mapping");
139:
140: public static final BooleanOutputProcessorFeature PREFER_NATIVE_SCALING = new BooleanOutputProcessorFeature(
141: "prefer-native-scaling");
142:
143: /**
144: * If this feature is active, the line-height of any text will be based on the common lineheight, and not on the
145: * maximum lineheight.
146: */
147: public static final BooleanOutputProcessorFeature LEGACY_LINEHEIGHT_CALC = new BooleanOutputProcessorFeature(
148: "legacy-lineheight-calculation");
149:
150: public static final BooleanOutputProcessorFeature EMBED_ALL_FONTS = new BooleanOutputProcessorFeature(
151: "embed-all-fonts");
152:
153: private String name;
154:
155: protected OutputProcessorFeature(final String name) {
156: if (name == null) {
157: throw new NullPointerException();
158: }
159: this .name = name;
160: }
161:
162: public boolean equals(final Object o) {
163: if (this == o) {
164: return true;
165: }
166: if (o == null || getClass() != o.getClass()) {
167: return false;
168: }
169:
170: final OutputProcessorFeature that = (OutputProcessorFeature) o;
171:
172: return name.equals(that.name);
173: }
174:
175: public int hashCode() {
176: return name.hashCode();
177: }
178: }
|