sixel: regression: linefeed count for chunked up sixel image
sixel: regression: linefeed count for chunked up sixel image All image chunks but the last *should* scroll the screen content.
View Articlesixel: ensure enough rows have been scrolled in, to fit the image
sixel: ensure enough rows have been scrolled in, to fit the image When emitting a sixel, we need to: a) scroll terminal content to ensure the new image fits b) position the text cursor Recent changes...
View Articlesixel: assert upper pixel of last sixel maps to last image row, *or lower*
sixel: assert upper pixel of last sixel maps to last image row, *or lower*
View Articlesixel: special case parsing of images with an aspect ratio of 1:1
sixel: special case parsing of images with an aspect ratio of 1:1 Images with an aspect ratio of 1:1 are by far the most common (though not the default). It makes a lot of sense, performance wise, to...
View Articlesixel: refactor: shorten very verbose switch case statements
sixel: refactor: shorten very verbose switch case statements
View Articlesixel: add_ar_11(): manually unroll loop
sixel: add_ar_11(): manually unroll loop This generates both smaller, and faster code
View Articlesixel: re-scale images when the cell dimensions change
sixel: re-scale images when the cell dimensions change Before this patch, when the cell dimensions changed (i.e. when the font size changes), sixel images were either removed (the new cell dimensions...
View Articlesixel: fix regression for DECGRI with a repeat count of 0
sixel: fix regression for DECGRI with a repeat count of 0
View Articlesixel: erase: fix clearing of cell->attrs.clean
sixel: erase: fix clearing of cell->attrs.clean When erasing a sixel, the cells underneath it must be marked as 'dirty', in order to be re-rendered. This was not being done correctly; the for loop...
View ArticleDon't use fancy Unicode quotes, stick to ASCII
Don't use fancy Unicode quotes, stick to ASCII
View Articlesixel: fix row height calculation in resize_vertically()
sixel: fix row height calculation in resize_vertically() In resize_vertically(), we assumed a sixel is 6 pixels tall. This is mostly true, but not for non-1:1 sixels. Or, to be more precise, not for...
View Articlesixel: performance improvements
sixel: performance improvements * Store pointer to current pixel (i.e. pixel we're about to write to), instead of a row-byte-offset. This way, we don't have to calculate the offset into the backing...
View Articlesixel: debug: fix logged width/height values when emitting sixel
sixel: debug: fix logged width/height values when emitting sixel image.width and image.height are the scaled dimensions, and these haven't been set when the log message is printed.
View Articlesixel: we no longer need the extra newline
sixel: we no longer need the extra newline Since we never place the cursor *under* the sixel anymore.
View Articlesixel: debug: sixel image _may_ be zero-sized
sixel: debug: sixel image _may_ be zero-sized For example, and single GNL (Graphical New Line) will result in a sixel with a non-zero height, but a zero width.
View Articlesixel: don't try to emit a sixel if we're outside the image's boundaries
sixel: don't try to emit a sixel if we're outside the image's boundaries Closes #1634
View Articlesixel: initialize the color table to colors used by the VT340
sixel: initialize the color table to colors used by the VT340
View Articlesixel: place cursor on the last character row touched by the sixel
sixel: place cursor on the last character row touched by the sixel After emitting a sixel, place the cursor on the character row touched by the last sixel. The last sixel _may_ not be a multiple of 6...
View Article