From e1243a1ea38a6aa11f616735f0ee70a5c1b1d6fd Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sat, 16 Jan 2016 03:03:29 +0000 Subject: [PATCH] Added static method to get standard dimensions from disk types. --- DiscImageChef.Metadata/ChangeLog | 7 + DiscImageChef.Metadata/Dimensions.cs | 185 ++++++++++++++++++ .../DiscImageChef.Metadata.csproj | 1 + DiscImageChef/ChangeLog | 6 + DiscImageChef/Commands/CreateSidecar.cs | 49 +---- 5 files changed, 200 insertions(+), 48 deletions(-) create mode 100644 DiscImageChef.Metadata/Dimensions.cs diff --git a/DiscImageChef.Metadata/ChangeLog b/DiscImageChef.Metadata/ChangeLog index a235b6ae9..0208e43f5 100644 --- a/DiscImageChef.Metadata/ChangeLog +++ b/DiscImageChef.Metadata/ChangeLog @@ -1,3 +1,10 @@ +2016-01-16 Natalia Portillo + + * Dimensions.cs: + * DiscImageChef.Metadata.csproj: + Added static method to get standard dimensions from disk + types. + 2015-12-31 Natalia Portillo * DiskType.cs: diff --git a/DiscImageChef.Metadata/Dimensions.cs b/DiscImageChef.Metadata/Dimensions.cs new file mode 100644 index 000000000..1c4afc624 --- /dev/null +++ b/DiscImageChef.Metadata/Dimensions.cs @@ -0,0 +1,185 @@ +// /*************************************************************************** +// The Disc Image Chef +// ---------------------------------------------------------------------------- +// +// Filename : Dimensions.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 . +// +// ---------------------------------------------------------------------------- +// Copyright (C) 2011-2015 Claunia.com +// ****************************************************************************/ +// //$Id$ +using System; +using Schemas; + +namespace DiscImageChef.Metadata +{ + public static class Dimensions + { + public static DimensionsType DimensionsFromDiskType(CommonTypes.DiskType dskType) + { + DimensionsType dmns = new DimensionsType(); + + switch (dskType) + { + #region 5.25" floppy disk + case DiscImageChef.CommonTypes.DiskType.Apple32SS: + case DiscImageChef.CommonTypes.DiskType.Apple32DS: + case DiscImageChef.CommonTypes.DiskType.Apple33SS: + case DiscImageChef.CommonTypes.DiskType.Apple33DS: + case DiscImageChef.CommonTypes.DiskType.AppleFileWare: + case DiscImageChef.CommonTypes.DiskType.DOS_525_SS_DD_8: + case DiscImageChef.CommonTypes.DiskType.DOS_525_SS_DD_9: + case DiscImageChef.CommonTypes.DiskType.DOS_525_DS_DD_8: + case DiscImageChef.CommonTypes.DiskType.DOS_525_DS_DD_9: + case DiscImageChef.CommonTypes.DiskType.DOS_525_HD: + case DiscImageChef.CommonTypes.DiskType.XDF_525: + case DiscImageChef.CommonTypes.DiskType.ACORN_525_SS_SD_40: + case DiscImageChef.CommonTypes.DiskType.ACORN_525_SS_SD_80: + case DiscImageChef.CommonTypes.DiskType.ACORN_525_SS_DD_40: + case DiscImageChef.CommonTypes.DiskType.ACORN_525_SS_DD_80: + case DiscImageChef.CommonTypes.DiskType.ACORN_525_DS_DD: + case DiscImageChef.CommonTypes.DiskType.ATARI_525_SD: + case DiscImageChef.CommonTypes.DiskType.ATARI_525_ED: + case DiscImageChef.CommonTypes.DiskType.ATARI_525_DD: + case DiscImageChef.CommonTypes.DiskType.CBM_1540: + case DiscImageChef.CommonTypes.DiskType.ECMA_66: + case DiscImageChef.CommonTypes.DiskType.ECMA_70: + case DiscImageChef.CommonTypes.DiskType.NEC_525_HD: + case DiscImageChef.CommonTypes.DiskType.ECMA_78: + case DiscImageChef.CommonTypes.DiskType.ECMA_78_2: + case DiscImageChef.CommonTypes.DiskType.ECMA_99_8: + case DiscImageChef.CommonTypes.DiskType.ECMA_99_15: + case DiscImageChef.CommonTypes.DiskType.ECMA_99_26: + case DiscImageChef.CommonTypes.DiskType.FDFORMAT_525_DD: + case DiscImageChef.CommonTypes.DiskType.FDFORMAT_525_HD: + case DiscImageChef.CommonTypes.DiskType.SHARP_525: + // According to ECMA-99 et al + dmns.Height = 133.3; + dmns.HeightSpecified = true; + dmns.Width = 133.3; + dmns.WidthSpecified = true; + dmns.Thickness = 1.65; + return dmns; + #endregion 5.25" floppy disk + + #region 3.5" floppy disk + case DiscImageChef.CommonTypes.DiskType.AppleSonySS: + case DiscImageChef.CommonTypes.DiskType.AppleSonyDS: + case DiscImageChef.CommonTypes.DiskType.DOS_35_SS_DD_8: + case DiscImageChef.CommonTypes.DiskType.DOS_35_SS_DD_9: + case DiscImageChef.CommonTypes.DiskType.DOS_35_DS_DD_8: + case DiscImageChef.CommonTypes.DiskType.DOS_35_DS_DD_9: + case DiscImageChef.CommonTypes.DiskType.DOS_35_HD: + case DiscImageChef.CommonTypes.DiskType.DOS_35_ED: + case DiscImageChef.CommonTypes.DiskType.DMF: + case DiscImageChef.CommonTypes.DiskType.DMF_82: + case DiscImageChef.CommonTypes.DiskType.XDF_35: + case DiscImageChef.CommonTypes.DiskType.ACORN_35_DS_DD: + case DiscImageChef.CommonTypes.DiskType.CBM_35_DD: + case DiscImageChef.CommonTypes.DiskType.CBM_AMIGA_35_DD: + case DiscImageChef.CommonTypes.DiskType.CBM_AMIGA_35_HD: + case DiscImageChef.CommonTypes.DiskType.ECMA_100: + case DiscImageChef.CommonTypes.DiskType.ECMA_125: + case DiscImageChef.CommonTypes.DiskType.ECMA_147: + case DiscImageChef.CommonTypes.DiskType.FDFORMAT_35_DD: + case DiscImageChef.CommonTypes.DiskType.FDFORMAT_35_HD: + case DiscImageChef.CommonTypes.DiskType.NEC_35_HD_8: + case DiscImageChef.CommonTypes.DiskType.NEC_35_HD_15: + case DiscImageChef.CommonTypes.DiskType.SHARP_35: + // According to ECMA-100 et al + dmns.Height = 94; + dmns.HeightSpecified = true; + dmns.Width = 90; + dmns.WidthSpecified = true; + dmns.Thickness = 3.3; + return dmns; + #endregion 3.5" floppy disk + + #region 8" floppy disk + case DiscImageChef.CommonTypes.DiskType.IBM23FD: + case DiscImageChef.CommonTypes.DiskType.IBM33FD_128: + case DiscImageChef.CommonTypes.DiskType.IBM33FD_256: + case DiscImageChef.CommonTypes.DiskType.IBM33FD_512: + case DiscImageChef.CommonTypes.DiskType.IBM43FD_128: + case DiscImageChef.CommonTypes.DiskType.IBM43FD_256: + case DiscImageChef.CommonTypes.DiskType.IBM53FD_256: + case DiscImageChef.CommonTypes.DiskType.IBM53FD_512: + case DiscImageChef.CommonTypes.DiskType.IBM53FD_1024: + case DiscImageChef.CommonTypes.DiskType.RX01: + case DiscImageChef.CommonTypes.DiskType.RX02: + case DiscImageChef.CommonTypes.DiskType.NEC_8_SD: + case DiscImageChef.CommonTypes.DiskType.NEC_8_DD: + case DiscImageChef.CommonTypes.DiskType.ECMA_54: + case DiscImageChef.CommonTypes.DiskType.ECMA_59: + case DiscImageChef.CommonTypes.DiskType.ECMA_69_8: + case DiscImageChef.CommonTypes.DiskType.ECMA_69_15: + case DiscImageChef.CommonTypes.DiskType.ECMA_69_26: + // According to ECMA-59 et al + dmns.Height = 203.2; + dmns.HeightSpecified = true; + dmns.Width = 203.2; + dmns.WidthSpecified = true; + dmns.Thickness = 1.65; + return dmns; + #endregion 8" floppy disk + + #region 5.25" magneto optical + case DiscImageChef.CommonTypes.DiskType.ECMA_183_512: + case DiscImageChef.CommonTypes.DiskType.ECMA_183_1024: + case DiscImageChef.CommonTypes.DiskType.ECMA_184_512: + case DiscImageChef.CommonTypes.DiskType.ECMA_184_1024: + // According to ECMA-183 et al + dmns.Height = 153; + dmns.HeightSpecified = true; + dmns.Width = 135; + dmns.WidthSpecified = true; + dmns.Thickness = 11; + return dmns; + #endregion 5.25" magneto optical + + #region 3.5" magneto optical + case DiscImageChef.CommonTypes.DiskType.ECMA_154: + case DiscImageChef.CommonTypes.DiskType.ECMA_201: + // According to ECMA-154 et al + dmns.Height = 94; + dmns.HeightSpecified = true; + dmns.Width = 90; + dmns.WidthSpecified = true; + dmns.Thickness = 6; + return dmns; + #endregion 3.5" magneto optical + + default: + return null; + } + } + } +} + diff --git a/DiscImageChef.Metadata/DiscImageChef.Metadata.csproj b/DiscImageChef.Metadata/DiscImageChef.Metadata.csproj index 93a25dfcf..bf66571bc 100644 --- a/DiscImageChef.Metadata/DiscImageChef.Metadata.csproj +++ b/DiscImageChef.Metadata/DiscImageChef.Metadata.csproj @@ -39,6 +39,7 @@ cicm.cs + diff --git a/DiscImageChef/ChangeLog b/DiscImageChef/ChangeLog index 1c630f10a..776cd2e9d 100644 --- a/DiscImageChef/ChangeLog +++ b/DiscImageChef/ChangeLog @@ -1,3 +1,9 @@ +2016-01-16 Natalia Portillo + + * Commands/CreateSidecar.cs: + Added static method to get standard dimensions from disk + types. + 2016-01-15 Natalia Portillo * Commands/DeviceInfo.cs: diff --git a/DiscImageChef/Commands/CreateSidecar.cs b/DiscImageChef/Commands/CreateSidecar.cs index 1790acb66..785b4c149 100644 --- a/DiscImageChef/Commands/CreateSidecar.cs +++ b/DiscImageChef/Commands/CreateSidecar.cs @@ -1153,54 +1153,7 @@ namespace DiscImageChef.Commands sidecar.BlockMedia[0].DiskType = dskType; sidecar.BlockMedia[0].DiskSubType = dskSubType; - switch(dskType) - { - case "8\" floppy": - // According to ECMA-59 et al - sidecar.BlockMedia[0].Dimensions = new DimensionsType(); - sidecar.BlockMedia[0].Dimensions.Height = 203.2; - sidecar.BlockMedia[0].Dimensions.HeightSpecified = true;; - sidecar.BlockMedia[0].Dimensions.Width = 203.2; - sidecar.BlockMedia[0].Dimensions.WidthSpecified = true;; - sidecar.BlockMedia[0].Dimensions.Thickness = 1.65; - break; - case "5.25\" floppy": - // According to ECMA-99 et al - sidecar.BlockMedia[0].Dimensions = new DimensionsType(); - sidecar.BlockMedia[0].Dimensions.Height = 133.3; - sidecar.BlockMedia[0].Dimensions.HeightSpecified = true;; - sidecar.BlockMedia[0].Dimensions.Width = 133.3; - sidecar.BlockMedia[0].Dimensions.WidthSpecified = true;; - sidecar.BlockMedia[0].Dimensions.Thickness = 1.65; - break; - case "3.5\" floppy": - // According to ECMA-100 et al - sidecar.BlockMedia[0].Dimensions = new DimensionsType(); - sidecar.BlockMedia[0].Dimensions.Height = 94; - sidecar.BlockMedia[0].Dimensions.HeightSpecified = true;; - sidecar.BlockMedia[0].Dimensions.Width = 90; - sidecar.BlockMedia[0].Dimensions.WidthSpecified = true;; - sidecar.BlockMedia[0].Dimensions.Thickness = 3.3; - break; - case "5.25\" magneto-optical": - // According to ECMA-183 et al - sidecar.BlockMedia[0].Dimensions = new DimensionsType(); - sidecar.BlockMedia[0].Dimensions.Height = 153; - sidecar.BlockMedia[0].Dimensions.HeightSpecified = true;; - sidecar.BlockMedia[0].Dimensions.Width = 135; - sidecar.BlockMedia[0].Dimensions.WidthSpecified = true;; - sidecar.BlockMedia[0].Dimensions.Thickness = 11; - break; - case "3.5\" magneto-optical": - // According to ECMA-154 et al - sidecar.BlockMedia[0].Dimensions = new DimensionsType(); - sidecar.BlockMedia[0].Dimensions.Height = 94; - sidecar.BlockMedia[0].Dimensions.HeightSpecified = true;; - sidecar.BlockMedia[0].Dimensions.Width = 90; - sidecar.BlockMedia[0].Dimensions.WidthSpecified = true;; - sidecar.BlockMedia[0].Dimensions.Thickness = 6; - break; - } + sidecar.BlockMedia[0].Dimensions = Metadata.Dimensions.DimensionsFromDiskType(_imageFormat.ImageInfo.diskType); sidecar.BlockMedia[0].LogicalBlocks = (long)_imageFormat.GetSectors(); sidecar.BlockMedia[0].LogicalBlockSize = (int)_imageFormat.GetSectorSize();