-
Notifications
You must be signed in to change notification settings - Fork 6
TileShop Codecs
TileShop supports three different strategies for users to implement graphic codecs: flow codecs, pattern codecs, and plugin codecs. Some additional XML codecs not shipped with TileShop are available here.
Flow codecs are how the bulk of TileShop graphic formats are implemented. They are primarily designed to decode/encode resizable elements though fixed-size elements are supported. There are limitations on support for non-contiguous pixel data outside of planar and row interlacing.
Pattern codecs are based on Feidian. The elements are always fixed-size. Pattern codecs are most suitable to solve encodings where contiguous pixel data is spread across multiple scanlines or is otherwise not well-ordered.
Plugin Codecs are implemented using any .NET language (C# / VB.NET / F#). They are the most general and flexible codec that TileShop has. Both Flow and Pattern codecs are internally implemented using the same system. The Plugin Samples project shows an implementation. Each plugin must be deployed to a separate folder within the _plugins
directory. There are expected to be changes to the Plugin Codec interface to help facilitate more flexibility, including the possibility of codecs that support compression.
Codec Capability | Flow | Pattern | Plugin |
---|---|---|---|
Element resizing | ✔ | ❌ | ✔ |
Interlace rows | ✔ | ✔ | ✔ |
Reorder rows | ❌ | ✔ | ✔ |
Reorder pixels within same row | ✔ | ✔ | ✔ |
Reorder pixels across different rows | ❌ | ✔ | ✔ |
Reorder columns | ❌ | ✔ | ✔ |
Reorder pixels within same column | ❌ | ✔ | ✔ |
Reorder pixels across different columns | ❌ | ✔ | ✔ |
Indexed graphics | ✔ | ✔ | ✔ |
Reorder indexed pixel color plane priority | ✔ | ✔ | ✔ |
Direct graphics | ❌ | ❌ | ✔ |
Non-contiguous elements | ❌ | ❌ | ✔ |
View compressed graphics | ❌ | ❌ | ❌ |
Edit compressed graphics | ❌ | ❌ | ❌ |
Construction | XML | XML | C# |