1/* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17/** 18 * @author Alexey A. Petrenko 19 * @version $Revision$ 20 */ 21 22package java.awt; 23 24import org.apache.harmony.awt.internal.nls.Messages; 25 26/** 27 * The GraphicsDevice class describes the graphics devices (such as screens or 28 * printers) which are available in a particular graphics environment. Many 29 * GraphicsDevice instances can be associated with a single GraphicsEnvironment. 30 * Each GraphicsDevice has one or more GraphicsConfiguration objects which 31 * specify the different configurations and modes of GraphicsDevice. 32 * 33 * @since Android 1.0 34 */ 35public abstract class GraphicsDevice { 36 37 /** 38 * The display mode. 39 */ 40 private DisplayMode displayMode; 41 42 // ???AWT 43 // private Window fullScreenWindow = null; 44 45 /** 46 * The Constant TYPE_IMAGE_BUFFER indicates a image buffer device. 47 */ 48 49 public static final int TYPE_IMAGE_BUFFER = 2; 50 51 /** 52 * The Constant TYPE_PRINTER indicates a printer device. 53 */ 54 public static final int TYPE_PRINTER = 1; 55 56 /** 57 * The Constant TYPE_RASTER_SCREEN indicates a raster screen device. 58 */ 59 public static final int TYPE_RASTER_SCREEN = 0; 60 61 /** 62 * Constructor is not to be used directly as this class is abstract. 63 */ 64 protected GraphicsDevice() { 65 displayMode = new DisplayMode(0, 0, DisplayMode.BIT_DEPTH_MULTI, 66 DisplayMode.REFRESH_RATE_UNKNOWN); 67 } 68 69 /** 70 * Returns an array of GraphicsConfiguration objects associated with the 71 * GraphicsDevice. 72 * 73 * @return an array of GraphicsConfiguration objects associated with the 74 * GraphicsDevice. 75 */ 76 public abstract GraphicsConfiguration[] getConfigurations(); 77 78 /** 79 * Gets the default configuration for the GraphicsDevice. 80 * 81 * @return the default GraphicsConfiguration object for the GraphicsDevice. 82 */ 83 public abstract GraphicsConfiguration getDefaultConfiguration(); 84 85 /** 86 * Gets the String identifier which associated with the GraphicsDevice in 87 * the GraphicsEnvironment. 88 * 89 * @return the String identifier of the GraphicsDevice in the 90 * GraphicsEnvironment. 91 */ 92 public abstract String getIDstring(); 93 94 /** 95 * Gets the type of this GraphicsDevice: TYPE_IMAGE_BUFFER, TYPE_PRINTER or 96 * TYPE_RASTER_SCREEN. 97 * 98 * @return the type of this GraphicsDevice: TYPE_IMAGE_BUFFER, TYPE_PRINTER 99 * or TYPE_RASTER_SCREEN. 100 */ 101 public abstract int getType(); 102 103 /** 104 * Returns the number of bytes available in accelerated memory on this 105 * device. 106 * 107 * @return the number of bytes available accelerated memory. 108 */ 109 public int getAvailableAcceleratedMemory() { 110 return 0; 111 } 112 113 /* 114 * ???AWT public GraphicsConfiguration 115 * getBestConfiguration(GraphicsConfigTemplate gct) { return 116 * gct.getBestConfiguration(getConfigurations()); } 117 */ 118 119 /** 120 * Gets the current display mode of the GraphicsDevice. 121 * 122 * @return the current display mode of the GraphicsDevice. 123 */ 124 public DisplayMode getDisplayMode() { 125 return displayMode; 126 } 127 128 /** 129 * Gets an array of display modes available in this GraphicsDevice. 130 * 131 * @return an array of display modes available in this GraphicsDevice. 132 */ 133 public DisplayMode[] getDisplayModes() { 134 DisplayMode[] dms = { 135 displayMode 136 }; 137 return dms; 138 } 139 140 /* 141 * ???AWT public Window getFullScreenWindow() { return fullScreenWindow; } 142 */ 143 144 /** 145 * Returns true if this GraphicsDevice supports low-level display changes. 146 * 147 * @return true, if this GraphicsDevice supports low-level display changes; 148 * false otherwise. 149 */ 150 public boolean isDisplayChangeSupported() { 151 return false; 152 } 153 154 /** 155 * Returns true if this GraphicsDevice supports full screen mode. 156 * 157 * @return true, if this GraphicsDevice supports full screen mode, false 158 * otherwise. 159 */ 160 public boolean isFullScreenSupported() { 161 return false; 162 } 163 164 // an array of display modes available in this GraphicsDevice. 165 166 /** 167 * Sets the display mode of this GraphicsDevice. 168 * 169 * @param dm 170 * the new display mode of this GraphicsDevice. 171 */ 172 public void setDisplayMode(DisplayMode dm) { 173 if (!isDisplayChangeSupported()) { 174 // awt.122=Does not support display mode changes 175 throw new UnsupportedOperationException(Messages.getString("awt.122")); //$NON-NLS-1$ 176 } 177 178 DisplayMode[] dms = getDisplayModes(); 179 for (DisplayMode element : dms) { 180 if (element.equals(dm)) { 181 displayMode = dm; 182 return; 183 } 184 } 185 // awt.123=Unsupported display mode: {0} 186 throw new IllegalArgumentException(Messages.getString("awt.123", dm)); //$NON-NLS-1$ 187 } 188 189 /* 190 * ???AWT public void setFullScreenWindow(Window w) { if (w == null) { 191 * fullScreenWindow = null; return; } fullScreenWindow = w; if 192 * (isFullScreenSupported()) { w.enableInputMethods(false); } else { 193 * w.setSize(displayMode.getWidth(), displayMode.getHeight()); 194 * w.setLocation(0, 0); } w.setVisible(true); w.setAlwaysOnTop(true); } 195 */ 196} 197