Merge branch 'master' of github.com:alcexhim/UniversalEditor
This commit is contained in:
commit
3ed7eaa572
@ -4,6 +4,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using UniversalEditor.IO;
|
||||
using UniversalEditor.ObjectModels.FileSystem;
|
||||
using UniversalEditor.ObjectModels.FileSystem.FileSources;
|
||||
|
||||
namespace UniversalEditor.DataFormats.FileSystem.TerminalReality.POD
|
||||
{
|
||||
@ -85,10 +86,7 @@ namespace UniversalEditor.DataFormats.FileSystem.TerminalReality.POD
|
||||
|
||||
File file = fsom.AddFile(fileName);
|
||||
file.Size = length;
|
||||
file.Properties.Add("reader", reader);
|
||||
file.Properties.Add("length", length);
|
||||
file.Properties.Add("offset", offset);
|
||||
file.DataRequest += file_DataRequest;
|
||||
file.Source = new EmbeddedFileSource(reader, offset, length);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -112,10 +110,7 @@ namespace UniversalEditor.DataFormats.FileSystem.TerminalReality.POD
|
||||
|
||||
File file = fsom.AddFile(fileName);
|
||||
file.Size = lengths[i];
|
||||
file.Properties.Add("reader", reader);
|
||||
file.Properties.Add("length", lengths[i]);
|
||||
file.Properties.Add("offset", offsets[i]);
|
||||
file.DataRequest += file_DataRequest;
|
||||
file.Source = new EmbeddedFileSource(reader, offsets[i], lengths[i]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -149,10 +144,7 @@ namespace UniversalEditor.DataFormats.FileSystem.TerminalReality.POD
|
||||
|
||||
File file = fsom.AddFile(filename);
|
||||
file.Size = lengths[i];
|
||||
file.Properties.Add("reader", reader);
|
||||
file.Properties.Add("length", lengths[i]);
|
||||
file.Properties.Add("offset", offsets[i]);
|
||||
file.DataRequest += file_DataRequest;
|
||||
file.Source = new EmbeddedFileSource(reader, offsets[i], lengths[i]);
|
||||
}
|
||||
|
||||
// russellm directory
|
||||
@ -170,18 +162,6 @@ namespace UniversalEditor.DataFormats.FileSystem.TerminalReality.POD
|
||||
}
|
||||
}
|
||||
|
||||
private void file_DataRequest(object sender, DataRequestEventArgs e)
|
||||
{
|
||||
File file = (sender as File);
|
||||
Reader reader = (Reader)file.Properties["reader"];
|
||||
uint length = (uint)file.Properties["length"];
|
||||
uint offset = (uint)file.Properties["offset"];
|
||||
|
||||
reader.Accessor.Seek(offset, SeekOrigin.Begin);
|
||||
byte[] data = reader.ReadBytes(length);
|
||||
e.Data = data;
|
||||
}
|
||||
|
||||
protected override void SaveInternal(ObjectModel objectModel)
|
||||
{
|
||||
FileSystemObjectModel fsom = (objectModel as FileSystemObjectModel);
|
||||
|
||||
@ -1,76 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
using UniversalEditor.IO;
|
||||
using UniversalEditor.ObjectModels.FileSystem;
|
||||
using UniversalEditor.ObjectModels.FileSystem.FileSources;
|
||||
|
||||
namespace UniversalEditor.DataFormats.FileSystem.Microsoft.POD
|
||||
{
|
||||
public class PODDataFormat : DataFormat
|
||||
{
|
||||
private static DataFormatReference _dfr = null;
|
||||
protected override DataFormatReference MakeReferenceInternal()
|
||||
{
|
||||
if (_dfr == null)
|
||||
{
|
||||
_dfr = base.MakeReferenceInternal();
|
||||
_dfr.Capabilities.Add(typeof(FileSystemObjectModel), DataFormatCapabilities.All);
|
||||
}
|
||||
return _dfr;
|
||||
}
|
||||
|
||||
private string mvarComment = String.Empty;
|
||||
public string Comment { get { return mvarComment; } set { mvarComment = value; } }
|
||||
|
||||
protected override void LoadInternal(ref ObjectModel objectModel)
|
||||
{
|
||||
FileSystemObjectModel fsom = (objectModel as FileSystemObjectModel);
|
||||
if (fsom == null) throw new ObjectModelNotSupportedException();
|
||||
|
||||
Reader reader = base.Accessor.Reader;
|
||||
int fileCount = reader.ReadInt32();
|
||||
mvarComment = reader.ReadFixedLengthString(80).TrimNull();
|
||||
|
||||
for (int i = 0; i < fileCount; i++)
|
||||
{
|
||||
string fileName = reader.ReadFixedLengthString(32).TrimNull();
|
||||
|
||||
int length = reader.ReadInt32();
|
||||
int offset = reader.ReadInt32();
|
||||
|
||||
File file = fsom.AddFile(fileName);
|
||||
file.Size = length;
|
||||
file.Source = new EmbeddedFileSource(reader, offset, length);
|
||||
}
|
||||
}
|
||||
|
||||
protected override void SaveInternal(ObjectModel objectModel)
|
||||
{
|
||||
FileSystemObjectModel fsom = (objectModel as FileSystemObjectModel);
|
||||
if (fsom == null) throw new ObjectModelNotSupportedException();
|
||||
|
||||
Writer writer = base.Accessor.Writer;
|
||||
|
||||
File[] files = fsom.GetAllFiles();
|
||||
writer.WriteInt32(files.Length);
|
||||
|
||||
writer.WriteFixedLengthString(mvarComment, 80);
|
||||
|
||||
int offset = 84 + (40 * files.Length);
|
||||
|
||||
foreach (File file in files)
|
||||
{
|
||||
writer.WriteFixedLengthString(file.Name, 32);
|
||||
|
||||
int length = (int)file.Source.GetLength();
|
||||
writer.WriteInt32(length);
|
||||
writer.WriteInt32(offset);
|
||||
|
||||
offset += length;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -51,7 +51,6 @@
|
||||
<Compile Include="DataFormats\FileSystem\Microsoft\MSCompressed\MSCompressedDataFormat.cs" />
|
||||
<Compile Include="DataFormats\FileSystem\Microsoft\MSCompressed\MSCompressedKWAJCompressionMethod.cs" />
|
||||
<Compile Include="DataFormats\FileSystem\Microsoft\MSCompressed\MSCompressedKWAJHeaderFlags.cs" />
|
||||
<Compile Include="DataFormats\FileSystem\Microsoft\POD\PODDataFormat.cs" />
|
||||
<Compile Include="DataFormats\FileSystem\Microsoft\WindowsImage\WIMArchiveFlags.cs" />
|
||||
<Compile Include="DataFormats\FileSystem\Microsoft\WindowsImage\WIMArchiveHeader.cs" />
|
||||
<Compile Include="DataFormats\FileSystem\Microsoft\WindowsImage\WIMDataFormat.cs" />
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user