159 lines · 5.1 KB · Java
RawDownload
/* * Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.  Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ package sun.java2d; import java.awt.Rectangle;import java.awt.image.Raster;import java.awt.image.ColorModel;import java.awt.GraphicsConfiguration; import sun.java2d.StateTrackable.State;import sun.java2d.loops.SurfaceType;import sun.java2d.pipe.NullPipe; /** * This class provides an empty implementation of the SurfaceData * abstract superclass.  All operations on it translate into NOP * or harmless operations. */public class NullSurfaceData extends SurfaceData {    public static final SurfaceData theInstance = new NullSurfaceData();     private NullSurfaceData() {        super(State.IMMUTABLE, SurfaceType.Any, ColorModel.getRGBdefault());    }     /**     * Sets this SurfaceData object to the invalid state.  All Graphics     * objects must get a new SurfaceData object via the refresh method     * and revalidate their pipelines before continuing.     */    public void invalidate() {    }     /**     * Return a new SurfaceData object that represents the current state     * of the destination that this SurfaceData object describes.     * This method is typically called when the SurfaceData is invalidated.     */    public SurfaceData getReplacement() {        return this;    }     private final static NullPipe nullpipe = new NullPipe();     public void validatePipe(SunGraphics2D sg2d) {        sg2d.drawpipe = nullpipe;        sg2d.fillpipe = nullpipe;        sg2d.shapepipe = nullpipe;        sg2d.textpipe = nullpipe;        sg2d.imagepipe = nullpipe;    }     public GraphicsConfiguration getDeviceConfiguration() {        return null;    }     /**     * Return a readable Raster which contains the pixels for the     * specified rectangular region of the destination surface.     * The coordinate origin of the returned Raster is the same as     * the device space origin of the destination surface.     * In some cases the returned Raster might also be writeable.     * In most cases, the returned Raster might contain more pixels     * than requested.     *     * @see useTightBBoxes     */    public Raster getRaster(int x, int y, int w, int h) {        throw new InvalidPipeException("should be NOP");    }     /**     * Does the pixel accessibility of the destination surface     * suggest that rendering algorithms might want to take     * extra time to calculate a more accurate bounding box for     * the operation being performed?     * The typical case when this will be true is when a copy of     * the pixels has to be made when doing a getRaster.  The     * fewer pixels copied, the faster the operation will go.     *     * @see getRaster     */    public boolean useTightBBoxes() {        return false;    }     /**     * Returns the pixel data for the specified Argb value packed     * into an integer for easy storage and conveyance.     */    public int pixelFor(int rgb) {        return rgb;    }     /**     * Returns the Argb representation for the specified integer value     * which is packed in the format of the associated ColorModel.     */    public int rgbFor(int pixel) {        return pixel;    }     /**     * Returns the bounds of the destination surface.     */    public Rectangle getBounds() {        return new Rectangle();    }     /**     * Performs Security Permissions checks to see if a Custom     * Composite object should be allowed access to the pixels     * of this surface.     */    protected void checkCustomComposite() {        return;    }     /**     * Performs a copyarea within this surface.  Returns     * false if there is no algorithm to perform the copyarea     * given the current settings of the SunGraphics2D.     */    public boolean copyArea(SunGraphics2D sg2d,                            int x, int y, int w, int h, int dx, int dy)    {        return true;    }     /**     * Returns destination Image associated with this SurfaceData (null)     */    public Object getDestination() {        return null;    }}