/*
* @(#)GraphicsEnvironment.java 1.10 06/10/10
*
* Copyright 1990-2008 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
*
* This program 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.
*
* This program 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 at /legal/license.txt).
*
* 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 Sun Microsystems, Inc., 4150 Network Circle, Santa
* Clara, CA 95054 or visit www.sun.com if you need additional
* information or have any questions.
*
*/
package java.awt;
import java.awt.image.BufferedImage;
import java.util.Hashtable;
import java.util.Locale;
import java.util.Map;
import java.io.InputStream;
/**
*
* The <code>GraphicsEnvironment</code> class describes the collection
* of {@link GraphicsDevice} objects and {@link java.awt.Font} objects
* available to a Java(tm) application on a particular platform.
* The resources in this <code>GraphicsEnvironment</code> might be local
* or on a remote machine. <code>GraphicsDevice</code> objects can be
* screens, printers or image buffers and are the destination of
* {@link Graphics2D} drawing methods. Each <code>GraphicsDevice</code>
* has a number of {@link GraphicsConfiguration} objects associated with
* it. These objects specify the different configurations in which the
* <code>GraphicsDevice</code> can be used.
* @see GraphicsDevice
* @see GraphicsConfiguration
* @version 1.42, 02/02/00
*/
public abstract class GraphicsEnvironment {
private static GraphicsEnvironment localEnv;
/**
* This is an abstract class and cannot be instantiated directly.
* Instances must be obtained from a suitable factory or query method.
*/
protected GraphicsEnvironment() {}
/**
* Returns the local <code>GraphicsEnvironment</code>.
* @return this <code>GraphicsEnvironment</code>.
*/
public static synchronized GraphicsEnvironment getLocalGraphicsEnvironment() {
if (localEnv == null)
localEnv = new X11GraphicsEnvironment();
return localEnv;
}
/**
* Returns an array of all of the screen <code>GraphicsDevice</code>
* objects.
* @return an array containing all the <code>GraphicsDevice</code>
* objects that represent screen devices.
*/
public abstract GraphicsDevice[] getScreenDevices();
/**
* Returns the default screen <code>GraphicsDevice</code>.
* @return the <code>GraphicsDevice</code> that represents the
* default screen device.
*/
public abstract GraphicsDevice getDefaultScreenDevice();
/**
* Returns a <code>Graphics2D</code> object for rendering into the
* specified {@link BufferedImage}.
* @param img the specified <code>BufferedImage</code>
* @return a <code>Graphics2D</code> to be used for rendering into
* the specified <code>BufferedImage</code>.
*/
// public abstract Graphics2D createGraphics(BufferedImage img);
/**
* Returns an array containing a one-point size instance of all fonts
* available in this <code>GraphicsEnvironment</code>. Typical usage
* would be to allow a user to select a particular font. Then, the
* application can size the font and set various font attributes by
* calling the <code>deriveFont</code> method on the choosen instance.
* <p>
* This method provides for the application the most precise control
* over which <code>Font</code> instance is used to render text.
* If a font in this <code>GraphicsEnvironment</code> has multiple
* programmable variations, only one
* instance of that <code>Font</code> is returned in the array, and
* other variations must be derived by the application.
* <p>
* If a font in this environment has multiple programmable variations,
* such as Multiple-Master fonts, only one instance of that font is
* returned in the <code>Font</code> array. The other variations
* must be derived by the application.
* @return an array of <code>Font</code> objects.
* @see #getAvailableFontFamilyNames
* @see java.awt.Font
* @see java.awt.Font#deriveFont
* @see java.awt.Font#getFontName
* @since 1.2
*/
// public abstract Font[] getAllFonts();
/**
* Returns an array containing the names of all font families available
* in this <code>GraphicsEnvironment</code>.
* Typical usage would be to allow a user to select a particular family
* name and allow the application to choose related variants of the
* same family when the user specifies style attributes such
* as Bold or Italic.
* <p>
* This method provides for the application some control over which
* <code>Font</code> instance is used to render text, but allows the
* <code>Font</code> object more flexibility in choosing its own best
* match among multiple fonts in the same font family.
* @return an array of <code>String</code> containing names of font
* families.
* @see #getAllFonts
* @see java.awt.Font
* @see java.awt.Font#getFamily
* @since 1.2
*/
public abstract String[] getAvailableFontFamilyNames();
/**
* Returns an array containing the localized names of all font families
* available in this <code>GraphicsEnvironment</code>.
* Typical usage would be to allow a user to select a particular family
* name and allow the application to choose related variants of the
* same family when the user specifies style attributes such
* as Bold or Italic.
* <p>
* This method provides for the application some control over which
* <code>Font</code> instance used to render text, but allows the
* <code>Font</code> object more flexibility in choosing its own best
* match among multiple fonts in the same font family.
* If <code>l</code> is <code>null</code>, this method returns an
* array containing all font family names available in this
* <code>GraphicsEnvironment</code>.
* @param l a {@link Locale} object that represents a
* particular geographical, political, or cultural region
* @return an array of <code>String</code> objects containing names of
* font families specific to the specified <code>Locale</code>.
* @see #getAllFonts
* @see java.awt.Font
* @see java.awt.Font#getFamily
* @since 1.2
*/
public abstract String[] getAvailableFontFamilyNames(Locale l);
}