You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
132 lines
4.7 KiB
Markdown
132 lines
4.7 KiB
Markdown
PDCurses for OpenGL 3.3
|
|
=======================
|
|
|
|
This is a port of PDCurses for OpenGL 3.3 on top of SDL2. It's based on the
|
|
SDL2 port, but uses OpenGL for character drawing.
|
|
|
|
|
|
Building
|
|
--------
|
|
|
|
- Depends on both SDL2 and SDL2_ttf, always.
|
|
|
|
- On \*nix (including Linux and Mac OS X), run "make" in the gl
|
|
directory. There is no configure script (yet?) for this port. This
|
|
assumes a working sdl-config, and GNU make. It builds the library
|
|
pdcurses.a (or pdcurses.so/pdcurses.dylib with DLL=Y).
|
|
|
|
- With MinGW, edit the Makefile to point to the appropriate include and
|
|
library paths, and then run "mingw32-make".
|
|
|
|
- With MSVC, edit Makefile.vc if needed, and do "nmake -f Makefile.vc".
|
|
|
|
- The makefile recognizes the optional PDCURSES_SRCDIR environment variable,
|
|
and the option "DEBUG=Y", as with the console ports. "WIDE=Y" builds a
|
|
version that uses 32-bit Unicode characters. "UTF8=Y" makes PDCurses ignore
|
|
the system locale, and treat all narrow-character strings as UTF-8; this
|
|
option has no effect unless WIDE=Y is also set. You can specify "DLL=Y" to
|
|
build a dynamic rather than static library. The dynamic library is called
|
|
pdcurses.dll, pdcurses.so, or pdcurses.dylib on Windows, Linux, or Mac OS X
|
|
respectively. And on all platforms, add the target "demos" to build the
|
|
sample programs.
|
|
|
|
|
|
Usage
|
|
-----
|
|
|
|
There are no special requirements to use PDCurses for OpenGL -- all
|
|
PDCurses-compatible code should work fine.
|
|
|
|
Unlike the SDL2 PDCurses, this port assumes that the user isn't doing any SDL
|
|
or OpenGL stuff behind it's back, as that would break our assumptions of the
|
|
OpenGL state machine. However, you can change the SDL window parameters safely
|
|
(size, fullscreen).
|
|
|
|
The font can be set via the environment variable PDC_FONT. If defined, it must
|
|
point to a TrueType font. Only true monospaced fonts work well. The font can be
|
|
set at compile time via PDC_FONT_PATH, and/or at runtime via pdc_ttffont. The
|
|
environment variable PDC_FONT_SIZE is also available to control the font size
|
|
(also as a compile-time define, and at runtime as pdc_font_size.) The character
|
|
mapping for chtypes is UTF-32. However, with SDL2_ttf versions older than
|
|
2.0.18, only the Basic Multilingual Plane characters are available.
|
|
|
|
The default font (if not redefined) is based on the OS:
|
|
|
|
- Windows: C:/Windows/Fonts/consola.ttf
|
|
|
|
- Mac: /Library/Fonts/Menlo.ttc
|
|
|
|
- Other: /usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf
|
|
|
|
Icons
|
|
-----
|
|
|
|
The icon (used with SDL_SetWindowIcon() -- not used for the executable
|
|
file) can be set via the environment variable PDC_ICON, and falls back
|
|
to "pdcicon.bmp", and then to the built-in icon from iconbmp.h. The
|
|
built-in icon is the PDCurses logo, as seen in ../common/icon32.xpm.
|
|
|
|
If pdc_screen is preinitialized (see below), PDCurses does not attempt
|
|
to set the icon.
|
|
|
|
Screen size
|
|
-----------
|
|
|
|
The default screen size is 80x25 characters (whatever size they may be),
|
|
but you can override this via the environment variables PDC_COLS and/or
|
|
PDC_LINES.
|
|
|
|
You can change what the window scaling does with these two variables:
|
|
```
|
|
PDCEX int pdc_resize_mode;
|
|
PDCEX int pdc_interpolation_mode;
|
|
```
|
|
|
|
`pdc_resize_mode` has four options: `PDC_GL_RESIZE_NORMAL` makes resizing change
|
|
the number of visible characters on screen. `PDC_GL_RESIZE_STRETCH` stretches
|
|
the existing LINES & COLS to fit the window size. `PDC_GL_RESIZE_SCALE` does
|
|
the same, but keeps aspect ratio by adding black bars. `PDC_GL_RESIZE_INTEGER`
|
|
changes scaling in integer steps.
|
|
|
|
`pdc_interpolation_mode` can be used to change between nearest-neighbor
|
|
(`PDC_GL_INTERPOLATE_NEAREST`) and bilinear filtering
|
|
(`PDC_GL_INTERPOLATE_BILINEAR`) when the frame is scaled larger than its native
|
|
size. Bilinear filtering is slightly slower and appears soft, while
|
|
nearest-neighbor is faster and "pixelated".
|
|
|
|
Integration with SDL
|
|
--------------------
|
|
|
|
Unlike the SDL port, you shouldn't muck around too much with SDL functions.
|
|
SDL_Surfaces can't be used for rendering here. But there's a couple of things
|
|
you can still safely do.
|
|
|
|
```
|
|
PDCEX SDL_Window *pdc_window;
|
|
```
|
|
|
|
You can programmatically change the size of the window with
|
|
`SDL_SetWindowSize()` and `SDL_SetWindowFullscreen()`.
|
|
|
|
Interaction with stdio
|
|
----------------------
|
|
|
|
As with X11, it's a bad idea to mix curses and stdio calls. (In fact,
|
|
that's true for PDCurses on any platform; but especially these two,
|
|
which don't run under terminals.) Depending on how SDL is built, stdout
|
|
and stderr may be redirected to files.
|
|
|
|
|
|
Distribution Status
|
|
-------------------
|
|
|
|
The files in this directory are released to the public domain.
|
|
|
|
|
|
Acknowledgements
|
|
----------------
|
|
|
|
Original SDL port was provided by William McBrine
|
|
SDL2 modifications by Laura Michaels and Robin Gustafsson
|
|
OpenGL rendering by Julius Ikkala
|