Mercurial > hg > Members > riono > TreeVNC_ja_comment
comparison src/main/java/jp/ac/u_ryukyu/treevnc/test/IsRetina.java @ 457:effba48b76f3
Fix position
author | Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 22 Jun 2016 19:52:32 +0900 |
parents | 0aab561a8cf4 |
children |
comparison
equal
deleted
inserted
replaced
456:34277b436cac | 457:effba48b76f3 |
---|---|
1 package jp.ac.u_ryukyu.treevnc.test; | 1 package jp.ac.u_ryukyu.treevnc.test; |
2 | 2 |
3 import java.awt.*; | 3 import java.awt.*; |
4 import java.awt.image.BufferedImage; | 4 import java.awt.image.BufferedImage; |
5 import java.lang.reflect.Field; | 5 import java.lang.reflect.Field; |
6 import java.util.ArrayList; | |
6 | 7 |
7 /** | 8 /** |
8 * Created by one on 15/08/18. | 9 * Created by one on 15/08/18. |
9 */ | 10 */ |
10 public class IsRetina { | 11 public class IsRetina { |
11 public static final int isRetina = getRetinaScale(); | |
12 | 12 |
13 private static int getRetinaScale() { | 13 public static int getRetinaScale(int shareScreenNumber) { |
14 //other OS and JVM specific checks... | |
15 int scale = 1; | 14 int scale = 1; |
16 GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); | 15 GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); |
17 final GraphicsDevice device = env.getDefaultScreenDevice(); | 16 final GraphicsDevice[] devices = env.getScreenDevices(); |
18 | 17 |
19 try { | 18 try { |
20 Field field = device.getClass().getDeclaredField("scale"); | 19 Field field = devices[shareScreenNumber].getClass().getDeclaredField("scale"); |
21 | 20 |
22 if (field != null) { | 21 if (field != null) { |
23 field.setAccessible(true); | 22 field.setAccessible(true); |
24 Object retinaScale = field.get(device); | 23 Object retinaScale = field.get(devices[shareScreenNumber]); |
25 | 24 |
26 if (retinaScale instanceof Integer) { | 25 if (retinaScale instanceof Integer) { |
27 scale = ((Integer)retinaScale).intValue(); | 26 scale = (Integer) retinaScale; |
28 return scale; | 27 return scale; |
29 } | 28 } |
30 } | 29 } |
31 } catch (Exception ignore) {} | 30 } catch (Exception ignore) {} |
32 //... | |
33 return scale; | 31 return scale; |
34 } | 32 } |
35 | 33 |
34 public static ArrayList<Rectangle> getScreenRectangles() { | |
35 // New screen server has one or more screens. | |
36 // Screens are numbered in the order from left. | |
37 // put screens in an ArrayList. | |
38 ArrayList<Rectangle> rectangles = new ArrayList<Rectangle>(); | |
39 GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); | |
40 GraphicsDevice[] gs = ge.getScreenDevices(); | |
41 int screenNumber = 0; | |
42 for (GraphicsDevice gd : gs) { | |
43 for (GraphicsConfiguration r : gd.getConfigurations()) { | |
44 System.out.println("Retina scale :" + getRetinaScale(screenNumber)); | |
45 Rectangle rect = r.getBounds(); | |
46 System.out.println("screen "+ screenNumber +":"+rect); | |
47 rectangles.add(rect); | |
48 } | |
49 screenNumber++; | |
50 } | |
51 return rectangles; | |
52 } | |
53 | |
36 public static void main(String args[]) { | 54 public static void main(String args[]) { |
37 System.out.println(isRetina); | 55 getScreenRectangles(); |
38 } | 56 } |
39 } | 57 } |