sixel: empty pixels in the last sixel row doesn’t contribute to the image height
sixel: empty pixels in the last sixel row doesn’t contribute to the image height All-empty pixels rows in the last sixel row should not be included in the final sixel image. This allows applications to...
View Articlesixel: add optimized resize_horizontally() and resize_vertically()
sixel: add optimized resize_horizontally() and resize_vertically() The resize operations performed in the “hot” path either change the width, or the height, but not both at the same time.
View Articlesixel: add: increase data pointer instead of offset
sixel: add: increase data pointer instead of offset Same ‘add’ instruction to increase the offset, but simpler ‘mov’ instruction when writing the pixel data.
View Articlesixel: add: calculate absolute row no inside the loop
sixel: add: calculate absolute row no inside the loop This results in the same number of instructions inside the loop, with a ‘lea’ instead of a ‘mov’, but simplifies the post-loop logic to update the...
View Articlesixel: add: add sixel_add_many(), improving performance of DECGRI
sixel: add: add sixel_add_many(), improving performance of DECGRI DECGRI, i.e. repeat sixel character, only need to do image resizing, and updating the current ‘column’ value *once*. By adding...
View Articlesixel: decgri: handle a repeat count of 0, by ignoring it
sixel: decgri: handle a repeat count of 0, by ignoring it
View Articlesixel: decgra: set max-non-empty-row-no when resizing the image
sixel: decgra: set max-non-empty-row-no when resizing the image This ensures we don’t trim off bottom rows in unhook(). This could happen either because the application used “Set Raster Attributes” to...
View Articlesixel: implement P2=1 - transparent pixels
sixel: implement P2=1 - transparent pixels When P2=1, empty pixels are transparent. This patch also changes the behavior of P2=0|2, from setting empty pixels to the default background color, to instead...
View Articlesixel: max geometry should be max geometry, not current window size
sixel: max geometry should be max geometry, not current window size “current geometry” will report whatever value is the smallest; the max geometry or the current window size. But “max geometry” always...
View Articlesixel: sixel_overwrite_at_cursor(): early exit when the image list is empty
sixel: sixel_overwrite_at_cursor(): early exit when the image list is empty This avoids a call to sixel_overwrite_by_row() (where we also exit early if the image list is empty). This saves a couple of...
View Articleterm: runtime switch between a ‘fast’ and a ‘generic’ ASCII print function
term: runtime switch between a ‘fast’ and a ‘generic’ ASCII print function term_print() is called whenever the client application “prints” something to the grid. It is called for both ASCII and UTF-8...
View Articlesixel: initialize max_non_empty_row_no to -1, not 0
sixel: initialize max_non_empty_row_no to -1, not 0 0 is a perfectly valid row number, and if max_non_empty_row_no==0, that means we have *1* sixel row, and after trimming the image, the image will...
View Articlesixel: free backing buffer if final image size is zero
sixel: free backing buffer if final image size is zero
View Articlesixel: fix double free caused by bad free() in sixel_colors_set()
sixel: fix double free caused by bad free() in sixel_colors_set() sixel_color_set() is called when the number of (sixel) color registers is changed. It frees the current palette, and changes the...
View Articlesixel: sixel_fini(): free image data
sixel: sixel_fini(): free image data Normally, this data is always free:d indirectly, when the sixel image that took over ownership is destroyed. But let’s play it safe.
View Articlesixel: unhook: tighten up the condition needed for us to free image data...
sixel: unhook: tighten up the condition needed for us to free image data pre-maturely
View Articlesixel: fix assertion: image is allowed to cover the entire scrollback
sixel: fix assertion: image is allowed to cover the entire scrollback
View Articlesixel: don’t emit sixels that will end up covering more than the entire...
sixel: don’t emit sixels that will end up covering more than the entire scrollback This limit can be reached by the sixel alone, or the sixel + the final newline. Closes #494
View Articlesixel: don’t *ever* shrink image below its SRA size
sixel: don’t *ever* shrink image below its SRA size If the image was accompanied with a “Set Raster Attributes” (SRA) command, make sure we *never* shrink the image below the size specified in the SRA....
View Article