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]);