/// <summary> /// See <see cref="BaseColorQuantizer.OnFinish"/> for more details. /// </summary> protected override void OnFinish() { base.OnFinish(); palette = new List <Color>(); #if (UseDictionary) colorMap = new ConcurrentDictionary <Int32, DistinctColorInfo>(); #else rootBucket = new DistinctBucket(); #endif }
public void StoreColor(Color color) { Int32 redIndex = color.R >> 5; DistinctBucket redBucket = Buckets[redIndex]; if (redBucket == null) { redBucket = new DistinctBucket(); Buckets[redIndex] = redBucket; } Int32 greenIndex = color.G >> 5; DistinctBucket greenBucket = redBucket.Buckets[greenIndex]; if (greenBucket == null) { greenBucket = new DistinctBucket(); redBucket.Buckets[greenIndex] = greenBucket; } Int32 blueIndex = color.B >> 5; DistinctBucket blueBucket = greenBucket.Buckets[blueIndex]; if (blueBucket == null) { blueBucket = new DistinctBucket(); greenBucket.Buckets[blueIndex] = blueBucket; } DistinctColorInfo colorInfo = blueBucket.ColorInfo; if (colorInfo == null) { colorInfo = new DistinctColorInfo(color); blueBucket.ColorInfo = colorInfo; } else { colorInfo.IncreaseCount(); } }