fbergama / pigfx

PiGFX is a bare metal kernel for the Raspberry Pi that implements a basic ANSI terminal emulator with the additional support of some primitive graphics functions.
MIT License
275 stars 60 forks source link

Character Glitches? #8

Closed wawa1474 closed 6 years ago

wawa1474 commented 6 years ago

Unable to replicate the screen that is shown on the main page, certain characters don't show or weirdly reset the display.

The image in question... mainImage

Looking at the image there appear to be some characters that I can't get to display correctly. cbios_8x8_8x32highlightedreordered

20180708_124744_0 The red squares are the characters that are acting wrong. They appear to be special characters.

0 = NULL (Appears to just be a empty space, but still messes up the screen none the less) 8 = Backspace 9 = Horizontal Tab 10 = Line Feed 12 = Form Feed/ New Page 13 = Carriage Return 27 = Escape Fixed By Sending Twice (Marked in Yellow) 127 = Delete

Sending an escape character before them doesn't seem to fix them. Any clue how to fix this?

"Fixed" by editing gfx.c to stop it from eating the inputs and recompiling, unfortunately this means breaking other things...

20180721_121157_0

Ended up modifying the font itself, it works but is not satisfactory...

20180722_104344_0 Leaves some empty spaces and is not standard but works.

wawa1474 commented 6 years ago

Moved this to my fork as it seems more appropriate. https://github.com/wawa1474/pigfx/issues/1 Plus this place seems dead...

fbergama commented 6 years ago

Hi, The screen in the main page is just a sample of how the characters could be rendered on the screen. The terminal ansi codes parser do not allow you to print all the available characters. The obvious example is the ESC (27) used to start a sequence, or the newline character that would change the cursor position.

At the moment there is no way to just output the raw UART data. If you want to modify the sources, I suggest you to call the function

void gfx_putc( unsigned int row, unsigned int col, unsigned char c )

to manually render a specific char at a certain screen position.

I don't have so much spare time to support this project anymore, so any fork is welcome