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
| Pole | Význam |
|---|---|
InputARGB | Normalizovaná neprůhledná vstupní barva |
ColorIndex | Veřejný index palety od 1 do 56 |
PaletteSlot | Fyzický slot palety BIFF nebo OOXML od 8 do 63 |
ARGB | Normalizovaná neprůhledná barva uložená ve vybraném slotu palety |
DistanceSquared | Kvadratická euklidovská vzdálenost v barevném prostoru OKLab |
ExactMatch | True, 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;