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); } }
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); }