protected override void EncodeTile(byte[] src, int srcPos, int stride, byte[] dst, int dstPos)
        {
            int srcCurrentPos = srcPos, dstCurrentPos = dstPos;

            for (int ty = 0; ty < TileHeight; ty++, srcCurrentPos += stride - TileWidth * 4)
            {
                for (int tx = 0; tx < TileWidth; tx++, srcCurrentPos += 4)
                {
                    if ((tx & 1) == 0)
                    {
                        dst[dstCurrentPos] = (byte)(ColorConversion.ColorToI4(ColorRGBA.Read(src, srcCurrentPos)) << 4);
                    }
                    else if ((tx & 1) == 1)
                    {
                        dst[dstCurrentPos] |= ColorConversion.ColorToI4(ColorRGBA.Read(src, srcCurrentPos));
                        dstCurrentPos++;
                    }
                }
            }
        }
 protected override ColorRGBA TrimColor(ColorRGBA color)
 {
     return(ColorConversion.I4ToColor(ColorConversion.ColorToI4(color)));
 }