Selaa lähdekoodia

fix nil vector fill

circular 6 vuotta sitten
vanhempi
commit
ef7d755c4b
2 muutettua tiedostoa jossa 15 lisäystä ja 4 poistoa
  1. 12 1
      lazpaintcontrols/lcvectorialfill.pas
  2. 3 3
      lazpaintcontrols/lcvectororiginal.pas

+ 12 - 1
lazpaintcontrols/lcvectorialfill.pas

@@ -109,6 +109,7 @@ type
     function Duplicate: TVectorialFill; virtual;
     destructor Destroy; override;
     function Equals(Obj: TObject): boolean; override;
+    class function Equal(AFill1, AFill2: TVectorialFill): boolean;
     procedure Assign(Obj: TObject);
     property FillType: TVectorialFillType read GetFillType;
     property IsEditable: boolean read GetIsEditable;
@@ -171,7 +172,7 @@ end;
 
 function TVectorialFillDiff.IsIdentity: boolean;
 begin
-  result := FStart.Equals(FEnd);
+  result := TVectorialFill.Equal(FStart,FEnd);
 end;
 
 function TVectorialFillDiff.CanAppend(ADiff: TCustomVectorialFillDiff
@@ -615,6 +616,16 @@ begin
     result:= false;
 end;
 
+class function TVectorialFill.Equal(AFill1, AFill2: TVectorialFill): boolean;
+begin
+  if AFill1 = nil then
+  begin
+    if AFill2 = nil then result := true
+    else result := (AFill2.FillType = vftNone);
+  end else
+    result := AFill1.Equals(AFill2);
+end;
+
 procedure TVectorialFill.Assign(Obj: TObject);
 var
   other: TVectorialFill;

+ 3 - 3
lazpaintcontrols/lcvectororiginal.pas

@@ -601,9 +601,9 @@ end;
 
 function TVectorShapeCommonFillDiff.IsIdentity: boolean;
 begin
-  result := FStartPenFill.Equals(FEndPenFill) and
-    FStartBackFill.Equals(FEndBackFill) and
-    FStartOutlineFill.Equals(FEndOutlineFill);
+  result := TVectorialFill.Equal(FStartPenFill, FEndPenFill) and
+    TVectorialFill.Equal(FStartBackFill, FEndBackFill) and
+    TVectorialFill.Equal(FStartOutlineFill, FEndOutlineFill);
 end;
 
 { TVectorOriginalShapeRangeDiff }