package oxbow

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

Install

dune-project
 Dependency

Authors

Maintainers

Sources

v0.1.0.tar.gz
md5=a637acaa0e19046cd65fff733874eb97
sha512=76230cbecd7510de7a05b5d1f335915ef7b6c4aa557d8dbfd23591606618d2cfa25082d17b93f2f4b53a118d1cbf6a80e4ad51cf0f099b4921fb83d6df0c9801

doc/src/oxbow.layout/xform.ml.html

Source file xform.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
open! Oxbow_core

let pre (dir : Direction.Spatial.t) (area : int Rect.t) =
  let cross ({ x; y; w; h } : int Rect.t) : int Rect.canonical = { x; y; w; h } in
  match dir with
  | Left | Right -> cross area
  | Up | Down -> { x = 0; y = 0; w = area.h; h = area.w }
;;

let post (dir : Direction.Spatial.t) ~(area : int Rect.t) (rect : int Rect.canonical) =
  let cross ({ x; y; w; h } : int Rect.canonical) : int Rect.t = { x; y; w; h } in
  let mirror_x (r : int Rect.t) = { r with x = area.x + area.w - (r.x - area.x) - r.w } in
  let mirror_y (r : int Rect.t) = { r with y = area.y + area.h - (r.y - area.y) - r.h } in
  let swap (r : int Rect.canonical) =
    Rect.{ x = area.x + r.y; y = area.y + r.x; w = r.h; h = r.w }
  in
  match dir with
  | Left -> cross rect
  | Right -> cross rect |> mirror_x
  | Up -> swap rect
  | Down -> swap rect |> mirror_y
;;