bogue

GUI library for ocaml, with animations, based on SDL2
README

Bogue is an all-purpose GUI (Graphical user interface) library for
ocaml, with animations, written from scratch in
ocaml, based on SDL2.

  • Can be used to add interactivity to any program.

  • Can work within an already existing event loop, for instance to add
    GUI elements to a game.

  • Uses the SDL2 renderer library, which makes it quite fast.

  • Can deal with several windows.

  • Bogue is themable, and does not try to look like your
    desktop. Instead, it will look the same on every platform.

  • Graphics output is scalable (without need to recompile), and hence
    easily adapts to Hi-DPI displays.

  • Predefined animations (slide-in, fade-in, fade-out, rotate).

  • Built-in audio mixer.

Programming with bogue is easy if you're used to GUIs with widgets,
layouts, callbacks, and of course it has a functional flavor. ​It uses
Threads
when non-blocking reactions are needed.

Features

Widgets

Widgets are the building bricks, responsible for graphic elements that
respond to events (mouse, touchscreen, keyboard, etc.).

For a more "functional" use, they can be "connected" instead of
reacting with callbacks (see examples).

  • boxes with decorations (round corner, border, shadow, gradient
    background, image pattern)

  • check box

  • push button (with labels or images)

  • rich text display (bold, italics, underline), any TTF font can be used.

  • image (all usual formats, including SVG)

  • slider (horizontal, vertical, or circular)

  • text input with select and copy-paste

  • SDL area for free drawing with the whole SDL Renderer API

Layouts

widgets can be combined in various ways into layouts. For instance, a
check box followed by a text label is a common layout.

Several predefined layouts are available:

  • sliders (horizontal, vertical, circular). Can be used as progress bars

  • scrollable lists (that can easily handle a large number of elements,
    like one million)

  • multi-column tables with sortable columns

  • multiple tabs with slide-in animation

  • modal popups

  • various menus (menu bar, drop down menus with submenus)

  • drop-down select lists

  • radio lists

  • automatic tooltips can be attached to any element

Layouts can be animated (slide-in, transparency, rotation). All
layouts can be automatically resized when the user resizes the
window. Timeouts are available to execute arbitrary actions after
a delay.

Screenshots

| demo, tab #1 | demo, tab #2 |
|-----|-----|
|| |

Videos

randomize, demo 1907

Installation

Using the opam package

This is the easiest way unless you want to try out the development version.

opam install bogue

That's it.

Building from sources

Prerequisites

You need a working ocaml installation with opam, see the ocaml doc. Then, make sure
you have dune, tsdl, tsdl-image and tsdl-ttf:

opam install dune tsdl tsdl-image tsdl-ttf

Get the latest source

Download the
git archive,
unzip it, cd into the bogue-master dir, and then:

dune build
opam install .

Documentation

It's good to first have a look at Bogue's
general principles.

The public API can be found
here.

Examples

You should first try a
minimal example.

The examples directory contains more sophisticated examples. If you
installed the bogue package with opam (as described above), these
examples are available via the boguex program. For instance, run
examples 34 and 41 by:

boguex 34 41

Type boguex -h to have the list of all examples.

A minimal app using Bogue

See here.

Install
Published
16 Mar 2022
Sources
20220314.tar.gz
md5=d7ffeacaa4f74142b93224ebc5a65b3d
sha512=d9d233e750560788c58e779ebc4ffebd2e92030c27b95d06766529e847f1017ca56f6bb3f25ec0de302bb3d4521fc53badc2aa3976250555f8af15c5643522ac
Dependencies
odoc
with-doc
tsdl
>= "0.9.7" & < "0.9.9"
ocaml
>= "4.08.0"
tsdl-ttf
>= "0.3"
tsdl-image
>= "0.3.0"
dune
>= "2.7"
Reverse Dependencies