Example #1
0
        public TM2(string path)
        {
            Stream stream = File.Open(path, FileMode.Open);

            serializer = TextureFormatSerializerProvider.FromStream(stream);
            //MetadataReader reader = null;
            Texture = serializer.Open(stream);
        }
Example #2
0
        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);
 }