Class DPIUtil
- 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 intReturns the zoom of the UI and its controls according to SWT autoscaling settings.static Stringstatic intReturns the native zoom of the UI and its controls according to the adapted OS elements.static floatgetScalingFactor(int zoom) Returns scaling factor from the given device zoomstatic floatgetScalingFactor(int targetZoom, int currentZoom) static intgetZoomForAutoscaleProperty(int nativeDeviceZoom) static booleanstatic 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 voidsetMonitorSpecificScaling(boolean activate) 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
-
isCustomAutoScale
public static boolean isCustomAutoScale() -
getEffectiveAutoScaleValue
-
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", 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.
-
setMonitorSpecificScaling
public static void setMonitorSpecificScaling(boolean activate) -
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()Returns the native zoom of the UI and its controls according to the adapted OS elements. Particularly on Windows, this is the zoom used for fonts by the OS, no matter what autoscaling of SWT might be applied on top.Warning: When using monitor-specific scaling on Windows, this value may not be reasonable as there is no single zoom for the application but one per shell and its monitor. In that case, this method will return the native zoom for the shell whose zoom has last been changed (via moving the shell to another monitor or changing the zoom of a monitor).
-
getDeviceZoom
public static int getDeviceZoom()Returns the zoom of the UI and its controls according to SWT autoscaling settings. It is an adapted value ofgetNativeDeviceZoom()based on the setting of theswt.autoScaleproperty.Warning: When using monitor-specific scaling on Windows, this value may not be reasonable as there is no single zoom for the application but one per shell and its monitor. In that case, this method will return the autoscaling zoom for the shell whose zoom has last been changed (via moving the shell to another monitor or changing the zoom of a monitor).
-
setDeviceZoom
public static void setDeviceZoom(int nativeDeviceZoom) -
getZoomForAutoscaleProperty
public static int getZoomForAutoscaleProperty(int nativeDeviceZoom) -
runWithAutoScaleValue
-