From 37899917412bbfbac4eedbfe88bbaace6b683040 Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Tue, 2 Aug 2011 18:54:11 +0400 Subject: [PATCH] Large gradient rects are dare. Fill them using tile technique --- .../openapi/wm/impl/status/MacStatusBarUI.java | 4 +--- .../util/src/com/intellij/util/ui/UIUtil.java | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/MacStatusBarUI.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/MacStatusBarUI.java index 9e3871e79048..67c3385f3b41 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/MacStatusBarUI.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/MacStatusBarUI.java @@ -184,9 +184,7 @@ public class MacStatusBarUI extends StatusBarUI implements Activatable { final Color top = active ? ACTIVE_TOP_COLOR : INACTIVE_TOP_COLOR; final Color bottom = active ? ACTIVE_BOTTOM_COLOR : INACTIVE_BOTTOM_COLOR; - final GradientPaint paint = new GradientPaint(0, 0, top, 0, height, bottom); - g2d.setPaint(paint); - g2d.fillRect(0, 0, width, height); + UIUtil.fillVerticalGradient(c, g, x, y, width, height, top, bottom); if (active) { g2d.setColor(ACTIVE_BORDER_TOP_COLOR); diff --git a/platform/util/src/com/intellij/util/ui/UIUtil.java b/platform/util/src/com/intellij/util/ui/UIUtil.java index ed2e5cfb999e..a0bc6deeb1a4 100644 --- a/platform/util/src/com/intellij/util/ui/UIUtil.java +++ b/platform/util/src/com/intellij/util/ui/UIUtil.java @@ -158,6 +158,24 @@ public class UIUtil { } } + public static void fillVerticalGradient(final Component c, + final Graphics g, + final int x, + final int y, + final int width, + final int height, + final Color top, + final Color bottom) { + BufferedImage img = new BufferedImage(10, height, BufferedImage.TYPE_INT_RGB); + Graphics2D imageGraphics = (Graphics2D)img.getGraphics(); + imageGraphics.setPaint(new GradientPaint(0, 0, top, 0, height, bottom)); + imageGraphics.fillRect(0, 0, 10, height); + + for (int i = x; i < x + width; i += 10) { + g.drawImage(img, i, y, Math.min(10, width - i), height, null); + } + } + public static boolean isReallyTypedEvent(KeyEvent e) { char c = e.getKeyChar(); if (!(c >= 0x20 && c != 0x7F)) return false;