From 631b90fcb5b1da69e667566c818c621bbc90273e Mon Sep 17 00:00:00 2001 From: Valeriy Mironov Date: Sun, 25 Mar 2018 11:42:15 +0300 Subject: [PATCH] Added sorting palette of images (fixes #23) --- Resources/Image/Writer.cs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Resources/Image/Writer.cs b/Resources/Image/Writer.cs index 60425f7..07028af 100644 --- a/Resources/Image/Writer.cs +++ b/Resources/Image/Writer.cs @@ -85,6 +85,29 @@ namespace Resources.Image } } } + + var startIndex = _transparency == 0 ? 0 : 1; + + for (var i = startIndex; i < _palette.Count - 1; i++) + { + var minColor = (uint) _palette[i].ToArgb(); + var minIndex = i; + for (var j = i + 1; j < _palette.Count; j++) + { + var color = (uint) _palette[j].ToArgb(); + if (color >= minColor) continue; + + minColor = color; + minIndex = j; + } + + if (minIndex == i) continue; + + var tmp = _palette[i]; + _palette[i] = _palette[minIndex]; + _palette[minIndex] = tmp; + } + _paletteColors = (ushort) _palette.Count; _bitsPerPixel = (ushort) Math.Ceiling(Math.Log(_paletteColors, 2)); } @@ -149,6 +172,7 @@ namespace Resources.Image bitWriter.WriteBits(paletteIndex, _bitsPerPixel); } } + bitWriter.Flush(); _writer.Write(rowData); }