Refactor: Split Sidecar class.

This commit is contained in:
2017-08-08 12:15:55 +01:00
parent 45fefb3330
commit cd3671b565
4 changed files with 192 additions and 104 deletions

View File

@@ -53,7 +53,6 @@
<Compile Include="Devices\Dumping\SecureDigital.cs" />
<Compile Include="DataFile.cs" />
<Compile Include="Filesystems.cs" />
<Compile Include="Sidecar.cs" />
<Compile Include="Benchmark.cs" />
<Compile Include="Delegates.cs" />
<Compile Include="Devices\Scanning\ScanResults.cs" />
@@ -80,6 +79,9 @@
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Devices\Dumping\ResumeSupport.cs" />
<Compile Include="Partitions.cs" />
<Compile Include="Sidecar\Events.cs" />
<Compile Include="Sidecar\Helpers.cs" />
<Compile Include="Sidecar\Sidecar.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\DiscImageChef.Console\DiscImageChef.Console.csproj">
@@ -143,6 +145,7 @@
<Folder Include="Devices\Report\" />
<Folder Include="Devices\Report\SCSI\" />
<Folder Include="Properties\" />
<Folder Include="Sidecar\" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
@@ -156,7 +159,7 @@
<inheritsSet />
<inheritsScope />
</TextStylePolicy>
<CSharpFormattingPolicy IndentBlock="True" IndentBraces="False" IndentSwitchSection="True" IndentSwitchCaseSection="True" LabelPositioning="OneLess" NewLinesForBracesInTypes="True" NewLinesForBracesInMethods="True" NewLinesForBracesInProperties="True" NewLinesForBracesInAccessors="True" NewLinesForBracesInAnonymousMethods="True" NewLinesForBracesInControlBlocks="True" NewLinesForBracesInAnonymousTypes="True" NewLinesForBracesInObjectCollectionArrayInitializers="True" NewLinesForBracesInLambdaExpressionBody="True" NewLineForElse="True" NewLineForCatch="True" NewLineForFinally="True" SpacingAfterMethodDeclarationName="False" SpaceWithinMethodDeclarationParenthesis="False" SpaceBetweenEmptyMethodDeclarationParentheses="False" SpaceAfterMethodCallName="False" SpaceWithinMethodCallParentheses="False" SpaceBetweenEmptyMethodCallParentheses="False" SpaceAfterControlFlowStatementKeyword="False" SpaceWithinExpressionParentheses="False" SpaceWithinCastParentheses="False" SpaceWithinOtherParentheses="False" SpaceAfterCast="False" SpacesIgnoreAroundVariableDeclaration="False" SpaceBeforeOpenSquareBracket="False" SpaceBetweenEmptySquareBrackets="False" SpaceWithinSquareBrackets="False" SpaceAfterColonInBaseTypeDeclaration="True" SpaceAfterComma="True" SpaceAfterDot="False" SpaceAfterSemicolonsInForStatement="True" SpaceBeforeColonInBaseTypeDeclaration="True" SpaceBeforeComma="False" SpaceBeforeDot="False" SpaceBeforeSemicolonsInForStatement="False" SpacingAroundBinaryOperator="Single" WrappingPreserveSingleLine="True" WrappingKeepStatementsOnSingleLine="True" PlaceSystemDirectiveFirst="True" NewLineForMembersInObjectInit="False" NewLineForMembersInAnonymousTypes="False" NewLineForClausesInQuery="False" scope="text/x-csharp">
<CSharpFormattingPolicy IndentBlock="True" IndentBraces="False" IndentSwitchSection="True" IndentSwitchCaseSection="True" LabelPositioning="OneLess" NewLinesForBracesInTypes="True" NewLinesForBracesInMethods="True" NewLinesForBracesInProperties="True" NewLinesForBracesInAccessors="True" NewLinesForBracesInAnonymousMethods="True" NewLinesForBracesInControlBlocks="True" NewLinesForBracesInAnonymousTypes="True" NewLinesForBracesInObjectCollectionArrayInitializers="True" NewLinesForBracesInLambdaExpressionBody="True" NewLineForElse="True" NewLineForCatch="True" NewLineForFinally="True" NewLineForMembersInObjectInit="False" NewLineForMembersInAnonymousTypes="False" NewLineForClausesInQuery="False" SpacingAfterMethodDeclarationName="False" SpaceWithinMethodDeclarationParenthesis="False" SpaceBetweenEmptyMethodDeclarationParentheses="False" SpaceAfterMethodCallName="False" SpaceWithinMethodCallParentheses="False" SpaceBetweenEmptyMethodCallParentheses="False" SpaceAfterControlFlowStatementKeyword="False" SpaceWithinExpressionParentheses="False" SpaceWithinCastParentheses="False" SpaceWithinOtherParentheses="False" SpaceAfterCast="False" SpacesIgnoreAroundVariableDeclaration="False" SpaceBeforeOpenSquareBracket="False" SpaceBetweenEmptySquareBrackets="False" SpaceWithinSquareBrackets="False" SpaceAfterColonInBaseTypeDeclaration="True" SpaceAfterComma="True" SpaceAfterDot="False" SpaceAfterSemicolonsInForStatement="True" SpaceBeforeColonInBaseTypeDeclaration="True" SpaceBeforeComma="False" SpaceBeforeDot="False" SpaceBeforeSemicolonsInForStatement="False" SpacingAroundBinaryOperator="Single" WrappingPreserveSingleLine="True" WrappingKeepStatementsOnSingleLine="True" PlaceSystemDirectiveFirst="True" scope="text/x-csharp">
<inheritsSet />
<inheritsScope />
</CSharpFormattingPolicy>

