Service object that knows how to extract directory entries from an Image File Directory (IFD)
| 146 | |
| 147 | |
| 148 | class _IfdParser: |
| 149 | """Service object that knows how to extract directory entries from an Image File |
| 150 | Directory (IFD)""" |
| 151 | |
| 152 | def __init__(self, stream_rdr, offset): |
| 153 | super(_IfdParser, self).__init__() |
| 154 | self._stream_rdr = stream_rdr |
| 155 | self._offset = offset |
| 156 | |
| 157 | def iter_entries(self): |
| 158 | """Generate an |_IfdEntry| instance corresponding to each entry in the |
| 159 | directory.""" |
| 160 | for idx in range(self._entry_count): |
| 161 | dir_entry_offset = self._offset + 2 + (idx * 12) |
| 162 | ifd_entry = _IfdEntryFactory(self._stream_rdr, dir_entry_offset) |
| 163 | yield ifd_entry |
| 164 | |
| 165 | @property |
| 166 | def _entry_count(self): |
| 167 | """The count of directory entries, read from the top of the IFD header.""" |
| 168 | return self._stream_rdr.read_short(self._offset) |
| 169 | |
| 170 | |
| 171 | def _IfdEntryFactory(stream_rdr, offset): |
no outgoing calls
searching dependent graphs…