public TM2(string path) { Stream stream = File.Open(path, FileMode.Open); serializer = TextureFormatSerializerProvider.FromStream(stream); //MetadataReader reader = null; Texture = serializer.Open(stream); }
private void OpenImportStream(Stream stream, string fullPath, TextureFormatMode mode) { TextureFormatSerializer curSerializer = null; MetadataReader reader = null; if (mode == TextureFormatMode.Format) { curSerializer = TextureFormatSerializerProvider.FromStream(stream); } else if (mode == TextureFormatMode.Metadata) { reader = XmlMetadataReader.Create(stream); curSerializer = TextureFormatSerializerProvider.FromMetadata(reader); } else { curSerializer = TextureFormatSerializerProvider.FromStream(stream); mode = TextureFormatMode.Format; if (curSerializer == null) { reader = XmlMetadataReader.Create(stream); curSerializer = TextureFormatSerializerProvider.FromMetadata(reader); mode = TextureFormatMode.Metadata; } } if (curSerializer == null) { MessageBox.Show("Unsupported file format!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); if (reader != null) { reader.Dispose(); } return; } switch (mode) { case TextureFormatMode.Format: SetTexture(curSerializer.Open(stream)); break; case TextureFormatMode.Metadata: SetTexture(curSerializer.Import(reader, Path.GetDirectoryName(fullPath))); break; default: throw new ArgumentException("Should never happen!"); } if (reader != null) { reader.Dispose(); } SetFilename(Path.GetFileName(fullPath)); serializer = curSerializer; }
/// <summary> /// Retrieves a serializer for textures encoded in the same format of the given file. /// </summary> /// <exception cref="IOException">if any I/O exception occurs during reading the given file.</exception> /// <param name="stream"></param> /// <returns>the requested serializer if found, null otherwise.</returns> public static TextureFormatSerializer FromFile(string filePath) { TextureFormatSerializer serializer = null; using (Stream s = File.Open(filePath, FileMode.Open)) { serializer = FromStream(s); } return(serializer); }
/// <summary> /// Adds the given serializer to the list of available TextureFormatSerializers. /// </summary> /// <param name="serializer"></param> public static void RegisterSerializer(TextureFormatSerializer serializer) { serializers.Add(serializer); }