[x] I have written a descriptive pull-request title
[x] I have verified that there are no overlapping pull-requests open
[x] I have verified that I am following the existing coding patterns and practice as demonstrated in the repository. These follow strict Stylecop rules :cop:.
[x] I have provided test coverage for my change (where applicable)
Description
This is one of those monster PRs that everyone hates but since it touches all image formats was unavoidable.
This PR stems from the v4 roadmap discussion here.
It does three things.
Builds upon and replaces the work done in #2588 to allow conversion between animated image formats. This allows accurate conversion between all image formats.
Exposes rich metadata with PixelTypeInfo that describes the pixel format of the encoded image.
Normalizes the synchronization of profile (EXIF) metadata upon save.
Two bridging metadata types FormatConnectingMetadata and FormatFrameConnectingMetadata have been introduced along with interfaces IFormatMetadata, IFormatMetadata<TSelf>, IFormatFrameMetadata, IFormatFrameMetadata<TSelf> which enforce conversion APIs between all our format metadata types.
Naming conventions, type usage, and behavior has also been normalized across all our metadata types.
PixelColorType has been expanded to allow for exotic types not used in our own pixel formats and is now present alongside PixelComponentInfo and PixelAlphaRepresentation in the PixelTypeInfo instance returned with ImageInfo.
Prerequisites
Description
This is one of those monster PRs that everyone hates but since it touches all image formats was unavoidable.
This PR stems from the v4 roadmap discussion here.
It does three things.
Two bridging metadata types
FormatConnectingMetadata
andFormatFrameConnectingMetadata
have been introduced along with interfacesIFormatMetadata
,IFormatMetadata<TSelf>
,IFormatFrameMetadata
,IFormatFrameMetadata<TSelf>
which enforce conversion APIs between all our format metadata types.Naming conventions, type usage, and behavior has also been normalized across all our metadata types.
PixelColorType
has been expanded to allow for exotic types not used in our own pixel formats and is now present alongsidePixelComponentInfo
andPixelAlphaRepresentation
in thePixelTypeInfo
instance returned withImageInfo
.