Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tommyettinger/BearLibTerminal
A library that creates a terminal-like window with feature-packed drawing of text and easy input handling. MIRROR.
https://github.com/tommyettinger/BearLibTerminal
Last synced: 2 months ago
JSON representation
A library that creates a terminal-like window with feature-packed drawing of text and easy input handling. MIRROR.
- Host: GitHub
- URL: https://github.com/tommyettinger/BearLibTerminal
- Owner: tommyettinger
- License: other
- Created: 2015-02-15T10:03:58.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2020-03-07T09:14:20.000Z (almost 5 years ago)
- Last Synced: 2024-11-10T21:52:30.032Z (2 months ago)
- Language: C
- Homepage: http://foo.wyrd.name/en:bearlibterminal
- Size: 945 KB
- Stars: 59
- Watchers: 6
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-rust-cn - BearLibTerminal
README
BearLibTerminal provides a pseudoterminal window with a grid of character cells and a simple yet powerful API for flexible textual output and uncomplicated input processing.
### Features
* Unicode support: you can use UTF-8 or UTF-16/32 wide strings easily.
* Support for bitmap and vector (TrueType) fonts and tilesets.
* Extended output facilities: tile composition, alignment, offsets.
* High performance (uses OpenGL).
* Keyboard and mouse support.
* Bindings for several programming languages: С/С++, C#, Go, Lua, Pascal, Python, Ruby.
* Windows, Linux and OS X support.### Documentation
* [Reference](http://foo.wyrd.name/en%3Abearlibterminal%3Areference) (functions, constants, behaviour)
* [Design overview](http://foo.wyrd.name/en%3Abearlibterminal%3Adesign)### Using
Some notes about using it with various languages or compilers:
#### C/C++
Visual C++ projects should be linked against BearLibTerminal.lib import library (specify it in the additional linker dependencies).
MinGW projects should link against .dll directly (the .lib is just an import library for Visual C++, do not copy it):
g++ -I/path/to/header -L/path/to/dll main.cpp -lBearLibTerminal -o app.exe
#### Python
Python packages are available. You can install everything you need to use the library with
pip install bearlibterminal
Depending on the OS and Python installation, you might also want to
- Replace `pip` with `pip3` or `python3 -m pip` to select a correct version of Python.
- Add `--user` flag to install package locally (i. e. user-wide).Package contains both wrapper and an appropriate binary for the platform, so you do not need to copy anything else anywhere. Just import the library in the source:
from bearlibterminal import terminal
terminal.open()
terminal.printf(2, 1, "Hello, world!")
terminal.refresh()
while terminal.read() != terminal.TK_CLOSE:
pass
terminal.close()#### Lua
Wrapper for Lua is built-in. You need to use a regular (dynamic) Lua runtime and place BearLibTerminal binary
in a suitable location (e. g. in the same directory as script). For Linux you'll also need to rename the .so
to just 'BearLibTerminal.so' (dropping the 'lib' prefix). After that it would be possible to import the library
the usual way:local terminal = require "BearLibTerminal"
### Building
BearLibTerminal is a language-agnostic dynamic-link library (.dll/.so/.dylib), therefore you generally do not have
to build it yourself and may simply use the [prebuilt binaries](http://foo.wyrd.name/en:bearlibterminal#download).To build BearLibTerminal you will need CMake and a recent GCC/MinGW compiler. For Linux any GCC version 4.6.3 and above
will do. For Windows there are several MinGW builds with various quirks, using [TDM-GCC](http://tdm-gcc.tdragon.net/) or
[mingw-builds](http://mingw-w64.org/doku.php/download/mingw-builds) (a flavour of mingw-w64) is recommended.
MinGW compiler MUST use Posix thread model.### License
The library is licensed mainly under the MIT license with a few parts under other permissive licenses.