public void Parse2() { var filter = PaletteFilter.Create(CallSyntax.Parse("palette(10,hex8)")); Assert.Equal(10, filter.Count); Assert.Equal("hex8", filter.Format); Assert.Equal("palette(10,hex8)", filter.ToString()); }
public void Parse1() { var filter = PaletteFilter.Create(CallSyntax.Parse("palette(256)")); Assert.Equal(256, filter.Count); Assert.Null(filter.Format); Assert.Equal("palette(256)", filter.ToString()); }
protected abstract void GetPalettedTools(ushort version, byte clutFormat, byte depth, int colorsCount, int width, int height, byte[] data, byte[] userData, out ColorCodec paletteCodec, out IndexCodec indexCodec, out ImageFilter imgFilter, out PaletteFilter palFilter);
private void Init(IndexCodec codec, IComparer <Color> pixelComparer, ColorCodec encoder, ImageFilter imageFilter, PaletteFilter paletteFilter) { this.codec = codec; this.colorEncoder = encoder; this.imageFilter = imageFilter; this.paletteFilter = paletteFilter; colors = 1 << codec.BitDepth; if (pixelComparer != null) { pixelSorter = pixelComparer; } }
private void Init(byte[] imgData, IList <byte[]> palData, int widths, int heights) { imageData = imgData; this.width = widths; this.height = heights; encodedPalettes = palData; palettes = new List <Color[]>(palData.Count); for (int pal = 0; pal < palData.Count; pal++) { PaletteFilter filter = PaletteFilter; Color[] decoded = PaletteCodec.DecodeColors(palData[pal]); palettes.Add(filter == null? decoded : filter.Defilter(decoded)); } }
public Builder SetPaletteFilter(PaletteFilter filter) { palFilter = filter; return(this); }
public ImageDecoderIndexed(byte[] pixelData, int width, int height, IndexCodec codec, SKColor[] palette = null, ImageFilter imageFilter = null, PaletteFilter paletteFilter = null) { this.pixelData = pixelData; if (imageFilter != null) { this.pixelData = imageFilter.Defilter(pixelData); } this.width = width; this.height = height; this.indexCodec = codec; grayScale = new SKColor[1 << codec.BitDepth]; for (int i = 0; i < grayScale.Length; i++) { grayScale[i] = new SKColor((byte)(i * (256 / grayScale.Length)), (byte)(i * (256 / grayScale.Length)), (byte)(i * (256 / grayScale.Length))); } if (paletteFilter != null && palette != null) { Palette = paletteFilter.Defilter(palette); } else if (palette == null) { palette = (SKColor[])grayScale.Clone(); Palette = palette; } else { Palette = (SKColor[])palette.Clone(); } }
private ImageEncoderIndexed(IList <Image> images, IndexCodec codec, IComparer <Color> pixelComparer = null, ColorCodec encoder = null, ImageFilter imageFilter = null, PaletteFilter paletteFilter = null) { fromReference = false; if (images.Count == 0) { throw new ArgumentException("The image list cannot be empty!"); } width = images.First().Width; height = images.First().Height; foreach (Image img in images) { if (img.Width != width || img.Height != height) { throw new ArgumentException("The images are not of the same size!"); } } this.images = images; Init(codec, pixelComparer, encoder, imageFilter, paletteFilter); }
public ImageEncoderIndexed(Image image, IndexCodec codec, IComparer <Color> pixelComparer = null, ColorCodec encoder = null, ImageFilter imageFilter = null, PaletteFilter paletteFilter = null) : this(new List <Image>() { image }, codec, pixelComparer, encoder, imageFilter, paletteFilter) { }
public ImageEncoderIndexed(IList <Color[]> palettes, Image referenceImage, IndexCodec codec, ColorCodec encoder = null, ImageFilter imageFilter = null, PaletteFilter paletteFilter = null) { fromReference = true; Palettes = palettes; this.referenceImage = referenceImage; width = referenceImage.Width; height = referenceImage.Height; if (!IsGreyScale(referenceImage)) { throw new ArgumentException("The reference image must be in grey scale!"); } Init(codec, null, encoder, imageFilter, paletteFilter); }