Qrc.MatrixQR 2D matrices.
type bits = (int, Bigarray.int8_unsigned_elt, Bigarray.c_layout) Bigarray.Array1.tThe type for sequence of bits.
The type for 2D square matrices of modules (binary pixels).
For a matrix of width w, the module at position (0,0) is the top-left corner, and (w-1,w-1) is the bottom-right corner. The quiet zone (surrounding frame of four zero modules) is not included. We store the bits in row-major order.
val zero : w:int -> tzero ~w is a matrix of zeros of size w.
of_bits ~w bits is a matrix from the sequence of bits bits interpreted in row-major order. Exceeding final bits are ignored.
val w : t -> intw m is the matrix width.
bits m are the matrix's bits (modules) in row-major order. If there are more bits than (w m) * (w m), exceeding final bits should be ignored.
val get : t -> x:int -> y:int -> boolget m ~x ~y is the (x,y) module of m.
val set : t -> x:int -> y:int -> unitset m ~x ~y v sets the (x,y) module of m to true.
val clear : t -> x:int -> y:int -> unitclear m ~x ~y sets the (x,y) module of m to false.
val fold : (int -> int -> bool -> 'a -> 'a) -> t -> 'a -> 'afold f m acc folds f over all the modules (x,y) of m as f x
y (get m ~x ~y) acc' in row-major order and starting with acc.
val to_svg : ?w_mm:int -> ?invert:bool -> ?quiet_zone:bool -> t -> stringto_svg ~w_mm ~invert ~quiet_zone m is an SVG image for m in a coordinate system using one (slightly larger) unit black square per set module. The image, including the quiet zone, has a width and height of w_mm millimeters (defaults to 50). If invert is true (defaults to false) black modules are white and vice-versa. If quiet_zone is true (default) the surrounding frame of four zero modules is included.