Convert README to markdown

This commit is contained in:
Dimitri Lozeve 2024-11-11 22:30:03 +01:00
parent 9c95b1a5ab
commit 6a5d511845
2 changed files with 49 additions and 46 deletions

49
README.md Normal file
View file

@ -0,0 +1,49 @@
# Minimal graphical applications in BQN
Bindings for [Fenster](https://github.com/zserge/fenster), providing a
set of functions for displaying a window and setting the color of
individual pixels inside.
## Setup
Clone the repository recursively (`git clone --recurse-submodules`)
and run `make` to build the shared library. The Makefile should work
on Linux and macOS.
## API
High-level API:
- `F _display width‿height` creates a window of the given dimensions
and displays its left operand. `F` should be a function returning a
color as an RGB triplet in the (0,1) range, and taking a list of two
elements `x‿y`, where `x` and `y` are the pixel coordinates.
Low-level API:
- `OpenWindow w‿h‿t` opens a window of width `w` and height `h`, with
title `t`. Returns a window handle.
- `CloseWindow w` closes a window given its handle `w`.
- `F _render w` runs the function `F` at each coordinate of the window
`w` and set the corresponding pixel color. `F` is a function with
the same arguments as for `_display`.
## Example
See [example.bqn](./example.bqn).
```bqn
f←•Import"fenster.bqn"
size←500
Rainbow←{𝕊x‿y:
x‿y↩x‿y÷size
h←(x+y)÷2
f.HSVtoRGB⟨360×h,1,1⟩
}
Rainbow f._display size‿size
```
![img](./example.png)

View file

@ -1,46 +0,0 @@
* Minimal graphical applications in BQN
Bindings for [[https://github.com/zserge/fenster][Fenster]], providing a set of functions for displaying a
window and setting the color of individual pixels inside.
** Setup
Clone the repository recursively (~git clone --recurse-submodules~)
and run ~make~ to build the shared library. The Makefile should work
on Linux and macOS.
** API
High-level API:
- ~F _display width‿height~ creates a window of the given dimensions
and displays its left operand. ~F~ should be a function returning a
color as an RGB triplet in the (0,1) range, and taking a list of two
elements ~x‿y~, where ~x~ and ~y~ are the pixel coordinates.
Low-level API:
- ~OpenWindow w‿h‿t~ opens a window of width ~w~ and height ~h~, with
title ~t~. Returns a window handle.
- ~CloseWindow w~ closes a window given its handle ~w~.
- ~F _render w~ runs the function ~F~ at each coordinate of the window
~w~ and set the corresponding pixel color. ~F~ is a function with
the same arguments as for ~_display~.
** Example
See [[./example.bqn][example.bqn]].
#+begin_src bqn
f←•Import"fenster.bqn"
size←500
Rainbow←{𝕊x‿y:
x‿y↩x‿y÷size
h←(x+y)÷2
f.HSVtoRGB⟨360×h,1,1⟩
}
Rainbow f._display size‿size
#+end_src
[[./example.png]]