package cairo2
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=366273303b351e2bcd781d44a01c961729f6451f9917d75cd038465370481822
sha512=49dbd0a4dcb51f9847c9adc7c45125114ea0a83d3179c1785b28221a1d289a8d6a1db34a926386709844fed69ce12a7bf271bd76505580425b2a11794febe375
Description
This is a binding to Cairo, a 2D graphics library with support for multiple output devices. Currently supported output targets include the X Window System, Quartz, Win32, image buffers, PostScript, PDF, and SVG file output.
README
OCaml interface to Cairo
This is an OCaml binding for the Cairo library, a 2D graphics library with support for multiple output devices.
You can read the API of Cairo, Cairo_gtk, and Cairo_pango online.
Prerequisites
You need the development files of Cairo (see the conf-cairo package) and the OCaml package lablgtk2 (in the OPAM package lablgtk).
Compilation & Installation
The easier way to install this library — once the prerequisites are set up — is to use opam:
opam install cairo2If you would like to compile from the sources, install Dune
opam install duneand do:
dune build @installor just make. You can then install it with:
dune installExamples
You can read a version of the Cairo tutorial using this module. The code of this tutorial is available in the examples/ directory. To compile it, just do
dune build @examplesAll the examples below are available (with some comments) by clicking on images in the tutorial.
Basic examples
- stroke.ml shows how to draw (stroke) a simple rectangle on a PNG surface.
- stroke.ml shows how to fill a simple rectangle on a PNG surface.
- showtext.ml illustrates how to select a font and draw some text on a PNG surface.
- paint.ml shows how to paint the current source everywhere within the current clip region.
- mask.ml shows how to apply a radial transparency mask on top of a linear gradient.
setsourcergba.ml produces

setsourcegradient.ml shows how to use radial and linear patterns. It generates:

path_close.ml shows how to draw a closed path. It produces the PNG:

textextents.ml displays graphically the various dimensions one can request about text. It generates the PNG:

- text_extents.ml exemplifies drawing consecutive UTF-8 strings in a PDF file. Some helping lines are also added to show the text extents.
tips_ellipse.ml shows the action of dilation on the line width and how to properly draw ellipses. It generates the PNG:

tips_letter.ml illustrates the wrong way of centering characters based on their individual extents:

Instead, one should combine them with the font extents as shown in tips_font.ml to have:

Examples generating the images of the tutorial
diagram.ml draw the images of the section Cairo's Drawing Model:

draw.ml generates the various images in Drawing with Cairo, namely:

Dependencies (5)
- conf-cairo
-
dune-configurator
>= "2.7.0" -
dune
>= "2.7.0" - base-bigarray
-
ocaml
>= "4.02" & < "5.0.0"
Dev Dependencies
None
Used by (10)
-
acgtk
< "2.1.0" - bimage-gtk
-
cairo2-gtk
< "0.6.1" | = "0.6.3" -
cairo2-pango
< "0.6.1" | = "0.6.3" - hugin
-
jupyter-archimedes
>= "2.7.2" -
lablgtk3
>= "3.0.beta4" - mlpost
-
OCADml
< "0.4.0" - OSCADml