Package org.eclipse.swt.internal
Class DPIUtil
java.lang.Object
org.eclipse.swt.internal.DPIUtil
This class hold common constants and utility functions w.r.t. to SWT high DPI
functionality.
- Since:
- 3.105
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final recordRepresents an element, such as some image data, at a specific zoom level. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic ImageDataautoScaleImageData(Device device, ImageData imageData, float scaleFactor) static ImageDataautoScaleImageData(Device device, ImageData imageData, int imageDataZoomFactor) Auto-scale ImageData to device zoom that are at given zoom factor.static ImageDataautoScaleImageData(Device device, ImageData imageData, int targetWidth, int targetHeight) static intstatic intstatic floatgetScalingFactor(int zoom) Returns scaling factor from the given device zoomstatic floatgetScalingFactor(int targetZoom, int currentZoom) static intgetZoomForAutoscaleProperty(int nativeDeviceZoom) static booleanstatic booleanReturnstrueonly if the current setup is compatible with monitor-specific scaling.static booleanstatic intmapDPIToZoom(int dpi) Compute the zoom value based on the DPI value.static intmapZoomToDPI(int zoom) Compute the DPI value value based on the zoom.static floatpixelToPoint(float size, int zoom) static intpixelToPoint(int size, int zoom) static intpointToPixel(int size, int zoom) static voidrunWithAutoScaleValue(String autoScaleValue, Runnable runnable) static ImageDatascaleImageData(Device device, ImageData imageData, int targetZoom, int currentZoom) Auto-scale image with ImageDatastatic ImageDatascaleImageData(Device device, DPIUtil.ElementAtZoom<ImageData> elementAtZoom, int targetZoom) static voidsetDeviceZoom(int nativeDeviceZoom) static DPIUtil.ElementAtZoom<ImageData> validateAndGetImageDataAtZoom(ImageDataProvider provider, int zoom) Gets ImageData that are appropriate for the specified zoom level together with the zoom level at which the image data are.static DPIUtil.ElementAtZoom<String> validateAndGetImagePathAtZoom(ImageFileNameProvider provider, int zoom) Gets the image file path that are appropriate for the specified zoom level together with the zoom level at which the image data are.static voidvalidateLinearScaling(ImageDataProvider provider)
-
Constructor Details
-
DPIUtil
public DPIUtil()
-
-
Method Details
-
isSetupCompatibleToMonitorSpecificScaling
public static boolean isSetupCompatibleToMonitorSpecificScaling()Returnstrueonly if the current setup is compatible with monitor-specific scaling. Returnsfalseif:- Not running on Windows
- The current auto-scale mode is incompatible
Background information: Monitor-specific scaling on Windows only supports auto-scale modes in which all elements (font, images, control bounds etc.) are scaled equally or almost equally. The previously default mode "integer"/"integer200", which rounded the scale factor for everything but fonts to multiples of 100, is complex and difficult to realize with monitor-specific rescaling of UI elements. Since a uniform scale factor for everything should perspectively be used anyway, there will be no support for complex auto-scale modes for monitor-specific scaling.
-
isMonitorSpecificScalingActive
public static boolean isMonitorSpecificScalingActive() -
pixelToPoint
public static int pixelToPoint(int size, int zoom) -
pixelToPoint
public static float pixelToPoint(float size, int zoom) -
scaleImageData
public static ImageData scaleImageData(Device device, ImageData imageData, int targetZoom, int currentZoom) Auto-scale image with ImageData -
scaleImageData
public static ImageData scaleImageData(Device device, DPIUtil.ElementAtZoom<ImageData> elementAtZoom, int targetZoom) -
autoScaleImageData
-
autoScaleImageData
-
isSmoothScalingEnabled
public static boolean isSmoothScalingEnabled() -
autoScaleImageData
public static ImageData autoScaleImageData(Device device, ImageData imageData, int imageDataZoomFactor) Auto-scale ImageData to device zoom that are at given zoom factor. -
getScalingFactor
public static float getScalingFactor(int zoom) Returns scaling factor from the given device zoom- Returns:
- float scaling factor
-
getScalingFactor
public static float getScalingFactor(int targetZoom, int currentZoom) -
mapDPIToZoom
public static int mapDPIToZoom(int dpi) Compute the zoom value based on the DPI value.- Returns:
- zoom
-
mapZoomToDPI
public static int mapZoomToDPI(int zoom) Compute the DPI value value based on the zoom.- Returns:
- DPI
-
validateLinearScaling
-
pointToPixel
public static int pointToPixel(int size, int zoom) -
validateAndGetImageDataAtZoom
public static DPIUtil.ElementAtZoom<ImageData> validateAndGetImageDataAtZoom(ImageDataProvider provider, int zoom) Gets ImageData that are appropriate for the specified zoom level together with the zoom level at which the image data are. If there is an image at the specified zoom level, it is returned. Otherwise the next larger image at 150% and 200% is returned, if existing. If none of these is found, the 100% image is returned as a fallback. If provider or fallback image is not available, an error is thrown. -
validateAndGetImagePathAtZoom
public static DPIUtil.ElementAtZoom<String> validateAndGetImagePathAtZoom(ImageFileNameProvider provider, int zoom) Gets the image file path that are appropriate for the specified zoom level together with the zoom level at which the image data are. If there is an image at the specified zoom level, it is returned. Otherwise the next larger image at 150% and 200% is returned, if existing. If none of these is found, the 100% image is returned as a fallback. If provider or fallback image is not available, an error is thrown. -
getNativeDeviceZoom
public static int getNativeDeviceZoom() -
getDeviceZoom
public static int getDeviceZoom() -
setDeviceZoom
public static void setDeviceZoom(int nativeDeviceZoom) -
getZoomForAutoscaleProperty
public static int getZoomForAutoscaleProperty(int nativeDeviceZoom) -
runWithAutoScaleValue
-