Implement API for Images
This API will go under namespace Yarhl.Media.Graphic and it should provide API to implement palette and image based formats. Including indexed image and RGB image. It would be able to export and import PNG files.
Proof-of-concept / Experimental implementation: https://github.com/SceneGate/Texim It has proved to be valid and we could implement several file formats, including the ones from NDS.
TODO:
- [x] Support sprites in the framework
- [x] Implement NCER
- [ ] Validate the framework with 3DS NDS textures
- [ ] Validate the framework with PS2 graphics (TIM?)
- [ ] Move the code of Texim between a new library Yarhl.Media.Graphics and Ekona repository
- [x] Validate the framework with the SceneGate UIs
- [ ] Implement tests
- [ ] Add documentation
Since System.Drawing is not part of .NET Standard and it uses a very old technology with limitations (GDI+) we should consider other alternatives. In the past I used EmguCV but it was really tricky to compile and use. ImageSharp looks like a great candidate.
As ImageSharp is gonna be AGPLv3 license we need to think about alternatives, this is the list @pleonex did the 2nd of August:
- https://github.com/matgr1/FreeImage-dotnet-core/ (not likely, port from C, not very active, poor docs).
- https://github.com/dlemstra/Magick.NET/
- https://github.com/mono/SkiaSharp/
More info: https://devblogs.microsoft.com/dotnet/net-core-image-processing/