This MR cleans up house in plugins/extensions/qmic, removing more than half the LOC and integrating all the layer synchronization in a single command, thus matching GIMP's implementation while preserving the semantics of our undo stack.
The MR implements the following changes as well:
- Using a single copy of the G'MIC image across the communications API (no need for the stub anymore!)
- Properly detect usable layers and send them over to G'MIC
- Enable layer-relative positioning when the paint device is offset from the layer origin
- Properly blit G'MIC images to the current selection
Since it is related to one of the bugs, I also implemented removal of layers. This was very simple to do with one of the commands in KisLayerUtils-- I only had to add the export, and fix its build. Please check out the relevant commits.
These changes introduce a runtime dependency of kritaqmicinterface on kritaimage, and the plugin tests on kritaqmicinterface.
Build Krita with current G'MIC. Run the filters in the bugs and check they produce matching results with regards to GIMP.
I confirmed this builds.
I confirmed Krita ran and the relevant functions work.
I tested the relevant unit tests and can confirm they are not broken. (If not possible, don't hesitate to ask for help!)
I made sure my commits build individually and have good descriptions as per KDE guidelines.
I made sure my code conforms to the standards set in the HACKING file.
I can confirm the code is licensed and attributed appropriately, and that unattributed code is mine, as per KDE Licensing Policy.