X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2Fio%2FSwingScreen.java;h=3c949c1b8016866d4e36641d1afe1c0e1837a2c6;hb=daa4106c096cd4d2b92c3cbae6491edccd25fcc4;hp=2c31d765ac1f15f7e8b4fa93229e371b3ff7f695;hpb=55b4f29bc5389d9ce185efa9f6e14c5f3882ac70;p=fanfix.git diff --git a/src/jexer/io/SwingScreen.java b/src/jexer/io/SwingScreen.java index 2c31d76..3c949c1 100644 --- a/src/jexer/io/SwingScreen.java +++ b/src/jexer/io/SwingScreen.java @@ -1,4 +1,4 @@ -/** +/* * Jexer - Java Text User Interface * * License: LGPLv3 or later @@ -168,6 +168,16 @@ public final class SwingScreen extends Screen { */ private int maxDescent = 0; + /** + * System-dependent Y adjustment for text in the character cell. + */ + private int textAdjustY = 0; + + /** + * System-dependent X adjustment for text in the character cell. + */ + private int textAdjustX = 0; + /** * Top pixel absolute location. */ @@ -329,7 +339,7 @@ public final class SwingScreen extends Screen { getFontDimensions(); // Setup double-buffering - if (screen.doubleBuffer) { + if (SwingScreen.doubleBuffer) { setIgnoreRepaint(true); createBufferStrategy(2); bufferStrategy = getBufferStrategy(); @@ -350,6 +360,11 @@ public final class SwingScreen extends Screen { // This also produces the same number, but works better for ugly // monospace. textHeight = fm.getMaxAscent() + maxDescent - leading; + + if (System.getProperty("os.name").startsWith("Windows")) { + textAdjustY = -1; + textAdjustX = 0; + } } /** @@ -477,8 +492,10 @@ public final class SwingScreen extends Screen { gr.setColor(attrToForegroundColor(lCellColor)); char [] chars = new char[1]; chars[0] = lCell.getChar(); - gr.drawChars(chars, 0, 1, xPixel, - yPixel + textHeight - maxDescent); + gr.drawChars(chars, 0, 1, xPixel + textAdjustX, + yPixel + textHeight - maxDescent + + textAdjustY); + if (lCell.isUnderline()) { gr.fillRect(xPixel, yPixel + textHeight - 2, textWidth, 2); @@ -582,7 +599,7 @@ public final class SwingScreen extends Screen { if (reallyCleared) { // Really refreshed, do it all - if (doubleBuffer) { + if (SwingScreen.doubleBuffer) { Graphics gr = frame.bufferStrategy.getDrawGraphics(); frame.paint(gr); gr.dispose(); @@ -649,7 +666,7 @@ public final class SwingScreen extends Screen { // Repaint the desired area // System.err.printf("REPAINT X %d %d Y %d %d\n", xMin, xMax, // yMin, yMax); - if (doubleBuffer) { + if (SwingScreen.doubleBuffer) { Graphics gr = frame.bufferStrategy.getDrawGraphics(); Rectangle bounds = new Rectangle(xMin, yMin, xMax - xMin, yMax - yMin);