Box

A Box is a rectangular area defined by two coordinates:

  • the top-left corner of the rectangle: the min coord,

  • the bottom-right corner of the rectangle: the max coord.

To instantiate a Box, you can do:

>>> b1 = Box(Coord(5, 6), Coord(7, 8))
>>> b2 = Box(Coord(5, 6))
>>> b3 = Box(1, 2, 2, 3)
>>> b4 = Box(1, 2)
>>> b5 = Box(b1)

Box objects have a string representation à la Excel:

>>> for box in b1, b2, b3, b4, b5:
...     print(box)
E6:G8
E6
A2:B3
A2
E6:G8

You can calculate the width and height of boxes:

>>> b1 = Box(Coord(5, 6), Coord(6, 8))
>>> b1.width, b1.height
(2, 3)

>>> b2 = Box(Coord(5, 6))
>>> b2.width, b2.height
(1, 1)

You can determine if a Coord is included in a Box:

>>> top_left = Coord(5, 6)
>>> top_right = Coord(6, 6)
>>> bottom_left = Coord(5, 8)
>>> bottom_right = Coord(6, 8)

>>> b1 = Box(top_left, bottom_right)

>>> top_left in b1
True
>>> top_right in b1
True
>>> bottom_left in b1
True
>>> bottom_right in b1
True

>>> Coord(7, 6) in b1
False

>>> (5, 7) in b1
True

You can determine if two boxes intersect each other, or are disjoints:

>>> b1 = Box(Coord(5, 6), Coord(6, 8))
>>> b2 = Box(Coord(6, 6), Coord(6, 7))
>>> b3 = Box(Coord(7, 6), Coord(7, 8))
>>> b2.intersect(b3)
False
>>> b1.isdisjoint(b2)
False
>>> b2.isdisjoint(b1)
False
>>> b1.isdisjoint(b3)
True
>>> b3.isdisjoint(b1)
True
class benker.box.Box(*args)

Bases: benker.box.BoxTuple

A Box is a rectangular area defined by two coordinates:

  • the top-left corner of the rectangle: the min coord,

  • the bottom-right corner of the rectangle: the max coord.

Usage:

>>> from benker.box import Box

>>> box = Box(1, 1, 5, 3)
>>> box
Box(min=Coord(x=1, y=1), max=Coord(x=5, y=3))
property height
intersect(that: benker.box.Box) bool
intersection(*others)

Return the intersection of self and all the boxes.

Usage:

>>> from benker.box import Box
>>> from benker.coord import Coord

>>> b1 = Box(Coord(3, 2), Coord(6, 4))
>>> b2 = Box(Coord(4, 3), Coord(5, 7))
>>> b1.intersection(b2)
Box(min=Coord(x=4, y=3), max=Coord(x=5, y=4))

>>> b1 & b2
Box(min=Coord(x=4, y=3), max=Coord(x=5, y=4))
Parameters

others – collections of boxes

Returns

The inner box of all the boxes.

Raises

ValueError – if the two boxes are disjoint.

isdisjoint(that: benker.box.Box) bool
move_to(coord)
resize(size)
property size
transform(coord=None, size=None)
union(*others)

Return the union of self and all the boxes.

Usage:

>>> from benker.box import Box
>>> from benker.coord import Coord

>>> b1 = Box(Coord(3, 2), Coord(6, 4))
>>> b2 = Box(Coord(4, 3), Coord(5, 7))
>>> b1.union(b2)
Box(min=Coord(x=3, y=2), max=Coord(x=6, y=7))

>>> b1 | b2
Box(min=Coord(x=3, y=2), max=Coord(x=6, y=7))
Parameters

others – collections of boxes

Returns

The bounding box of all the boxes.

property width
class benker.box.BoxTuple(min, max)

Bases: tuple

max

Alias for field number 1

min

Alias for field number 0