浏览代码

merge gradient as vectorial

circular17 6 年之前
父节点
当前提交
a62d0b3cf3
共有 1 个文件被更改,包括 12 次插入1 次删除
  1. 12 1
      lazpaint/image/uimagediff.pas

+ 12 - 1
lazpaint/image/uimagediff.pas

@@ -2141,7 +2141,9 @@ begin
     layerOverCompressedBackup := TStoredLayer.Create(imgDest.LayeredBitmap, ALayerOverIndex, true);
     layerOverCompressedBackup := TStoredLayer.Create(imgDest.LayeredBitmap, ALayerOverIndex, true);
     layerUnderCompressedBackup := TStoredLayer.Create(imgDest.LayeredBitmap, ALayerOverIndex-1, true);
     layerUnderCompressedBackup := TStoredLayer.Create(imgDest.LayeredBitmap, ALayerOverIndex-1, true);
     if ((LayerOriginalClass[ALayerOverIndex] = TVectorOriginal) or
     if ((LayerOriginalClass[ALayerOverIndex] = TVectorOriginal) or
-       (LayerOriginalClass[ALayerOverIndex-1] = TVectorOriginal)) and
+       (LayerOriginalClass[ALayerOverIndex-1] = TVectorOriginal) or
+       (LayerOriginalClass[ALayerOverIndex] = TBGRALayerGradientOriginal) or
+       (LayerOriginalClass[ALayerOverIndex-1] = TBGRALayerGradientOriginal)) and
        (BlendOperation[ALayerOverIndex] = boTransparent) and
        (BlendOperation[ALayerOverIndex] = boTransparent) and
        (BlendOperation[ALayerOverIndex-1] = boTransparent) then
        (BlendOperation[ALayerOverIndex-1] = boTransparent) then
     begin
     begin
@@ -2199,6 +2201,15 @@ var
         mergedOriginal.AddShape(s);
         mergedOriginal.AddShape(s);
       end;
       end;
     end else
     end else
+    if c = TBGRALayerGradientOriginal then
+    begin
+      s := TRectShape.Create(mergedOriginal);
+      s.PenStyle := ClearPenStyle;
+      s.BackFill.SetGradient(ALayeredBitmap.LayerOriginal[ALayerIndex] as TBGRALayerGradientOriginal, false);
+      s.BackFill.Transform(m);
+      s.QuickDefine(PointF(-0.5,-0.5), PointF(ALayeredBitmap.width-0.5,ALayeredBitmap.Height-0.5));
+      mergedOriginal.AddShape(s);
+    end else
     if c = TBGRALayerImageOriginal then
     if c = TBGRALayerImageOriginal then
     begin
     begin
       temp := (ALayeredBitmap.LayerOriginal[ALayerIndex] as TBGRALayerImageOriginal).GetImageCopy;
       temp := (ALayeredBitmap.LayerOriginal[ALayerIndex] as TBGRALayerImageOriginal).GetImageCopy;