Moved image format detection out of "analyze" verb.

This commit is contained in:
2014-06-16 02:07:23 +01:00
parent dfbf818cf4
commit ded61b9f99
3 changed files with 70 additions and 36 deletions

View File

@@ -36,44 +36,18 @@ namespace DiscImageChef.Commands
try try
{ {
_imageFormat = null; _imageFormat = ImageFormat.Detect(options.InputFile);
// Check all but RAW plugin if(_imageFormat == null)
foreach (ImagePlugin _imageplugin in plugins.ImagePluginsList.Values)
{ {
if(_imageplugin.PluginUUID != new Guid("12345678-AAAA-BBBB-CCCC-123456789000")) Console.WriteLine("Image format not identified, not proceeding with analysis.");
{
if (_imageplugin.IdentifyImage(options.InputFile))
{
_imageFormat = _imageplugin;
Console.WriteLine("Image format identified by {0}.", _imageplugin.Name);
break;
}
}
} }
else
// Check only RAW plugin
if (_imageFormat == null)
{ {
foreach (ImagePlugin _imageplugin in plugins.ImagePluginsList.Values) if(MainClass.isVerbose)
{ Console.WriteLine("Image format identified by {0} ({1}).", _imageFormat.Name, _imageFormat.PluginUUID);
if(_imageplugin.PluginUUID == new Guid("12345678-AAAA-BBBB-CCCC-123456789000")) else
{ Console.WriteLine("Image format identified by {0}.", _imageFormat.Name);
if (_imageplugin.IdentifyImage(options.InputFile))
{
_imageFormat = _imageplugin;
Console.WriteLine("Image format identified by {0}.", _imageplugin.Name);
break;
}
}
}
}
// Still not recognized
if (_imageFormat == null)
{
Console.WriteLine("Image format not identified, not proceeding.");
return;
} }
try try
@@ -100,8 +74,6 @@ namespace DiscImageChef.Commands
return; return;
} }
Console.WriteLine("Image identified as {0}.", _imageFormat.GetImageFormat());
if (options.SearchForPartitions) if (options.SearchForPartitions)
{ {
List<Partition> partitions = new List<Partition>(); List<Partition> partitions = new List<Partition>();

View File

@@ -84,6 +84,7 @@
<Compile Include="Commands\Checksum.cs" /> <Compile Include="Commands\Checksum.cs" />
<Compile Include="Commands\Verify.cs" /> <Compile Include="Commands\Verify.cs" />
<Compile Include="Commands\Commands.cs" /> <Compile Include="Commands\Commands.cs" />
<Compile Include="ImagePlugins\DetectImageFormat.cs" />
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<ItemGroup> <ItemGroup>

View File

@@ -0,0 +1,61 @@
using System;
namespace DiscImageChef.ImagePlugins
{
public static class ImageFormat
{
public static ImagePlugin Detect(string imagePath)
{
try
{
ImagePlugin _imageFormat;
PluginBase plugins = new PluginBase();
plugins.RegisterAllPlugins();
_imageFormat = null;
// Check all but RAW plugin
foreach (ImagePlugin _imageplugin in plugins.ImagePluginsList.Values)
{
if(_imageplugin.PluginUUID != new Guid("12345678-AAAA-BBBB-CCCC-123456789000"))
{
if (_imageplugin.IdentifyImage(imagePath))
{
_imageFormat = _imageplugin;
break;
}
}
}
// Check only RAW plugin
if (_imageFormat == null)
{
foreach (ImagePlugin _imageplugin in plugins.ImagePluginsList.Values)
{
if(_imageplugin.PluginUUID == new Guid("12345678-AAAA-BBBB-CCCC-123456789000"))
{
if (_imageplugin.IdentifyImage(imagePath))
{
_imageFormat = _imageplugin;
break;
}
}
}
}
// Still not recognized
if (_imageFormat == null)
{
return null;
}
return _imageFormat;
}
catch
{
return null;
}
}
}
}