Changeset 10392 in josm


Ignore:
Timestamp:
2016-06-15T20:32:03+02:00 (16 months ago)
Author:
bastiK
Message:

see #9995 - add advanced preference value 'gui.scale'

can be set to test hdpi display or in case the screen resolution is not recognized correctly by the system

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/util/GuiSizesHelper.java

    r10368 r10392  
    55import java.awt.HeadlessException;
    66import java.awt.Toolkit;
     7
     8import org.openstreetmap.josm.Main;
    79
    810/**
     
    2022
    2123    /** cache value for screen resolution */
    22     private static int screenDPI = -1;
     24    private static float screenDPI = -1;
    2325
    2426    /** Request the screen resolution (cached)
    2527     * @return screen resolution in DPI
    2628     */
    27     private static int getScreenDPI() {
     29    private static float getScreenDPI() {
    2830        if (screenDPI == -1) {
    2931            synchronized (GuiHelper.class) {
    3032                if (screenDPI == -1) {
    31                     try {
    32                         screenDPI = Toolkit.getDefaultToolkit().getScreenResolution();
    33                     } catch (HeadlessException e) {
    34                         screenDPI = 96;
     33                    float scalePref = (float) Main.pref.getDouble("gui.scale", 0);
     34                    if (scalePref != 0) {
     35                        screenDPI = 96f * scalePref;
     36                    } else {
     37                        try {
     38                            screenDPI = Toolkit.getDefaultToolkit().getScreenResolution();
     39                        } catch (HeadlessException e) {
     40                            screenDPI = 96;
     41                        }
    3542                    }
    36                        
    3743                }
    3844            }
     
    4753     */
    4854    public static float getPixelDensity() {
    49         int pixelPerInch = getScreenDPI();
    50         return (float) (pixelPerInch / 96.0);
     55        float pixelPerInch = getScreenDPI();
     56        return pixelPerInch / 96f;
    5157    }
    5258
     
    6672    public static int getSizeDpiAdjusted(int size) {
    6773        if (size <= 0) return size;
    68         int pixelPerInch = getScreenDPI();
    69         return size * pixelPerInch / 96;
     74        float pixelPerInch = getScreenDPI();
     75        return Math.round(size * pixelPerInch / 96);
    7076    }
    7177
     
    7783    public static float getSizeDpiAdjusted(float size) {
    7884        if (size <= 0f) return size;
    79         int pixelPerInch = getScreenDPI();
     85        float pixelPerInch = getScreenDPI();
    8086        return size * pixelPerInch / 96;
    8187    }
     
    8894    public static double getSizeDpiAdjusted(double size) {
    8995        if (size <= 0d) return size;
    90         int pixelPerInch = getScreenDPI();
     96        float pixelPerInch = getScreenDPI();
    9197        return size * pixelPerInch / 96;
    9298    }
     
    98104     */
    99105    public static Dimension getDimensionDpiAdjusted(Dimension dim) {
    100         int pixelPerInch = getScreenDPI();
     106        float pixelPerInch = getScreenDPI();
    101107        int width = dim.width, height = dim.height;
    102108        if (dim.width > 0) {
    103             width = dim.width * pixelPerInch / 96;
     109            width = Math.round(dim.width * pixelPerInch / 96);
    104110        }
    105111
    106112        if (dim.height > 0) {
    107             height = dim.height * pixelPerInch / 96;
     113            height = Math.round(dim.height * pixelPerInch / 96);
    108114        }
    109115
Note: See TracChangeset for help on using the changeset viewer.