|
@@ -27,11 +27,12 @@ interface
|
|
uses FPImage;
|
|
uses FPImage;
|
|
|
|
|
|
type
|
|
type
|
|
|
|
+ TIlluminant = string[10];
|
|
PXYZReferenceWhite = ^TXYZReferenceWhite;
|
|
PXYZReferenceWhite = ^TXYZReferenceWhite;
|
|
TXYZReferenceWhite = packed record
|
|
TXYZReferenceWhite = packed record
|
|
X, Y, Z: single;
|
|
X, Y, Z: single;
|
|
ObserverAngle: integer;
|
|
ObserverAngle: integer;
|
|
- Illuminant: string;
|
|
|
|
|
|
+ Illuminant: TIlluminant;
|
|
L,M,S: single;
|
|
L,M,S: single;
|
|
end;
|
|
end;
|
|
|
|
|
|
@@ -406,12 +407,12 @@ function FPHueGSBAToHSLA(ghue: word): word;
|
|
function FPHueHSLAToGSBA(hue: word): word;
|
|
function FPHueHSLAToGSBA(hue: word): word;
|
|
|
|
|
|
|
|
|
|
-procedure FPReferenceWhiteSet(AObserverAngle: integer; AIlluminant: string); overload;
|
|
|
|
|
|
+procedure FPReferenceWhiteSet(AObserverAngle: integer; AIlluminant: TIlluminant); overload;
|
|
procedure FPReferenceWhiteSet(AReferenceWhite: TXYZReferenceWhite); overload;
|
|
procedure FPReferenceWhiteSet(AReferenceWhite: TXYZReferenceWhite); overload;
|
|
-function FPReferenceWhiteGet(AObserverAngle: integer; AIlluminant: string): PXYZReferenceWhite;
|
|
|
|
|
|
+function FPReferenceWhiteGet(AObserverAngle: integer; AIlluminant: TIlluminant): PXYZReferenceWhite;
|
|
|
|
|
|
function FPReferenceWhiteAdd(const AReferenceWhite: TXYZReferenceWhite):PXYZReferenceWhite; overload;
|
|
function FPReferenceWhiteAdd(const AReferenceWhite: TXYZReferenceWhite):PXYZReferenceWhite; overload;
|
|
-function FPReferenceWhiteAdd(AObserverAngle: integer; AIlluminant: string; AX, AY, AZ: single):PXYZReferenceWhite; overload;
|
|
|
|
|
|
+function FPReferenceWhiteAdd(AObserverAngle: integer; AIlluminant: TIlluminant; AX, AY, AZ: single):PXYZReferenceWhite; overload;
|
|
|
|
|
|
procedure FPChromaticAdaptXYZ(var X,Y,Z: single; const AFrom, ATo: TXYZReferenceWhite); inline;
|
|
procedure FPChromaticAdaptXYZ(var X,Y,Z: single; const AFrom, ATo: TXYZReferenceWhite); inline;
|
|
procedure FPChromaticAdaptWordXYZ(var X,Y,Z: word; const AFrom, ATo: TXYZReferenceWhite); inline;
|
|
procedure FPChromaticAdaptWordXYZ(var X,Y,Z: word; const AFrom, ATo: TXYZReferenceWhite); inline;
|
|
@@ -2396,7 +2397,7 @@ begin
|
|
FPReferenceWhiteAdd(10, 'F11', 1.03866, 1.00, 0.65627);
|
|
FPReferenceWhiteAdd(10, 'F11', 1.03866, 1.00, 0.65627);
|
|
end;
|
|
end;
|
|
|
|
|
|
-procedure FPReferenceWhiteSet(AObserverAngle: integer; AIlluminant: string);
|
|
|
|
|
|
+procedure FPReferenceWhiteSet(AObserverAngle: integer; AIlluminant: TIlluminant);
|
|
var
|
|
var
|
|
i: integer;
|
|
i: integer;
|
|
begin
|
|
begin
|
|
@@ -2417,7 +2418,7 @@ begin
|
|
then FPReferenceWhite^ :=AReferenceWhite;
|
|
then FPReferenceWhite^ :=AReferenceWhite;
|
|
end;
|
|
end;
|
|
|
|
|
|
-function FPReferenceWhiteGet(AObserverAngle: integer; AIlluminant: string): PXYZReferenceWhite;
|
|
|
|
|
|
+function FPReferenceWhiteGet(AObserverAngle: integer; AIlluminant: TIlluminant): PXYZReferenceWhite;
|
|
begin
|
|
begin
|
|
result := FPReferenceWhiteGet(AObserverAngle, AIlluminant);
|
|
result := FPReferenceWhiteGet(AObserverAngle, AIlluminant);
|
|
if result = nil then raise FPImageException.Create('Reference white not found');
|
|
if result = nil then raise FPImageException.Create('Reference white not found');
|
|
@@ -2438,7 +2439,7 @@ begin
|
|
Result :=@FPReferenceWhiteArray[Length(FPReferenceWhiteArray) - 1];
|
|
Result :=@FPReferenceWhiteArray[Length(FPReferenceWhiteArray) - 1];
|
|
end;
|
|
end;
|
|
|
|
|
|
-function FPReferenceWhiteAdd(AObserverAngle: integer; AIlluminant: string; AX, AY, AZ: single):PXYZReferenceWhite;
|
|
|
|
|
|
+function FPReferenceWhiteAdd(AObserverAngle: integer; AIlluminant: TIlluminant; AX, AY, AZ: single):PXYZReferenceWhite;
|
|
var
|
|
var
|
|
rp: TXYZReferenceWhite;
|
|
rp: TXYZReferenceWhite;
|
|
begin
|
|
begin
|