Add comments

This commit is contained in:
tznind
2024-09-15 11:36:23 +01:00
parent f103b04c26
commit cbef6c591a

View File

@@ -51,6 +51,15 @@ public class SixelEncoder
[ ] - Bit 3 [ ] - Bit 3
[ ] - Bit 4 [ ] - Bit 4
[ ] - Bit 5 (bottom-most pixel) [ ] - Bit 5 (bottom-most pixel)
Special Characters
The '-' acts like '\n'. It moves the drawing cursor
to beginning of next line
The '$' acts like the <Home> key. It moves drawing
cursor back to beginning of the current line
e.g. to draw more color layers.
*/ */
/** /**
@@ -62,12 +71,14 @@ public class SixelEncoder
*/ */
private string WriteSixel (Color [,] pixels) private string WriteSixel (Color [,] pixels)
{ {
StringBuilder sb = new StringBuilder (); StringBuilder sb = new StringBuilder ();
int height = pixels.GetLength (1); int height = pixels.GetLength (1);
int width = pixels.GetLength (0); int width = pixels.GetLength (0);
int n = 1; // Used for checking when to add the line terminator
// Iterate over each row of the image // Iterate over each 'row' of the image. Because each sixel write operation
// outputs a screen area 6 pixels high (and 1+ across) we must process the image
// 6 'y' units at once (1 band)
for (int y = 0; y < height; y += 6) for (int y = 0; y < height; y += 6)
{ {
sb.Append (ProcessBand (pixels, y, Math.Min (6, height - y), width)); sb.Append (ProcessBand (pixels, y, Math.Min (6, height - y), width));
@@ -75,6 +86,9 @@ public class SixelEncoder
// Line separator between bands // Line separator between bands
if (y + 6 < height) // Only add separator if not the last band if (y + 6 < height) // Only add separator if not the last band
{ {
// This completes the drawing of the current line of sixel and
// returns the 'cursor' to beginning next line, newly drawn sixel
// after this will draw in the next 6 pixel high band (i.e. below).
sb.Append ("-"); sb.Append ("-");
} }
} }