Sophie

Sophie

distrib > Mageia > 7 > armv7hl > media > core-release > by-pkgid > f907aa52a0688d6b126893a77a301494 > files > 29

ocaml-cairo-devel-0.4.7-0.4.gitbe5a298.mga7.armv7hl.rpm

(* Demonstrate the use of recording surfaces.  *)

open Printf

let () =
  let extents = { Cairo.x = 0.0; y = 0.0; w = 120.0; h = 120.0 } in
  let surface = Cairo.Recording.create ~extents Cairo.COLOR_ALPHA in
  let cr = Cairo.create surface in

  (* Drawing code goes here *)
  Cairo.set_line_width cr 2.;
  Cairo.set_source_rgb cr 1. 0. 0.;

  Cairo.move_to cr 25. 25.;
  Cairo.line_to cr 120. 120.;
  Cairo.stroke cr;
  let r = Cairo.Recording.ink_extents surface in
  printf "extents = {x=%g; y=%g; w=%g; h=%g}\n"
    r.Cairo.x r.Cairo.y r.Cairo.w r.Cairo.h;

  (* Replay the recorded content to a PNG and PDF output *)
  (* PNG *)
  let png_surface = Cairo.Image.create Cairo.Image.ARGB32 120 120 in
  let cr = Cairo.create png_surface in
  Cairo.set_source_surface cr surface 0.0 0.0;
  Cairo.paint cr;
  Cairo.PNG.write png_surface "recording.png";
  (* PDF *)
  let pdf_surface = Cairo.PDF.create "recording.pdf" 120.0 120.0 in
  let cr = Cairo.create pdf_surface in
  Cairo.set_source_surface cr surface 0.0 0.0;
  Cairo.paint cr;
  Cairo.Surface.finish (Cairo.get_target cr)