sig
module Numbers :
sig
type rational = int64 * int64
type srational = int32 * int32
val float_of_rational : int64 * int64 -> float
val float_of_srational : int32 * int32 -> float
val string_of_rational : int64 -> int64 -> string
val string_of_srational : int32 -> int32 -> string
end
module Endian :
sig
type t = Big | Little
val to_string : Exif.Endian.t -> string
val sys : Exif.Endian.t
end
module IFD : sig type t = IFD_0 | IFD_1 | EXIF | GPS | Interop end
module Date :
sig
type t = { year : int; month : int; day : int; }
val to_string : Exif.Date.t -> string
val of_string : string -> [> `Error of string | `Ok of Exif.Date.t ]
end
module DateTime :
sig
type t = {
year : int;
month : int;
day : int;
hour : int;
min : int;
sec : int;
}
val to_string : Exif.DateTime.t -> string
val of_string :
string -> [> `Error of string | `Ok of Exif.DateTime.t ]
val of_string_packed_unix_time :
string -> [> `Error of string | `Ok of Exif.DateTime.t ]
end
module Tag :
sig type t = int val to_string : Exif.Tag.t -> Exif.IFD.t -> string end
module Entry :
sig
type t
module Pack :
sig
type format =
ILLEGAL
| BYTE
| ASCII
| SHORT
| LONG
| RATIONAL
| SBYTE
| UNDEFINED
| SSHORT
| SLONG
| SRATIONAL
| FLOAT
| DOUBLE
val string_of_format : Exif.Entry.Pack.format -> string
type unpacked =
Bytes of int array
| Asciis of string
| Shorts of int array
| Longs of int64 array
| Rationals of (int64 * int64) array
| SBytes of int array
| Undefined of string
| SShorts of int array
| SLongs of int32 array
| SRationals of (int32 * int32) array
| Floats of float array
| Doubles of float array
val unpack :
Exif.Entry.Pack.format ->
int -> string -> Exif.Entry.Pack.unpacked
val format : Format.formatter -> Exif.Entry.Pack.unpacked -> unit
end
module Decoded :
sig
type t = {
tag : int;
format : Exif.Entry.Pack.format;
components : int;
data : string;
}
end
val decode : Exif.Entry.t -> Exif.Entry.Decoded.t
type unpacked_entry = Exif.Tag.t * Exif.Entry.Pack.unpacked
val unpack : Exif.Entry.Decoded.t -> Exif.Entry.unpacked_entry
val format_unpacked_entry :
Exif.IFD.t ->
Exifutil.Format.formatter ->
Exif.Tag.t * Exif.Entry.Pack.unpacked -> unit
val format :
Exif.IFD.t -> Exifutil.Format.formatter -> Exif.Entry.t -> unit
end
module Content :
sig
type t
val entries : Exif.Content.t -> Exif.Entry.t list
val format :
Exif.IFD.t -> Exifutil.Format.formatter -> Exif.Content.t -> unit
end
module Data :
sig
type t
val get_byte_order : Exif.Data.t -> Exif.Endian.t
val set_byte_order : Exif.Data.t -> Exif.Endian.t -> unit
val fix : Exif.Data.t -> unit
val dump : Exif.Data.t -> unit
val from_string : string -> Exif.Data.t
val format : Exifutil.Format.formatter -> Exif.Data.t -> unit
type contents = {
ifd_0 : Exif.Content.t option;
ifd_1 : Exif.Content.t option;
exif : Exif.Content.t option;
gps : Exif.Content.t option;
interop : Exif.Content.t option;
}
val contents : Exif.Data.t -> Exif.Data.contents
val get_ifd_0 : Exif.Data.t -> Exif.Content.t option
val get_ifd_1 : Exif.Data.t -> Exif.Content.t option
val get_exif : Exif.Data.t -> Exif.Content.t option
val get_gps : Exif.Data.t -> Exif.Content.t option
val get_interop : Exif.Data.t -> Exif.Content.t option
val unpack_ifd_0 : Exif.Data.t -> Exif.Entry.unpacked_entry list option
val unpack_ifd_1 : Exif.Data.t -> Exif.Entry.unpacked_entry list option
val unpack_exif : Exif.Data.t -> Exif.Entry.unpacked_entry list option
val unpack_gps : Exif.Data.t -> Exif.Entry.unpacked_entry list option
val unpack_interop :
Exif.Data.t -> Exif.Entry.unpacked_entry list option
end
module Analyze :
sig
type datetime =
[ `EncodedInUnixTime of Exif.DateTime.t
| `Error of string
| `Ok of Exif.DateTime.t ]
val parse_datetime : string -> [> Exif.Analyze.datetime ]
val analyze_ifd :
int * Exif.Entry.Pack.unpacked ->
[> `DateTime of [> Exif.Analyze.datetime ]
| `Make of string
| `Model of string
| `Orientation of
[> `BottomLeft
| `BottomRight
| `LeftBottom
| `LeftTop
| `RightBottom
| `RightTop
| `TopLeft
| `TopRight ]
| `ResolutionUnit of [> `Centimeters | `Inches ]
| `Software of Exif.Entry.Pack.unpacked
| `Unknown of int * Exif.Entry.Pack.unpacked
| `XResolution of int64 * int64
| `YResolution of int64 * int64 ]
val analyze_exif :
int * Exif.Entry.Pack.unpacked ->
[> `DateTimeDigitized of [> Exif.Analyze.datetime ]
| `DateTimeOriginal of [> Exif.Analyze.datetime ]
| `ExifVersion of string
| `MakerNote of string
| `SubsecTime of string
| `SubsecTimeDigitized of string
| `SubsecTimeOriginal of string
| `Unknown of int * Exif.Entry.Pack.unpacked
| `UserComment of string ]
val analyze_gps :
int * Exif.Entry.Pack.unpacked ->
[> `AboveSeaLevel
| `Altitude of int64 * int64
| `BelowSeaLevel
| `EastLongitude
| `GPSDate of [> `Error of string | `Ok of Exif.Date.t ]
| `GPSMapDatum of string
| `GPSVersion of int * int * int * int
| `ImgDirection of int64 * int64
| `ImgDirectionMagnetic
| `ImgDirectionTrue
| `Latitude of int64 * int64
| `Longitude of int64 * int64
| `NorthLatitude
| `SouthLatitude
| `TimeStampUTC of float * float * float
| `TimeStampUTCinSRationals of float * float * float
| `Unknown of int * Exif.Entry.Pack.unpacked
| `WestLongitude ]
val ifd_0_datetime : Exif.Data.t -> [> Exif.Analyze.datetime ] option
val exif_datetime : Exif.Data.t -> [> Exif.Analyze.datetime ] option
val datetime : Exif.Data.t -> [> Exif.Analyze.datetime ] option
end
end