view src/main/java/jp/ac/u_ryukyu/treevnc/test/IsRetina.java @ 551:e912db2ab778

fix RetinaDisplay API for java9 and above
author e165729 <e165729@ie.u-ryukyu.ac.jp>
date Wed, 29 Jan 2020 00:25:42 +0900
parents effba48b76f3
children
line wrap: on
line source

package jp.ac.u_ryukyu.treevnc.test;

import java.awt.*;
import java.awt.image.BufferedImage;
import java.lang.reflect.Field;
import java.util.ArrayList;

/**
 * Created by one on 15/08/18.
 */
public class IsRetina {

    public static int getRetinaScale(int shareScreenNumber) {
        int scale = 1;
        GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
        final GraphicsDevice[] devices = env.getScreenDevices();
        GraphicsConfiguration conf = devices[shareScreenNumber].getDefaultConfiguration();
        scale = (int)conf.getDefaultTransform().getScaleX();
       return scale;
    }

    public static ArrayList<Rectangle> getScreenRectangles() {
        // New screen server has one or more screens.
        // Screens are numbered in the order from left.
        // put screens in an ArrayList.
        ArrayList<Rectangle> rectangles = new ArrayList<Rectangle>();
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        GraphicsDevice[] gs = ge.getScreenDevices();
        int screenNumber = 0;
        for (GraphicsDevice gd : gs) {
            for (GraphicsConfiguration r : gd.getConfigurations()) {
                System.out.println("Retina scale :" + getRetinaScale(screenNumber));
                Rectangle rect = r.getBounds();
                System.out.println("screen "+ screenNumber +":"+rect);
                rectangles.add(rect);
            }
            screenNumber++;
        }
        return rectangles;
    }

    public static void main(String args[]) {
        getScreenRectangles();
    }
}