Module Graphv_webgl.Text
Module for text rendering. Text is rendered using a glyph bitmap. The default bitmap size is 2048x2048. It is possible to run out of space in this bitmap so try to be conservative with font sizes and number of fonts. Glyphs are grouped by font, size, and blur. A glyph will be rendered once per combination of properties.
type font
type bounds
=
{
box : Bounds.t;
advance : float;
}
val text : t -> x:float -> y:float -> ?start:int -> ?end_:int -> string -> unit
Draw a text substring with the current font at the specified location.
- parameter x
The x location to draw the font at. Depending on the current alignment this parameter may represent the center, bottom left, right, etc.
- parameter y
The y location to draw the font at. Depending on the current alignment this parameter may represent the center, bottom, top, etc.
- parameter start
The starting index of the string. Defaults to 0.
- parameter end_
The ending index. Defaults to the end of the string.
val text_w : t -> x:float -> y:float -> ?start:int -> ?end_:int -> string -> float
Same as
text
except it returns the rendered length.
val find_font : t -> name:string -> font option
val set_size : t -> size:float -> unit
Set the font size in pixel units. Warning: If this font size has not been used yet the glyphs will be generated on demand. This may cause a performance hit on the first rendering at this size. Try to avoid using many different sizes.
val set_blur : t -> blur:float -> unit
Set the current blur, in pixel units
val set_line_height : t -> height:float -> unit
Set the spacing between lines
val set_letter_spacing : t -> spacing:float -> unit
Set the spacing between letters
val set_align : t -> align:Align.t -> unit
Set the alignment for rendered text. This changes the x,y origin for the rendered text.
val set_font_face : t -> name:string -> unit
Change the font by name
val set_font_face_id : t -> id:int -> unit
Change the font by id
type text_row
=
{
start_index : int;
end_index : int;
width : float;
minx : float;
maxx : float;
next : int;
}
val break_lines : t -> break_width:float -> max_rows:int -> ?start:int -> ?end_:int -> lines:text_row array -> string -> int
Layout lines of text in
break_width
size rows.- parameter break_width
The maximum width of a row
- parameter max_rows
The maximum number of rows to layout. This allows the
lines
parameter to be used accross different calls to save allocations.
- parameter start
The starting index of the string to layout, defaults to 0.
- parameter end_
The ending index of the string to layout, default to the end of the string.
- returns
The number of rows created.
val make_empty_rows : int -> text_row array
Helper function to initialize an empty array of rows
type glyph_position
=
{
index : int;
x : float;
min_x : float;
max_x : float;
}
Used to get glyph positions within a rendered string. Can be used for selections or other screen based picking.
val empty_glyph_position : glyph_position
A
glyph_position
initialized to all zeros.
val glyph_positions : t -> x:float -> y:float -> ?start:int -> ?end_:int -> glyphs:glyph_position array -> string -> int
val text_box : t -> x:float -> y:float -> break_width:float -> ?start:int -> ?end_:int -> string -> unit
val box_bounds : t -> x:float -> y:float -> break_width:float -> ?start:int -> ?end_:int -> string -> Bounds.t
val add_fallback_id : t -> font:font -> fallback:font -> unit
val add_fallback : t -> name:string -> fallback:string -> unit
val reset_fallback_id : t -> font:font -> unit
val reset_fallback : t -> name:string -> unit