الأسلوب BuildBiffPalettePlan
يبني خطة حتمية للقراءة فقط لتمثيل ألوان RGB المباشرة وألوان المظهر المحسوبة في خانات لوحة BIFF الفعلية الـ 56
يتوفر هذا الأسلوب في IXLSWorkbook وTXLSXWorkbook معًا، ولا يغيّر مدخلات لوحة الألوان أو الأنماط أو الخلايا أو أعداد الألوان المخصصة أو سلوك الحفظ أبدًا
البنية
function BuildBiffPalettePlan: TXLSBiffPalettePlan;
خطة الخانات
يحوي Slots دائمًا 56 مدخلًا بترتيب الفهرس العام من 1 إلى 56 وبترتيب الخانات الفعلية من 8 إلى 63
| الحقل | المعنى |
|---|---|
SourceARGB | اللون المطبَّع المخزَّن حاليًا في خانة اللوحة |
TargetARGB | اللون المقترح للخانة دون تطبيقه |
DefinitionCount وReferenceCount | المستهلِكون المفهرسون الموروثون من ScanIndexedColorUsage |
Kinds | فئات المستهلكين المفهرسين التي تحمي الخانة |
Locked | صحيح عندما يجب أن تبقى خانة المصدر دون تغيير |
Changed | صحيح عندما يختلف هدف المقترح عن لون المصدر |
تعيينات الهدف
يجمع 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]);