void Load(Stream stream, int maxDimension) { CompressedSize = (int)stream.Length; Header = ImageEngine.LoadHeader(stream); // DX10 var DX10Format = DDS_Header.DXGI_FORMAT.DXGI_FORMAT_UNKNOWN; if (Header is Headers.DDS_Header) { DX10Format = ((Headers.DDS_Header)Header).DX10_DXGI_AdditionalHeader.dxgiFormat; } ImageEngineFormat tempFormat = Header.Format; if (DX10Format == DDS_Header.DXGI_FORMAT.DXGI_FORMAT_R32G32B32A32_FLOAT) // Trickses to get around the DX10 float header deal - Apparently float formats should be specified with the DX10 header... { tempFormat = ImageEngineFormat.DDS_ARGB_32F; var tempPF = ((DDS_Header)Header).ddspf; tempPF.dwRBitMask = 1; tempPF.dwGBitMask = 2; tempPF.dwBBitMask = 3; tempPF.dwABitMask = 4; ((DDS_Header)Header).ddspf = tempPF; } FormatDetails = new ImageFormats.ImageEngineFormatDetails(tempFormat, DX10Format); MipMaps = ImageEngine.LoadImage(stream, Header, maxDimension, 0, FormatDetails); // Read original data OriginalData = new byte[CompressedSize]; stream.Position = 0; stream.Read(OriginalData, 0, CompressedSize); }
/// <summary> /// Loads DDS that has no header - primarily for ME3Explorer. DDS data is standard, just without a header. /// ASSUMES VALID DDS DATA. Also, single mipmap only. /// </summary> /// <param name="rawDDSData">Standard DDS data but lacking header.</param> /// <param name="surfaceFormat">Surface format of DDS.</param> /// <param name="width">Width of image.</param> /// <param name="height">Height of image.</param> public ImageEngineImage(byte[] rawDDSData, ImageEngineFormat surfaceFormat, int width, int height) { Format = new Format(surfaceFormat); DDSGeneral.DDS_HEADER tempHeader = null; MipMaps = ImageEngine.LoadImage(rawDDSData, surfaceFormat, width, height, out tempHeader); header = tempHeader; }
private void LoadFromStream(Stream stream, string extension = null, int desiredMaxDimension = 0, bool enforceResize = true) { Format format = new Format(); // KFreon: Load image and save useful information including BGRA pixel data - may be processed from original into this form. DDSGeneral.DDS_HEADER tempheader = null; MipMaps = ImageEngine.LoadImage(stream, out format, extension, desiredMaxDimension, enforceResize, out tempheader, false); header = tempheader; Format = format; }
private void LoadFromFile(string imagePath, int desiredMaxDimension = 0, bool enforceResize = true) { Format format = new Format(); FilePath = imagePath; // KFreon: Load image and save useful information including BGRA pixel data - may be processed from original into this form. DDSGeneral.DDS_HEADER tempheader = null; MipMaps = ImageEngine.LoadImage(imagePath, out format, desiredMaxDimension, enforceResize, out tempheader, false); // KFreon: Can't pass properties as out :( header = tempheader; Format = format; }
void Load(Stream stream, int maxDimension) { CompressedSize = (int)stream.Length; Header = ImageEngine.LoadHeader(stream); // DX10 var DX10Format = DDS_Header.DXGI_FORMAT.DXGI_FORMAT_UNKNOWN; if (Header is Headers.DDS_Header) { DX10Format = ((Headers.DDS_Header)Header).DX10_DXGI_AdditionalHeader.dxgiFormat; } FormatDetails = new ImageFormats.ImageEngineFormatDetails(Header.Format, DX10Format); MipMaps = ImageEngine.LoadImage(stream, Header, maxDimension, 0, FormatDetails); // Read original data OriginalData = new byte[CompressedSize]; stream.Position = 0; stream.Read(OriginalData, 0, CompressedSize); }