For all people who doesnt know how to autocolor, i made a function easy to use:
SCAR Code:
Function MMGetColor(Color : TColor; Tol : Integer): Integer;
Var
TPA : TPointArray;
Tols,Cols : TIntegerArray;
I,II,Dist,R,G,B,R1,G1,B1,MinTol : Integer;
Begin
ColorToRGB(Color, R, G, B);
FindColorsSpiralTolerance(MMCX, MMCY, TPA, Color, MMX1, MMY1, MMX2, MMY2, Tol);
If Length(TPA) < 1 Then
Begin
Writeln('No Colors Found!');
Result := 0;
Exit;
End;
Cols := GetColors(TPA);
SetArrayLength(Tols, Length(Cols));
For I := 0 To High(Cols) Do
Begin
For II := 0 To Tol Do
Begin
If SimilarColors(Color, Cols[I], II) Then
Begin
Tols[I] := Tols[I] + II;
Break;
End;
End;
ColorToRGB(Cols[I], R1, G1, B1);
Dist := ((Max(r, r1) - Min(r, r1)) + (Max(g, g1) - Min(g, g1)) + (Max(b, b1) - Min(b, b1))) Div 3;
Tols[I] := Tols[I] + Dist;
End;
For I := 0 To High(Tols) Do
Begin
If (Tols[I] < MinTol) Then
Begin
MinTol := Tols[I];
Result := Cols[I];
End;
End;
If Result <> 0 Then Exit
Else
Begin
Result := 0;
Writeln('Failed while autocoloring!');
End;
End;
Color: Color to search.
Tol:The max tolerance to search the color.
It basically finds all the color that are similar to Color. Then it compare if the colors are similar with the TPA, then it gets the color and thats all
.