Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
Delphi 10.4 Sydney
|
AW: RAL Farbe zu RBG zu TColor
2. Dez 2015, 16:51
Das macht dann ölf dreiundfüffzig:
Delphi-Quellcode:
unit RALtoRGB;
interface
uses
System.SysUtils,
System.Generics.Collections,
Vcl.Graphics,
Winapi.Windows;
type
TRALColor = 1000 .. 9050;
TColorConverter = class
strict private
class var
FTable: TDictionary<TRALColor, TColor>;
strict private
class constructor Create;
class destructor Destroy;
class procedure InitTable;
public
class function TryRALtoRGB( const RAL: TRALColor; out RGB: TColor): Boolean;
end;
const
RALColors: TArray<TRALColor> = [
1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1023, 1024, 1026, 1027, 1028, 1032, 1033, 1034,
2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011, 2012,
3000, 3001, 3002, 3003, 3004, 3005, 3007, 3009, 3011, 3012, 3013, 3014, 3015, 3016, 2017, 3018, 3020, 3022, 3024, 3026, 3027, 3031,
4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008, 4009, 4010,
5000, 5001, 5002, 5003, 5004, 5005, 5007, 5008, 5009, 5010, 5011, 5012, 5013, 5014, 5015, 5017, 5018, 5019, 5020, 5021, 5022, 5023, 5024,
6000, 6001, 6002, 6003, 6004, 6005, 6006, 6007, 6008, 6009, 6010, 6011, 6012, 6013, 6014, 6015, 6016, 6017, 6018, 6019, 6020, 6021, 6022, 6024, 6025, 6026, 6027, 6028, 6029, 6032, 6033, 6034,
7000, 7001, 7002, 7003, 7004, 7005, 7006, 7008, 7009, 7010, 7011, 7012, 7013, 7015, 7016, 7021, 7022, 7023, 7024, 7026, 7030, 7031, 7032, 7033, 7034, 7035, 7036, 7037, 7038, 7039, 7040, 7042, 7043, 7044, 7045, 7046, 7047,
8000, 8001, 8002, 8003, 8004, 8007, 8008, 8011, 8012, 8014, 8015, 8016, 8017, 8019, 8022, 8023, 8024, 8025, 8028, 9001, 9002, 9003, 9004, 9005, 9006, 9007, 9010, 9011, 9016, 9017, 9018
];
implementation
class constructor TColorConverter.Create;
begin
FTable := TDictionary<TRALColor, TColor>.Create;
InitTable;
end;
class destructor TColorConverter.Destroy;
begin
FTable.Free;
end;
class procedure TColorConverter.InitTable;
var
RGBColors: TArray<TColor>;
I: Integer;
begin
RGBColors := [
RGB(214, 199, 148),
RGB(217, 186, 140),
RGB(214, 176, 117),
RGB(252, 163, 041),
RGB(227, 150, 036),
RGB(201, 135, 033),
RGB(224, 130, 031),
RGB(227, 122, 031),
RGB(173, 122, 079),
RGB(227, 184, 056),
RGB(255, 245, 227),
RGB(240, 214, 171),
RGB(252, 235, 204),
RGB(255, 245, 066),
RGB(255, 171, 089),
RGB(255, 214, 077),
RGB(163, 140, 122),
RGB(156, 143, 097),
RGB(252, 189, 031),
RGB(252, 184, 033),
RGB(181, 140, 079),
RGB(255, 255, 010),
RGB(153, 117, 033),
RGB(255, 140, 026),
RGB(227, 163, 041),
RGB(255, 148, 054),
RGB(247, 153, 092),
RGB(224, 094, 031),
RGB(186, 046, 033),
RGB(204, 036, 028),
RGB(255, 099, 054),
RGB(242, 059, 028),
RGB(252, 028, 020),
RGB(255, 117, 033),
RGB(250, 079, 041),
RGB(235, 059, 028),
RGB(212, 069, 041),
RGB(237, 092, 041),
RGB(222, 082, 071),
RGB(171, 031, 028),
RGB(163, 023, 026),
RGB(163, 026, 026),
RGB(138, 018, 020),
RGB(105, 015, 020),
RGB(079, 018, 026),
RGB(046, 018, 026),
RGB(094, 033, 033),
RGB(120, 020, 023),
RGB(204, 130, 115),
RGB(150, 031, 028),
RGB(217, 102, 117),
RGB(232, 156, 181),
RGB(166, 036, 038),
RGB(209, 054, 084),
RGB(207, 041, 066),
RGB(199, 023, 018),
RGB(217, 089, 079),
RGB(252, 010, 028),
RGB(252, 020, 020),
RGB(181, 018, 051),
RGB(166, 028, 046),
RGB(130, 064, 128),
RGB(143, 038, 064),
RGB(201, 056, 140),
RGB(092, 008, 043),
RGB(099, 061, 156),
RGB(145, 015, 102),
RGB(056, 010, 046),
RGB(125, 031, 122),
RGB(158, 115, 148),
RGB(191, 023, 115),
RGB(023, 051, 107),
RGB(010, 051, 084),
RGB(000, 015, 117),
RGB(000, 023, 069),
RGB(003, 013, 031),
RGB(000, 046, 122),
RGB(038, 079, 135),
RGB(026, 041, 056),
RGB(023, 069, 112),
RGB(000, 043, 112),
RGB(003, 020, 046),
RGB(041, 115, 184),
RGB(000, 018, 069),
RGB(077, 105, 153),
RGB(023, 097, 171),
RGB(000, 059, 128),
RGB(056, 148, 130),
RGB(010, 066, 120),
RGB(005, 051, 051),
RGB(026, 122, 099),
RGB(000, 008, 079),
RGB(046, 082, 143),
RGB(087, 140, 181),
RGB(051, 120, 084),
RGB(038, 102, 041),
RGB(038, 087, 033),
RGB(061, 069, 046),
RGB(013, 059, 046),
RGB(010, 056, 031),
RGB(041, 043, 036),
RGB(028, 038, 023),
RGB(033, 033, 026),
RGB(023, 041, 028),
RGB(054, 105, 038),
RGB(094, 125, 079),
RGB(031, 046, 043),
RGB(117, 115, 079),
RGB(051, 048, 038),
RGB(041, 043, 038),
RGB(015, 112, 051),
RGB(064, 130, 054),
RGB(079, 168, 051),
RGB(191, 227, 186),
RGB(038, 056, 041),
RGB(133, 166, 122),
RGB(043, 038, 028),
RGB(036, 145, 064),
RGB(074, 110, 051),
RGB(010, 092, 051),
RGB(125, 204, 189),
RGB(038, 074, 051),
RGB(018, 120, 038),
RGB(041, 138, 064),
RGB(066, 140, 120),
RGB(125, 189, 181),
RGB(115, 133, 145),
RGB(135, 148, 166),
RGB(122, 117, 097),
RGB(112, 112, 097),
RGB(156, 156, 166),
RGB(097, 105, 105),
RGB(107, 097, 087),
RGB(105, 084, 056),
RGB(077, 082, 074),
RGB(074, 079, 074),
RGB(064, 074, 084),
RGB(074, 084, 089),
RGB(071, 066, 056),
RGB(061, 066, 082),
RGB(038, 046, 056),
RGB(026, 033, 041),
RGB(061, 061, 059),
RGB(122, 125, 117),
RGB(048, 056, 069),
RGB(038, 051, 056),
RGB(145, 143, 135),
RGB(077, 092, 107),
RGB(189, 186, 171),
RGB(122, 130, 117),
RGB(143, 135, 112),
RGB(212, 217, 219),
RGB(158, 150, 156),
RGB(122, 125, 128),
RGB(186, 189, 186),
RGB(097, 094, 089),
RGB(158, 163, 176),
RGB(143, 150, 153),
RGB(064, 069, 069),
RGB(194, 191, 184),
RGB(143, 148, 158),
RGB(120, 130, 140),
RGB(217, 214, 219),
RGB(125, 092, 056),
RGB(145, 082, 046),
RGB(110, 059, 048),
RGB(115, 059, 036),
RGB(133, 056, 043),
RGB(094, 051, 031),
RGB(099, 061, 036),
RGB(071, 038, 028),
RGB(084, 031, 031),
RGB(056, 038, 028),
RGB(077, 031, 028),
RGB(061, 031, 028),
RGB(046, 028, 028),
RGB(043, 038, 041),
RGB(013, 008, 013),
RGB(156, 069, 041),
RGB(110, 064, 048),
RGB(102, 074, 061),
RGB(064, 046, 033),
RGB(255, 252, 240),
RGB(240, 237, 230),
RGB(255, 255, 255),
RGB(028, 028, 033),
RGB(003, 005, 010),
RGB(166, 171, 181),
RGB(125, 122, 120),
RGB(250, 255, 255),
RGB(013, 018, 026),
RGB(252, 255, 255),
RGB(020, 023, 028),
RGB(219, 227, 222)
];
for I := low(RALColors) to high(RALColors) do
begin
FTable.Add(RALColors[I], RGBColors[I]);
end;
end;
class function TColorConverter.TryRALtoRGB( const RAL: TRALColor; out RGB: TColor): Boolean;
begin
Result := FTable.TryGetValue(RAL, RGB);
end;
end.
|