Dustin Oprea
04631a36c3
ifd_builder: Wrote encoding and allocation logic.
...
- All of the major design considerations have been covered (unless we
overlooked something).
- Completely untested.
2018-04-24 05:12:30 -04:00
Dustin Oprea
d035d20098
ifd_builder: value is now guaranteed to be a byte-slice or child-IFD.
...
- Using an interface{} required us to validate the encapsulated type or
risk forgetting to.
- AddTagsFromExisting now just copies the bytes verbatim if no value-
resolver provided.
2018-04-23 23:58:37 -04:00
Dustin Oprea
098862d2f9
ifd_builder: Added NewIfdBuilderWithExistingIfd test.
2018-04-23 22:07:13 -04:00
Dustin Oprea
1107496d3c
ifd_builder: AddChildIb now validates not previously added.
2018-04-23 21:59:42 -04:00
Dustin Oprea
4bea09dc78
ifd_builder: Can now build a complete chain from existing EXIF.
...
- ifd_builder:
- We now validate that `builderTag` instances are either a byte array
or a child Ifd before allowing to add.
- Renamed `builderTag.valueBytes` to `builderTag.value` (it's not
necessarily bytes).
- `builderTag` now gets the child IFD name if representing a child
IFD.
- Added ability to dump structure to string slice.
- Added NewIfdBuilderFromExistingChain to reconstruct whole chain
from a read IFD chain (collection).
- Wrote IB dumper.
- Added structural tests.
- Moved ifd_tag_entry types to separate file.
- tags_unknown: Unknown-type tags can now satisfy the `UnknownTagValue`
interface to return `[]byte`.
- `IfdTagEntry.ValueBytes` automatically uses this. Else, error if not
`[]byte` or `string`.
- ifd_enumerate
- Now embed `ByteOrder` in `Ifd` (we otherwise require it to be passed
a bit too often).
- Renamed some occurences of "IFD" to "IB" where an actual IB in order
to not be confusing.
2018-04-23 04:53:51 -04:00
Dustin Oprea
50eafa98d6
ifd_enumerate: Added tests.
...
- Refactored (IfdTagEntry).ValueBytes() to handle managed undefined
values.
2018-04-22 02:35:33 -04:00
Dustin Oprea
f1f23dca82
General intuitivity refactor. Imp'd (IfdTagEntry).ValueBytes().
...
- Added some assertions and constants. Renamed from variable so it'd be easy to
tell if the byte-arrays, even though they come directly from the EXIF, which
specific offsets they start at (so no remove for confusion during enumeration
and building).
2018-04-21 20:54:56 -04:00
Dustin Oprea
ff7cfacd60
type_decode: Attempted and commented decoding MakerNote as EXIF.
2018-04-21 11:32:27 -04:00
Dustin Oprea
67a5e1f548
tags: Now read types.
...
- Required as the source-of-truth for writing.
2018-04-21 11:17:34 -04:00
Dustin Oprea
a909226514
type_decode: Implemented immediate remaining 'unknown'-type tags.
...
- Except for MakerNote. We're just going to have to skip that when
writing, for now.
2018-04-21 03:40:33 -04:00
Dustin Oprea
00a5a5ad5b
ifd_builder: Fixed so will compile.
2018-04-21 00:24:54 -04:00
Dustin Oprea
83c4834547
ifd_builder: Renamings.
2018-04-20 11:54:42 -04:00
Dustin Oprea
d4740ae5b5
Added TODOs.
2018-04-20 11:52:06 -04:00
Dustin Oprea
88333d9088
ifd_builder: Added main flow and allocation.
...
- We still need to implement the size calculations and tag encoding.
2018-04-20 11:45:32 -04:00
Dustin Oprea
f9267550eb
ifd_builder: Added renaming tests.
2018-04-20 04:16:48 -04:00
Dustin Oprea
b5299427bc
ifd_builder: Added tests for creating and adding.
2018-04-19 04:04:19 -04:00
Dustin Oprea
f99faad160
builder: Added full IFD-building functionality.
...
- There are still some placeholders for things that we need to figure
out.
- Still needs tests.
2018-04-19 02:43:17 -04:00
Dustin Oprea
52dafd070a
collect: Added a massive test for collected structure.
2018-04-19 01:02:03 -04:00
Dustin Oprea
679ea19d6c
ifd_enumerate. The IFD tree and content can now be collected.
...
- Collected into a static structure in addition to scanned (which is
- only a visitor pattern).
- Test still has be finished.
2018-04-18 07:58:05 -04:00
Dustin Oprea
acbda6d1e1
ifd_enumerate: Refactored for reusability from a collector loop.
2018-04-18 06:28:12 -04:00
Dustin Oprea
33e3f2e4eb
ifd: Renamed Ifd to IfdEnumerate.
2018-04-17 07:51:34 -04:00
Dustin Oprea
917e288adf
Refactored byte-ordering to use standard binary.ByteOrder .
...
- ..rather than unnecessary custom implementation.
2018-04-17 06:18:31 -04:00
Dustin Oprea
53f74d18a1
type: Added encoding and complete encode/parse tests.
2018-04-17 06:06:51 -04:00
Dustin Oprea
5864c10c03
Added TODO items with writing objectives.
2018-04-16 03:40:30 -04:00
Dustin Oprea
f1521d4bac
documentation: Added documentation and reader-tool for testing.
2018-04-16 01:57:30 -04:00
Dustin Oprea
42e678f6c2
type: Implemented workflow for undefined-type tags.
...
- Implemented for the straightforward tags. Noted what had to be done
for the rest.
2018-04-16 00:30:39 -04:00
Dustin Oprea
172013e0f0
ifd: Implemented recursion. Refactored IFD seeking.
...
- tags.yaml: Uncommented previously-unhandleable tags.
2018-04-15 23:13:25 -04:00
Dustin Oprea
34fb63841d
tags: Now use iterative YAML parser.
2018-04-15 20:16:32 -04:00
Dustin Oprea
a7bf17d299
assets: Updated tags.
...
- Wrote tool to produce complete knowledge of tags.
2018-04-15 13:40:24 -04:00
Dustin Oprea
1511788a4e
ifd: Implemented several layers of value processing. Done.
...
- It's going to be laborious to write unit-tests for, though.
2018-04-15 01:25:30 -04:00
Dustin Oprea
315ca60f03
ifd: Formalized visitor implementation.
2018-04-14 20:32:02 -04:00
Dustin Oprea
05fe72f929
Added tag lookup. Only a minimal number of tags are currently known.
2018-04-14 20:04:35 -04:00
Dustin Oprea
685d801489
Initial commit.
...
- Parsing works.
- Not yet resolving values.
- Not yet resolving the actual IDs.
- Not yet able to make changes.
2018-04-14 14:38:35 -04:00