always reset our graphics rendering hints

(this is usually not necessary because each component gets its own instance of Graphics when painting, but resetting may avoid side effects if our paint methods are invoked directly)
This commit is contained in:
Karl Tauber
2020-12-18 13:25:04 +01:00
parent 956001dbd7
commit 435068515a
10 changed files with 33 additions and 17 deletions

View File

@@ -166,8 +166,7 @@ public class FlatArrowButton
@Override
public void paint( Graphics g ) {
Graphics2D g2 = (Graphics2D)g;
FlatUIUtils.setRenderingHints( g2 );
Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g );
// paint hover or pressed background
if( isEnabled() ) {
@@ -179,7 +178,7 @@ public class FlatArrowButton
if( background != null ) {
g.setColor( deriveBackground( background ) );
paintBackground( g2 );
paintBackground( (Graphics2D) g );
}
}
@@ -191,7 +190,9 @@ public class FlatArrowButton
? hoverForeground
: foreground))
: disabledForeground ) );
paintArrow( g2 );
paintArrow( (Graphics2D) g );
FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
}
protected void paintBackground( Graphics2D g ) {

View File

@@ -19,7 +19,6 @@ package com.formdev.flatlaf.ui;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.event.MouseAdapter;
@@ -221,8 +220,9 @@ public class FlatScrollBarUI
@Override
public void paint( Graphics g, JComponent c ) {
FlatUIUtils.setRenderingHints( (Graphics2D) g );
Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g );
super.paint( g, c );
FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
}
@Override

View File

@@ -264,7 +264,7 @@ public class FlatSpinnerUI
FlatUIUtils.paintParentBackground( g, c );
Graphics2D g2 = (Graphics2D) g;
FlatUIUtils.setRenderingHints( g2 );
Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g2 );
int width = c.getWidth();
int height = c.getHeight();
@@ -303,6 +303,8 @@ public class FlatSpinnerUI
}
paint( g, c );
FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
}
//---- class Handler ------------------------------------------------------

View File

@@ -20,7 +20,6 @@ import java.awt.Color;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
@@ -148,10 +147,12 @@ public class FlatSplitPaneUI
if( "plain".equals( style ) )
return;
FlatUIUtils.setRenderingHints( (Graphics2D) g );
Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g );
g.setColor( gripColor );
paintGrip( g, 0, 0, getWidth(), getHeight() );
FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
}
protected void paintGrip( Graphics g, int x, int y, int width, int height ) {

View File

@@ -106,13 +106,15 @@ public class FlatToolBarSeparatorUI
float lineWidth = scale( 1f );
float offset = scale( 2f );
FlatUIUtils.setRenderingHints( (Graphics2D) g );
Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g );
g.setColor( separatorColor );
if( isVertical( c ) )
((Graphics2D)g).fill( new Rectangle2D.Float( Math.round( (width - lineWidth) / 2f ), offset, lineWidth, height - (offset * 2) ) );
else
((Graphics2D)g).fill( new Rectangle2D.Float( offset, Math.round( (height - lineWidth) / 2f ), width - (offset * 2), lineWidth ) );
FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
}
private boolean isVertical( JComponent c ) {

View File

@@ -24,7 +24,6 @@ import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.KeyboardFocusManager;
import java.awt.LayoutManager;
@@ -348,8 +347,9 @@ public class FlatInspector
@Override
protected void paintBorder( Graphics g ) {
FlatUIUtils.setRenderingHints( (Graphics2D) g );
Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g );
super.paintBorder( g );
FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
}
};
c.setBackground( new Color( 255, 0, 0, 32 ) );

View File

@@ -218,7 +218,7 @@ public class FlatDatePickerUI
FlatUIUtils.paintParentBackground( g, c );
Graphics2D g2 = (Graphics2D) g;
FlatUIUtils.setRenderingHints( g2 );
Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g2 );
int width = c.getWidth();
int height = c.getHeight();
@@ -252,6 +252,8 @@ public class FlatDatePickerUI
g2.fill( new Rectangle2D.Float( lx, focusWidth, lw, height - 1 - (focusWidth * 2) ) );
paint( g, c );
FlatUIUtils.resetRenderingHints( g2, oldRenderingHints );
}
//---- class DefaultEditor ------------------------------------------------

View File

@@ -146,7 +146,7 @@ public class FlatTaskPaneUI
if( color == null )
return;
FlatUIUtils.setRenderingHints( (Graphics2D) g );
Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g );
g.setColor( color );
@@ -155,6 +155,8 @@ public class FlatTaskPaneUI
path.append( new Rectangle2D.Float( x, y, width, height ), false );
path.append( new Rectangle2D.Float( x + lineWidth, y, width - (lineWidth * 2), height - lineWidth ), false );
((Graphics2D)g).fill( path );
FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
}
@Override
@@ -179,9 +181,11 @@ public class FlatTaskPaneUI
{
@Override
public void paintBorder( Component c, Graphics g, int x, int y, int width, int height ) {
FlatUIUtils.setRenderingHints( (Graphics2D) g );
Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g );
super.paintBorder( c, g, x, y, width, height );
FlatUIUtils.resetRenderingHints( g, oldRenderingHints );
}
@Override

View File

@@ -180,7 +180,7 @@ public class FlatPaintingStringTest
@Override
protected void paintComponent( Graphics g ) {
Graphics2D g2 = (Graphics2D) g;
FlatUIUtils.setRenderingHints( g2 );
Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g2 );
// simulate component y position at a fraction
if( scaleFactor > 1 && SystemInfo.isJava_9_orLater )
@@ -241,6 +241,8 @@ public class FlatPaintingStringTest
double textY = t.getTranslateY() + (y * t.getScaleY());
setToolTipText( textY + " + " + yCorrection + " = " + (textY + yCorrection) );
}
FlatUIUtils.resetRenderingHints( g2, oldRenderingHints );
}
private int scale( int value ) {

View File

@@ -471,7 +471,7 @@ public class FlatPaintingTest
@Override
protected void paintComponent( Graphics g ) {
Graphics2D g2 = (Graphics2D) g;
FlatUIUtils.setRenderingHints( g2 );
Object[] oldRenderingHints = FlatUIUtils.setRenderingHints( g2 );
g2.scale( scale, scale );
g2.translate( 1, 1 );
@@ -503,6 +503,8 @@ public class FlatPaintingTest
g2d.setColor( Color.magenta );
g2d.drawRect( x2 - gap, y2 - gap, width2 + (gap * 2) - 1, height2 + (gap * 2) - 1 );
} );
FlatUIUtils.resetRenderingHints( g2, oldRenderingHints );
}
}
}