package oxbow

  1. Overview
  2. Docs
Dynamic window manager for the river Wayland compositor

Install

dune-project
 Dependency

Authors

Maintainers

Sources

v0.1.1.tar.gz
md5=a182e6d368a65e6752771e41e651713f
sha512=020d2c7f9f4e06966ca56695e24eb0b41dd12500aa65d2cd9b56e03068bbb6ea7770de0a33c04f0d054bd474bee8c2b36bb46af86266c9823490e1bd0810c027

doc/src/oxbow.core/extent.ml.html

Source file extent.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
33
34
open! Ppx_yojson_conv_lib.Yojson_conv

type t =
  | Px of int [@name "px"]
  | Pct of float [@name "pct"]
[@@deriving yojson]

let resolve ~ref:reference = function
  | Px n -> n
  | Pct f ->
    let r = float_of_int reference in
    f /. 100. *. r |> Float.round |> int_of_float
;;

let to_string = function
  | Px n -> Printf.sprintf "%d" n
  | Pct f -> Printf.sprintf "%f%%" f
;;

let of_string str =
  let error s = Error (Printf.sprintf "bad extent: %s" s) in
  match String.trim str with
  | str' when String.ends_with ~suffix:"%" str' ->
    (match String.split_on_char '%' str' with
     | s :: _ ->
       (match float_of_string_opt s with
        | None -> error str'
        | Some f -> Ok (Pct f))
     | _ -> error str')
  | str' ->
    (match int_of_string_opt str' with
     | None -> error str'
     | Some n -> Ok (Px n))
;;