| @@ 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. |
|