BuildBiffPalettePlan 方法
建置一份具確定性的唯讀計畫,將直接 RGB 色彩與已解析的佈景主題色彩安排到 56 個實體 BIFF 調色盤槽位中
此方法同時適用於 IXLSWorkbook 與 TXLSXWorkbook,且絕不會變更調色盤項目、樣式、儲存格、自訂色彩計數或儲存行為
語法
function BuildBiffPalettePlan: TXLSBiffPalettePlan;
槽位計畫
Slots 一律包含 56 個項目,依 1 到 56 的公開索引順序以及 8 到 63 的實體槽位順序排列
| 欄位 | 意義 |
|---|---|
SourceARGB | 調色盤槽位中目前儲存的正規化色彩 |
TargetARGB | 為該槽位建議的色彩,尚未套用 |
DefinitionCount 與 ReferenceCount | 繼承自 ScanIndexedColorUsage 的索引取用者 |
Kinds | 保護該槽位的索引取用者類別 |
Locked | 當來源槽位必須維持不變時為 True |
Changed | 當建議的目標色彩與來源色彩不同時為 True |
目標對應
Targets 會彙總相同的色彩,並記錄定義計數、已呈現的參考計數、取用者類別、有效頻率權重、選定的公開與實體索引、對應後的 ARGB、OKLab 誤差平方以及精確比對狀態
已呈現的參考存在時,便由它們決定有效權重;否則已儲存的定義會讓未被參考的色彩仍保留在計畫中
來自字型、填滿、漸層、框線、差異樣式、資料橫條與色階的直接色彩與已解析的佈景主題色彩都會參與規劃,而索引色彩、自動色彩、無效色彩與半透明色彩則不會成為目標
規劃行為
既有的精確調色盤色彩會保留在其最低的相符槽位上,而且在考慮任何空閒槽位之前,索引取用者會先鎖定其來源槽位
當所有唯一目標都容納得下時,空閒槽位會依確定性的 ARGB 順序接收精確色彩
當色彩數量超過空閒槽位數量時,固定迭代次數的頻率加權 OKLab 分群程序會挑選其餘的目標色彩,而鎖定與保留的精確槽位則維持固定
最終等距的對應採用最低的公開調色盤索引
計畫識別與統計資訊
SourcePaletteGeneration 與 SourcePaletteHash 識別建置計畫所依據的調色盤快照
LockedSlotCount、ChangedSlotCount、TotalTargetWeight、ExactTargetWeight、WeightedError、MaxDistanceSquared 與 Quantized 彙總結果,供檢查與原則決策使用
範例
Plan := Workbook.BuildBiffPalettePlan;
if Plan.Quantized then
LogPaletteError(Plan.WeightedError);
for I := 0 to High(Plan.Slots) do
if Plan.Slots[I].Changed then
PreviewPaletteChange(Plan.Slots[I]);