From e4af280e6a57b9d1b27db93e9016f68cd483320a Mon Sep 17 00:00:00 2001 From: Anton Tarasov Date: Thu, 14 Jun 2018 20:04:07 +0300 Subject: [PATCH] IDEA-193493 "Tip of the day" pixelated but correct size with 125% DPI scaling --- .../src/com/intellij/ide/util/TipUIUtil.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/util/TipUIUtil.java b/platform/platform-impl/src/com/intellij/ide/util/TipUIUtil.java index 21b4ef21a4b3..8caaf751c862 100644 --- a/platform/platform-impl/src/com/intellij/ide/util/TipUIUtil.java +++ b/platform/platform-impl/src/com/intellij/ide/util/TipUIUtil.java @@ -35,6 +35,7 @@ import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; import com.intellij.ui.ColorUtil; import com.intellij.ui.TextAccessor; +import com.intellij.ui.paint.PaintUtil.RoundingMode; import com.intellij.util.ObjectUtils; import com.intellij.util.ReflectionUtil; import com.intellij.util.ResourceUtil; @@ -211,12 +212,18 @@ public class TipUIUtil { int h = image.getHeight(); if (hidpi) { // the expected (user space) size is @2x / 2 in either JRE-HiDPI or IDE-HiDPI mode - w /= 2; - h /= 2; + float k = 2f; + if (UIUtil.isJreHiDPI(component)) { + // in JRE-HiDPI mode we want the image to be drawn in its original size w/h, for better quality + k = JBUI.sysScale(component); + } + w /= k; + h /= k; } - // fit the user scale - w = (int)(JBUI.scale((float)w)); - h = (int)(JBUI.scale((float)h)); + // round the user scale for better quality + int userScale = RoundingMode.ROUND_FLOOR_BIAS.round(JBUI.scale(1f)); + w = userScale * w; + h = userScale * h; if (fallbackUpscale) { w *= 2; h *= 2;