private void ReadATTRChunk(IFFReader iff, ChunkAttributes attr) { Version = iff.ReadInt32(); Width = iff.ReadInt32(); Height = iff.ReadInt32(); DataSize = iff.ReadInt32(); }
/// <summary>Static data initialization.</summary> static ChunkNameExtensions() { Type aviChunkNameType = typeof(AviChunkName); ICollection <AviChunkName> allContainerChunks = new HashSet <AviChunkName>(); ChunkNameForChunkType = new Dictionary <uint, AviChunkName>(); ChunkAttributesForChunkName = new Dictionary <AviChunkName, ChunkAttributes>(); // Create the list to feed to the chunks that can be in all container chunks allContainerChunks.Add(AviChunkName.Root); // Use reflection to find the attributes describing the codec identifiers foreach (AviChunkName chunkName in Enum.GetValues(aviChunkNameType)) { string name = Enum.GetName(aviChunkNameType, chunkName); FieldInfo fieldInfo = aviChunkNameType.GetField(name); AviAttribute[] attributes = (AviAttribute[])fieldInfo.GetCustomAttributes(typeof(AviAttribute), false); if (chunkName == AviChunkName.Root) { // The root container has no metadata and does not occur in any other chunk ChunkAttributesForChunkName.Add(chunkName, new ChunkAttributes(new uint[0], ChunkFlags.ContainerChunk, new AviChunkName[0])); } else if (attributes != null && attributes.Length == 1) { ChunkAttributes chunkAttributes = GetChunkAttributes(chunkName, attributes[0], allContainerChunks); ChunkAttributesForChunkName.Add(chunkName, chunkAttributes); // List all 4CC for this chunk foreach (uint chunkType in chunkAttributes.ChunkTypes) { Debug.Assert(!ChunkNameForChunkType.ContainsKey(chunkType), string.Format("Duplicate 4CC '{0}'", chunkType.ToString4CC())); ChunkNameForChunkType.Add(chunkType, chunkName); } } else { Debug.Fail(string.Format("No attributes for {0}. Please add attributes to the ChunkName enumeration.", chunkName)); } } CheckSuitableParents(); }
private void ReadGLPHChunk(IFFReader iff, ChunkAttributes attr) { _glyphs.Add(Glyph.Read(iff)); }
private void ReadIMAGChunk(IFFReader iff, ChunkAttributes attr) { _images.Add(Image.Read(iff)); }
private void ReadATTRChunk(IFFReader iff, ChunkAttributes attr) { Attributes = iff.ReadString(); }
private void ReadNAMEChunk(IFFReader iff, ChunkAttributes attr) { Name = iff.ReadString(); }
private void ReadDATAChunk(IFFReader iff, ChunkAttributes attr) { Data = iff.ReadBytes(attr.Size); }
private void CreateNewChunk(int x, int z) { chunks[x, z] = new ChunkAttributes(new ChunkCoord(x, z), this); activeChunks.Add(new ChunkCoord(x, z)); }