You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2019/05/25 13:10:19 UTC
svn commit: r1859967 -
/pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/fontencodingpane/FontEncodingView.java
Author: tilman
Date: Sat May 25 13:10:19 2019
New Revision: 1859967
URL: http://svn.apache.org/viewvc?rev=1859967&view=rev
Log:
PDFBOX-2941: prevent blurry display of type 3 glyph rendering on HiDPI screens, thanks Alexandr Scherbatiy (same as in issue 3665)
Modified:
pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/fontencodingpane/FontEncodingView.java
Modified: pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/fontencodingpane/FontEncodingView.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/fontencodingpane/FontEncodingView.java?rev=1859967&r1=1859966&r2=1859967&view=diff
==============================================================================
--- pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/fontencodingpane/FontEncodingView.java (original)
+++ pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/fontencodingpane/FontEncodingView.java Sat May 25 13:10:19 2019
@@ -17,7 +17,6 @@
package org.apache.pdfbox.debugger.fontencodingpane;
import javax.swing.BorderFactory;
-import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
@@ -168,14 +167,17 @@ class FontEncodingView
return new JLabel(new HighResolutionImageIcon(
bim,
(int) Math.ceil(bim.getWidth() / DEFAULT_TRANSFORM.getScaleX()),
- (int) Math.ceil(bim.getHeight() / DEFAULT_TRANSFORM.getScaleX())),
+ (int) Math.ceil(bim.getHeight() / DEFAULT_TRANSFORM.getScaleY())),
SwingConstants.CENTER);
}
if (o instanceof BufferedImage)
{
Rectangle cellRect = jTable.getCellRect(row, col, false);
BufferedImage glyphImage = (BufferedImage) o;
- BufferedImage cellImage = new BufferedImage((int) cellRect.getWidth(), (int) cellRect.getHeight(), BufferedImage.TYPE_INT_RGB);
+ BufferedImage cellImage = new BufferedImage(
+ (int) (cellRect.getWidth() * DEFAULT_TRANSFORM.getScaleX()),
+ (int) (cellRect.getHeight() * DEFAULT_TRANSFORM.getScaleY()),
+ BufferedImage.TYPE_INT_RGB);
Graphics2D g = (Graphics2D) cellImage.getGraphics();
g.setBackground(Color.white);
g.clearRect(0, 0, cellImage.getWidth(), cellImage.getHeight());
@@ -183,17 +185,20 @@ class FontEncodingView
double scale = 1 / (glyphImage.getHeight() / cellRect.getHeight());
// horizontal center
- g.translate((cellRect.getWidth() - glyphImage.getWidth() * scale) / 2, 0);
+ g.translate((cellRect.getWidth() - glyphImage.getWidth() * scale) / 2 * DEFAULT_TRANSFORM.getScaleX(), 0);
// scale from the glyph to the cell
- g.scale(scale, scale);
+ g.scale(scale * DEFAULT_TRANSFORM.getScaleX(), scale * DEFAULT_TRANSFORM.getScaleY());
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.drawImage(glyphImage, 0, 0, null);
g.dispose();
- return new JLabel(new ImageIcon(cellImage));
+ return new JLabel(new HighResolutionImageIcon(
+ cellImage,
+ (int) Math.ceil(cellImage.getWidth() / DEFAULT_TRANSFORM.getScaleX()),
+ (int) Math.ceil(cellImage.getHeight() / DEFAULT_TRANSFORM.getScaleY())));
}
if (o != null)
{