File: rendering.ml

package info (click to toggle)
ocaml-cairo2 0.6.2%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 708 kB
  • sloc: ml: 2,947; ansic: 2,126; makefile: 24; sh: 17
file content (25 lines) | stat: -rw-r--r-- 919 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
(* Based on https://cairographics.org/cookbook/pycairo_pango/ *)


let () =
  let surface = Cairo.Image.(create ARGB32 ~w:320 ~h:120) in
  let cr = Cairo.create surface in
  (* Draw a background rectangle: *)
  Cairo.rectangle cr 0. 0. ~w:320. ~h:120.;
  Cairo.set_source_rgb cr 1. 1. 1.;
  Cairo.fill cr;
  (* Get font families: *)
  let font_map = Cairo_pango.Font_map.get_default() in

  Cairo.translate cr 50. 25.;
  let pc = Cairo_pango.Font_map.create_context font_map in
  let layout = Pango.Layout.create pc in
  let fontname = if Array.length Sys.argv >= 2 then Sys.argv.(1) else "Sans" in
  let font = Pango.Font.from_string fontname in
  Pango.Layout.set_font_description layout font;
  Pango.Layout.set_text layout "Hello world こんにちは世界";
  Cairo.set_source_rgb cr 0. 0. 0.;
  Cairo_pango.update_layout cr layout;
  Cairo_pango.show_layout cr layout;

  Cairo.PNG.write surface "rendering.png"