Documentazione HotXLS

Metodo NearestIndexedColor

Trova la voce più vicina tra gli slot fisici 8..63 della tavolozza e restituisce sia il suo valore pubblico ColorIndex sia lo slot fisico

Il metodo è disponibile sia su IXLSWorkbook sia su TXLSXWorkbook e non modifica la tavolozza né lo stato del workbook

Sintassi

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

Input

AArgb accetta un valore a 24 bit $00RRGGBB o un valore opaco $FFRRGGBB

Un byte alfa pari a zero viene normalizzato a $FF; i valori parzialmente trasparenti vengono rifiutati perché le voci indicizzate della tavolozza del workbook sono opache

Risultato

CampoSignificato
InputARGBIl colore di input normalizzato opaco
ColorIndexL'indice pubblico della tavolozza da 1 a 56
PaletteSlotLo slot fisico della tavolozza BIFF o OOXML da 8 a 63
ARGBIl colore opaco normalizzato memorizzato nello slot selezionato della tavolozza
DistanceSquaredLa distanza euclidea quadratica nello spazio colore OKLab
ExactMatchTrue quando la voce selezionata ha gli stessi canali RGB dell'input normalizzato

La funzione restituisce false per un input parzialmente trasparente o quando la cache della tavolozza non è disponibile; in caso di fallimento ColorIndex viene inizializzato a zero e PaletteSlot a -1

Contratto di corrispondenza

Ogni workbook mette in cache le coordinate ARGB normalizzate e OKLab delle sue 56 voci fisiche della tavolozza

Un ripristino della tavolozza ricostruisce l'intera cache e una modifica effettiva di un singolo slot aggiorna solo quello slot in cache

Ogni interrogazione converte l'input una sola volta ed esegue una scansione fissa delle 56 voci, senza cronologia delle interrogazioni né crescita illimitata della cache

A pari distanza viene selezionato l'indice pubblico più basso, comprese le tavolozze con colori duplicati, così i risultati restano deterministici tra motori ed esecuzioni

I token di colore automatici, di sistema e non validi non sono candidati; usare ResolveIndexedColor per classificare quei valori

Esempio

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

Vedere anche