View File

@@ -0,0 +1,93 @@
// /***************************************************************************
// The Disc Image Chef
// ----------------------------------------------------------------------------
//
// Filename : Events.cs
// Version : 1.0
// Author(s) : Natalia Portillo
//
// Component : Component
//
// Revision : $Revision$
// Last change by : $Author$
// Date : $Date$
//
// --[ Description ] ----------------------------------------------------------
//
// Description
//
// --[ License ] --------------------------------------------------------------
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
// ----------------------------------------------------------------------------
// Copyright (C) 2011-2015 Claunia.com
// ****************************************************************************/
// //$Id$
using System;
namespace DiscImageChef.Core
{
public static partial class Sidecar
{
public static event InitProgressHandler InitProgressEvent;
public static event UpdateProgressHandler UpdateProgressEvent;
public static event EndProgressHandler EndProgressEvent;
public static event InitProgressHandler2 InitProgressEvent2;
public static event UpdateProgressHandler2 UpdateProgressEvent2;
public static event EndProgressHandler2 EndProgressEvent2;
public static event UpdateStatusHandler UpdateStatusEvent;
public static void InitProgress()
{
if(InitProgressEvent != null)
InitProgressEvent();
}
public static void UpdateProgress(string text, long current, long maximum)
{
if(UpdateProgressEvent != null)
UpdateProgressEvent(string.Format(text, current, maximum), current, maximum);
}
public static void EndProgress()
{
if(EndProgressEvent != null)
EndProgressEvent();
}
public static void InitProgress2()
{
if(InitProgressEvent2 != null)
InitProgressEvent2();
}
public static void UpdateProgress2(string text, long current, long maximum)
{
if(UpdateProgressEvent2 != null)
UpdateProgressEvent2(string.Format(text, current, maximum), current, maximum);
}
public static void EndProgress2()
{
if(EndProgressEvent2 != null)
EndProgressEvent2();
}
public static void UpdateStatus(string text, params object[] args)
{
if(UpdateStatusEvent != null)
UpdateStatusEvent(string.Format(text, args));
}
}
}

View File

