git://git.nikiroo.be
/
fanfix.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
dev version bump to 0.3.2
[fanfix.git]
/
src
/
jexer
/
backend
/
ECMA48Terminal.java
diff --git
a/src/jexer/backend/ECMA48Terminal.java
b/src/jexer/backend/ECMA48Terminal.java
index 6085554904320675139608a67329e0bbe33428fe..39ca236552d37302786fa1be4747d50b425aa7ec 100644
(file)
--- a/
src/jexer/backend/ECMA48Terminal.java
+++ b/
src/jexer/backend/ECMA48Terminal.java
@@
-2958,6
+2958,8
@@
public class ECMA48Terminal extends LogicalScreen
// colored pixels, and select the color.
sb.append(String.format("$#%d", i));
// colored pixels, and select the color.
sb.append(String.format("$#%d", i));
+ int oldData = -1;
+ int oldDataCount = 0;
for (int imageX = 0; imageX < image.getWidth(); imageX++) {
// Add up all the pixels that match this color.
for (int imageX = 0; imageX < image.getWidth(); imageX++) {
// Add up all the pixels that match this color.
@@
-2990,10
+2992,32
@@
public class ECMA48Terminal extends LogicalScreen
}
}
assert (data >= 0);
}
}
assert (data >= 0);
- assert (data <
127
);
+ assert (data <
64
);
data += 63;
data += 63;
- sb.append((char) data);
+
+ if (data == oldData) {
+ oldDataCount++;
+ } else {
+ if (oldDataCount == 1) {
+ sb.append((char) oldData);
+ } else if (oldDataCount > 1) {
+ sb.append(String.format("!%d", oldDataCount));
+ sb.append((char) oldData);
+ }
+ oldDataCount = 1;
+ oldData = data;
+ }
+
} // for (int imageX = 0; imageX < image.getWidth(); imageX++)
} // for (int imageX = 0; imageX < image.getWidth(); imageX++)
+
+ // Emit the last sequence.
+ if (oldDataCount == 1) {
+ sb.append((char) oldData);
+ } else if (oldDataCount > 1) {
+ sb.append(String.format("!%d", oldDataCount));
+ sb.append((char) oldData);
+ }
+
} // for (int i = 0; i < MAX_COLOR_REGISTERS; i++)
// Advance to the next scan line.
} // for (int i = 0; i < MAX_COLOR_REGISTERS; i++)
// Advance to the next scan line.
@@
-3012,6
+3036,15
@@
public class ECMA48Terminal extends LogicalScreen
return (startSixel(x, y) + sb.toString() + endSixel());
}
return (startSixel(x, y) + sb.toString() + endSixel());
}
+ /**
+ * Get the sixel support flag.
+ *
+ * @return true if this terminal is emitting sixel
+ */
+ public boolean hasSixel() {
+ return sixel;
+ }
+
// ------------------------------------------------------------------------
// End sixel output support -----------------------------------------------
// ------------------------------------------------------------------------
// ------------------------------------------------------------------------
// End sixel output support -----------------------------------------------
// ------------------------------------------------------------------------