module Draw:sig
..end
Low-level graphics and colors.
This module is internally used for low-level graphics and a thin layer over Tsdl.
The public API is mainly useful for Color management. There are also some
helper functions for drawing into an Sdl_area
.
type
canvas
Contains the hardware information for drawing (SDL renderer and window).
typetexture =
Tsdl.Sdl.texture
val video_init : unit -> unit
Manually init the SDL video system, and detect the scaling factor used by Bogue. This is useful only if you don't use Bogue's mainloop (for instance if you manually manage your windows and event loop).
val quit : unit -> unit
Cleanup and quit SDL.
typergb =
int * int * int
red, green and blue values are integers in the range 0..255
typecolor =
int * int * int * int
r,g,b,a
type
fill =
| |
Pattern of |
| |
Solid of |
val black : rgb
val grey : rgb
val pale_grey : rgb
val dark_grey : rgb
val white : rgb
val red : rgb
val blue : rgb
val green : rgb
val magenta : rgb
val cyan : rgb
val yellow : rgb
val sienna : rgb
val label_color : rgb
val none : color
none = (0,0,0,0)
is completely transparent black.
val opaque : rgb -> color
val transp : rgb -> color
val lighter : color -> color
val darker : color -> color
val set_alpha : int -> rgb -> color
val random_color : unit -> color
val find_color : string -> rgb
Convert a string of the form "grey"
or "#FE01BC"
to a rgb code
(r,g,b)
. Color names are taken from
here.
val pale : rgb -> rgb
val set_color : Tsdl.Sdl.renderer -> color -> unit
Equivalent to Sdl.set_render_draw_color
.
val set_text_color : rgb -> unit
Overrides the Theme
TEXT_COLOR
variable.
These functions can be used to draw onto an Sdl_area.t
.
val to_pixels : int * int -> int * int
Convert BOGUE logical coordinates into hardware pixel coordinates. This
takes into account both the Theme
SCALE
and the high-dpi scaling of
some systems (mac OS retina, iOS).
val line : ?thick:int ->
Tsdl.Sdl.renderer ->
color:color -> x0:int -> y0:int -> x1:int -> y1:int -> unit
val rectangle : ?thick:int ->
Tsdl.Sdl.renderer ->
color:color -> w:int -> h:int -> x:int -> y:int -> unit
rectangle renderer ~color ~thick ~w ~h ~x ~y
draws a rectangle with
given line thickness. The coordinate of the top left corner is
(x,y)
. The size (including the thick line) is (w,h)
.
val circle : ?thick:int ->
Tsdl.Sdl.renderer ->
color:color -> radius:int -> x:int -> y:int -> unit
circle renderer ~width ~color ~radius ~x ~y
draws a circle with given
line thickness, centered at (x,y)
, with given radius
.
type
align =
| |
Min |
| |
Center |
| |
Max |
val unscale_size : int * int -> int * int
Transform a size (W,H) in physical pixels into 'logical' pixels (w,h),
which are used for layouts. This is done by dividing by the Theme
SCALE
variable.
val set_system_cursor : Tsdl.Sdl.System_cursor.t -> unit
Set the mouse cursor to be the standard system cursor. Internally, this first creates an SDL system cursor (or use a previously created one).