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 -> unitManually 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 -> unitCleanup 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 : colornone = (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 rgba_of_int32 : int -> color
val find_color : string -> rgbConvert a string of the form "grey" or "#FE01BC" to a rgb code
(r,g,b). Color names are taken from
here.
val pale : rgb -> rgbval set_color : Tsdl.Sdl.renderer -> color -> unitEquivalent to Sdl.set_render_draw_color.
val set_text_color : rgb -> unitOverrides the Theme TEXT_COLOR variable.
These functions can be used to draw onto an Sdl_area.t.
val to_pixels : int * int -> int * intConvert 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 -> unitrectangle 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 -> unitcircle 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 * intTransform 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 -> unitSet the mouse cursor to be the standard system cursor. Internally, this first creates an SDL system cursor (or use a previously created one).