So, this is my first post -- hopefully I'm in the right section of the forums -- I use Paint.NET a lot -- it's awesome. I work with .pdn sources, and then output to .png -- and if I modify the source again, then I re-save as the source, and re-save the output .png (and hope I did everything right, and cross my fingers that I didn't forget, etc. -- it's really painful actually.)
However, I wonder why the two file formats are necessary, I ask myself: why not just have one format?
I, like other users who've used FireWorks in the past, know that there's some way to save layered .png files.
I've done some research here (before even stumbling on to the above thread) and have found that .png files definitely do not support layers natively.
However, .png files do support arbitrary data chunks in them (that decoders which are compliant with the .png standard will ignore) -- also mentioned in that link: apparently jpegs can store arbitrary data too, but the chunks are limited to 64K in size (you can split a large segment into multiple chunks though if you need to)...
It just makes me wonder, why not have an option [in addition to the current regular png/jpeg formats] for "fat" pngs (and/or "fat" jpegs) that contain both the regular flattened pixel data they would regularly hold (so that other spec abiding programs can read them without issue), but then in an arbitrary data chunk, store a gzip compressed version of the .pdn source? -- that way you could just have one single file that all programs could use, and you would have full fidelity of all of Paint.NETs features (the file format could save everything a regular .pdn file could).
Honestly, if that option existed, I would switch to using that as my primary format, no more using two separate file types!
It so happens, I'm a .NET developer (honestly, who else would be in this section of the forums?) and I'd be interested in prototyping the above functionality as a plug-in (if no one else is); BUT, before I get started -- IS this the type of thing a Paint.NET plug-in can do? -- Can it add support for loading/saving file types? -- Can the user change the default file format that paint.net prefers to use? -- Can I overwrite (or somehow deregister) the existing .png loading support?
(If I have to build a fakes assembly or decompile / recompile with ILSpy, it might not be worth it to me... -- and Paint.NET isn't open source anymore right? -- So, like, it's not like I could branch it, add the functionality and then submit a git pull request or something, right?) Where's the best place to get started learning about writing this kind of plug-in (assuming what I want to do is feasible)? -- If it's not feasible, where can I submit a feature request (for either this specific feature, or at least, for the plug-in model features that would make it feasible for me to write a plug-in that can do this)? Thanks!