Dokumentacija HotXLS

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

PoljeZnačenje
InputARGBNormalizirana neprozirna ulazna boja
ColorIndexJavni indeks palete od 1 do 56
PaletteSlotFizički slot BIFF ili OOXML palete od 8 do 63
ARGBNormalizirana neprozirna boja pohranjena u odabranom slotu palete
DistanceSquaredKvadrat euklidske udaljenosti u prostoru boja OKLab
ExactMatchTrue 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;

Vidi također