X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2Ftterminal%2FSixel.java;h=63e3c0fadcfa670d308c0f327f89f8e21313b810;hb=0d86ab8480cabbe32fc87588304ddc795a4df14f;hp=6a10b7a892c2312d4dbdcb3b6473edecbe4a28b8;hpb=e6469faa3f6895ec0ff9b7592a7348a321898b71;p=fanfix.git diff --git a/src/jexer/tterminal/Sixel.java b/src/jexer/tterminal/Sixel.java index 6a10b7a..63e3c0f 100644 --- a/src/jexer/tterminal/Sixel.java +++ b/src/jexer/tterminal/Sixel.java @@ -117,6 +117,11 @@ public class Sixel { */ private int x = 0; + /** + * The maximum y drawn to. This will set the final image height. + */ + private int y = 0; + /** * The current drawing color. */ @@ -152,7 +157,7 @@ public class Sixel { */ public BufferedImage getImage() { if ((width > 0) && (height > 0)) { - return image.getSubimage(0, 0, width, height + 6); + return image.getSubimage(0, 0, width, y + 1); } return null; } @@ -167,6 +172,11 @@ public class Sixel { BufferedImage newImage = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_ARGB); + if (DEBUG) { + System.err.println("resizeImage(); old " + image.getWidth() + "x" + + image.getHeight() + " new " + newWidth + "x" + newHeight); + } + Graphics2D gr = newImage.createGraphics(); gr.drawImage(image, 0, 0, image.getWidth(), image.getHeight(), null); gr.dispose(); @@ -282,21 +292,27 @@ public class Sixel { for (int i = 0; i < rep; i++) { if ((n & 0x01) != 0) { image.setRGB(x, height + 0, rgb); + y = Math.max(y, height); } if ((n & 0x02) != 0) { image.setRGB(x, height + 1, rgb); + y = Math.max(y, height + 1); } if ((n & 0x04) != 0) { image.setRGB(x, height + 2, rgb); + y = Math.max(y, height + 2); } if ((n & 0x08) != 0) { image.setRGB(x, height + 3, rgb); + y = Math.max(y, height + 3); } if ((n & 0x10) != 0) { image.setRGB(x, height + 4, rgb); + y = Math.max(y, height + 4); } if ((n & 0x20) != 0) { image.setRGB(x, height + 5, rgb); + y = Math.max(y, height + 5); } x++; if (x > width) { @@ -396,14 +412,15 @@ public class Sixel { toGround(); } - if (height + 6 < image.getHeight()) { + height += 6; + x = 0; + + if (height + 6 > image.getHeight()) { // Resize the image, give us another HEIGHT_INCREASE // pixels of vertical length. resizeImage(image.getWidth(), image.getHeight() + HEIGHT_INCREASE); } - height += 6; - x = 0; return; }