HotXLS 文档

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

另请参阅