Esempio n. 1
0
        /// <summary>
        /// Converts this image to an RGBA image with the palette provided.
        /// </summary>
        /// <param name="palette">The palette to convert with.</param>
        /// <returns>The RGBA image.</returns>
        public RgbaImage ToColor(Palette palette)
        {
            PaletteLayer paletteLayer = palette.Default;

            Color[] pixels = new Color[Area];
            for (int i = 0; i < Area; i++)
            {
                // TODO: Could we extend the palette by 1 and set it to be transparent to avoid branching *every* pixel?
                short index = Indices[i];
                Color color = index == TransparentIndex ? RgbaImage.Transparent : paletteLayer[index];
                pixels[i] = color;
            }

            RgbaImage image = RgbaImage.From(Width, Height, pixels).Value;

            image.Namespace = Namespace;
            image.Offset    = Offset;
            return(image);
        }