From 8bfeff006a41bdd697a703efbfbb20c82bc65b6d Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Sun, 18 May 2008 19:58:17 +0000 Subject: [PATCH] Added GIF parsing example. --- examples/gif.ml | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 examples/gif.ml diff --git a/examples/gif.ml b/examples/gif.ml new file mode 100644 index 0000000..050a9c8 --- /dev/null +++ b/examples/gif.ml @@ -0,0 +1,33 @@ +(* GIF header parser. + * $Id$ + *) + +open Printf + +let () = + if Array.length Sys.argv <= 1 then + failwith "usage: gif input.gif"; + let filename = Sys.argv.(1) in + let bits = Bitmatch.bitstring_of_file filename in + + bitmatch bits with + | { ("GIF87a"|"GIF89a") : 6*8 : string; (* GIF magic. *) + width : 16 : littleendian; + height : 16 : littleendian; + colormap : 1; (* Has colormap? *) + colorbits : 3; (* Color res = colorbits+1 *) + sortflag : 1; + bps : 3; (* Bits/pixel = bps+1 *) + bg : 8; (* Background colour. *) + aspectratio : 8 } -> + printf "%s: GIF image:\n" filename; + printf " size %d %d\n" width height; + printf " has global colormap? %b\n" colormap; + printf " colorbits %d\n" (colorbits+1); + printf " global colormap is sorted? %b\n" sortflag; + printf " bits/pixel %d\n" (bps+1); + printf " background color index %d\n" bg; + printf " aspect ratio %d\n" aspectratio + + | { _ } -> + eprintf "%s: Not a GIF image\n" filename -- 1.8.3.1