app: add virtual transform/type-conversion functions to GimpLayer
The GimpLayer implementation of the GimpItem transform functions, and the GimpDrawable convert_type() function, apply their operation to both the layer and its mask. The subclasses of GimpLayer -- GimpGroupLayer and GimpTextLayer -- override some of these functions, providing their own logic for the layer part, and duplicating the mask part. Avoid this duplication by adding a set of virtual transform and type-conversion functions to GimpLayer. Have the GimpLayer implementaion of the corresponding GimpItem and GimpDrawable functions use these functions to apply the operation to the layer, while taking care of the mask themselves. Have GimpLayer's subclasses override the new virtual functions, instead of the GimpItem and GimpDrawable ones. Note that the existing implementation of convert_type() in GimpTextLayer neglected to convert the mask, hence text layer masks retained their old format after conversion. This issue is fixed as a side effect of this commit.
Showing with 442 additions and 313 deletions