Skip to content

Releases: wmcbrine/PDCurses

PDCurses 3.9 - 2019-09-04

04 Sep 22:01
Compare
Choose a tag to compare

768 colors, single-process X11, copy-and-paste for all, and more.

New features

  • Single-process, single-thread version of the X11 port. Much, much
    faster than the two-process version. Needs more testing. This version
    omits translations.

  • A common copy-and-paste system for all platforms, based on the
    PDC_*clipboard() functions. (This is the first time copy-and-paste is
    available for the SDL ports, and it replaces the old X11-specific
    C&P.) Press and hold button 1 while selecting; paste with button 2.
    Add Shift if mouse events are activated in curses. You can also paste
    via Shift-Ctrl-V, and copy with Shift-Ctrl-C (although selecting
    already sets the buffer). Note that paste is implemented via
    ungetch(), and is currently limited to 256 characters at a time. (You
    can get more via PDC_getclipboard().) With some ports (e.g. Wincon),
    the existing terminal C&P mechanism may override PDCurses'. DOS and
    SDL1 can only C&P within the same app.

  • A new maximum of 768 colors, for Wincon, SDL and X11. COLOR_PAIRS is
    still limited to 256. The idea is that each pair can have a unique
    foreground and background, without having to redefine any of the first
    256 (predefined) colors. Colors 256-767 have no initial definitions,
    and are intended to be set via init_color(). An example has been added
    to testcurs (loosely based on part of newtest, by Bill Gray).

  • Wincon now allows redefinition of all 768 colors, and allows it even
    under ConEmu.

  • True italics for ConEmu. (It seems it should also support true bold,
    but I couldn't make that work.)

  • Added new functions from ncurses and/or NetBSD: has_mouse(),
    is_keypad(), is_leaveok(), is_pad(), set_tabsize(), touchoverlap(),
    underscore(), underend(), wunderscore(), and wunderend(). See the man
    pages for descriptions. Partly due to Karthik Kumar Viswanathan, and
    suggestions of Simon Sobisch.

Bug fixes and such

  • Check for standard C++ (>= 98), where native bool should exist, and use
    that; otherwise (pre-/non-standard C++) fall back to the old behavior.
    Satisfies clang, hopefully doesn't mess anything else up.

  • Recent versions of clang throw an error over "-install_name".

  • Most curses functions assumed a valid SP (i.e. that initscr() had
    already been called). Now, instead, they return ERR or other
    appropriate values. Suggestion of S.S.

  • Deprecated PDC_save_key_modifiers() -- there's no benefit to NOT
    saving them.

  • Hold back screen updates due to palette changes until paused; always
    do this update now (previously only in X11 and SDL, seems necessary in
    Windows 10 1903).

  • SDL2 windows were freezing on moving to another screen (reported by
    Mark Hessling). Still issues with moving between screens of different
    scaling.

  • Find the X libraries in some additional locations. After M.H.

  • Converted default X11 icons to XPM, fixing their non-display in Ubuntu.

  • Made XIM standard, removed "classic" X11 compose system.

  • Made wide-character build the default for X11 (--disable-widec for
    narrow).

  • Smoother resizing in X11, when not in scrollbar mode.

  • Dropped X11 options "borderWidth" (broken since at least 2.7) and
    "cursorColor" (now set automatically for contrast).

  • Correctly restore Insert mode and QuickEdit mode in Wincon's
    PDC_reset_shell_mode(). Patch by "vyv03354".

  • Add a WINDRES variable to wincon/Makefile for the sake of cross-
    compilers. Patch by Marc-Andre Lureau.

  • Suppress cursor movement during color tests in testcurs.

  • Added UTF-8-demo.txt for tuidemo to browse (by default, only in forced
    UTF-8 mode). File by Markus Kuhn.

  • Moved the doc files from "man" to "docs" -- the docs/man thing was too
    confusing. Streamlined the web page into two files.

  • Rewrote the "Portability" sections of the man pages to reflect current
    ncurses and NetBSD. The old charts weren't very accurate.

  • Document resolution of timeout() and napms(). Suggested by S.S.

  • Rewrote manext (again) in Awk.

  • Changed most dates to ISO format.

See the git log for more details.

PDCurses 3.8 - 2019-02-02

02 Feb 15:31
Compare
Choose a tag to compare

It's that time again.

New features

  • PDC_VERSION structure and PDC_get_version() function, to provide run-
    time information on version and compile options, in case they don't
    match the header; along with new compile-time defines PDC_VER_MAJOR,
    PDC_VER_MINOR and PDC_VERDOT. Suggested by Simon Sobisch, designed
    partly after Bill Gray and partly after SDL_VERSION.

  • Extensive documentation revisions, now covering many previously
    undocumented functions.

  • Allow building the DLL with MinGW for SDL. (This also changes the
    non-DLL library name from libpdcurses.a to pdcurses.a.)

  • Consolidated Watcom makefiles for DOS, after Tee-Kiah Chia; added
    MODEL option to Makefile.bcc for consistency.

  • Added another ncurses_test, "lrtest"; updated for ncurses 6.1.

Bug fixes and such

  • T.H.'s update rect clipper (a resize fix for SDL2) broke sdltest,
    because it didn't take the offsets into account for a non-owned
    window.

  • The version number is now hardwired only in curses.h and configure.ac.

  • Revised pdcurses.rc to correctly show all fields when checking the
    properties on a DLL; use it with MinGW as well as MSVC.

  • Allow building both 32- and 64-bit SDL2 versions in MinGW without
    editing the Makefile, by using the proper dev package.

  • Build SDL2 demos in "Windows" mode (i.e. no controlling terminal) with
    MSVC, as with MinGW.

  • Build sdltest.exe with MSVC.

  • Changed sample pathname in tuidemo to always use slashes -- the
    backslashes failed in, e.g., SDL under Linux or macOS. Patch by B.G.

  • Warning fix for Borland OS/2.

  • Minor file reorganization / renaming.

  • mmask_t is now used in both the classic and ncurses mouse interfaces,
    and is defined in such a way as to keep it at 32 bits.

  • Dropped map_button() and getbmap().

  • Dropped the ability to build BBS-ready archives from the Makefiles.

  • Made manext.py compatible with Python 3.x.

See the git log for more details.

PDCurses 3.7 - 2018-12-31

01 Jan 04:38
Compare
Choose a tag to compare

New features

  • Avoid conflict with ncurses by having apps define PDC_NCMOUSE before
    including curses.h to invoke the ncurses-style mouse interface,
    instead of NCURSES_MOUSE_VERSION. (The old way will also still work.)
    After Simon Sobisch (see PR #33).

  • In SDL, the box-drawing and block ACS characters are now rendered in a
    font-independent way, to ensure their correct alignment across cells.
    Underlining is now handled in a similar way.

  • TTF fonts in SDL are now rendered in Blended mode instead of Solid.
    Partly after Joachim de Groot.

  • New default fonts and font sizes for SDL/TTF.

  • SDL2 now builds under MSVC. Partly due to Alexandru Afrasinei.

  • Documentation re-org -- more Markdown internal links; moved to man/
    dir (the doc/ dir name was too similar to docs/, which is needed for
    GitHub Pages hosting); concatenated man page document now made
    permanent, under the name MANUAL.md; new man build utils; merged
    sdl.md and x11.md into their respective READMEs; changed some
    redundant and unclear comments.

  • Directory re-org -- in addition to the above, created common/, to
    unclutter the root, and eliminate a few more redundant files from
    platform directories. (We already had "pdcurses", but that's for the
    portable core; "common" is for files that are more platform-specific,
    though shared by more than one platform.)

  • Broke out the redundant ACS tables and moved them to common/.

  • PDcurses' "bool" type is now based on stdbool.h, when available. There
    should be no conflicts when including stdbool.h either before or after
    curses.h.

  • The demos are no longer built by default, since they add a lot of time
    to the build, and often aren't wanted. But you can still build them via
    "make demos" (tweak as needed).

  • Makefile tweaks for cross-compiling by Simon Sobisch.

Bug fixes and such

  • Improved Windows console resizing, when reducing the vertical size.
    After Ulf Magnusson. (See GitHub issue #26.)

  • Bring back ifdef'd CONSOLE_SCREEN_BUFFER_INFOEX, for the benefit of
    older compile environments. (Not automatic -- must specify INFOEX=N on
    the command line.) After Simon Sobisch.

  • Replaced COMMON_LVB_* with numbers to appease some old compilers.
    After Simon Sobisch.

  • KEY_RESIZE should be key_code = TRUE. Reported by Ulf Magnusson.

  • SDL2 resize fixes to prevent crashes, by Tim Hentenarr.

  • SDL2 fixes for handling of SDL_TEXTINPUT, keys with modifiers, and
    modifier keystrokes, by Tim Hentenarr.

  • Fixed cursor rendering in SDL/TTF.

  • SDL1 support is now dropped for Windows and macOS, and deprecated for
    Linux. Use SDL2. The SDL1 port is likely to be dropped in the future.

  • The setsyx() function is now void, after ncurses, and simplified.

  • Warning fixes by Patrick Georgi and Stefan Reinauer.

  • X11 used SP->resized in a non-boolean way, so it's now a short.

  • Under some conditions (see issue #47), the X11 port could "free" colors
    that it hadn't allocated. Reported by rin-kinokocan.

  • New scroller for ozdemo -- no memory allocation, less copying -- to
    resolve issue #46.

  • Various minor Makefile tweaks.

  • Eliminated term.h and terminfo.c, and moved mvcur() to move.c. These
    stub functions, done on request (with others then requesting that I
    take them away -- can't win), were a misguided attempt to facilitate
    using PDCurses with certain non-C languages -- which, apparently, they
    didn't end up actually doing. They're also, regrettably, specified as
    part of the X/Open curses standard, even though they in effect
    describe an entirely different interface layer (one on which
    traditional curses, but not PDCurses, is built).

  • Dropped support for short (16-bit) chtypes.

  • Finally removed deprec.c, as it promised.

  • Dropped the XOPEN, SYSVcurses and BSDcurses defines from curses.h, as
    well as NULL (which is defined in stdio.h, included). TRUE, FALSE, ERR
    and OK are now defined unconditionally.

  • Moved pdcurses.org hosting to GitHub -- as a result, the site is now
    part of the repo, in the docs/ directory. (Also, it has SSL again.)

See the git log for more details.

PDCurses 3.6 - 2018-02-14

11 Apr 12:26
Compare
Choose a tag to compare

Tidying up some loose ends from 3.5, and trying to bring all platforms
up to the same level, as much as possible.

New features

  • 256 colors for the Windows console -- under Windows 10 or ConEmu,
    only. This version doesn't allow init_color() or color_content() for
    colors 16-255, just uses Windows' predefined palette (which matches
    xterm-256color, like the default colors in X11 and SDL).

  • Real blinking for the Windows console (all), and for OS/2 -- done in
    software, like the Windows version -- replacing the erraticly working
    Vio-based version (which didn't work at all in my OS/2 4.5 VM). OS/2
    now always has 16 colors, and bright backgrounds can combine with
    blinking.

  • In DOS, OS/2 and Windows, attribute behavior now more closely matches
    that of the more "advanced" ports (X11 and SDL) -- see the Attribute
    test in testcurs.

  • All of the A_* and WA_* attributes from X/Open are now defined in
    curses.h, although some are no-ops, pending the availablity of more
    attribute bits. A_INVIS is now a no-op on all platforms, instead of
    overloading A_ITALIC, and so is A_PROTECT. A_LEFT and A_RIGHT are now
    synonyms for PDCurses' old *LINE attributes.

Bug fixes and such

  • For the X11 port, "make install" and the dynamic library build were
    broken, since the configure move. Fixes partly after Mark Hessling.

  • Renamed "win32" to the more accurate/descriptive "wincon" (i.e.
    WINdows CONsole). Makefiles for all platforms renamed to remove the
    redundant platform names, and to allow better sorting.

  • In SDL2, apps that didn't explicitly handle resizing locked up. Now,
    they can continue running, at their old size. (To Do: xmas is still a
    basket case.)

  • Added "/MACHINE:$(PLATFORM)" to wincon/Makefile.vc -- Thomas Dickey
    says this is needed to build 64-bit with Visual Studio Express 2012.
    With 2017, it suppresses a warning.

  • Suppressed "Possibly incorrect assignment" warnings with BCC, which
    also results in more readable code.

  • Cleaned up obsolete comments, dead code, unneeded includes, typos, and
    outdated documentation.

  • Dropped support for EMXVIDEO.

  • Dropped color remapping for OS/2 (broken).

  • Dropped X11 DLL support for Cygwin (broken).

  • Rearranged extended color display in testcurs.

  • In ptest, handle resizing, and check for screens too small to run in.

  • Allow KEY_* codes (including KEY_RESIZE) to exit firework, as other
    keys do.

  • Slightly faster Windows compilation (most noticeable in Watcom).

See the git log for more details.

PDCurses 3.5 - 2018-01-15

11 Apr 12:32
Compare
Choose a tag to compare

So, it's been a while, eh?

This release is an attempt to bring PDCurses mostly up to date, without
breaking too many things in the process.

New features

  • SDL2 port, and TTF and Unicode support for both SDL1 and SDL2. Credit
    for these goes mostly to Laura Michaels and Robin Gustafsson.

  • 256 colors for SDL and X11, by Bill Gray. Colors 16-255 are set up to
    match xterm colors, but can be redefined, as with 0-15.

  • Bold and italic font options for SDL and X11. A_BOLD's behavior is
    controlled by the new function PDC_set_bold() -- TRUE to select bold
    font, FALSE to choose high foregound intensity (as before). Italic
    fonts are selected by A_ITALIC (always on). X11 originally from Mark
    Hessling.

  • Real blinking in SDL and X11, controlled by PDC_set_blink(). Largely
    due to Kevin Lamonte and Bill Gray.

  • Support for A_UNDERLINE, A_LEFTLINE and A_RIGHTLINE in the Windows
    console. This requires a recent version of Windows (10, maybe 8?) to
    work with the standard console, but underlining also works with
    ConEmu, at least as far back as XP.

  • User resizing (i.e. grab window edges or maximize button) for Windows
    console -- needs recent Windows or ConEmu.

  • New-style color-changing code for the Windows console (using the new
    offical API instead of undocumented functions), supporting
    redefinition of colors 0-15 via init_color(). Works at least as far
    back as Windows XP SP3. Patch by "Didrole".

  • The Windows console port now creates a separate console buffer by
    default, making for a cleaner and more complete restoration of the
    original buffer. The old behavior can be used by setting
    "PDC_RESTORE_SCREEN=0". Patch by Jason Hood.

  • Left/right scroll wheel support for Windows console, SDL and X11. X11
    by Mark Hessling.

  • testcurs now includes an additional test to show various attributes,
    and a display of the extended colors, where applicable.

Bug fixes and such

  • termattrs() now returns something vaguely resembling the actual
    capabilities of the specific "terminal". Specifically, A_BOLD and
    A_BLINK reflect the availability of true bold fonts, and real
    blinking; when not set in termattrs(), the attributes still work, but
    control foreground and background intensity, as before. *LINE are also
    meaningful, and even A_COLOR is set (or not).

  • pad size check in pnoutrefresh() was broken since 3.0. Reported by
    Peter Hull.

  • In newpad(), begx and begy should be set to zero, otherwise creating a
    subpad of the same width or height fails due to the check in subpad().
    Patch by Raphael Assenat.

  • More straightforward math for subpad(), plus another off-by-one error.
    Reported by Werner Wenzel, John Hartmann et al.

  • New subwindows/subpads/resized windows should copy _delayms. Patch by
    "xaizek".

  • Potentially invalid saved cursor position in resize_window() --
    another off-by-one _maxx/_maxy error. Patch after "Luke-Jr".

  • copywin() needs to disallow corner values equal to _maxx or _maxy, not
    just less than. Reported by "Aleksandr".

  • Misaligned soft-label keys in 4-4-4 mode. Reported by Werner Wenzel.

  • Missing prototypes for bkgrnd() and bkgrndset().

  • Missing WA_NORMAL and WA_ATTRIBUTES from the X/Open spec.

  • keyname() and termname() now return static buffers, as documented.

  • In the X11 port, due to (post-PDCurses-3.4) changes in Xt,
    XtAppMainLoop() always hung. Fixed by re-implementing it within
    PDCurses, basically.

  • Fix blinking X11 cursor for clients that call move() more frequently
    than cursorBlinkRate -- patch by Kevin Lamonte.

  • Improved cursor rendering for X11, by John P. Hartmann.

  • ALT key combos sometimes not reported in X11, per Mark Hessling et al.

  • Support for XK_ISO_Left_Tab in X11, by John P. Hartmann.

  • Support for "Super" keys in X11, by Bill Gray.

  • Make xcurses-config include -DPDC_WIDE when appropriate, per M.H.

  • The configure script and accompanying files, which were always
    specific only to the X11 port (causing considerable confusion), have
    been moved to the x11 directory.

  • In SDL, SP->key_code wasn't being set for KEY_MOUSE events. Reported
    by Bill Gray.

  • SDL events need to keep pumping through non-input delays. (Really
    messed up on current macOS before this change.)

  • SDL2 is outperforming SDL1 by about 10x on the platforms I've tried
    that support both, so I've removed Makefile.mng from the SDL1 port.

  • Updated for the most current compilers, wherever possible; various
    warning suppressions. All included makefiles were tested with their
    respective compilers, shortly before release (including the POSIX
    stuff on macOS with clang, and on Ubuntu Linux with gcc). The oldest
    compiler I tested with was Turbo C++ 3.0, from 1992; the latest,
    several compilers from 2017.

  • Dropped support for LCC-Win32 -- the official site is shut down.

  • Dropped support for Digital Mars -- not updated since 2014, limited
    makefile, library missing some needed Windows APIs.

  • Dropped MS C for DOS, and Cset/2 for OS/2.

  • Dropped support for building DLLs with EMX.

  • Minor code and makefile reorganization; mingwin32.mak merged into
    gccwin32.mak (i.e. you can use it with both compilers). Some
    contributions by Bill Gray and Simon Sobisch.

  • Watcom makefile paths and option markers changed to Unix-friendly
    style, after Tee-Kiah Chia.

  • The *.def files are no longer needed, replaced by more PDCEX
    declarations in the include files. After Bill Gray and Simon Sobisch.

  • When building with DEBUG=Y, no longer strip the executables. After
    Simon Sobisch.

  • Hold debug file ("trace") open after traceon(), for greater
    performance. Set PDC_TRACE_FLUSH to make it fflush() after each write
    (slower but safer in case of a crash). Patch by Ellie Timoney.

  • Since 3.2, the panel library was simply a copy of the main library.
    This kludge is now dropped. (panel.h remains separate from curses.h.)

  • Removed PDCurses.spec, and the RPM-building makefile option. I think
    this is better left to the various package/distro maintainers.

  • Various formatting corrections (e.g., trailing spaces stripped), and
    variables renamed to avoid clashes. Some contributed by Stefan
    Reinauer and Bill Gray.

  • Various documentation corrections and updates. All documentation
    "converted" to Markdown format (involving few actual changes -- mainly
    the file extension), for better rendering on GitHub, SourceForge, etc.
    Some contributed by Anatoly Techtonik.

  • The "Win32" label is deprecated by Microsoft, and accordingly I've
    replaced references in the documentation, although not yet changed the
    filenames. The Windows console code can just as well be built for
    64-bit (and always could be, AFAIK, although there are minor tweaks
    to support it in this version).

  • The ncurses_tests can now be built under SDL as well as X11. Also, all
    our tests (still/again) build under recent ncurses.

  • Put testcurs' "Output test" into real blink mode, if possible; and if
    COLORS >= 16, use colors 0-15 directly in the color test, instead of
    or'ing with A_BOLD to get the high-intensity colors.

  • Renamed the (by now rather old) "newdemo" to "ozdemo".

  • Moved from CVS to git; source is now on GitHub as well as SourceForge;
    central site is now pdcurses.org.

See the git log for more details.

PDCurses 3.4 - 2008-09-08

11 Apr 12:59
Compare
Choose a tag to compare

Nothing much new this time, but I've been sitting on some bug fixes for
almost a year, so it's overdue. Apart from bugs, the main changes are in
the documentation.

New features:

  • setsyx() is now a function rather than a macro.

Bug fixes and such:

  • In x11, the xc_atrtab table size was under-calculated by half,
    resulting in crashes at (oddly) certain line counts. (It should've
    crashed a lot more.) Reported by Mark Hessling.

  • Test for moved cursor was omitting the window origin offset. Reported
    by Carey Evans.

  • Is DOS and OS/2, the value for max items in key_table was still wrong.
    Reported by C.E.

  • Changed isendwin() so it won't crash after delscreen().

  • Ensure zero-termination in PDC_mbstowcs() and PDC_wcstombs().

  • Disable QuickEdit Mode when enabling mouse input for the Win32
    console; reported by "Zalapkrakna".

  • Fix for building under Innotek C (I hope). Report by Elbert Pol, fix
    courtesy of Paul Smedley.

  • Unified exports list with no duplicates -- pdcurses.def is now built
    from components at compile time.

  • Don't install curspriv.h, and don't include it with binary
    distributions.

  • Building DLLs with LCC is no longer supported, due to the primitive
    nature of its make.exe.

  • Export the terminfo stub functions from the DLLs, too.

  • Added support for Apple's ".dylib" in configure. Suggested by Marc
    Vaillant (who says it's needed with OS 10.5.)

  • In sdl1/Makefile.mng, ensure that CC is set.

  • In the gcc makefiles, "$?" didn't really have the desired effect --
    all the dependencies showed up on the command line, including
    curses.h, and pdcurses.a twice. And apparently, this can mess up some
    old version (?) of MinGW. So, revert to spelling out "tuidemo.o
    tui.o". Reported by "Howard L."

  • Extensive documentation revision and reorganizing. More to do here.
    For example, I moved the build instructions from INSTALL (which never
    really described installation) to the platform-specific READMEs.

  • New indentation standard: four spaces, no tabs.

PDCurses 3.3 - 2007-07-11

11 Apr 13:13
Compare
Choose a tag to compare

This release adds an SDL backend, refines the demos, and is faster in
some cases.

New features:

  • SDL port. See INSTALL, doc/sdl.txt and sdl1/* for details.

  • Double-buffering -- minimize screen writes by checking, in doupdate()
    and wnoutrefresh(), whether the changes to curscr are really changes.
    In most cases, this makes no difference (writes were already limited
    to areas marked as changed), but it can greatly reduce the overhead
    from touchwin(). It also helps if you have small, separated updates on
    the same line.

  • The PDC_RGB colors can now be used, or not, with any platform (as long
    as the same options are used when compiling both the library and
    apps). This may help if you have apps that are hardwired to assume
    certain definitions.

  • Restored the use_default_colors() stuff from the ncurses versions of
    the rain and worm demos, to make them "transparent" (this is useful
    now, with the SDL port); added transparency to newdemo.

  • Added setlocale() to tuidemo, to make it easier to browse files with
    non-ASCII characters.

  • Sped up firework demo by replacing unneeded clear() and init_pair()
    calls.

  • Allow exit from ptest demo by typing 'q'.

  • New functions for implementors: PDC_pair_content() and PDC_init_pair()
    (the old pdc_atrtab stuff was arguably the last remnant of code in the
    pdcurses directory that was based on platform details).

Bug fixes and such:

  • Implicit wrefresh() needs to be called from wgetch() when the window's
    cursor position is changed, even if there are no other changes.

  • Set SP->audible on a per-platform basis, as was documented in
    IMPLEMNT, but not actually being done.

  • Minor tweaks for efficiency and readability, notably with wscrl().

  • tuidemo didn't work correctly on monochrome screens when A_COLOR was
    defined -- the color pair numbers appeared as the corresponding
    character; also, the input box was (I now realize) broken with ncurses
    since our 2.7, and broke more subtly with PDCurses' new implicit
    refresh handling; also, the path to the default file for the Browse
    function was a bit off.

  • Assume in the demos that curs_set() is always available -- there's no
    good test for this, and the existing tests were bogus.

  • Made the command-line parameter for ptest work. (If given an argument,
    it delays that number of milliseconds between changes, instead of
    waiting for a key, and automatically loops five times.)

  • Building the Win32 DLL with MinGW or Cygwin wouldn't work from outside
    the platform directory.

  • Building the X11 port with Cygwin required manually editing the
    Makefile after configuring; no longer. Reported by Warren W. Gay.

  • Minor tightening of configure and makefiles.

  • Bogus references to "ACS_BLCORNER" in the border man page. Reported by
    "Walrii".

  • slk_wlabel() was not documented.

  • Spelling cleanup.

  • Changed RCSIDs to not end with a semicolon -- avoids warnings when
    compiling with the -pedantic option.

  • Merged latin-1.txt into x11.txt.

  • Updated config.guess and config.sub to more recent versions.

PDCurses 3.2 - 2007-06-06

11 Apr 14:11
Compare
Choose a tag to compare

This release mainly covers changes to the build process, along with a
few structural changes.

New features:

  • The panel library has been folded into the main library. What this
    means is that you no longer need to specify "-lpanel" or equivalent
    when linking programs that use panel functionality with PDCurses;
    however, panel.lib/.a is still provided (as a copy of pdcurses.lib/.a)
    so that you can, optionally, build your projects with no changes. It
    also means that panel functionality is available with the DLL or
    shared library. Note that panel.h remains separate from curses.h.

  • Setting the PDCURSES_SRCDIR environment variable is no longer required
    before building, unless you want to build in a location other than the
    platform directory. (See INSTALL.)

  • MinGW and Cygwin makefiles support building DLLs, via the "DLL=Y"
    option. Partly due to Timofei Shatrov.

  • Support for the Digital Mars compiler.

  • Watcom makefiles now use the "loaddll" feature.

Bug fixes and such:

  • Eliminated the platform defines (DOS, WIN32, OS2, XCURSES) from
    curses.h, except for X11-specific SCREEN elements and functions.
    Dynamically-linked X11 apps built against an old version will have
    their red and blue swapped until rebuilt. (You can define PDC_RGB to
    build the library with the old color scheme, but it would also have to
    be defined when building any new app.) Any app that depends on
    PDCurses to determine the platform it's building on will have to make
    other arrangements.

  • Documentation cleanup -- added more details; removed some content that
    didn't apply to PDCurses; moved the doc-building tool to the doc
    directory; changed *.man to *.txt.

  • The EMX makefile now accepts "DLL=Y", builds pdcurses.dll instead of
    curses.dll, builds either the static library or the DLL (not both at
    once), and links all the demos with the DLL when building it.

  • In Win32, read the registry only when needed: when init_color() or
    color_content() is called, instead of at startup.

  • A few additional consts in declarations.

  • The Win32 compilers that build DLLs now use common .def files.

  • panel.h functions sorted by name, as with other .h files; curses.h is
    no longer included by repeated inclusions of panel.h or term.h.

  • Simplified Borland makefiles.

  • Makefile.aix.in depended on a file, xcurses.exp, that was never there.
    This problem was fixed as part of the change to common .def files;
    however, I still haven't been able to test building on AIX.

PDCurses 3.1 - 2007-05-03

11 Apr 14:14
Compare
Choose a tag to compare

Primarily clipboard-related fixes, and special UTF-8 support.

New features:

  • "Force UTF-8" mode, a compile-time option to force the use of UTF-8
    for multibyte strings, instead of the system locale. (Mainly for
    Windows, where UTF-8 doesn't work well in the console.) See INSTALL.

  • Multibyte string support in PDC_*clipboard() functions, and in Win32's
    PDC_set_title().

  • Added the global string "ttytype", per other curses implementations,
    for compatibility with old BSD curses.

  • Real functions for the "quasi-standard aliases" -- crmode(),
    nocrmode(), draino(), resetterm(), fixterm() and saveterm().
    (Corresponding macros removed.)

Bug fixes and such:

  • In Win32, under NT-family OSes, the scrollback buffer would be
    restored by endwin(), but would not be turned off again when resuming
    curses after an endwin(). The result was an odd, partly-scrolled-up
    display. Now, the buffer is toggled by PDC_reset_prog_mode() and
    PDC_reset_shell_mode(), so it's properly turned off when returning
    from an endwin().

  • In 3.0, selection in X11 didn't work. (Well, the selecting worked, but
    the pasting elsewhere didn't.) This was due to the attempted fix
    "don't return selection start as a press event," so that's been
    reverted for now.

  • PDC_setclipboard() was locking up in X11. Reported by Mark Hessling.

  • Missing underscore in the declaration of XC_say() prevented
    compilation with PDCDEBUG defined. Reported by M.H.

  • Off-by-one error in copywin() -- the maximum coordinates for the
    destination window should be inclusive. Reported by Tiago Dionizio.

  • Start in echo mode, per X/Open. Reported by T.D.

  • Strip leading and trailing spaces from slk labels, per a literal
    reading of X/Open. Suggested by Alexey Miheev (about ncurses, but it
    also applies here).

  • The #endif for PDCURSES needs to come after the closing of the
    extern "C". This has been broken since June 2005. Fortunately (?), it
    only shows up if the file is included multiple times, and then only in
    C++. Reported on the DOSBox forums.

  • Use CF_OEMTEXT instead of CF_TEXT in the narrow versions of the
    clipboard functions in Win32, to match the console.

  • Changed the format of the string returned from longname().

  • In the clipboard test in the testcurs demo, use a single mvprintw() to
    display the return from PDC_getclipboard(), instead of a loop of
    addch(), which was incompatible with multibyte strings.

  • Moved has_key() into the keyname module, and documented it.

  • Moved RIPPEDOFFLINE to curspriv.h.

  • Typos in IMPLEMNT.

PDCurses 3.0 - 2007-04-01

11 Apr 14:28
Compare
Choose a tag to compare

The focuses for this release are X/Open conformance, i18n, better color
support, cleaner code, and more consistency across platforms.

This is only a brief summary of the changes. For more details, consult
the CVS log.

New features:

  • An almost complete implementation of X/Open curses, including the
    wide-character and attr_t functions (but excluding terminfo). The
    wide-character functions work only in Win32 and X11, for now, and
    require building the library with the appropriate options (see
    INSTALL). Note that this is a simplistic implementation, with exactly
    one wchar_t per cchar_t; the only characters it handles properly are
    those that are one column wide.

  • Support for X Input Methods in the X11 port (see INSTALL). When built
    this way, the internal compose key support is disabled in favor of
    XIM's, which is a lot more complete, although you lose the box cursor.

  • Multibyte character support in the non-wide string handling functions,
    per X/Open. This only works when the library is built with wide-
    character support enabled.

  • Mouse support for DOS and OS/2. The DOS version includes untested
    support for scroll wheels, via the "CuteMouse" driver.

  • An ncurses-compatible mouse interface, which can work in parallel with
    the traditional PDCurses mouse interface. See the man page (or
    mouse.c) for details.

  • DOS and OS/2 can now return modifiers as keys, as in Win32 and X11.

  • COLORS, which had been fixed at 8, is now either 8 or 16, depending on
    the terminal -- usually 16. When it's 8, blinking mode is enabled
    (controlled as before by the A_BLINK attribute); when it's 16, bright
    background colors are used instead. On platforms where it can be
    changed, the mode is toggled by the new function PDC_set_blink().
    PDCurses tries to set PDC_set_blink(FALSE) at startup. (In Win32, it's
    always set to FALSE; in DOS, with other than an EGA or VGA card, it
    can't be.) Also, COLORS is now set to 0 until start_color() is called.

  • Corresponding to the change in COLORS, COLOR_PAIRS is now 256.

  • Working init_color() and color_content(). The OS/2 version of
    init_color() works only in a full-screen session; the Win32 version
    works only in windowed mode, and only in NT-family OSes; the DOS
    version works only with VGA adapters (real or simulated). The Win32
    version is based mostly on James Brown's setconsoleinfo.c
    (www.catch22.net).

  • use_default_colors(), assume_default_colors(), and curses_version(),
    after ncurses.

  • Added global int TABSIZE, after ncurses and Solaris curses; removed
    window-specific _tabsize.

  • Logical extension to the wide-character slk_ funcs: slk_wlabel(), for
    retrieving the label as a wide-character string.

  • A non-macro implementation of ncurses' wresize().

  • Working putwin(), getwin(), scr_dump() and scr_restore().

  • A working acs_map[]. Characters from the ACS are now stored in window
    structures as a regular character plus the A_ALTCHARSET attribute, and
    rendered to the ACS only when displayed. (This allows, for example,
    the correct display on one platform of windows saved from another.)

  • In X11, allow selection and paste of UTF8_STRING.

  • The testcurs demo now includes a color chart and init_color() test, a
    wide character input test, a display of wide ACS characters with
    sample Unicode text, a specific test of flash(), more info in the
    resize test, and attempts to change the width as well as the height.

  • Command-line option for MSVC to build DLLs (see INSTALL). Also, the
    naming distinction for DLLs ("curses" vs. "pdcurses") is abandoned,
    and either the static lib or DLL is built, not both at once (except
    for X11).

  • For backwards compatibility, a special module just for deprecated
    functions -- currently PDC_check_bios_key(), PDC_get_bios_key(),
    PDC_get_ctrl_break() and PDC_set_ctrl_break(). These shouldn't be used
    in applications, but currently are... in fact, all the "private"
    functions (in curspriv.h) are subject to change and should be avoided.

  • A new document, IMPLEMNT, describing PDCurses' internal functions for
    those wishing to port it to new platforms.

  • Mark Hessling has released the X11 port to the public domain.
    (However, x11/ScrollBox* retain their separate copyright and MIT-like
    license.)

Bug fixes and such:

  • Most of the macros have been removed (along with the NOMACROS ifdef).
    The only remaining ones are those which have to be macros to work, and
    those that are required by X/Open to be macros. There were numerous
    problems with the macros, and no apparent reason to keep them, except
    tradition -- although it was PCcurses 1.x that first omitted them.

  • Clean separation of platform-specific code from the rest. Outside of
    the platform directories, there remain only a few ifdefs in curses.h
    and curspriv.h.

  • General reorganization and simplification.

  • Documentation revisions.

  • When expanding control characters in addch() or insch(), retain the
    attributes from the chtype.

  • Preserve the A_ALTCHARSET attribute in addch() and insch().

  • Per X/Open, beep() should always return OK.

  • On platforms with a controlling terminal (i.e., not X11), curs_set(1)
    now sets the cursor to the shape it had at the time of initscr(),
    rather than always making it small. (Exception for DOS: If the video
    mode has been changed by PDC_resize_screen(), curs_set(1) reverts to
    line 6/7.) The shape is taken from SP->orig_cursor (the meaning of
    which is platform-specific).

  • Stop updating the cursor position when the cursor is invisible (this
    gives a huge performance boost in Win 9x); update the cursor position
    from curs_set() if changing from invisible to visible.

  • Some tweaking of the behavior of def_prog_mode(), def_shell_mode(),
    savetty(), reset_prog_mode(), reset_shell_mode() and resetty()...
    still not quite right.

  • flash() was not implemented for Win32 or X. A portable implementation
    is now used for all platforms. Note that it's much slower than the
    old (DOS and OS/2) version, but this is only apparent on an extremely
    slow machine, such as an XT.

  • In getstr(), backspacing on high-bit characters caused a double
    backspace.

  • hline() and vline() used an incorrect (off by one) interpretation of
    _maxx and _maxy. If values of n greater than the max were specified,
    these functions could access unallocated memory.

  • innstr() is supposed to return the number of characters read, not just
    OK or ERR. Reported by Mike Aubury.

  • A proper implementation of insch() -- the PDC_chadd()-based version
    wasn't handling the control characters correctly.

  • Return ASCII and control key names from keyname() (problem revealed by
    ncurses' movewindow test); also, per X/Open, return "UNKNOWN KEY" when
    appropriate, rather than "NO KEY NAME".

  • Turn off the cursor from leaveok(TRUE), even in X11; leaveok(FALSE)
    now calls curs_set(1), regardless of the previous state of the cursor.

  • In the slk area, BUTTON_CLICKED events now translate to function keys,
    along with the previously recognized BUTTON_PRESSED events. Of course,
    it should really be checking the events specified by map_button(),
    which still doesn't work.

  • napms(0) now returns immediately.

  • A unified napms() implementation for DOS -- no longer throttles the
    CPU when built with any compiler.

  • Allow backspace editing of the nocbreak() buffer.

  • pair_content(0, ...) is valid.

  • There was no check to ensure that the pnoutrefresh() window fit within
    the screen. It now returns an ERR if it doesn't.

  • In X11, resize_term() must be called with parameters (0, 0), and only
    when SP->resized is set, else it returns ERR.

  • Copy _bkgd in resize_window(). Patch found on Frederic L. W. Meunier's
    web site.

  • slk_clear() now removes the buttons completely, as in ncurses.

  • Use the current foreground color for the line attributes (underline,
    left, right), unless PDC_set_line_color() is explicitly called. After
    setting the line color, you can reset it to this mode via
    "PDC_set_line_color(-1)".

  • Removed non-macro implementations of COLOR_PAIR() and PAIR_NUMBER().

  • Dispensed with PDC_chadd() and PDC_chins() -- waddch() and winsch()
    are now (again) the core functions.

  • Dropped or made static many obsolete, unused, and/or broken functions,
    including PDC_chg_attrs(), PDC_cursor_on() and _off(),
    PDC_fix_cursor(), PDC_get_attribute(), PDC_get_cur_col() and _row(),
    PDC_set_80x25(), PDC_set_cursor_mode(), PDC_set_rows(),
    PDC_wunderline(), PDC_wleftline(), PDC_wrightline(),
    XCursesModifierPress() and XCurses_refresh_scrollbar().

  • Obsolete/unused defines: _BCHAR, _GOCHAR, _STOPCHAR, _PRINTCHAR
    _ENDLINE, _FULLWIN and _SCROLLWIN.

  • Obsolete/unused elements of the WINDOW struct: _pmax*, _lastp*,
    _lasts*.

  • Obsolete/unused elements of the SCREEN struct: orgcbr, visible_cursor,
    sizeable, shell, blank, cursor, orig_emulation, font, orig_font,
    tahead, adapter, scrnmode, kbdinfo, direct_video, video_page,
    video_seg, video_ofs, bogus_adapter. (Some of these persist outside
    the SCREEN struct, in the platform directories.) Added mouse_wait and
    key_code.

  • Removed all the EMALLOC stuff. Straight malloc calls were used
    elsewhere; it was undocumented outside of comments in curspriv.h; and
    there are better ways to use a substitute malloc().

  • Single mouse clicks are now reportable on all platforms (not just
    double-clicks). And in general, mouse event reporting is more
    consistent across platforms.

  • The mouse cursor no longer appears in full-screen mode in Win32 unless
    a nonzero mouse event mask is used.

  • ALT-keypad input now works in Win32.

  • In Win32, SetConsoleMode(ENABLE_WINDOW_INPUT) is not useful, and
    app...

Read more