Skip to content

453477 453947 453948 454516 454525 G'MIC house cleaning

Amy spark requested to merge lsegovia/krita:work/amyspark/gmic into master

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.

BUG: 453477

BUG: 453947

BUG: 453948

BUG: 454516

BUG: 454525

Test Plan

Build Krita with current G'MIC. Run the filters in the bugs and check they produce matching results with regards to GIMP.

Formalities Checklist

  • 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.

Merge request reports