package toffee

  1. Overview
  2. Docs
CSS layout engine for OCaml (Flexbox, Grid, Block)

Install

dune-project
 Dependency

Authors

Maintainers

Sources

mosaic-0.1.0.tbz
sha256=9e4e90d17f9b2af1b07071fe425bc2c519c849c4f1d1ab73cde512be2d874849
sha512=06e9c4a741590942e81a27738d0b5c0413fafec8cf3b7dae047ad69f155e7b718aa4223818dc161b7d028efffcfd3365905e264d6fd31d453910ddfa91dcf9b9

doc/src/toffee.tree/collapsible_margin_set.ml.html

Source file collapsible_margin_set.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
type t = { positive : float; negative : float }

let zero = { positive = 0.0; negative = 0.0 }

let from_margin margin =
  if margin >= 0.0 then { positive = margin; negative = 0.0 }
  else { positive = 0.0; negative = margin }

let collapse_with_margin t margin =
  if margin >= 0.0 then { t with positive = Float.max t.positive margin }
  else { t with negative = Float.min t.negative margin }

let collapse_with_set t other =
  {
    positive = Float.max t.positive other.positive;
    negative = Float.min t.negative other.negative;
  }

let resolve t = t.positive +. t.negative

let to_string t =
  Printf.sprintf "CollapsibleMarginSet { positive: %g; negative: %g }"
    t.positive t.negative

let compare a b =
  let cmp_pos = Float.compare a.positive b.positive in
  if cmp_pos <> 0 then cmp_pos else Float.compare a.negative b.negative

let equal a b =
  Float.equal a.positive b.positive && Float.equal a.negative b.negative

let pp fmt t = Format.pp_print_string fmt (to_string t)