Return the mask function for the given mask pattern.
(pattern)
| 139 | |
| 140 | |
| 141 | def mask_func(pattern): |
| 142 | """ |
| 143 | Return the mask function for the given mask pattern. |
| 144 | """ |
| 145 | if pattern == 0: # 000 |
| 146 | return lambda i, j: (i + j) % 2 == 0 |
| 147 | if pattern == 1: # 001 |
| 148 | return lambda i, j: i % 2 == 0 |
| 149 | if pattern == 2: # 010 |
| 150 | return lambda i, j: j % 3 == 0 |
| 151 | if pattern == 3: # 011 |
| 152 | return lambda i, j: (i + j) % 3 == 0 |
| 153 | if pattern == 4: # 100 |
| 154 | return lambda i, j: (math.floor(i / 2) + math.floor(j / 3)) % 2 == 0 |
| 155 | if pattern == 5: # 101 |
| 156 | return lambda i, j: (i * j) % 2 + (i * j) % 3 == 0 |
| 157 | if pattern == 6: # 110 |
| 158 | return lambda i, j: ((i * j) % 2 + (i * j) % 3) % 2 == 0 |
| 159 | if pattern == 7: # 111 |
| 160 | return lambda i, j: ((i * j) % 3 + (i + j) % 2) % 2 == 0 |
| 161 | raise TypeError("Bad mask pattern: " + pattern) # pragma: no cover |
| 162 | |
| 163 | |
| 164 | def mode_sizes_for_version(version): |