@@ 1-33 (lines=33) @@ | ||
1 | def get_ReadingOrderGroups(self) -> dict: |
|
2 | """ |
|
3 | Aggregate recursive ReadingOrder into a dictionary, mapping each regionRef |
|
4 | (i.e. segment `@id`) to its referring group object (i.e one of |
|
5 | ||
6 | \b |
|
7 | - :py:class:`.RegionRefType` |
|
8 | - :py:class:`.RegionRefIndexedType` |
|
9 | - :py:class:`.OrderedGroupType` |
|
10 | - :py:class:`.OrderedGroupIndexedType` |
|
11 | - :py:class:`.UnoderedGroupType` |
|
12 | - :py:class:`.UnoderedGroupIndexedType` |
|
13 | """ |
|
14 | def get_groupdict(group): |
|
15 | regionrefs = list() |
|
16 | if isinstance(group, (OrderedGroupType, OrderedGroupIndexedType)): |
|
17 | regionrefs = (group.get_RegionRefIndexed() + |
|
18 | group.get_OrderedGroupIndexed() + |
|
19 | group.get_UnorderedGroupIndexed()) |
|
20 | if isinstance(group, (UnorderedGroupType, UnorderedGroupIndexedType)): |
|
21 | regionrefs = (group.get_RegionRef() + |
|
22 | group.get_OrderedGroup() + |
|
23 | group.get_UnorderedGroup()) |
|
24 | refdict = {} |
|
25 | for elem in regionrefs: |
|
26 | refdict[elem.get_regionRef()] = elem |
|
27 | if not isinstance(elem, (RegionRefType, RegionRefIndexedType)): |
|
28 | refdict = {**refdict, **get_groupdict(elem)} |
|
29 | return refdict |
|
30 | ro = self.get_ReadingOrder() |
|
31 | if ro is None: |
|
32 | return {} |
|
33 | return get_groupdict(ro.get_OrderedGroup() or ro.get_UnorderedGroup()) |
|
34 |
@@ 3919-3951 (lines=33) @@ | ||
3916 | ret += lines if lo in ['top-to-bottom', 'left-to-right'] else list(reversed(lines)) |
|
3917 | return ret |
|
3918 | ||
3919 | def get_ReadingOrderGroups(self) -> dict: |
|
3920 | """ |
|
3921 | Aggregate recursive ReadingOrder into a dictionary, mapping each regionRef |
|
3922 | (i.e. segment `@id`) to its referring group object (i.e one of |
|
3923 | ||
3924 | \b |
|
3925 | - :py:class:`.RegionRefType` |
|
3926 | - :py:class:`.RegionRefIndexedType` |
|
3927 | - :py:class:`.OrderedGroupType` |
|
3928 | - :py:class:`.OrderedGroupIndexedType` |
|
3929 | - :py:class:`.UnoderedGroupType` |
|
3930 | - :py:class:`.UnoderedGroupIndexedType` |
|
3931 | """ |
|
3932 | def get_groupdict(group): |
|
3933 | regionrefs = list() |
|
3934 | if isinstance(group, (OrderedGroupType, OrderedGroupIndexedType)): |
|
3935 | regionrefs = (group.get_RegionRefIndexed() + |
|
3936 | group.get_OrderedGroupIndexed() + |
|
3937 | group.get_UnorderedGroupIndexed()) |
|
3938 | if isinstance(group, (UnorderedGroupType, UnorderedGroupIndexedType)): |
|
3939 | regionrefs = (group.get_RegionRef() + |
|
3940 | group.get_OrderedGroup() + |
|
3941 | group.get_UnorderedGroup()) |
|
3942 | refdict = {} |
|
3943 | for elem in regionrefs: |
|
3944 | refdict[elem.get_regionRef()] = elem |
|
3945 | if not isinstance(elem, (RegionRefType, RegionRefIndexedType)): |
|
3946 | refdict = {**refdict, **get_groupdict(elem)} |
|
3947 | return refdict |
|
3948 | ro = self.get_ReadingOrder() |
|
3949 | if ro is None: |
|
3950 | return {} |
|
3951 | return get_groupdict(ro.get_OrderedGroup() or ro.get_UnorderedGroup()) |
|
3952 | def set_orientation(self, orientation): |
|
3953 | """ |
|
3954 | Set deskewing angle to given `orientation` number. |