19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * this work for additional information regarding copyright ownership. 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (the "License"); you may not use this file except in compliance with 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the License. You may obtain a copy of the License at 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @author Oleg V. Khaschansky 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @version $Revision$ 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage java.awt; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.awt.image.BufferedImage; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.Locale; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport org.apache.harmony.awt.ContextStorage; 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport org.apache.harmony.awt.gl.CommonGraphics2DFactory; 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The GraphicsEnvironment class defines a collection of GraphicsDevice objects 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and Font objects which are available for Java application on current 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * platform. 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @since Android 1.0 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic abstract class GraphicsEnvironment { 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Constructor could not be used directly and should be obtained in extended 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * classes. 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected GraphicsEnvironment() { 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Gets the local GraphicsEnvironment. 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the local GraphicsEnvironment. 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static GraphicsEnvironment getLocalGraphicsEnvironment() { 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized (ContextStorage.getContextLock()) { 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (ContextStorage.getGraphicsEnvironment() == null) { 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (isHeadless()) { 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ContextStorage.setGraphicsEnvironment(new HeadlessGraphicsEnvironment()); 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CommonGraphics2DFactory g2df = (CommonGraphics2DFactory)Toolkit 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project .getDefaultToolkit().getGraphicsFactory(); 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ContextStorage.setGraphicsEnvironment(g2df 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project .createGraphicsEnvironment(ContextStorage.getWindowFactory())); 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ContextStorage.getGraphicsEnvironment(); 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns whether or not a display, keyboard, and mouse are supported in 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * this graphics environment. 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return true, if HeadlessException will be thrown from areas of the 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * graphics environment that are dependent on a display, keyboard, 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or mouse, false otherwise. 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean isHeadlessInstance() { 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Checks whether or not a display, keyboard, and mouse are supported in 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * this environment. 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return true, if a HeadlessException is thrown from areas of the Toolkit 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and GraphicsEnvironment that are dependent on a display, 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * keyboard, or mouse, false otherwise. 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static boolean isHeadless() { 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "true".equals(System.getProperty("java.awt.headless")); 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Gets the maximum bounds of system centered windows. 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the maximum bounds of system centered windows. 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @throws HeadlessException 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * if isHeadless() method returns true. 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Rectangle getMaximumWindowBounds() throws HeadlessException { 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return getDefaultScreenDevice().getDefaultConfiguration().getBounds(); 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Gets the Point which should defines the center of system window. 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the Point where the system window should be centered. 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @throws HeadlessException 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * if isHeadless() method returns true. 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Point getCenterPoint() throws HeadlessException { 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Rectangle mwb = getMaximumWindowBounds(); 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new Point(mwb.width >> 1, mwb.height >> 1); 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Indicates that the primary font should be used. Primary font is specified 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * by initial system locale or default encoding). 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void preferLocaleFonts() { 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Note: API specification says following: 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // "The actual change in font rendering behavior resulting 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // from a call to this method is implementation dependent; 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // it may have no effect at all." So, doing nothing is an 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // acceptable behavior for this method. 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // For now FontManager uses 1.4 font.properties scheme for font mapping, 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // so 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // this method doesn't make any sense. The implementation of this method 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // which will influence font mapping is postponed until 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // 1.5 mapping scheme not implemented. 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // todo - Implement non-default behavior with 1.5 font mapping scheme 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Indicates that a proportional preference of the font should be used. 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void preferProportionalFonts() { 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Note: API specification says following: 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // "The actual change in font rendering behavior resulting 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // from a call to this method is implementation dependent; 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // it may have no effect at all." So, doing nothing is an 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // acceptable behavior for this method. 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // For now FontManager uses 1.4 font.properties scheme for font mapping, 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // so 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // this method doesn't make any sense. The implementation of this method 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // which will influence font mapping is postponed until 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // 1.5 mapping scheme not implemented. 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // todo - Implement non-default behavior with 1.5 font mapping scheme 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Creates the Graphics2D object for rendering to the specified 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * BufferedImage. 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param bufferedImage 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the BufferedImage object. 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the Graphics2D object which allows to render to the specified 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * BufferedImage. 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract Graphics2D createGraphics(BufferedImage bufferedImage); 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Gets the array of all available fonts instances in this 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * GraphicsEnviroments. 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the array of all available fonts instances in this 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * GraphicsEnviroments. 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract Font[] getAllFonts(); 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Gets the array of all available font family names. 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the array of all available font family names. 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract String[] getAvailableFontFamilyNames(); 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Gets the array of all available font family names for the specified 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * locale. 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param locale 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the Locale object which represents geographical region. The 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * default locale is used if locale is null. 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the array of available font family names for the specified 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * locale. 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract String[] getAvailableFontFamilyNames(Locale locale); 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Gets the default screen device as GraphicDevice object. 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the GraphicDevice object which represents default screen device. 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @throws HeadlessException 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * if isHeadless() returns true. 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract GraphicsDevice getDefaultScreenDevice() throws HeadlessException; 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Gets an array of all available screen devices. 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return the array of GraphicsDevice objects which represents all 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * available screen devices. 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @throws HeadlessException 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * if isHeadless() returns true. 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract GraphicsDevice[] getScreenDevices() throws HeadlessException; 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 213