Пример #1
0
def get_dead_zones(version):
    size = size_by_version(version)
    constant_zones = [
        (0, 0, 8, 8),  # top left position + format-info
        (size - 8, 0, size - 1, 8),  # top right position + format-info
        (0, size - 8, 7, size - 1),  # bottom left position
        (8, size - 7, 8, size - 1),  # bottom left format info
        (8, 6, size - 9, 6),  # top timing array
        (6, 8, 6, size - 9)  # left timing array
    ]

    if version >= 7:
        constant_zones.append((size - 11, 0, size - 9, 5))  # top version info
        constant_zones.append(
            (0, size - 11, 5, size - 9))  # bottom (left) version info

    alignments_zones = []
    alignment_centers = list(permutations(ALIGNMENT_POSITIONS[version - 1], 2))
    alignment_centers.extend((x, x) for x in ALIGNMENT_POSITIONS[version - 1])

    for center_x, center_y in alignment_centers:
        alignment_zone = (center_x - 2, center_y - 2, center_x + 2,
                          center_y + 2)
        if all(not is_rect_overlapping(alignment_zone, dead_zone)
               for dead_zone in constant_zones):
            alignments_zones.append(alignment_zone)
    return constant_zones + alignments_zones
Пример #2
0
 def test_non_overlapping_zones(self):
     # [-----] [-----]
     # [     ] [     ]
     # [_____] [_____]
     self.assertFalse(is_rect_overlapping((1, 1, 4, 4), (5, 1, 8, 4)))
     # [--]
     # [__]
     #      [--]
     #      [__]
     self.assertFalse(is_rect_overlapping((1, 1, 4, 4), (5, 5, 8, 8)))
     # [-------]
     # [_______]
     #
     # [-------]
     # [_______]
     self.assertFalse(is_rect_overlapping((1, 1, 4, 4), (1, 5, 4, 8)))
Пример #3
0
 def test_non_overlapping_zones(self):
     # [-----] [-----]
     # [     ] [     ]
     # [_____] [_____]
     self.assertFalse(is_rect_overlapping((1, 1, 4, 4), (5, 1, 8, 4)))
     # [--]
     # [__]
     #      [--]
     #      [__]
     self.assertFalse(is_rect_overlapping((1, 1, 4, 4), (5, 5, 8, 8)))
     # [-------]
     # [_______]
     #
     # [-------]
     # [_______]
     self.assertFalse(is_rect_overlapping((1, 1, 4, 4), (1, 5, 4, 8)))
Пример #4
0
 def test_overlapping_zones(self):
     # [-----[-]----]
     # [     [ ]    ]
     # [_____[_]____]
     self.assertTrue(is_rect_overlapping((1, 1, 4, 4), (3, 1, 6, 4)))
     # [-------]
     # [     [-]----]
     # [_____[_]    ]
     #       [______]
     self.assertTrue(is_rect_overlapping((1, 1, 4, 4), (3, 3, 6, 6)))
     # [-------]
     # [-------]
     # [_______]
     # [_______]
     self.assertTrue(is_rect_overlapping((1, 1, 4, 4), (1, 3, 4, 6)))
     # a contains b
     self.assertTrue(is_rect_overlapping((1, 1, 4, 4), (2, 2, 4, 4)))
     self.assertTrue(is_rect_overlapping((1, 1, 4, 4), (2, 2, 3, 3)))
     # b contains a
     self.assertTrue(is_rect_overlapping((2, 2, 4, 4), (1, 1, 4, 4)))
     self.assertTrue(is_rect_overlapping((2, 2, 3, 3), (1, 1, 4, 4)))
     # point rect
     self.assertTrue(is_rect_overlapping((2, 2, 4, 4), (4, 4, 4, 4)))
Пример #5
0
 def test_overlapping_zones(self):
     # [-----[-]----]
     # [     [ ]    ]
     # [_____[_]____]
     self.assertTrue(is_rect_overlapping((1, 1, 4, 4), (3, 1, 6, 4)))
     # [-------]
     # [     [-]----]
     # [_____[_]    ]
     #       [______]
     self.assertTrue(is_rect_overlapping((1, 1, 4, 4), (3, 3, 6, 6)))
     # [-------]
     # [-------]
     # [_______]
     # [_______]
     self.assertTrue(is_rect_overlapping((1, 1, 4, 4), (1, 3, 4, 6)))
     # a contains b
     self.assertTrue(is_rect_overlapping((1, 1, 4, 4), (2, 2, 4, 4)))
     self.assertTrue(is_rect_overlapping((1, 1, 4, 4), (2, 2, 3, 3)))
     # b contains a
     self.assertTrue(is_rect_overlapping((2, 2, 4, 4), (1, 1, 4, 4)))
     self.assertTrue(is_rect_overlapping((2, 2, 3, 3), (1, 1, 4, 4)))
     # point rect
     self.assertTrue(is_rect_overlapping((2, 2, 4, 4), (4, 4, 4, 4)))
Пример #6
0
def get_dead_zones(version):
    size = size_by_version(version)
    constant_zones = [
        (0, 0, 8, 8),  # top left position + format-info
        (size - 8, 0, size - 1, 8),  # top right position + format-info
        (0, size - 8, 7, size - 1),  # bottom left position
        (8, size - 7, 8, size - 1),  # bottom left format info
        (8, 6, size - 9, 6),  # top timing array
        (6, 8, 6, size - 9)  # left timing array
    ]

    if version >= 7:
        constant_zones.append((size - 11, 0, size - 9, 5))  # top version info
        constant_zones.append((0, size - 11, 5, size - 9))  # bottom (left) version info

    alignments_zones = []
    alignment_centers = list(permutations(ALIGNMENT_POSITIONS[version - 1], 2))
    alignment_centers.extend((x, x) for x in ALIGNMENT_POSITIONS[version - 1])

    for center_x, center_y in alignment_centers:
        alignment_zone = (center_x - 2, center_y - 2, center_x + 2, center_y + 2)
        if all(not is_rect_overlapping(alignment_zone, dead_zone) for dead_zone in constant_zones):
            alignments_zones.append(alignment_zone)
    return constant_zones + alignments_zones