Skip to content

Commit

Permalink
Brought HISTORY.md and the framebuffer/DRM README.md up to date.
Browse files Browse the repository at this point in the history
  • Loading branch information
Bill-Gray committed Apr 24, 2024
1 parent 7293e85 commit e29f6ef
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 7 deletions.
29 changes: 27 additions & 2 deletions docs/HISTORY.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
Generally speaking, this history mentions only the more significant
changes. See the git log for full details.

Current PDCursesMod - 2024 March 11
=====================================
Current PDCursesMod - 2024 April 23
===================================

Bug fixes
---------
Expand All @@ -24,13 +24,38 @@ Bug fixes
- Framebuffer/DRM port didn't redraw upon changing fonts if the new font
was the same size as the old one. c714cd9bcc

- wsetscrreg() required the cursor for the window to be positioned
between the 'top' and 'bottom' of the new scroll region. 5a0d5becee

- wdeleteln() would delete the line currently under the cursor, then
bring up lines down to the end of the current scroll region, inserting
a blank line there. It really should delete all the way to the bottom
of the window. See also wmcbrine/PDCurses/issues/165. b02f94fd3d

- The 'picsview' demo had a possible buffer overrun error. Reported and
fix proposed by Michael Knap. fcd2dd0cb8

- Plan9 port ran into a compile error due to different timekeeping
functions. Also was missing a few demos and term.h. 1e8472cdbf

Minor new features
------------------

- The DRM and Linux framebuffer port now allows for screen rotation.
Hit Alt-/ for a 90-degree rotation. This should pave the way for
support on phones and other rotatable displays (and already helps if
you have a monitor in portrait mode). 0e41ba5e68 1b7b432f9c

- Added is_cbreak(), is_echo(), is_nl(), is_raw() functions to access
members of the non-opaque SCREEN struct. The first two replace
PDC_getcbreak() and PDC_getecho(). 98b6969a7e

- Added a new 'test' program for the issues mentioned above with
scrolling and winsertln(), wdeleteln(), winsdelln(). 98c7405a3f

- Three new small test programs to investigate various aspects of
how curses works (or doesn't work). 5cef1e3d00

PDCursesMod 4.4.0 - 2023 November 30
===================================

Expand Down
12 changes: 7 additions & 5 deletions fb/README.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,28 @@
PDCurses for Framebuffer
PDCursesMod for Framebuffer
========================

This directory contains source code to support PDCurses using either the 'traditional', now-deprecated [Linux framebuffer](https://en.wikipedia.org/wiki/Linux_framebuffer) library, or the newer [Direct Rendering Manager (DRM)](https://en.wikipedia.org/wiki/Direct_Rendering_Manager) library, which works on Linux and *BSD. Much of the [VT port](../vt) is recycled; for example, the input routines are identical. You will see that some source files simply `#include` a file from the VT port.
This directory contains source code to support PDCursesMod using either the 'traditional', now-deprecated [Linux framebuffer](https://en.wikipedia.org/wiki/Linux_framebuffer) library, or the newer [Direct Rendering Manager (DRM)](https://en.wikipedia.org/wiki/Direct_Rendering_Manager) library, which works on Linux and *BSD. Much of the [VT port](../vt) is recycled; for example, the input routines are identical. You will see that some source files simply `#include` a file from the VT port.

Shortcomings (which should be addressable) are :

- It assumes 8 or 32 bits/pixel. It should be relatively easy to support other bit depths with suitable changes to the `PDC_transform_line()` function in `pdcdisp.c`, but I don't currently have a system that supports 15-, 16-, or 24-bits per pixel. (Fortunately, such displays appear to be getting rare. I had to dig out an elderly laptop to test the 8-bit display.)
- The mouse is not supported. It looks as if the `uinput` system allows one to access the mouse without needing X; I need to investigate. `gpm` may be a better choice.
- Italic and bold fonts are synthesized from the given font, but it would be relatively easy to let specific fonts be used for that purpose.

The default font, borrowed from [DOSVGA](../dosvga), is fixed at 8x14. Set the environment variable `PDC_FONT` to point to the name of a PSF1, PSF2, or VGA font to use that font instead. (See `psf.c` for comments on these font formats.) Hit Alt-Minus to toggle between the built-in and the PDC_FONT-specified fonts. Add more fonts with PDC_FONT2, PDC_FONT3, etc; Alt-Minus will then cycle among all specified fonts and the built-in one.
The default font, borrowed from [DOSVGA](../dosvga), is fixed at 8x14. Set the environment variable `PDC_FONT` to point to the name of a PSF1, PSF2, or VGA font to use that font instead. (See `psf.c` for comments on these font formats.) Hit Alt-Minus to toggle between the built-in and the `PDC_FONT`-specified fonts. Add more fonts with `PDC_FONT2`, `PDC_FONT3`, etc; Alt-Minus will then cycle among all specified fonts and the built-in one.

Alt-/ (Alt-Slash) will rotate the screen 90 degrees clockwise; repeat for 180- and 270-degree rotation. This may be useful on phones and other handheld, hand-rotatable displays. It also can help if you have a monitor set up in portrait mode.

With the Linux framebuffer, all monitors will be used. With DRM, the default one will normally be used. But you can set `PDC_SCREEN=HDMI`, `PDC_SCREEN=VGA`, `PDC_SCREEN=DVI`, etc. as an environment variable to specify a particular display.

Possible 'to do' items
----------------------

In no order :

- Fix the above shortcomings.
- Display on multiple monitors. (Doesn't look feasible with the Linux framebuffer version, I think, but would be relatively easy on DRM.)
- Fallback fonts.
- Fullwidth characters. For these, we may need one font that is, say, 8 pixels wide (for most characters) and one that is 16 pixels wide for the fullwidth characters. That may be an extension of the above task of having fallback fonts : "Didn't find the desired glyph in the 'normal' font? Maybe it's in a fallback font."
- Allow for rotated displays. (As with the aforementioned font switching, this results in a screen resizing, so it'll only work with Curses programs that handle resizes. On phones, the resizing may occur when you rotate the phone.)
- Programmatic resizing through `resize_term()`, both before and after calling `initscr()`.
- User-resizing and moving of windows, if we can get the mouse to work.
- Reserve a line at the top wherein the application title and close/full-screen/minimize buttons can go.
Expand Down

0 comments on commit e29f6ef

Please sign in to comment.