(self, path)
| 593 | self._load(path) |
| 594 | |
| 595 | def _load(self, path): |
| 596 | with open(path, 'rb') as f: |
| 597 | data = f.read() |
| 598 | self._stream = _StructStream(data) |
| 599 | stream = self._stream |
| 600 | version = stream.read_uint32() |
| 601 | self._version = version |
| 602 | if version < 2 or version > 15: |
| 603 | raise RuntimeError('unsupported effect file version') |
| 604 | if version >= 15: |
| 605 | self._compilerVersion = stream.read_uint32() |
| 606 | self._sourceHash = stream.read_raw(32) |
| 607 | if version < 5: |
| 608 | header_size = stream.read_uint32() |
| 609 | if header_size == 0: |
| 610 | raise RuntimeError('effect file contains no compiled effects') |
| 611 | if header_size * 3 * 4 + 4 > stream.remaining(): |
| 612 | raise RuntimeError('invalid header size') |
| 613 | self._offsets = {} |
| 614 | for i in range(header_size): |
| 615 | key = stream.read_uint32() |
| 616 | self._offsets[key] = (stream.read_uint32(), stream.read_uint32()) |
| 617 | self._string_table = _StringTable(stream) |
| 618 | else: |
| 619 | self._string_table = _StringTable(stream) |
| 620 | permutation_count = stream.read_uint8() |
| 621 | self.permutations = [] |
| 622 | for i in range(permutation_count): |
| 623 | self.permutations.append(Permutation(stream, self._string_table, version)) |
| 624 | header_size = stream.read_uint32() |
| 625 | if header_size == 0: |
| 626 | raise RuntimeError('effect file contains no compiled effects') |
| 627 | if header_size * 3 * 4 + 4 > stream.remaining(): |
| 628 | raise RuntimeError('invalid header size') |
| 629 | self._offsets = {} |
| 630 | for i in range(header_size): |
| 631 | key = stream.read_uint32() |
| 632 | self._offsets[key] = (stream.read_uint32(), stream.read_uint32()) |
| 633 | |
| 634 | def get_shader(self, permutation=0): |
| 635 | """ |
no test coverage detected