Coverage for pyWebLayout/concrete/box.py: 100%
19 statements
« prev ^ index » next coverage.py v7.11.2, created at 2025-11-12 12:02 +0000
« prev ^ index » next coverage.py v7.11.2, created at 2025-11-12 12:02 +0000
1from __future__ import annotations
2import numpy as np
3from PIL import Image
5from pyWebLayout.core.base import Renderable, Queriable
6from pyWebLayout.core import Geometric
7from pyWebLayout.style import Alignment
10class Box(Geometric, Renderable, Queriable):
11 """
12 A box with geometric properties (origin and size).
14 Uses Geometric mixin for origin and size management.
15 """
17 def __init__(
18 self,
19 origin,
20 size,
21 callback=None,
22 sheet: Image = None,
23 mode: bool = None,
24 halign=Alignment.CENTER,
25 valign=Alignment.CENTER):
26 super().__init__(origin=origin, size=size)
27 self._end = self._origin + self._size
28 self._callback = callback
29 self._sheet: Image = sheet
30 if self._sheet is None:
31 self._mode = mode
32 else:
33 self._mode = sheet.mode
34 self._halign = halign
35 self._valign = valign
37 # origin and size properties are provided by Geometric mixin
39 def in_shape(self, point):
40 return np.all((point >= self._origin) & (point < self._end), axis=-1)