private PageableResource ConvertPageableResource(Stream sourceStream, Stream destStream, PageableResource resource) { if (resource.GetLocation(out var location) && location == ResourceLocation.ResourcesB) { resource.ChangeLocation(ResourceLocation.Resources); var resourceData = ResourcesB.ExtractRaw(sourceStream, resource.Page.Index, resource.Page.CompressedBlockSize); resource.Page.Index = Resources.AddRaw(destStream, resourceData); } return(resource); }
private object ConvertData(Stream tagsStream, Stream sourceStream, Stream destStream, object data) { var type = data.GetType(); if (type == typeof(PageableResource)) { var resource = (PageableResource)data; if (resource.GetLocation(out var location) && location == ResourceLocation.ResourcesB) { resource.ChangeLocation(ResourceLocation.Resources); var resourceData = ResourcesB.ExtractRaw(sourceStream, resource.Page.Index, resource.Page.CompressedBlockSize); resource.Page.Index = Resources.AddRaw(destStream, resourceData); } return(resource); } switch (data) { case null: case string _: case ValueType _: return(data); case PageableResource resource: return(ConvertPageableResource(sourceStream, destStream, resource)); case TagStructure structure: return(ConvertStructure(tagsStream, sourceStream, destStream, structure)); case IList collection: return(ConvertCollection(tagsStream, sourceStream, destStream, collection)); } return(data); }