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

1from __future__ import annotations 

2import numpy as np 

3from PIL import Image 

4 

5from pyWebLayout.core.base import Renderable, Queriable 

6from pyWebLayout.core import Geometric 

7from pyWebLayout.style import Alignment 

8 

9 

10class Box(Geometric, Renderable, Queriable): 

11 """ 

12 A box with geometric properties (origin and size). 

13 

14 Uses Geometric mixin for origin and size management. 

15 """ 

16 

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 

36 

37 # origin and size properties are provided by Geometric mixin 

38 

39 def in_shape(self, point): 

40 return np.all((point >= self._origin) & (point < self._end), axis=-1)