1 /*
2  * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * This code is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License version 2 only, as
7  * published by the Free Software Foundation.  Oracle designates this
8  * particular file as subject to the "Classpath" exception as provided
9  * by Oracle in the LICENSE file that accompanied this code.
10  *
11  * This code is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14  * version 2 for more details (a copy is included in the LICENSE file that
15  * accompanied this code).
16  *
17  * You should have received a copy of the GNU General Public License version
18  * 2 along with this work; if not, write to the Free Software Foundation,
19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20  *
21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22  * or visit www.oracle.com if you need additional information or have any
23  * questions.
24  */
25 
26 package sun.java2d.pipe.hw;
27 
28 import java.awt.Graphics;
29 import java.awt.Graphics2D;
30 import java.awt.GraphicsConfiguration;
31 import sun.awt.image.SunVolatileImage;
32 import static sun.java2d.pipe.hw.AccelSurface.*;
33 
34 /**
35  * This is an image with forced type of the accelerated surface.
36  */
37 public class AccelTypedVolatileImage extends SunVolatileImage {
38 
39     /**
40      * Creates a volatile image with specified type of accelerated surface.
41      *
42      * @param graphicsConfig a GraphicsConfiguration for which this image should
43      *        be created.
44      * @param width width
45      * @param height width
46      * @param transparency type of {@link java.awt.Transparency transparency}
47      *        requested for the image
48      * @param accType type of the desired accelerated surface as defined in
49      *        AccelSurface interface
50      * @see sun.java2d.pipe.hw.AccelSurface
51      */
AccelTypedVolatileImage(GraphicsConfiguration graphicsConfig, int width, int height, int transparency, int accType)52     public AccelTypedVolatileImage(GraphicsConfiguration graphicsConfig,
53                                    int width, int height, int transparency,
54                                    int accType)
55     {
56         super(null, graphicsConfig, width, height, null, transparency,
57               null, accType);
58     }
59 
60     /**
61      * {@inheritDoc}
62      *
63      * This method will throw {@code UnsupportedOperationException} if it this
64      * image's destination surface can not be rendered to.
65      */
66     @Override
createGraphics()67     public Graphics2D createGraphics() {
68         if (getForcedAccelSurfaceType() == TEXTURE) {
69             throw new UnsupportedOperationException("Can't render " +
70                                                     "to a non-RT Texture");
71         }
72         return super.createGraphics();
73     }
74 }
75