Module Bogue.Draw

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.

Dependency graph

type canvas 

Contains the hardware information for drawing (SDL renderer and window).

type texture = Tsdl.Sdl.texture 

Initialization and shutdown

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.

Colors

type rgb = RGB.t 
type color = RGBA.t 
type fill = 
| Pattern of texture
| Solid of color

Creating colors

val opaque : rgb -> color
val transp : rgb -> color
val add_alpha : int -> rgb -> color
val rgba_of_int32 : int -> color
val find_color : string -> rgb

Same as RGB.find_color. (For backward compatibility)

Using colors

val set_color : Tsdl.Sdl.renderer -> color -> unit

Equivalent to Sdl.set_render_draw_color.

val set_text_color : rgb -> unit

Same as RGB.set_text_color. (For backward compatibility)

Drawing functions

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.

Misc

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).