Exemplo n.º 1
0
        public ImageInfo Load(Stream input)
        {
            var dataLength = (int)input.Length - (Nw4CHeaderSize + BclimHeaderSize);

            using (var br = new BinaryReaderX(input))
            {
                var textureData = br.ReadBytes(dataLength);

                _header      = br.ReadType <NW4CHeader>();
                br.ByteOrder = _header.ByteOrder;

                _textureHeader = br.ReadType <BclimHeader>();

                var imageInfo = new ImageInfo
                {
                    ImageData     = textureData,
                    ImageFormat   = _textureHeader.Format,
                    ImageSize     = new Size(_textureHeader.Width, _textureHeader.Height),
                    Configuration = new ImageConfiguration().
                                    RemapPixelsWith(size => new CTRSwizzle(_textureHeader.Width, _textureHeader.Height, _textureHeader.SwizzleTileMode, true))
                };

                return(imageInfo);
            }
        }
Exemplo n.º 2
0
        private ImageInfo LoadBclim(BinaryReaderX br)
        {
            // Read section
            var imageSection = br.ReadType <NW4CSection <BclimHeader> >();

            _bclimHeader = imageSection.sectionData;

            // Read image data
            br.BaseStream.Position = 0;
            var imageData = br.ReadBytes(_bclimHeader.dataSize);

            var size = new Size(_bclimHeader.width, _bclimHeader.height);

            // Create image info
            var imageInfo = new ImageInfo(imageData, _bclimHeader.format, size);

            imageInfo.RemapPixels.With(context => new CtrSwizzle(context, _bclimHeader.transformation));
            imageInfo.PadSize.ToPowerOfTwo();

            return(imageInfo);
        }