home *** CD-ROM | disk | FTP | other *** search
- package sun.java2d;
-
- import java.awt.Color;
- import java.awt.Font;
- import java.awt.Graphics2D;
- import java.awt.GraphicsConfiguration;
- import java.awt.GraphicsDevice;
- import java.awt.GraphicsEnvironment;
- import java.awt.Insets;
- import java.awt.Rectangle;
- import java.awt.Toolkit;
- import java.awt.image.BufferedImage;
- import java.awt.print.PrinterJob;
- import java.io.File;
- import java.io.FilenameFilter;
- import java.io.IOException;
- import java.security.AccessController;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.HashSet;
- import java.util.Hashtable;
- import java.util.Locale;
- import java.util.NoSuchElementException;
- import java.util.StringTokenizer;
- import java.util.TreeMap;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- import sun.awt.DisplayChangedListener;
- import sun.awt.FontConfiguration;
- import sun.awt.SunDisplayChanger;
- import sun.font.CompositeFontDescriptor;
- import sun.font.Font2D;
- import sun.font.FontManager;
- import sun.font.NativeFont;
- import sun.font.PhysicalFont;
-
- public abstract class SunGraphicsEnvironment extends GraphicsEnvironment implements FontSupport, DisplayChangedListener {
- public static boolean isLinux;
- public static boolean isSolaris;
- public static boolean noType1Font;
- private static Font defaultFont;
- private static String lucidaSansFileName;
- public static final String lucidaFontName = "Lucida Sans Regular";
- public static boolean debugFonts = false;
- protected static Logger logger = null;
- private static ArrayList badFonts;
- public static String jreLibDirName;
- public static String jreFontDirName;
- private static HashSet<String> missingFontFiles = null;
- private FontConfiguration fontConfig;
- protected String fontPath;
- private boolean discoveredAllFonts = false;
- private boolean loadedAllFontFiles = false;
- protected HashSet registeredFontFiles = new HashSet();
- public static String eudcFontFileName;
- protected GraphicsDevice[] screens;
- private Font[] allFonts;
- private static Locale systemLocale = null;
- private String[] allFamilies;
- private Locale lastDefaultLocale;
- public static final TTFilter ttFilter = new TTFilter();
- public static final T1Filter t1Filter = new T1Filter();
- protected SunDisplayChanger displayChanger = new SunDisplayChanger();
-
- public SunGraphicsEnvironment() {
- AccessController.doPrivileged(new 1(this));
- }
-
- public synchronized GraphicsDevice[] getScreenDevices() {
- GraphicsDevice[] var1 = this.screens;
- if (var1 == null) {
- int var2 = this.getNumScreens();
- var1 = new GraphicsDevice[var2];
-
- for(int var3 = 0; var3 < var2; ++var3) {
- var1[var3] = this.makeScreenDevice(var3);
- }
-
- this.screens = var1;
- }
-
- return var1;
- }
-
- protected abstract int getNumScreens();
-
- protected abstract GraphicsDevice makeScreenDevice(int var1);
-
- public GraphicsDevice getDefaultScreenDevice() {
- return this.getScreenDevices()[0];
- }
-
- public Graphics2D createGraphics(BufferedImage var1) {
- if (var1 == null) {
- throw new NullPointerException("BufferedImage cannot be null");
- } else {
- SurfaceData var2 = SurfaceData.getDestSurfaceData(var1);
- return new SunGraphics2D(var2, Color.white, Color.black, defaultFont);
- }
- }
-
- protected String getPlatformFontPath(boolean var1) {
- return FontManager.getFontPath(var1);
- }
-
- protected boolean useAbsoluteFontFileNames() {
- return true;
- }
-
- public String getDefaultFontFile() {
- return lucidaSansFileName;
- }
-
- public String getDefaultFontFaceName() {
- return "Lucida Sans Regular";
- }
-
- public void loadFonts() {
- if (!this.discoveredAllFonts) {
- synchronized("Lucida Sans Regular") {
- if (debugFonts) {
- Thread.dumpStack();
- logger.info("SunGraphicsEnvironment.loadFonts() called");
- }
-
- FontManager.initialiseDeferredFonts();
- AccessController.doPrivileged(new 2(this));
- }
- }
- }
-
- public void loadFontFiles() {
- this.loadFonts();
- if (!this.loadedAllFontFiles) {
- synchronized("Lucida Sans Regular") {
- if (debugFonts) {
- Thread.dumpStack();
- logger.info("loadAllFontFiles() called");
- }
-
- AccessController.doPrivileged(new 3(this));
- }
- }
- }
-
- private boolean isNameForRegisteredFile(String var1) {
- String var2 = FontManager.getFileNameForFontName(var1);
- return var2 == null ? false : this.registeredFontFiles.contains(var2);
- }
-
- public Font[] getAllInstalledFonts() {
- if (this.allFonts == null) {
- this.loadFonts();
- TreeMap var1 = new TreeMap();
- Font2D[] var2 = FontManager.getRegisteredFonts();
-
- for(int var3 = 0; var3 < var2.length; ++var3) {
- if (!(var2[var3] instanceof NativeFont)) {
- var1.put(var2[var3].getFontName((Locale)null), var2[var3]);
- }
- }
-
- String[] var9 = FontManager.getFontNamesFromPlatform();
- if (var9 != null) {
- for(int var4 = 0; var4 < var9.length; ++var4) {
- if (!this.isNameForRegisteredFile(var9[var4])) {
- var1.put(var9[var4], (Object)null);
- }
- }
- }
-
- String[] var10 = null;
- if (var1.size() > 0) {
- var10 = new String[var1.size()];
- Object[] var5 = var1.keySet().toArray();
-
- for(int var6 = 0; var6 < var5.length; ++var6) {
- var10[var6] = (String)var5[var6];
- }
- }
-
- Font[] var11 = new Font[var10.length];
-
- for(int var12 = 0; var12 < var10.length; ++var12) {
- var11[var12] = new Font(var10[var12], 0, 1);
- Font2D var7 = (Font2D)var1.get(var10[var12]);
- if (var7 != null) {
- FontManager.setFont2D(var11[var12], var7.handle);
- }
- }
-
- this.allFonts = var11;
- }
-
- Font[] var8 = new Font[this.allFonts.length];
- System.arraycopy(this.allFonts, 0, var8, 0, this.allFonts.length);
- return var8;
- }
-
- public Font[] getAllFonts() {
- Font[] var1 = this.getAllInstalledFonts();
- Font[] var2 = FontManager.getCreatedFonts();
- if (var2 != null && var2.length != 0) {
- int var3 = var1.length + var2.length;
- Font[] var4 = (Font[])Arrays.copyOf(var1, var3);
- System.arraycopy(var2, 0, var4, var1.length, var2.length);
- return var4;
- } else {
- return var1;
- }
- }
-
- public static Locale getSystemStartupLocale() {
- if (systemLocale == null) {
- systemLocale = (Locale)AccessController.doPrivileged(new 4());
- }
-
- return systemLocale;
- }
-
- protected void getJREFontFamilyNames(TreeMap<String, String> var1, Locale var2) {
- FontManager.registerDeferredJREFonts(jreFontDirName);
- PhysicalFont[] var3 = FontManager.getPhysicalFonts();
-
- for(int var4 = 0; var4 < var3.length; ++var4) {
- if (!(var3[var4] instanceof NativeFont)) {
- String var5 = var3[var4].getFamilyName(var2);
- var1.put(var5.toLowerCase(var2), var5);
- }
- }
-
- }
-
- public String[] getInstalledFontFamilyNames(Locale var1) {
- if (var1 == null) {
- var1 = Locale.getDefault();
- }
-
- if (this.allFamilies != null && this.lastDefaultLocale != null && var1.equals(this.lastDefaultLocale)) {
- String[] var7 = new String[this.allFamilies.length];
- System.arraycopy(this.allFamilies, 0, var7, 0, this.allFamilies.length);
- return var7;
- } else {
- TreeMap var2 = new TreeMap();
- String var3 = "Serif";
- var2.put(var3.toLowerCase(), var3);
- var3 = "SansSerif";
- var2.put(var3.toLowerCase(), var3);
- var3 = "Monospaced";
- var2.put(var3.toLowerCase(), var3);
- var3 = "Dialog";
- var2.put(var3.toLowerCase(), var3);
- var3 = "DialogInput";
- var2.put(var3.toLowerCase(), var3);
- if (var1.equals(getSystemStartupLocale()) && FontManager.getFamilyNamesFromPlatform(var2, var1)) {
- this.getJREFontFamilyNames(var2, var1);
- } else {
- this.loadFontFiles();
- PhysicalFont[] var4 = FontManager.getPhysicalFonts();
-
- for(int var5 = 0; var5 < var4.length; ++var5) {
- if (!(var4[var5] instanceof NativeFont)) {
- String var6 = var4[var5].getFamilyName(var1);
- var2.put(var6.toLowerCase(var1), var6);
- }
- }
- }
-
- String[] var12 = new String[var2.size()];
- Object[] var13 = var2.keySet().toArray();
-
- for(int var14 = 0; var14 < var13.length; ++var14) {
- var12[var14] = (String)var2.get(var13[var14]);
- }
-
- if (var1.equals(Locale.getDefault())) {
- this.lastDefaultLocale = var1;
- this.allFamilies = new String[var12.length];
- System.arraycopy(var12, 0, this.allFamilies, 0, this.allFamilies.length);
- }
-
- return var12;
- }
- }
-
- public String[] getAvailableFontFamilyNames(Locale var1) {
- String[] var2 = this.getInstalledFontFamilyNames(var1);
- TreeMap var3 = FontManager.getCreatedFontFamilyNames();
- if (var3 != null && var3.size() != 0) {
- for(int var4 = 0; var4 < var2.length; ++var4) {
- var3.put(var2[var4].toLowerCase(var1), var2[var4]);
- }
-
- String[] var7 = new String[var3.size()];
- Object[] var5 = var3.keySet().toArray();
-
- for(int var6 = 0; var6 < var5.length; ++var6) {
- var7[var6] = (String)var3.get(var5[var6]);
- }
-
- return var7;
- } else {
- return var2;
- }
- }
-
- public String[] getAvailableFontFamilyNames() {
- return this.getAvailableFontFamilyNames(Locale.getDefault());
- }
-
- protected String getFileNameFromPlatformName(String var1) {
- return this.fontConfig.getFileNameFromPlatformName(var1);
- }
-
- public PrinterJob getPrinterJob() {
- (new Exception()).printStackTrace();
- return null;
- }
-
- protected void registerJREFontsWithPlatform(String var1) {
- }
-
- public void register1dot0Fonts() {
- AccessController.doPrivileged(new 5(this));
- }
-
- protected void registerFontDirs(String var1) {
- }
-
- public void registerFontsInDir(String var1) {
- this.registerFontsInDir(var1, true, 2, true, false);
- }
-
- private void registerFontsInDir(String var1, boolean var2, int var3, boolean var4, boolean var5) {
- File var6 = new File(var1);
- this.addDirFonts(var1, var6, ttFilter, 0, var2, var3 == 6 ? 3 : var3, var4, var5);
- this.addDirFonts(var1, var6, t1Filter, 1, var2, var3 == 6 ? 4 : var3, var4, var5);
- }
-
- private void registerFontsOnPath(String var1, boolean var2, int var3, boolean var4, boolean var5) {
- StringTokenizer var6 = new StringTokenizer(var1, File.pathSeparator);
-
- try {
- while(var6.hasMoreTokens()) {
- this.registerFontsInDir(var6.nextToken(), var2, var3, var4, var5);
- }
- } catch (NoSuchElementException var8) {
- }
-
- }
-
- protected void registerFontFile(String var1, String[] var2, int var3, boolean var4) {
- if (!this.registeredFontFiles.contains(var1)) {
- byte var5;
- if (ttFilter.accept((File)null, var1)) {
- var5 = 0;
- } else if (t1Filter.accept((File)null, var1)) {
- var5 = 1;
- } else {
- var5 = 5;
- }
-
- this.registeredFontFiles.add(var1);
- if (var4) {
- FontManager.registerDeferredFont(var1, var1, var2, var5, false, var3);
- } else {
- FontManager.registerFontFile(var1, var2, var5, false, var3);
- }
-
- }
- }
-
- protected void registerFontDir(String var1) {
- }
-
- protected String[] getNativeNames(String var1, String var2) {
- return null;
- }
-
- private void addDirFonts(String var1, File var2, FilenameFilter var3, int var4, boolean var5, int var6, boolean var7, boolean var8) {
- String[] var9 = var2.list(var3);
- if (var9 != null && var9.length != 0) {
- String[] var10 = new String[var9.length];
- String[][] var11 = new String[var9.length][];
- int var12 = 0;
-
- for(int var13 = 0; var13 < var9.length; ++var13) {
- File var14 = new File(var2, var9[var13]);
- String var15 = null;
- if (var8) {
- try {
- var15 = var14.getCanonicalPath();
- } catch (IOException var19) {
- }
- }
-
- if (var15 == null) {
- var15 = var1 + File.separator + var9[var13];
- }
-
- if (!this.registeredFontFiles.contains(var15)) {
- if (badFonts != null && badFonts.contains(var15)) {
- if (debugFonts) {
- logger.warning("skip bad font " + var15);
- }
- } else {
- this.registeredFontFiles.add(var15);
- if (debugFonts && logger.isLoggable(Level.INFO)) {
- String var16 = "Registering font " + var15;
- String[] var17 = this.getNativeNames(var15, (String)null);
- if (var17 == null) {
- var16 = var16 + " with no native name";
- } else {
- var16 = var16 + " with native name(s) " + var17[0];
-
- for(int var18 = 1; var18 < var17.length; ++var18) {
- var16 = var16 + ", " + var17[var18];
- }
- }
-
- logger.info(var16);
- }
-
- var10[var12] = var15;
- var11[var12++] = this.getNativeNames(var15, (String)null);
- }
- }
- }
-
- FontManager.registerFonts(var10, var11, var12, var4, var5, var6, var7);
- }
- }
-
- protected void addToMissingFontFileList(String var1) {
- if (missingFontFiles == null) {
- missingFontFiles = new HashSet();
- }
-
- missingFontFiles.add(var1);
- }
-
- protected abstract FontConfiguration createFontConfiguration();
-
- public abstract FontConfiguration createFontConfiguration(boolean var1, boolean var2);
-
- private void initCompositeFonts(FontConfiguration var1, Hashtable var2) {
- int var3 = var1.getNumberCoreFonts();
- String[] var4 = var1.getPlatformFontNames();
-
- for(int var5 = 0; var5 < var4.length; ++var5) {
- String var6 = var4[var5];
- String var7 = this.getFileNameFromPlatformName(var6);
- String[] var8 = null;
- if (var7 == null) {
- var7 = var6;
- } else {
- if (var5 < var3) {
- this.addFontToPlatformFontPath(var6);
- }
-
- var8 = this.getNativeNames(var7, var6);
- }
-
- this.registerFontFile(var7, var8, 2, true);
- }
-
- this.registerPlatformFontsUsedByFontConfiguration();
- CompositeFontDescriptor[] var11 = var1.get2DCompositeFontInfo();
-
- for(int var12 = 0; var12 < var11.length; ++var12) {
- CompositeFontDescriptor var13 = var11[var12];
- String[] var14 = var13.getComponentFileNames();
- String[] var9 = var13.getComponentFaceNames();
- if (missingFontFiles != null) {
- for(int var10 = 0; var10 < var14.length; ++var10) {
- if (missingFontFiles.contains(var14[var10])) {
- var14[var10] = this.getDefaultFontFile();
- var9[var10] = this.getDefaultFontFaceName();
- }
- }
- }
-
- if (var2 != null) {
- FontManager.registerCompositeFont(var13.getFaceName(), var14, var9, var13.getCoreComponentCount(), var13.getExclusionRanges(), var13.getExclusionRangeLimits(), true, var2);
- } else {
- FontManager.registerCompositeFont(var13.getFaceName(), var14, var9, var13.getCoreComponentCount(), var13.getExclusionRanges(), var13.getExclusionRangeLimits(), true);
- }
-
- if (debugFonts) {
- logger.info("registered " + var13.getFaceName());
- }
- }
-
- }
-
- protected void addFontToPlatformFontPath(String var1) {
- }
-
- protected void registerPlatformFontsUsedByFontConfiguration() {
- }
-
- public static boolean isLogicalFont(Font var0) {
- return FontConfiguration.isLogicalFontFamilyName(var0.getFamily());
- }
-
- public FontConfiguration getFontConfiguration() {
- return this.fontConfig;
- }
-
- public static Rectangle getUsableBounds(GraphicsDevice var0) {
- GraphicsConfiguration var1 = var0.getDefaultConfiguration();
- Insets var2 = Toolkit.getDefaultToolkit().getScreenInsets(var1);
- Rectangle var3 = var1.getBounds();
- var3.x += var2.left;
- var3.y += var2.top;
- var3.width -= var2.left + var2.right;
- var3.height -= var2.top + var2.bottom;
- return var3;
- }
-
- public static boolean fontSupportsDefaultEncoding(Font var0) {
- return FontManager.fontSupportsDefaultEncoding(var0);
- }
-
- public static void useAlternateFontforJALocales() {
- FontManager.useAlternateFontforJALocales();
- }
-
- public void createCompositeFonts(Hashtable var1, boolean var2, boolean var3) {
- FontConfiguration var4 = this.createFontConfiguration(var2, var3);
- this.initCompositeFonts(var4, var1);
- }
-
- protected void getPlatformFontPathFromFontConfig() {
- }
-
- public void displayChanged() {
- for(GraphicsDevice var4 : this.getScreenDevices()) {
- if (var4 instanceof DisplayChangedListener) {
- ((DisplayChangedListener)var4).displayChanged();
- }
- }
-
- this.displayChanger.notifyListeners();
- }
-
- public void paletteChanged() {
- this.displayChanger.notifyPaletteChanged();
- }
-
- public void addDisplayChangedListener(DisplayChangedListener var1) {
- this.displayChanger.add(var1);
- }
-
- public void removeDisplayChangedListener(DisplayChangedListener var1) {
- this.displayChanger.remove(var1);
- }
-
- // $FF: synthetic method
- static String access$002(String var0) {
- lucidaSansFileName = var0;
- return var0;
- }
-
- // $FF: synthetic method
- static ArrayList access$102(ArrayList var0) {
- badFonts = var0;
- return var0;
- }
-
- // $FF: synthetic method
- static ArrayList access$100() {
- return badFonts;
- }
-
- // $FF: synthetic method
- static void access$200(SunGraphicsEnvironment var0, String var1, boolean var2, int var3, boolean var4, boolean var5) {
- var0.registerFontsInDir(var1, var2, var3, var4, var5);
- }
-
- // $FF: synthetic method
- static FontConfiguration access$302(SunGraphicsEnvironment var0, FontConfiguration var1) {
- return var0.fontConfig = var1;
- }
-
- // $FF: synthetic method
- static FontConfiguration access$300(SunGraphicsEnvironment var0) {
- return var0.fontConfig;
- }
-
- // $FF: synthetic method
- static void access$400(SunGraphicsEnvironment var0, FontConfiguration var1, Hashtable var2) {
- var0.initCompositeFonts(var1, var2);
- }
-
- // $FF: synthetic method
- static Font access$502(Font var0) {
- defaultFont = var0;
- return var0;
- }
-
- // $FF: synthetic method
- static void access$600(SunGraphicsEnvironment var0, String var1, boolean var2, int var3, boolean var4, boolean var5) {
- var0.registerFontsOnPath(var1, var2, var3, var4, var5);
- }
-
- // $FF: synthetic method
- static boolean access$702(SunGraphicsEnvironment var0, boolean var1) {
- return var0.loadedAllFontFiles = var1;
- }
-
- // $FF: synthetic method
- static boolean access$802(SunGraphicsEnvironment var0, boolean var1) {
- return var0.discoveredAllFonts = var1;
- }
- }
-