public void BeginFrame(ref Gaf.Structures.GaFrameListItem entry, ref Gaf.Structures.GafFrameInfo data) { if (frameDepth > 0) { this.currentLayerInfo = data; var layerJson = new GafLayerJson { OriginX = data.OriginX, OriginY = data.OriginY, TransparencyIndex = data.TransparencyIndex, Unknown3 = data.Unknown3, }; entries.Last().Frames.Last().Layers.Add(layerJson); } else { this.currentFrameInfo = data; var frameJson = new GafFrameJson { Duration = entry.Duration, Unknown3 = data.Unknown3, }; if (data.LayerCount > 0) { frameJson.Layers = new List <GafLayerJson>(); } else { frameJson.OriginX = data.OriginX; frameJson.OriginY = data.OriginY; frameJson.TransparencyIndex = data.TransparencyIndex; } entries.Last().Frames.Add(frameJson); } frameDepth += 1; }
private static IEnumerable <KeyValuePair <string, GafImageInfo> > GetImageInfos(string directoryName, GafFrameJson frame, Func <Color, byte> paletteLookup) { if (frame.ImageFileName != null) { var info = GetImageInfo(Path.Combine(directoryName, frame.ImageFileName), frame.TransparencyIndex.Value, paletteLookup); yield return(new KeyValuePair <string, GafImageInfo>(frame.ImageFileName, info)); } else { foreach (var layer in frame.Layers) { var info = GetImageInfo(Path.Combine(directoryName, layer.ImageFileName), layer.TransparencyIndex, paletteLookup); yield return(new KeyValuePair <string, GafImageInfo>(layer.ImageFileName, info)); } } }