Cairn · module

Cairn.Geometry

lean/Cairn/Geometry.lean

Geometry in integer logical points, origin top-left, y down. No floats anywhere a theorem looks. The host multiplies by the backing scale when it paints.

Order

Structures 4

structure

Cairn.Point

lean/Cairn/Geometry.lean:11
Point : Type
Fields
x : Int
y : Int
Instances

BEq Repr Inhabited

structure

Cairn.Size

lean/Cairn/Geometry.lean:16
Size : Type
Fields
w : Int
h : Int
Instances

BEq Inhabited Repr

structure

Cairn.Rect

lean/Cairn/Geometry.lean:21
Rect : Type
Fields
x : Int
y : Int
w : Int
h : Int
Instances

Repr BEq Inhabited

structure

Cairn.Insets

lean/Cairn/Geometry.lean:28
Insets : Type
Fields
top : Int
right : Int
bottom : Int
left : Int
Instances

BEq Repr Inhabited

Definitions 7

def

Cairn.Rect.contains

lean/Cairn/Geometry.lean:37
contains (r : Rect) (p : Point) : Bool
def

Cairn.Rect.center

lean/Cairn/Geometry.lean:41
center (r : Rect) : Point

The point a click on this rect is aimed at. Inside the rect whenever w > 0 ∧ h > 0.

def

Cairn.Rect.inside

lean/Cairn/Geometry.lean:44
inside (r o : Rect) : Prop

r lies entirely within o.

Instances

Decidable

def

Cairn.Rect.disjoint

lean/Cairn/Geometry.lean:49
disjoint (a b : Rect) : Prop
def

Cairn.Rect.nonempty

lean/Cairn/Geometry.lean:52
nonempty (r : Rect) : Prop
Instances

Decidable

def

Cairn.Rect.inset

lean/Cairn/Geometry.lean:56
inset (r : Rect) (i : Insets) : Rect
def

Cairn.Rect.inter

lean/Cairn/Geometry.lean:62
inter (a b : Rect) : Rect

Intersection, used for clipping. Width and height floor at zero. When the rects don't overlap, the empty result is placed inside a (its origin is clamped to a's far edge), so a.inter b is inside a whenever a has non-negative size.

Instances 18

instance

Cairn.instDecidableEqPoint

lean/Cairn/Geometry.lean:14
instDecidableEqPoint : DecidableEq Point
instance

Cairn.instBEqPoint

lean/Cairn/Geometry.lean:14
instBEqPoint : BEq Point
instance

Cairn.instReprPoint

lean/Cairn/Geometry.lean:14
instReprPoint : Repr Point
instance

Cairn.instInhabitedPoint

lean/Cairn/Geometry.lean:14
instInhabitedPoint : Inhabited Point
instance

Cairn.instBEqSize

lean/Cairn/Geometry.lean:19
instBEqSize : BEq Size
instance

Cairn.instInhabitedSize

lean/Cairn/Geometry.lean:19
instInhabitedSize : Inhabited Size
instance

Cairn.instReprSize

lean/Cairn/Geometry.lean:19
instReprSize : Repr Size
instance

Cairn.instDecidableEqSize

lean/Cairn/Geometry.lean:19
instDecidableEqSize : DecidableEq Size
instance

Cairn.instReprRect

lean/Cairn/Geometry.lean:26
instReprRect : Repr Rect
instance

Cairn.instBEqRect

lean/Cairn/Geometry.lean:26
instBEqRect : BEq Rect
instance

Cairn.instDecidableEqRect

lean/Cairn/Geometry.lean:26
instDecidableEqRect : DecidableEq Rect
instance

Cairn.instInhabitedRect

lean/Cairn/Geometry.lean:26
instInhabitedRect : Inhabited Rect
instance

Cairn.instBEqInsets

lean/Cairn/Geometry.lean:33
instBEqInsets : BEq Insets
instance

Cairn.instReprInsets

lean/Cairn/Geometry.lean:33
instReprInsets : Repr Insets
instance

Cairn.instDecidableEqInsets

lean/Cairn/Geometry.lean:33
instDecidableEqInsets : DecidableEq Insets
instance

Cairn.instInhabitedInsets

lean/Cairn/Geometry.lean:33
instInhabitedInsets : Inhabited Insets
instance

Cairn.Rect.instDecidableInside

lean/Cairn/Geometry.lean:47
instDecidableInside (r o : Rect) : Decidable (r.inside o)
instance

Cairn.Rect.instDecidableNonempty

lean/Cairn/Geometry.lean:54
instDecidableNonempty (r : Rect) : Decidable r.nonempty