Skip to content

TileShop Codecs

Stephen Monaco edited this page Sep 22, 2021 · 2 revisions

Overview

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

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

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

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.

Feature Matrix

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#