Dokumentace HotXLS

Metoda NearestIndexedColor

Najde nejbližší položku mezi fyzickými sloty palety 8..63 a vrátí její veřejnou hodnotu ColorIndex i fyzický slot

Metoda je k dispozici na IXLSWorkbook i TXLSXWorkbook a nemění stav palety ani sešitu

Syntaxe

function NearestIndexedColor(
  AArgb: LongWord;
  out AMatch: TXLSNearestIndexedColorMatch): Boolean;

Vstup

AArgb přijímá 24bitovou hodnotu $00RRGGBB nebo neprůhlednou hodnotu $FFRRGGBB

Nulový bajt alfa se normalizuje na $FF; částečně průhledné hodnoty jsou odmítnuty, protože indexované položky palety sešitu jsou neprůhledné

Výsledek

PoleVýznam
InputARGBNormalizovaná neprůhledná vstupní barva
ColorIndexVeřejný index palety od 1 do 56
PaletteSlotFyzický slot palety BIFF nebo OOXML od 8 do 63
ARGBNormalizovaná neprůhledná barva uložená ve vybraném slotu palety
DistanceSquaredKvadratická euklidovská vzdálenost v barevném prostoru OKLab
ExactMatchTrue, když vybraná položka má stejné kanály RGB jako normalizovaný vstup

Funkce vrátí false pro částečně průhledný vstup nebo když mezipaměť palety není k dispozici; při selhání inicializuje ColorIndex na nulu a PaletteSlot na -1

Kontrakt párování

Každý sešit kešuje normalizované ARGB a souřadnice OKLab svých 56 fyzických položek palety

Reset palety přestaví kompletní mezipaměť a účinná změna jediného slotu aktualizuje pouze tento kešovaný slot

Každý dotaz převede vstup jednou a provede jediné pevné prohledání 56 položek bez historie dotazů nebo neomezeného růstu mezipaměti

Stejné vzdálenosti vybírají nejnižší veřejný index, včetně duplicitních barev palety, takže výsledky zůstávají deterministické napříč enginy a běhy

Automatické, systémové a neplatné tokeny barev nejsou kandidáty; k jejich klasifikaci použijte ResolveIndexedColor

Příklad

if Workbook.NearestIndexedColor($FF13579B, Match) then
begin
  PaletteIndex := Match.ColorIndex;
  if Match.ExactMatch then
    UseExactPaletteColor(Match.ARGB);
end;

Viz také