mirror of
https://github.com/cyanfish/naps2.git
synced 2024-09-19 03:37:38 +03:00
Move BackingStorageType to StorageManager
This commit is contained in:
parent
4ad5d5c1ed
commit
a2f0933a97
@ -45,7 +45,7 @@ namespace NAPS2.DI
|
||||
var recoveryFolderPath = Path.Combine(Paths.Recovery, Path.GetRandomFileName());
|
||||
var rsm = new RecoveryStorageManager(recoveryFolderPath);
|
||||
FileStorageManager.Current = rsm;
|
||||
ScannedImage.ConfigureBackingStorage<FileStorage>();
|
||||
StorageManager.ConfigureBackingStorage<FileStorage>();
|
||||
StorageManager.ImageMetadataFactory = rsm;
|
||||
}
|
||||
}
|
||||
|
@ -20,7 +20,7 @@ namespace NAPS2.Sdk.Samples
|
||||
// This will put files in the system temp folder by default, which can be
|
||||
// overriden by changing FileStorageManager.Current.
|
||||
// TODO: Probably this should go on StorageManager? It's weird to have to remember what's where
|
||||
ScannedImage.ConfigureBackingStorage<FileStorage>();
|
||||
StorageManager.ConfigureBackingStorage<FileStorage>();
|
||||
|
||||
IScanDriver driver = new WiaScanDriver();
|
||||
ScanDevice device = driver.GetDeviceList().First();
|
||||
|
@ -85,7 +85,7 @@ namespace NAPS2.Sdk.Tests.Worker
|
||||
{
|
||||
// TODO: More tests, verifying correct serialization and using RecoveryStorageManager
|
||||
// TODO: Also check correct error handling
|
||||
ScannedImage.ConfigureBackingStorage<FileStorage>();
|
||||
StorageManager.ConfigureBackingStorage<FileStorage>();
|
||||
try
|
||||
{
|
||||
var twainWrapper = new TwainWrapperMockScanner
|
||||
@ -109,7 +109,7 @@ namespace NAPS2.Sdk.Tests.Worker
|
||||
}
|
||||
finally
|
||||
{
|
||||
ScannedImage.ConfigureBackingStorage<GdiImage>();
|
||||
StorageManager.ConfigureBackingStorage<GdiImage>();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -12,13 +12,6 @@ namespace NAPS2.Images
|
||||
{
|
||||
public class ScannedImage : IDisposable
|
||||
{
|
||||
public static void ConfigureBackingStorage<TStorage>() where TStorage : IStorage
|
||||
{
|
||||
BackingStorageType = typeof(TStorage);
|
||||
}
|
||||
|
||||
public static Type BackingStorageType { get; private set; } = typeof(IStorage);
|
||||
|
||||
private IImage thumbnail;
|
||||
private int thumbnailState;
|
||||
private int transformState;
|
||||
@ -32,21 +25,21 @@ namespace NAPS2.Images
|
||||
|
||||
public ScannedImage(IStorage storage, StorageConvertParams convertParams)
|
||||
{
|
||||
BackingStorage = StorageManager.Convert(storage, BackingStorageType, convertParams);
|
||||
BackingStorage = StorageManager.ConvertToBacking(storage, convertParams);
|
||||
Metadata = StorageManager.ImageMetadataFactory.CreateMetadata(BackingStorage);
|
||||
Metadata.Commit();
|
||||
}
|
||||
|
||||
public ScannedImage(IStorage storage, IImageMetadata metadata, StorageConvertParams convertParams)
|
||||
{
|
||||
BackingStorage = StorageManager.Convert(storage, BackingStorageType, convertParams);
|
||||
BackingStorage = StorageManager.ConvertToBacking(storage, convertParams);
|
||||
Metadata = metadata;
|
||||
}
|
||||
|
||||
public ScannedImage(IStorage storage, ScanBitDepth bitDepth, bool highQuality, int quality)
|
||||
{
|
||||
var convertParams = new StorageConvertParams { Lossless = highQuality, LossyQuality = quality };
|
||||
BackingStorage = StorageManager.Convert(storage, BackingStorageType, convertParams);
|
||||
BackingStorage = StorageManager.ConvertToBacking(storage, convertParams);
|
||||
Metadata = StorageManager.ImageMetadataFactory.CreateMetadata(BackingStorage);
|
||||
// TODO: Is this stuff really needed in metadata?
|
||||
Metadata.BitDepth = bitDepth;
|
||||
|
@ -28,6 +28,13 @@ namespace NAPS2.Images.Storage
|
||||
|
||||
public static Type ImageType { get; private set; }
|
||||
|
||||
public static void ConfigureBackingStorage<TStorage>() where TStorage : IStorage
|
||||
{
|
||||
BackingStorageType = typeof(TStorage);
|
||||
}
|
||||
|
||||
public static Type BackingStorageType { get; private set; } = typeof(IStorage);
|
||||
|
||||
public static IImageFactory ImageFactory => ImageFactories.Get(ImageType) ?? throw new InvalidOperationException($"No factory has been registered for the image type {ImageType.FullName}.");
|
||||
|
||||
private static readonly Dictionary<Type, IImageFactory> ImageFactories = new Dictionary<Type, IImageFactory>();
|
||||
@ -63,6 +70,11 @@ namespace NAPS2.Images.Storage
|
||||
return (IImage)Convert(storage, ImageType, convertParams);
|
||||
}
|
||||
|
||||
public static IStorage ConvertToBacking(IStorage storage, StorageConvertParams convertParams)
|
||||
{
|
||||
return Convert(storage, BackingStorageType, convertParams);
|
||||
}
|
||||
|
||||
public static TStorage Convert<TStorage>(IStorage storage)
|
||||
{
|
||||
return (TStorage)Convert(storage, typeof(TStorage), new StorageConvertParams());
|
||||
|
Loading…
Reference in New Issue
Block a user