bqn-fenster/README.org
2024-11-11 22:26:24 +01:00

46 lines
1.3 KiB
Org Mode
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

* 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"
size500
Rainbow{𝕊xy:
xyxy÷size
h(x+y)÷2
f.HSVtoRGB360×h,1,1
}
Rainbow f._display sizesize
#+end_src
[[./example.png]]