module type IMAGE = sig
.. end
type
t
type
elt
Image creation
val create : int -> int -> t
create w h
creates an image with a size w
xh
. The content is
the image is not initialized.
val make : int -> int -> elt -> t
make w h c
creates an image with a size w
xh
. The content is
the image is initialized to the color c
.
val destroy : t -> unit
destroy t
explicitly frees the image content of t
.
If you do not use bitmap swap files, you do not need to call
this function, since GC will free unreachable image data automatically.
Read bitmap.mli for more details.
Pixel access
val get : t -> int -> int -> elt
get t x y
gets image pixel of t
at x
,y
. If x
,y
is
outside of the image size, Images.Out_of_image exception is raised.
val set : t -> int -> int -> elt -> unit
set t x y c
sets image pixel of t
at x
,y
by the color c
.
If x
,y
is outside of the image size, Images.Out_of_image exception
is raised.
val unsafe_get : t -> int -> int -> elt
val unsafe_set : t -> int -> int -> elt -> unit
Unsafe versions of get
and set
. It does not perform any image
boundary check. If the coordinates are out of the given image,
the result is undefined. Use carefully.
Image copy
val copy : t -> t
copy t
duplicates the image t
.
val sub : t -> int -> int -> int -> int -> t
sub t x y w h
duplicates a subimage of t
of size w
xh
,
whose origin (0,0) is at (x,y) of t
.
val blit : t ->
int -> int -> t -> int -> int -> int -> int -> unit
blit src x y dst x' y' w h
copies rectangular area of src
at
x
,y
with size w
xh
, to an image dst
. The origin of
the subimage comes at x'
,y'
of dst
.
val map : (elt -> elt -> elt) ->
t ->
int -> int -> t -> int -> int -> int -> int -> unit
map f src x y dst x' y' w h
maps pixels of the rectangular area
of src
at x
,y
with size w
xh
, to an image dst
,
using color conversion function f
. The origin of the subimage
comes at x'
,y'
of dst
.
val dump : t -> string
functions for internal use
val unsafe_access : t -> int -> int -> string * int
val get_strip : t -> int -> int -> int -> string
val set_strip : t -> int -> int -> int -> string -> unit
val get_scanline : t -> int -> string
val get_scanline_ptr : t -> (int -> (string * int) * int) option
val set_scanline : t -> int -> string -> unit
val blocks : t -> int * int
val dump_block : t -> int -> int -> Bitmap.Block.t