/// <summary> /// See <see cref="BaseColorCache.OnGetColorPaletteIndex"/> for more details. /// </summary> protected override void OnGetColorPaletteIndex(Color color, out Int32 paletteIndex) { BucketInfo bucket = GetBucket(color); Int32 colorCount = bucket.Colors.Count(); paletteIndex = 0; if (colorCount == 1) { paletteIndex = bucket.Colors.First().Key; } else { Int32 index = 0; Int32 colorIndex = ColorModelHelper.GetEuclideanDistance(color, ColorModel, bucket.Colors.Values.ToList()); foreach (Int32 colorPaletteIndex in bucket.Colors.Keys) { if (index == colorIndex) { paletteIndex = colorPaletteIndex; break; } index++; } } }
/// <summary> /// See <see cref="BaseColorCache.OnGetColorPaletteIndex"/> for more details. /// </summary> protected override void OnGetColorPaletteIndex(TextureBitmap.Color color, out Int32 paletteIndex) { Dictionary <Int32, TextureBitmap.Color> candidates = root.GetPaletteIndex(color, 0); paletteIndex = 0; Int32 index = 0; Int32 colorIndex = ColorModelHelper.GetEuclideanDistance(color, ColorModel, candidates.Values.ToList()); foreach (Int32 colorPaletteIndex in candidates.Keys) { if (index == colorIndex) { paletteIndex = colorPaletteIndex; break; } index++; } }
/// <summary> /// See <see cref="BaseColorCache.OnGetColorPaletteIndex"/> for more details. /// </summary> protected override void OnGetColorPaletteIndex(Color color, out Int32 paletteIndex) { paletteIndex = ColorModelHelper.GetEuclideanDistance(color, ColorModel, palette); }