Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create test suite for sixel rendering engines #24

Open
hackerb9 opened this issue Sep 20, 2022 · 1 comment
Open

Create test suite for sixel rendering engines #24

hackerb9 opened this issue Sep 20, 2022 · 1 comment

Comments

@hackerb9
Copy link
Owner

hackerb9 commented Sep 20, 2022

As more and more terminals are adding sixel support, there ought to be a program which exercises a sixel implementation and outputs easily understood results. Since the VT340 was the last of DEC's sixel terminals, it makes sense to check conformance using the data from this project.

This issue was created so that people can chime in with what is important to test and how it should be done.

I'll start out with some topics, hopefully to be filled out and properly categorized below:

  • Level 1 vs Level 2 sixel protocol headers.
    • Ps1 Aspect ratio in Device Control String macro parameter (Level 1) or Set Raster Attributes (Level 2). Default if not specified is 2:1 (pixels duplicated twice to make them taller).
    • Allows horizontal grid size parameter to set DPI? (Not used by VT340 as screen pitch is fixed at 0.0075in).
    • Handles both 8-bit and 7-bit controls. Particularly DCS (EscP or 0x90) and ST (Esc\ or 0x9C)
    • Allows (ignores) embedded New Lines in sixel data
  • MediaCopy to send a screenshot (in sixel format) back to the terminal.
  • Handles (or at least ignores) extra escape sequences before sixel data. (E.g., String Terminator Esc\ or Select Size Unit Esc[2SpaceI)
  • Ps2 Transparency cat2.six and delta overprinting jerch/overprint.sh
  • Pn3 Resolution (VT340 can only handle the lowest resolution, 72dpi, and ignores this parameter).
  • Scrolling up with text: see
    • Via normal text New Line ('\n')
    • Via INDEX (Esc D) and DOWN (Esc [ B)
    • Via Graphical New Line, even with no data sent jerch/gcrglf.sh
  • Raster Attributes
    • Aspect Ratio overrides P1
    • Drawing outside the cleared region of the bounding box should be allowed
    • Region is not cleared when image has transparent background
    • When RA missing or no geometry, clear from cursor to bottom right corner: sixeltests/p2effect.sh
  • DECSDM mode (no sixel scrolling)
  • Double buffering (multiple text pages) sixeltests/pageflip.sh
  • SIGWINCH properly sent when terminal font size changes. chkwinch.sh
  • Query sixel geometry (XTSMGRAPHICS and Kermit's method)
  • Scrolling sixels sideways in a window sixeltests/animation.sh
  • Text below a sixel image may overlap it based on presence of NL and GNL, height of image drawn, and height of character cell. textcursor.sh. Note: this may be a glitch in the VT340 firmware as it does not appear to be required by the sixel specification nor is there any obvious benefit. glitches.md. Fortunately, it is a rare occurrence that will become rarer and less noticeable as higher resolution font sizes are used.
  • Colormaps
    • Number of colors (4? 16? 32? 256? 1000? more?) simultaneous colors. VT340 has 16.
    • Registers number 0, 7, and 15 affect text color (background, foreground, and bright fg)
    • Allows colors specified in HLS colorspace (Hue-Lightness-Saturation). Be sure Hue 0° is Blue, not Red!
    • Color depth (VT340 is 4-bits per channel = 4096 colors)
    • Uses default colors if none assigned since startup. cat3.six
    • Querying existing colormap (DEC Color Table Report) showcolortable.sh
    • Reset colormap using DEC Reset Terminal State resetpalette.sh
    • Reuse previous colormap in new image cat.six
    • "Animating" via changing colormap
  • ReGIS graphics registest.sh
@hackerb9
Copy link
Owner Author

hackerb9 commented May 11, 2024

Note to self: I should adapt my scripts for emulators that support ReGIS Media Copy to Host so they can automatically test themselves for regressions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant