NearestIndexedColor metoda
Pronalazi najbliži zapis među fizičkim slotovima palete 8..63 i vraća i njegovu javnu vrijednost ColorIndex i fizički slot
Metoda je dostupna i na IXLSWorkbook i na TXLSXWorkbook i ne mijenja paletu niti stanje radne knjige
Sintaksa
function NearestIndexedColor( AArgb: LongWord; out AMatch: TXLSNearestIndexedColorMatch): Boolean;
Ulaz
AArgb prihvaća 24-bitnu vrijednost $00RRGGBB ili neprozirnu vrijednost $FFRRGGBB
Nul bajt alfe normalizira se u $FF; djelomično prozirne vrijednosti odbacuju se jer su indeksirani zapisi palete radne knjige neprozirni
Rezultat
| Polje | Značenje |
|---|---|
InputARGB | Normalizirana neprozirna ulazna boja |
ColorIndex | Javni indeks palete od 1 do 56 |
PaletteSlot | Fizički slot BIFF ili OOXML palete od 8 do 63 |
ARGB | Normalizirana neprozirna boja pohranjena u odabranom slotu palete |
DistanceSquared | Kvadrat euklidske udaljenosti u prostoru boja OKLab |
ExactMatch | True kada odabrani zapis ima iste RGB kanale kao normalizirani ulaz |
Funkcija vraća false za djelomično proziran ulaz ili kada predmemorija palete nije dostupna; u slučaju neuspjeha ColorIndex inicijalizira se na nulu, a PaletteSlot na -1
Ugovor o podudaranju
Svaka radna knjiga predmemorira normalizirane ARGB i OKLab koordinate svojih 56 fizičkih zapisa palete
Ponovno postavljanje palete ponovno izgrađuje cijelu predmemoriju, a učinkovita promjena jednog slota ažurira samo taj predmemorirani slot
Svaki upit pretvara ulaz jednom i izvodi jedno fiksno skeniranje od 56 zapisa bez povijesti upita ili neograničenog rasta predmemorije
Jednake udaljenosti biraju najniži javni indeks, uključujući dvostruke boje palete, pa rezultati ostaju deterministički u svim mehanizmima i izvođenjima
Automatski, sustavni i nevažeći tokeni boja nisu kandidati; za razvrstavanje tih vrijednosti upotrijebite ResolveIndexedColor
Primjer
if Workbook.NearestIndexedColor($FF13579B, Match) then
begin
PaletteIndex := Match.ColorIndex;
if Match.ExactMatch then
UseExactPaletteColor(Match.ARGB);
end;