X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2Fio%2FScreen.java;h=ec5309d669c3cf06a36dc5c2a460615d9b3422ad;hb=9b1afdde02c30f0d4a80ba330a4bc72384093253;hp=e3f72191809b73565397c98c8b8523c800b9f8be;hpb=92554d64c21c6a477fd23a06ca3a64a542b622a3;p=nikiroo-utils.git diff --git a/src/jexer/io/Screen.java b/src/jexer/io/Screen.java index e3f7219..ec5309d 100644 --- a/src/jexer/io/Screen.java +++ b/src/jexer/io/Screen.java @@ -183,7 +183,7 @@ public abstract class Screen { /** * When true, logical != physical. */ - protected boolean dirty; + protected volatile boolean dirty; /** * Get dirty flag. @@ -225,7 +225,6 @@ public abstract class Screen { * @return attributes at (x, y) */ public final CellAttributes getAttrXY(final int x, final int y) { - CellAttributes attr = new CellAttributes(); if ((x >= 0) && (x < width) && (y >= 0) && (y < height)) { attr.setTo(logical[x][y]); @@ -276,11 +275,11 @@ public abstract class Screen { dirty = true; logical[X][Y].setForeColor(attr.getForeColor()); logical[X][Y].setBackColor(attr.getBackColor()); - logical[X][Y].setBold(attr.getBold()); - logical[X][Y].setBlink(attr.getBlink()); - logical[X][Y].setReverse(attr.getReverse()); - logical[X][Y].setUnderline(attr.getUnderline()); - logical[X][Y].setProtect(attr.getProtect()); + logical[X][Y].setBold(attr.isBold()); + logical[X][Y].setBlink(attr.isBlink()); + logical[X][Y].setReverse(attr.isReverse()); + logical[X][Y].setUnderline(attr.isUnderline()); + logical[X][Y].setProtect(attr.isProtect()); } } @@ -344,11 +343,11 @@ public abstract class Screen { logical[X][Y].setChar(ch); logical[X][Y].setForeColor(attr.getForeColor()); logical[X][Y].setBackColor(attr.getBackColor()); - logical[X][Y].setBold(attr.getBold()); - logical[X][Y].setBlink(attr.getBlink()); - logical[X][Y].setReverse(attr.getReverse()); - logical[X][Y].setUnderline(attr.getUnderline()); - logical[X][Y].setProtect(attr.getProtect()); + logical[X][Y].setBold(attr.isBold()); + logical[X][Y].setBlink(attr.isBlink()); + logical[X][Y].setReverse(attr.isReverse()); + logical[X][Y].setUnderline(attr.isUnderline()); + logical[X][Y].setProtect(attr.isProtect()); } } @@ -591,12 +590,24 @@ public abstract class Screen { } /** - * Force the screen to be fully cleared and redrawn on the next flush(). + * Clear the logical screen. */ public final void clear() { reset(); } + /** + * Clear the physical screen. + */ + public final void clearPhysical() { + dirty = true; + for (int row = 0; row < height; row++) { + for (int col = 0; col < width; col++) { + physical[col][row].reset(); + } + } + } + /** * Draw a box with a border and empty background. * @@ -633,8 +644,6 @@ public abstract class Screen { final CellAttributes border, final CellAttributes background, final int borderType, final boolean shadow) { - int boxTop = top; - int boxLeft = left; int boxWidth = right - left; int boxHeight = bottom - top;