package graphv_webgl

  1. Overview
  2. Docs

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 = {
  1. box : Bounds.t;
  2. 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

val create : t -> name:string -> file:string -> font option

Create a new font

val bounds : t -> x:float -> y:float -> ?start:int -> ?end_:int -> string -> bounds
type metrics = {
  1. ascender : float;
  2. descender : float;
  3. line_height : float;
}
val metrics : t -> metrics
type text_row = {
  1. start_index : int;
  2. end_index : int;
  3. width : float;
  4. minx : float;
  5. maxx : float;
  6. 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 = {
  1. index : int;
  2. x : float;
  3. min_x : float;
  4. 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
OCaml

Innovation. Community. Security.