Example #1
0
		public Boolean Load(IO.File file, Int32 pcxsize, out Point size, out Texture2D pixels, out Texture2D palette)
		{
			if (file == null) throw new ArgumentNullException("file");

			size = new Point(Int32.MinValue, Int32.MinValue);
			pixels = null;
			palette = null;

			Byte[] filedata = file.ReadBytes(pcxsize);
			if (filedata.Length != pcxsize) return false;

			IO.FileHeaders.PcxFileHeader header = new IO.FileHeaders.PcxFileHeader(filedata);
			Point tempsize = new Point(header.XMax - header.XMin + 1, header.YMax - header.YMin + 1);

			if (header.Manufacturer != 10 || header.Encoding != 1 || header.Version > 5 || header.BitsPerPixel != 8) return false;
			if (header.ColorPlanes != 1) return false;
			if (tempsize.X <= 0 || tempsize.Y <= 0) return false;

			size = tempsize;

			Int32 readoffset = 0;
			pixels = LoadPixels(filedata, size, header.BytesPerLine, ref readoffset);
			palette = LoadPalette(filedata, ref readoffset);
			return true;
		}
Example #2
0
        public bool Load(IO.File file, int pcxsize, out Point size, out Texture2D pixels, out Texture2D palette)
        {
            if (file == null)
            {
                throw new ArgumentNullException(nameof(file));
            }

            size    = new Point(int.MinValue, int.MinValue);
            pixels  = null;
            palette = null;

            var filedata = file.ReadBytes(pcxsize);

            if (filedata.Length != pcxsize)
            {
                return(false);
            }

            var header   = new IO.FileHeaders.PcxFileHeader(filedata);
            var tempsize = new Point(header.XMax - header.XMin + 1, header.YMax - header.YMin + 1);

            if (header.Manufacturer != 10 || header.Encoding != 1 || header.Version > 5 || header.BitsPerPixel != 8)
            {
                return(false);
            }
            if (header.ColorPlanes != 1)
            {
                return(false);
            }
            if (tempsize.X <= 0 || tempsize.Y <= 0)
            {
                return(false);
            }

            size = tempsize;

            var readoffset = 0;

            pixels  = LoadPixels(filedata, size, header.BytesPerLine, ref readoffset);
            palette = LoadPalette(filedata, ref readoffset);
            return(true);
        }