< prev index next >
src/java.desktop/share/classes/sun/java2d/SunGraphicsEnvironment.java
Print this page
*** 1,7 ****
/*
! * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code 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. Oracle designates this
--- 1,7 ----
/*
! * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code 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. Oracle designates this
*** 31,74 ****
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.font.TextAttribute;
import java.awt.image.BufferedImage;
import java.awt.peer.ComponentPeer;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
- import java.io.FilenameFilter;
import java.io.InputStreamReader;
! import java.io.IOException;
! import java.text.AttributedCharacterIterator;
! import java.util.ArrayList;
! import java.util.HashSet;
! import java.util.Iterator;
import java.util.Locale;
- import java.util.Map;
- import java.util.NoSuchElementException;
- import java.util.Set;
- import java.util.StringTokenizer;
import java.util.TreeMap;
! import java.util.Vector;
! import java.util.concurrent.ConcurrentHashMap;
! import sun.awt.AppContext;
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.FontManagerFactory;
import sun.font.FontManagerForSGE;
! import sun.font.NativeFont;
! import java.security.AccessController;
import sun.security.action.GetPropertyAction;
/**
* This is an implementation of a GraphicsEnvironment object for the
* default local GraphicsEnvironment.
--- 31,60 ----
import java.awt.Graphics2D;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Insets;
+ import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Toolkit;
! import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.awt.peer.ComponentPeer;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
! import java.security.AccessController;
import java.util.Locale;
import java.util.TreeMap;
!
import sun.awt.DisplayChangedListener;
import sun.awt.SunDisplayChanger;
import sun.font.FontManager;
import sun.font.FontManagerFactory;
import sun.font.FontManagerForSGE;
! import sun.java2d.pipe.Region;
import sun.security.action.GetPropertyAction;
/**
* This is an implementation of a GraphicsEnvironment object for the
* default local GraphicsEnvironment.
*** 387,392 ****
--- 373,422 ----
return scale <= 0 ? -1 : scale / units;
} catch (NumberFormatException ignored) {
return -1;
}
}
+
+ /**
+ * Returns the graphics configuration which bounds contain the given point.
+ *
+ * @param current the default configuration which is checked in the first
+ * place
+ * @param x the x coordinate of the given point
+ * @param y the y coordinate of the given point
+ * @return the graphics configuration
+ */
+ public static GraphicsConfiguration getGraphicsConfigurationAtPoint(
+ GraphicsConfiguration current, double x, double y) {
+ if (current.getBounds().contains(x, y)) {
+ return current;
+ }
+ GraphicsEnvironment env = getLocalGraphicsEnvironment();
+ for (GraphicsDevice device : env.getScreenDevices()) {
+ GraphicsConfiguration config = device.getDefaultConfiguration();
+ if (config.getBounds().contains(x, y)) {
+ return config;
+ }
+ }
+ return current;
+ }
+
+ /**
+ * Converts coordinates from the user's space to the device space using
+ * appropriate device transformation.
+ *
+ * @param x coordinate in the user space
+ * @param y coordinate in the user space
+ * @return the point which uses device space(pixels)
+ */
+ public static Point convertToDeviceSpace(double x, double y) {
+ GraphicsConfiguration gc = getLocalGraphicsEnvironment()
+ .getDefaultScreenDevice().getDefaultConfiguration();
+ gc = getGraphicsConfigurationAtPoint(gc, x, y);
+
+ AffineTransform tx = gc.getDefaultTransform();
+ x = Region.clipRound(x * tx.getScaleX());
+ y = Region.clipRound(y * tx.getScaleY());
+
+ return new Point((int) x, (int) y);
+ }
}
< prev index next >