    001/* ===================================================
    002 * JFreeSVG : an SVG library for the Java(tm) platform
    003 * ===================================================
    004 *
    005 * (C)opyright 2013, 2014, by Object Refinery Limited.  All rights reserved.
    006 *
    007 * Project Info:  http://www.jfree.org/jfreesvg/index.html
    008 *
    009 * This program is free software: you can redistribute it and/or modify
    010 * it under the terms of the GNU General Public License as published by
    011 * the Free Software Foundation, either version 3 of the License, or
    012 * (at your option) any later version.
    013 *
    014 * This program is distributed in the hope that it will be useful,
    015 * but WITHOUT ANY WARRANTY; without even the implied warranty of
    016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    017 * GNU General Public License for more details.
    018 *
    019 * You should have received a copy of the GNU General Public License
    020 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
    021 *
    022 * [Oracle and Java are registered trademarks of Oracle and/or its affiliates.
    023 * Other names may be trademarks of their respective owners.]
    024 *
    025 * If you do not wish to be bound by the terms of the GPL, an alternative
    026 * commercial license can be purchased.  For details, please see visit the
    027 * JFreeSVG home page:
    028 *
    029 * http://www.jfree.org/jfreesvg
    030 *
    031 */
    032
    033package org.jfree.graphics2d.svg;
    034
    035import java.awt.GraphicsConfiguration;
    036import java.awt.GraphicsDevice;
    037import java.awt.Rectangle;
    038import java.awt.Transparency;
    039import java.awt.geom.AffineTransform;
    040import java.awt.image.ColorModel;
    041import java.awt.image.DirectColorModel;
    042
    043/**
    044 * A graphics configuration for the {@link SVGGraphics2D} class.
    045 */
    046public class SVGGraphicsConfiguration extends GraphicsConfiguration {
    047
    048    private GraphicsDevice device;
    049
    050    private int width, height;
    051
    052    /**
    053     * Creates a new instance.
    054     *
    055     * @param width  the width of the bounds.
    056     * @param height  the height of the bounds.
    057     */
    058    public SVGGraphicsConfiguration(int width, int height) {
    059      super();
    060      this.width = width;
    061      this.height = height;
    062    }
    063
    064    /**
    065     * Returns the graphics device that this configuration is associated with.
    066     *
    067     * @return The graphics device (never <code>null</code>).
    068     */
    069    @Override
    070    public GraphicsDevice getDevice() {
    071        if (this.device == null) {
    072            this.device = new SVGGraphicsDevice("JFreeSVG-GraphicsDevice",
    073                    this);
    074        }
    075        return this.device;
    076    }
    077
    078    /**
    079     * Returns the color model for this configuration.
    080     *
    081     * @return The color model.
    082     */
    083    @Override
    084    public ColorModel getColorModel() {
    085        return getColorModel(Transparency.TRANSLUCENT);
    086    }
    087
    088    /**
    089     * Returns the color model for the specified transparency type, or
    090     * <code>null</code>.
    091     *
    092     * @param transparency  the transparency type.
    093     *
    094     * @return A color model (possibly <code>null</code>).
    095     */
    096    @Override
    097    public ColorModel getColorModel(int transparency) {
    098        if (transparency == Transparency.TRANSLUCENT) {
    099            return ColorModel.getRGBdefault();
    100        } else if (transparency == Transparency.OPAQUE) {
    101            return new DirectColorModel(32, 0x00ff0000, 0x0000ff00, 0x000000ff);
    102        } else {
    103            return null;
    104        }
    105    }
    106
    107    /**
    108     * Returns the default transform.
    109     *
    110     * @return The default transform.
    111     */
    112    @Override
    113    public AffineTransform getDefaultTransform() {
    114        return new AffineTransform();
    115    }
    116
    117    /**
    118     * Returns the normalizing transform.
    119     *
    120     * @return The normalizing transform.
    121     */
    122    @Override
    123    public AffineTransform getNormalizingTransform() {
    124        return new AffineTransform();
    125    }
    126
    127    /**
    128     * Returns the bounds for this configuration.
    129     *
    130     * @return The bounds.
    131     */
    132    @Override
    133    public Rectangle getBounds() {
    134        return new Rectangle(this.width, this.height);
    135    }
    136
    137}