Module Bogue_cairo

Bogue_cairo

Want to add the power of Cairo's drawing functions to your GUI application?

Bogue_cairo is an add-on library for the Bogue GUI library, enabling the use of Cairo drawing functions in Bogue's Sdl_area's.

module Cairo_area : sig ... end

Example

If you have installed Bogue, you may run boguex 50 to see a demo of drawing circles using the native Bogue circle primitive. Here is an alternative version, using Cairo's circles, which is twice as fast.

open Bogue
open Bogue_cairo

let circles () =
  let cairo, a = Cairo_area.create_with_widget ~w:500 ~h:200 () in
  let w,h = Cairo_area.drawing_size cairo in
  Printf.sprintf "Cairo area Physical pixel size: (w=%i, h=%i)" w h
  |> print_endline;
  let random_circle () =
    let radius = Random.int 100 + 1 in
    let thick = Random.int radius in
    let color = Draw.random_color () in
    let x = Random.int w in
    let y = Random.int h in
    Cairo_area.draw_circle cairo ~color ~thick ~radius (x, y)
  in
  Cairo_area.init cairo;
  for _ = 0 to 500 do
    random_circle ()
  done;
  Cairo_area.flush cairo;
  Cairo_area.finalize cairo;

  let layout = Layout.resident ~name:"Bogue-Cairo circles" a in
  Bogue.(run (of_layout layout))

let () =
  circles ()