diff options
Diffstat (limited to 'awt/java/awt/GraphicsEnvironment.java')
-rw-r--r-- | awt/java/awt/GraphicsEnvironment.java | 212 |
1 files changed, 212 insertions, 0 deletions
diff --git a/awt/java/awt/GraphicsEnvironment.java b/awt/java/awt/GraphicsEnvironment.java new file mode 100644 index 0000000..d527417 --- /dev/null +++ b/awt/java/awt/GraphicsEnvironment.java @@ -0,0 +1,212 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * @author Oleg V. Khaschansky + * @version $Revision$ + */ + +package java.awt; + +import java.awt.image.BufferedImage; +import java.util.Locale; + +import org.apache.harmony.awt.ContextStorage; +import org.apache.harmony.awt.gl.CommonGraphics2DFactory; + +/** + * The GraphicsEnvironment class defines a collection of GraphicsDevice objects + * and Font objects which are available for Java application on current + * platform. + * + * @since Android 1.0 + */ +public abstract class GraphicsEnvironment { + + /** + * Constructor could not be used directly and should be obtained in extended + * classes. + */ + protected GraphicsEnvironment() { + } + + /** + * Gets the local GraphicsEnvironment. + * + * @return the local GraphicsEnvironment. + */ + public static GraphicsEnvironment getLocalGraphicsEnvironment() { + synchronized (ContextStorage.getContextLock()) { + if (ContextStorage.getGraphicsEnvironment() == null) { + if (isHeadless()) { + ContextStorage.setGraphicsEnvironment(new HeadlessGraphicsEnvironment()); + } else { + CommonGraphics2DFactory g2df = (CommonGraphics2DFactory)Toolkit + .getDefaultToolkit().getGraphicsFactory(); + + ContextStorage.setGraphicsEnvironment(g2df + .createGraphicsEnvironment(ContextStorage.getWindowFactory())); + } + } + + return ContextStorage.getGraphicsEnvironment(); + } + } + + /** + * Returns whether or not a display, keyboard, and mouse are supported in + * this graphics environment. + * + * @return true, if HeadlessException will be thrown from areas of the + * graphics environment that are dependent on a display, keyboard, + * or mouse, false otherwise. + */ + public boolean isHeadlessInstance() { + return false; + } + + /** + * Checks whether or not a display, keyboard, and mouse are supported in + * this environment. + * + * @return true, if a HeadlessException is thrown from areas of the Toolkit + * and GraphicsEnvironment that are dependent on a display, + * keyboard, or mouse, false otherwise. + */ + public static boolean isHeadless() { + return "true".equals(System.getProperty("java.awt.headless")); + } + + /** + * Gets the maximum bounds of system centered windows. + * + * @return the maximum bounds of system centered windows. + * @throws HeadlessException + * if isHeadless() method returns true. + */ + public Rectangle getMaximumWindowBounds() throws HeadlessException { + return getDefaultScreenDevice().getDefaultConfiguration().getBounds(); + } + + /** + * Gets the Point which should defines the center of system window. + * + * @return the Point where the system window should be centered. + * @throws HeadlessException + * if isHeadless() method returns true. + */ + public Point getCenterPoint() throws HeadlessException { + Rectangle mwb = getMaximumWindowBounds(); + return new Point(mwb.width >> 1, mwb.height >> 1); + } + + /** + * Indicates that the primary font should be used. Primary font is specified + * by initial system locale or default encoding). + */ + public void preferLocaleFonts() { + // Note: API specification says following: + // "The actual change in font rendering behavior resulting + // from a call to this method is implementation dependent; + // it may have no effect at all." So, doing nothing is an + // acceptable behavior for this method. + + // For now FontManager uses 1.4 font.properties scheme for font mapping, + // so + // this method doesn't make any sense. The implementation of this method + // which will influence font mapping is postponed until + // 1.5 mapping scheme not implemented. + + // todo - Implement non-default behavior with 1.5 font mapping scheme + } + + /** + * Indicates that a proportional preference of the font should be used. + */ + public void preferProportionalFonts() { + // Note: API specification says following: + // "The actual change in font rendering behavior resulting + // from a call to this method is implementation dependent; + // it may have no effect at all." So, doing nothing is an + // acceptable behavior for this method. + + // For now FontManager uses 1.4 font.properties scheme for font mapping, + // so + // this method doesn't make any sense. The implementation of this method + // which will influence font mapping is postponed until + // 1.5 mapping scheme not implemented. + + // todo - Implement non-default behavior with 1.5 font mapping scheme + } + + /** + * Creates the Graphics2D object for rendering to the specified + * BufferedImage. + * + * @param bufferedImage + * the BufferedImage object. + * @return the Graphics2D object which allows to render to the specified + * BufferedImage. + */ + public abstract Graphics2D createGraphics(BufferedImage bufferedImage); + + /** + * Gets the array of all available fonts instances in this + * GraphicsEnviroments. + * + * @return the array of all available fonts instances in this + * GraphicsEnviroments. + */ + public abstract Font[] getAllFonts(); + + /** + * Gets the array of all available font family names. + * + * @return the array of all available font family names. + */ + public abstract String[] getAvailableFontFamilyNames(); + + /** + * Gets the array of all available font family names for the specified + * locale. + * + * @param locale + * the Locale object which represents geographical region. The + * default locale is used if locale is null. + * @return the array of available font family names for the specified + * locale. + */ + public abstract String[] getAvailableFontFamilyNames(Locale locale); + + /** + * Gets the default screen device as GraphicDevice object. + * + * @return the GraphicDevice object which represents default screen device. + * @throws HeadlessException + * if isHeadless() returns true. + */ + public abstract GraphicsDevice getDefaultScreenDevice() throws HeadlessException; + + /** + * Gets an array of all available screen devices. + * + * @return the array of GraphicsDevice objects which represents all + * available screen devices. + * @throws HeadlessException + * if isHeadless() returns true. + */ + public abstract GraphicsDevice[] getScreenDevices() throws HeadlessException; +} |