@@ -0,0 +1,93 @@
// /***************************************************************************
// The Disc Image Chef
// ----------------------------------------------------------------------------
//
// Filename : Helpers.cs
// Version : 1.0
// Author(s) : Natalia Portillo
//
// Component : Component
//
// Revision : $Revision$
// Last change by : $Author$
// Date : $Date$
//
// --[ Description ] ----------------------------------------------------------
//
// Description
//
// --[ License ] --------------------------------------------------------------
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
// ----------------------------------------------------------------------------
// Copyright (C) 2011-2015 Claunia.com
// ****************************************************************************/
// //$Id$
using System;
namespace DiscImageChef.Core
{
public static partial class Sidecar
{
static string LbaToMsf(long lba)
{
long m, s, f;
if(lba >= -150)
{
m = (lba + 150) / (75 * 60);
lba -= m * (75 * 60);
s = (lba + 150) / 75;
lba -= s * 75;
f = lba + 150;
}
else
{
m = (lba + 450150) / (75 * 60);
lba -= m * (75 * 60);
s = (lba + 450150) / 75;
lba -= s * 75;
f = lba + 450150;
}
return string.Format("{0}:{1:D2}:{2:D2}", m, s, f);
}
static string DdcdLbaToMsf(long lba)
{
long h, m, s, f;
if(lba >= -150)
{
h = (lba + 150) / (75 * 60 * 60);
lba -= h * (75 * 60 * 60);
m = (lba + 150) / (75 * 60);
lba -= m * (75 * 60);
s = (lba + 150) / 75;
lba -= s * 75;
f = lba + 150;
}
else
{
h = (lba + 450150 * 2) / (75 * 60 * 60);
lba -= h * (75 * 60 * 60);
m = (lba + 450150 * 2) / (75 * 60);
lba -= m * (75 * 60);
s = (lba + 450150 * 2) / 75;
lba -= s * 75;
f = lba + 450150 * 2;
}
return string.Format("{3}:{0:D2}:{1:D2}:{2:D2}", m, s, f, h);
}
}
}

View File

@@ -41,63 +41,12 @@ using DiscImageChef.CommonTypes;
using DiscImageChef.Decoders.PCMCIA;
using DiscImageChef.Filesystems;
using DiscImageChef.ImagePlugins;
using DiscImageChef.PartPlugins;
using Schemas;
namespace DiscImageChef.Core
{
public static class Sidecar
public static partial class Sidecar
{
public static event InitProgressHandler InitProgressEvent;
public static event UpdateProgressHandler UpdateProgressEvent;
public static event EndProgressHandler EndProgressEvent;
public static event InitProgressHandler2 InitProgressEvent2;
public static event UpdateProgressHandler2 UpdateProgressEvent2;
public static event EndProgressHandler2 EndProgressEvent2;
public static event UpdateStatusHandler UpdateStatusEvent;
public static void InitProgress()
{
if(InitProgressEvent != null)
InitProgressEvent();
}
public static void UpdateProgress(string text, long current, long maximum)
{
if(UpdateProgressEvent != null)
UpdateProgressEvent(string.Format(text, current, maximum), current, maximum);
}
public static void EndProgress()
{
if(EndProgressEvent != null)
EndProgressEvent();
}
public static void InitProgress2()
{
if(InitProgressEvent2 != null)
InitProgressEvent2();
}
public static void UpdateProgress2(string text, long current, long maximum)
{
if(UpdateProgressEvent2 != null)
UpdateProgressEvent2(string.Format(text, current, maximum), current, maximum);
}
public static void EndProgress2()
{
if(EndProgressEvent2 != null)
EndProgressEvent2();
}
public static void UpdateStatus(string text, params object[] args)
{
if(UpdateStatusEvent != null)
UpdateStatusEvent(string.Format(text, args));
}
public static CICMMetadataType Create(ImagePlugin image, string imagePath, System.Guid filterId)
{
CICMMetadataType sidecar = new CICMMetadataType();
@@ -975,55 +924,5 @@ namespace DiscImageChef.Core
return sidecar;
}
static string LbaToMsf(long lba)
{
long m, s, f;
if(lba >= -150)
{
m = (lba + 150) / (75 * 60);
lba -= m * (75 * 60);
s = (lba + 150) / 75;
lba -= s * 75;
f = lba + 150;
}
else
{
m = (lba + 450150) / (75 * 60);
lba -= m * (75 * 60);
s = (lba + 450150) / 75;
lba -= s * 75;
f = lba + 450150;
}
return string.Format("{0}:{1:D2}:{2:D2}", m, s, f);
}
static string DdcdLbaToMsf(long lba)
{
long h, m, s, f;
if(lba >= -150)
{
h = (lba + 150) / (75 * 60 * 60);
lba -= h * (75 * 60 * 60);
m = (lba + 150) / (75 * 60);
lba -= m * (75 * 60);
s = (lba + 150) / 75;
lba -= s * 75;
f = lba + 150;
}
else
{
h = (lba + 450150 * 2) / (75 * 60 * 60);
lba -= h * (75 * 60 * 60);
m = (lba + 450150 * 2) / (75 * 60);
lba -= m * (75 * 60);
s = (lba + 450150 * 2) / 75;
lba -= s * 75;
f = lba + 450150 * 2;
}
return string.Format("{3}:{0:D2}:{1:D2}:{2:D2}", m, s, f, h);
}
}
}