Beispiel #1
0
        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());
        }
Beispiel #2
0
        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);
Beispiel #4
0
        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;
            }
        }
Beispiel #5
0
        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));
            }
        }
Beispiel #6
0
 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();
            }
        }
Beispiel #8
0
        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);
        }
Beispiel #9
0
 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)
 {
 }
Beispiel #10
0
        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);
        }