public Texture2DSlim(RawDataFormat dataFormat, TextureFormat format, byte[] rawData) { DataFormat = dataFormat; switch (dataFormat) { case RawDataFormat.DXT: if (format != TextureFormat.DXT1 && format != TextureFormat.DXT5) { throw new ArgumentOutOfRangeException(nameof(format), "Invalid TextureFormat. Only DXT1 and DXT5 formats are supported by this method."); } Format = format; var ddsSizeCheck = rawData[4]; if (ddsSizeCheck != 124) { throw new ArgumentOutOfRangeException(nameof(rawData), "Invalid DDS DXTn texture. Unable to read"); // this header byte should be 124 for DDS image files } Height = (rawData[13] << 8) | rawData[12]; Width = (rawData[17] << 8) | rawData[16]; var dxtBytes = new byte[rawData.Length - DDS_HEADER_SIZE]; Buffer.BlockCopy(dxtBytes, DDS_HEADER_SIZE, dxtBytes, 0, rawData.Length - DDS_HEADER_SIZE); RawData = dxtBytes; return; case RawDataFormat.Raw: RawData = rawData; return; default: throw new NotImplementedException($"{dataFormat}"); } }
public Texture2DInfo(RawDataFormat dataFormat, TextureFormat format, byte[] rawData) { DataFormat = dataFormat; switch (dataFormat) { // https://answers.unity.com/questions/555984/can-you-load-dds-textures-during-runtime.html#answer-707772 case RawDataFormat.DXT: if (format != TextureFormat.DXT1 && format != TextureFormat.DXT5) { throw new ArgumentOutOfRangeException("format", "Invalid TextureFormat. Only DXT1 and DXT5 formats are supported by this method."); } Format = format; var ddsSizeCheck = rawData[4]; if (ddsSizeCheck != 124) { throw new ArgumentOutOfRangeException("ddsBytes", "Invalid DDS DXTn texture. Unable to read"); // this header byte should be 124 for DDS image files } Height = (rawData[13] << 8) | rawData[12]; Width = (rawData[17] << 8) | rawData[16]; var dxtBytes = new byte[rawData.Length - DDS_HEADER_SIZE]; Buffer.BlockCopy(dxtBytes, DDS_HEADER_SIZE, dxtBytes, 0, rawData.Length - DDS_HEADER_SIZE); RawData = dxtBytes; return; } }
public Texture2DSlim(int width, int height, TextureFormat format, bool hasMipmaps, byte[] rawData) { DataFormat = RawDataFormat.Raw; Width = width; Height = height; Format = format; HasMipmaps = hasMipmaps; RawData = rawData; }
public void FromYaml(YamlNode yamlNode) { YamlMappingNode node = yamlNode as YamlMappingNode; Enabled = (node["enabled"] as YamlScalarNode).Value == "true"; MaxQueuedMessages = Convert.ToInt32((node["max-queued-messages"] as YamlScalarNode).Value); DatabaseUrl = (node["database-url"] as YamlScalarNode).Value; ConnectRetrySeconds = Convert.ToInt32((node["connect-retry-seconds"] as YamlScalarNode).Value); StoreMeasurement = (node["store-measurement"] as YamlScalarNode).Value == "true"; StoreRawMessage = (node["store-raw-message"] as YamlScalarNode).Value == "true"; TableName = (node["table-name"] as YamlScalarNode).Value; RawTableName = (node["raw-table-name"] as YamlScalarNode).Value; RawDataFormat = (RawDataFormat)Convert.ToInt32((node["raw-data-format"] as YamlScalarNode).Value); }
public void LoadImage(byte[] data) { using (var ms = new MemoryStream(data)) using (var r = new EndianBinaryReader(ms, Endian.LittleEndian)) { var magicString = r.ReadBytes(4); if (!"IMG ".EqualsASCIIBytes(magicString)) { throw new FileFormatException($"Invalid IMG file magic string: \"{Encoding.ASCII.GetString(magicString)}\"."); } DataFormat = (RawDataFormat)r.ReadByte(); HasMipmaps = r.ReadByte() != 0; Format = (TextureFormat)r.ReadInt16(); Width = r.ReadInt32(); Height = r.ReadInt32(); var rawDataSize = r.ReadInt32(); RawData = r.ReadBytes(rawDataSize); } }