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: * ImageElementFactory.java
027: * ------------
028: * (C) Copyright 2001-2007, by Object Refinery Ltd, Pentaho Corporation and Contributors.
029: */package org.jfree.report.elementfactory;
030:
031: import org.jfree.report.style.ElementStyleKeys;
032: import org.jfree.report.style.ElementStyleSheet;
033:
034: /**
035: * An ElementFactory that can be used to create ImageElements. This is the base class for
036: * all image element factories.
037: *
038: * @author Thomas Morgner
039: */
040: public abstract class ImageElementFactory extends ElementFactory {
041: /**
042: * The image element scaling property.
043: */
044: private Boolean scale;
045: /**
046: * The Keep-Aspect-Ratio property for the generated image element.
047: */
048: private Boolean keepAspectRatio;
049:
050: /**
051: * DefaultConstructor.
052: */
053: protected ImageElementFactory() {
054: }
055:
056: /**
057: * Returns, whether the image content should be scaled to fit the complete image element
058: * bounds.
059: *
060: * @return the scale flag of the image element.
061: */
062: public Boolean getScale() {
063: return scale;
064: }
065:
066: /**
067: * Defines, whether the image content should be scaled to fit the complete image element
068: * bounds.
069: *
070: * @param scale the scale flag of the image element.
071: */
072: public void setScale(final Boolean scale) {
073: this .scale = scale;
074: }
075:
076: /**
077: * Returns whether the generated image element should preserve the original aspect ratio
078: * of the image content during scaling. This property has no effect if the image content
079: * is not scaled.
080: *
081: * @return the keep aspect ratio flag.
082: */
083: public Boolean getKeepAspectRatio() {
084: return keepAspectRatio;
085: }
086:
087: /**
088: * Defines whether the generated image element should preserve the original aspect ratio
089: * of the image content during scaling. This property has no effect if the image content
090: * is not scaled.
091: *
092: * @param keepAspectRatio whether to keep the aspect ratio of the image content during
093: * the scaling.
094: */
095: public void setKeepAspectRatio(final Boolean keepAspectRatio) {
096: this .keepAspectRatio = keepAspectRatio;
097: }
098:
099: /**
100: * Applies the style definition to the elements stylesheet.
101: *
102: * @param style the element stylesheet which should receive the style definition.
103: */
104: protected void applyStyle(final ElementStyleSheet style) {
105: super.applyStyle(style);
106: style.setStyleProperty(ElementStyleKeys.KEEP_ASPECT_RATIO,
107: getKeepAspectRatio());
108: style.setStyleProperty(ElementStyleKeys.SCALE, getScale());
109: }
110: }
|