mirror of
https://github.com/cyanfish/naps2.git
synced 2024-10-04 11:27:08 +03:00
Fix ninject weirdness by using a ScannedImageRenderer class
This commit is contained in:
parent
c6866782a6
commit
6d0d5a7b1c
@ -20,16 +20,20 @@ namespace NAPS2.ImportExport.Images
|
||||
private readonly ImageSettingsContainer imageSettingsContainer;
|
||||
private readonly IOverwritePrompt overwritePrompt;
|
||||
private readonly ThreadFactory threadFactory;
|
||||
private readonly ScannedImageRenderer scannedImageRenderer;
|
||||
private readonly TiffHelper tiffHelper;
|
||||
|
||||
private bool cancel;
|
||||
private Thread thread;
|
||||
|
||||
public SaveImagesOperation(FileNamePlaceholders fileNamePlaceholders, ImageSettingsContainer imageSettingsContainer, IOverwritePrompt overwritePrompt, ThreadFactory threadFactory)
|
||||
public SaveImagesOperation(FileNamePlaceholders fileNamePlaceholders, ImageSettingsContainer imageSettingsContainer, IOverwritePrompt overwritePrompt, ThreadFactory threadFactory, ScannedImageRenderer scannedImageRenderer, TiffHelper tiffHelper)
|
||||
{
|
||||
this.fileNamePlaceholders = fileNamePlaceholders;
|
||||
this.imageSettingsContainer = imageSettingsContainer;
|
||||
this.overwritePrompt = overwritePrompt;
|
||||
this.threadFactory = threadFactory;
|
||||
this.scannedImageRenderer = scannedImageRenderer;
|
||||
this.tiffHelper = tiffHelper;
|
||||
|
||||
ProgressTitle = MiscResources.SaveImagesProgress;
|
||||
AllowCancel = true;
|
||||
@ -76,7 +80,7 @@ namespace NAPS2.ImportExport.Images
|
||||
}
|
||||
}
|
||||
Status.StatusText = string.Format(MiscResources.SavingFormat, Path.GetFileName(subFileName));
|
||||
Status.Success = TiffHelper.SaveMultipage(images, subFileName, j =>
|
||||
Status.Success = tiffHelper.SaveMultipage(images, subFileName, j =>
|
||||
{
|
||||
Status.CurrentProgress = j;
|
||||
InvokeStatusChanged();
|
||||
@ -109,7 +113,7 @@ namespace NAPS2.ImportExport.Images
|
||||
return;
|
||||
}
|
||||
}
|
||||
using (Bitmap baseImage = img.GetImage())
|
||||
using (Bitmap baseImage = scannedImageRenderer.Render(img))
|
||||
{
|
||||
if (images.Count == 1)
|
||||
{
|
||||
|
@ -9,9 +9,16 @@ using NAPS2.Util;
|
||||
|
||||
namespace NAPS2.ImportExport.Images
|
||||
{
|
||||
class TiffHelper
|
||||
public class TiffHelper
|
||||
{
|
||||
public static bool SaveMultipage(List<ScannedImage> images, string location, Func<int, bool> progressCallback)
|
||||
private readonly ScannedImageRenderer scannedImageRenderer;
|
||||
|
||||
public TiffHelper(ScannedImageRenderer scannedImageRenderer)
|
||||
{
|
||||
this.scannedImageRenderer = scannedImageRenderer;
|
||||
}
|
||||
|
||||
public bool SaveMultipage(List<ScannedImage> images, string location, Func<int, bool> progressCallback)
|
||||
{
|
||||
try
|
||||
{
|
||||
@ -30,7 +37,7 @@ namespace NAPS2.ImportExport.Images
|
||||
Encoder iparam = Encoder.Compression;
|
||||
var iparamPara = new EncoderParameter(iparam, (long)(EncoderValue.CompressionLZW));
|
||||
iparams.Param[0] = iparamPara;
|
||||
using (var bitmap = images[0].GetImage())
|
||||
using (var bitmap = scannedImageRenderer.Render(images[0]))
|
||||
{
|
||||
bitmap.Save(location, codecInfo, iparams);
|
||||
}
|
||||
@ -53,7 +60,7 @@ namespace NAPS2.ImportExport.Images
|
||||
encoderParams.Param[1] = SaveEncodeParam;
|
||||
|
||||
File.Delete(location);
|
||||
using (var bitmap0 = images[0].GetImage())
|
||||
using (var bitmap0 = scannedImageRenderer.Render(images[0]))
|
||||
{
|
||||
bitmap0.Save(location, codecInfo, encoderParams);
|
||||
|
||||
@ -74,7 +81,7 @@ namespace NAPS2.ImportExport.Images
|
||||
(long) EncoderValue.CompressionLZW);
|
||||
encoderParams.Param[0] = CompressionEncodeParam;
|
||||
encoderParams.Param[1] = SaveEncodeParam;
|
||||
using (var bitmap = images[i].GetImage())
|
||||
using (var bitmap = scannedImageRenderer.Render(images[i]))
|
||||
{
|
||||
bitmap0.SaveAdd(bitmap, encoderParams);
|
||||
}
|
||||
@ -95,7 +102,8 @@ namespace NAPS2.ImportExport.Images
|
||||
}
|
||||
|
||||
}
|
||||
private static ImageCodecInfo GetCodecForString(string type)
|
||||
|
||||
private ImageCodecInfo GetCodecForString(string type)
|
||||
{
|
||||
ImageCodecInfo[] info = ImageCodecInfo.GetImageEncoders();
|
||||
return info.FirstOrDefault(t => t.FormatDescription.Equals(type));
|
||||
|
@ -10,7 +10,6 @@ using NAPS2.Config;
|
||||
using NAPS2.Lang.Resources;
|
||||
using NAPS2.Ocr;
|
||||
using NAPS2.Scan;
|
||||
using NAPS2.Scan.Images;
|
||||
using NAPS2.Util;
|
||||
using NAPS2.WinForms;
|
||||
|
||||
@ -22,17 +21,15 @@ namespace NAPS2.ImportExport.Pdf
|
||||
private readonly IFormFactory formFactory;
|
||||
private readonly AppConfigManager appConfigManager;
|
||||
private readonly IErrorOutput errorOutput;
|
||||
private readonly ThumbnailRenderer thumbnailRenderer;
|
||||
|
||||
private readonly Lazy<byte[]> gsLibBytes;
|
||||
|
||||
public GhostscriptPdfRenderer(OcrDependencyManager ocrDependencyManager, IFormFactory formFactory, AppConfigManager appConfigManager, IErrorOutput errorOutput, ThumbnailRenderer thumbnailRenderer)
|
||||
public GhostscriptPdfRenderer(OcrDependencyManager ocrDependencyManager, IFormFactory formFactory, AppConfigManager appConfigManager, IErrorOutput errorOutput)
|
||||
{
|
||||
this.ocrDependencyManager = ocrDependencyManager;
|
||||
this.formFactory = formFactory;
|
||||
this.appConfigManager = appConfigManager;
|
||||
this.errorOutput = errorOutput;
|
||||
this.thumbnailRenderer = thumbnailRenderer;
|
||||
|
||||
gsLibBytes = new Lazy<byte[]>(() => File.ReadAllBytes(ocrDependencyManager.Components.Ghostscript921.Path));
|
||||
}
|
||||
|
@ -18,10 +18,12 @@ namespace NAPS2.ImportExport.Pdf
|
||||
public class PdfSharpExporter : IPdfExporter
|
||||
{
|
||||
private readonly IOcrEngine ocrEngine;
|
||||
private readonly ScannedImageRenderer scannedImageRenderer;
|
||||
|
||||
public PdfSharpExporter(IOcrEngine ocrEngine)
|
||||
public PdfSharpExporter(IOcrEngine ocrEngine, ScannedImageRenderer scannedImageRenderer)
|
||||
{
|
||||
this.ocrEngine = ocrEngine;
|
||||
this.scannedImageRenderer = scannedImageRenderer;
|
||||
}
|
||||
|
||||
public bool Export(string path, IEnumerable<ScannedImage> images, PdfSettings settings, string ocrLanguageCode, Func<int, bool> progressCallback)
|
||||
@ -93,7 +95,7 @@ namespace NAPS2.ImportExport.Pdf
|
||||
}
|
||||
else
|
||||
{
|
||||
using (Stream stream = image.GetImageStream())
|
||||
using (Stream stream = scannedImageRenderer.RenderToStream(image))
|
||||
using (var img = new Bitmap(stream))
|
||||
{
|
||||
if (!progressCallback(progress))
|
||||
@ -134,7 +136,7 @@ namespace NAPS2.ImportExport.Pdf
|
||||
return null;
|
||||
}
|
||||
|
||||
using (Stream stream = image.GetImageStream())
|
||||
using (Stream stream = scannedImageRenderer.RenderToStream(image))
|
||||
using (var img = new Bitmap(stream))
|
||||
{
|
||||
if (!progressCallback(progress))
|
||||
|
@ -21,12 +21,14 @@ namespace NAPS2.ImportExport.Pdf
|
||||
private readonly IErrorOutput errorOutput;
|
||||
private readonly IPdfPasswordProvider pdfPasswordProvider;
|
||||
private readonly ThumbnailRenderer thumbnailRenderer;
|
||||
private readonly ScannedImageRenderer scannedImageRenderer;
|
||||
|
||||
public PdfSharpImporter(IErrorOutput errorOutput, IPdfPasswordProvider pdfPasswordProvider, ThumbnailRenderer thumbnailRenderer)
|
||||
public PdfSharpImporter(IErrorOutput errorOutput, IPdfPasswordProvider pdfPasswordProvider, ThumbnailRenderer thumbnailRenderer, ScannedImageRenderer scannedImageRenderer)
|
||||
{
|
||||
this.errorOutput = errorOutput;
|
||||
this.pdfPasswordProvider = pdfPasswordProvider;
|
||||
this.thumbnailRenderer = thumbnailRenderer;
|
||||
this.scannedImageRenderer = scannedImageRenderer;
|
||||
}
|
||||
|
||||
public IEnumerable<ScannedImage> Import(string filePath, Func<int, int, bool> progressCallback)
|
||||
@ -144,7 +146,7 @@ namespace NAPS2.ImportExport.Pdf
|
||||
document.Save(pdfPath);
|
||||
|
||||
var image = ScannedImage.FromSinglePagePdf(pdfPath, false);
|
||||
using (var bitmap = image.GetImage())
|
||||
using (var bitmap = scannedImageRenderer.Render(image))
|
||||
{
|
||||
image.SetThumbnail(thumbnailRenderer.RenderThumbnail(bitmap));
|
||||
}
|
||||
|
@ -11,6 +11,13 @@ namespace NAPS2.ImportExport.Pdf
|
||||
{
|
||||
public class PrintDocumentPrinter : IScannedImagePrinter
|
||||
{
|
||||
private readonly ScannedImageRenderer scannedImageRenderer;
|
||||
|
||||
public PrintDocumentPrinter(ScannedImageRenderer scannedImageRenderer)
|
||||
{
|
||||
this.scannedImageRenderer = scannedImageRenderer;
|
||||
}
|
||||
|
||||
public bool PromptToPrint(List<ScannedImage> images, List<ScannedImage> selectedImages)
|
||||
{
|
||||
if (!images.Any())
|
||||
@ -65,7 +72,7 @@ namespace NAPS2.ImportExport.Pdf
|
||||
int i = 0;
|
||||
printDocument.PrintPage += (sender, e) =>
|
||||
{
|
||||
var image = imagesToPrint[i].GetImage();
|
||||
var image = scannedImageRenderer.Render(imagesToPrint[i]);
|
||||
try
|
||||
{
|
||||
var pb = e.PageBounds;
|
||||
|
@ -130,6 +130,7 @@
|
||||
<Compile Include="Ocr\PlatformSupport.cs" />
|
||||
<Compile Include="Scan\Images\AutoDeskew.cs" />
|
||||
<Compile Include="Operation\IOperationProgress.cs" />
|
||||
<Compile Include="Scan\Images\ScannedImageRenderer.cs" />
|
||||
<Compile Include="Util\DownloadFormat.cs" />
|
||||
<Compile Include="Util\DownloadInfo.cs" />
|
||||
<Compile Include="Ocr\Language.cs" />
|
||||
|
@ -17,14 +17,16 @@ namespace NAPS2.Scan.Images
|
||||
{
|
||||
private readonly ThreadFactory threadFactory;
|
||||
private readonly ThumbnailRenderer thumbnailRenderer;
|
||||
private readonly ScannedImageRenderer scannedImageRenderer;
|
||||
|
||||
private bool cancel;
|
||||
private Thread thread;
|
||||
|
||||
public DeskewOperation(ThreadFactory threadFactory, ThumbnailRenderer thumbnailRenderer)
|
||||
public DeskewOperation(ThreadFactory threadFactory, ThumbnailRenderer thumbnailRenderer, ScannedImageRenderer scannedImageRenderer)
|
||||
{
|
||||
this.threadFactory = threadFactory;
|
||||
this.thumbnailRenderer = thumbnailRenderer;
|
||||
this.scannedImageRenderer = scannedImageRenderer;
|
||||
|
||||
AllowCancel = true;
|
||||
}
|
||||
@ -47,7 +49,7 @@ namespace NAPS2.Scan.Images
|
||||
{
|
||||
return null;
|
||||
}
|
||||
Bitmap bitmap = img.GetImage();
|
||||
Bitmap bitmap = scannedImageRenderer.Render(img);
|
||||
try
|
||||
{
|
||||
if (cancel)
|
||||
|
@ -9,7 +9,8 @@ namespace NAPS2.Scan.Images
|
||||
{
|
||||
public class NullThumbnailRenderer : ThumbnailRenderer
|
||||
{
|
||||
public NullThumbnailRenderer(IUserConfigManager userConfigManager) : base(userConfigManager)
|
||||
public NullThumbnailRenderer(IUserConfigManager userConfigManager, ScannedImageRenderer scannedImageRenderer)
|
||||
: base(userConfigManager, scannedImageRenderer)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -23,8 +23,6 @@ namespace NAPS2.Scan.Images
|
||||
|
||||
private Bitmap thumbnail;
|
||||
|
||||
public static IPdfRenderer PdfRenderer { get; set; }
|
||||
|
||||
public static ScannedImage FromSinglePagePdf(string pdfPath, bool copy)
|
||||
{
|
||||
return new ScannedImage(pdfPath, copy);
|
||||
@ -76,27 +74,6 @@ namespace NAPS2.Scan.Images
|
||||
|
||||
public long Size => new FileInfo(recoveryImage.FilePath).Length;
|
||||
|
||||
public Bitmap GetImage()
|
||||
{
|
||||
var bitmap = recoveryImage.FileFormat == null
|
||||
? PdfRenderer.Render(recoveryImage.FilePath).Single()
|
||||
: new Bitmap(recoveryImage.FilePath);
|
||||
lock (transformList)
|
||||
{
|
||||
return Transform.PerformAll(bitmap, transformList);
|
||||
}
|
||||
}
|
||||
|
||||
public Stream GetImageStream()
|
||||
{
|
||||
using (var transformed = GetImage())
|
||||
{
|
||||
var stream = new MemoryStream();
|
||||
transformed.Save(stream, recoveryImage.FileFormat ?? (RecoveryIndexImage.HighQuality ? ImageFormat.Png : ImageFormat.Jpeg));
|
||||
return stream;
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
lock (this)
|
||||
|
44
NAPS2.Core/Scan/Images/ScannedImageRenderer.cs
Normal file
44
NAPS2.Core/Scan/Images/ScannedImageRenderer.cs
Normal file
@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using NAPS2.ImportExport.Pdf;
|
||||
using NAPS2.Recovery;
|
||||
using NAPS2.Scan.Images.Transforms;
|
||||
|
||||
namespace NAPS2.Scan.Images
|
||||
{
|
||||
public class ScannedImageRenderer
|
||||
{
|
||||
private readonly IPdfRenderer pdfRenderer;
|
||||
|
||||
public ScannedImageRenderer(IPdfRenderer pdfRenderer)
|
||||
{
|
||||
this.pdfRenderer = pdfRenderer;
|
||||
}
|
||||
|
||||
public Bitmap Render(ScannedImage image)
|
||||
{
|
||||
var bitmap = image.FileFormat == null
|
||||
? pdfRenderer.Render(image.RecoveryFilePath).Single()
|
||||
: new Bitmap(image.RecoveryFilePath);
|
||||
lock (image.RecoveryIndexImage.TransformList)
|
||||
{
|
||||
return Transform.PerformAll(bitmap, image.RecoveryIndexImage.TransformList);
|
||||
}
|
||||
}
|
||||
|
||||
public Stream RenderToStream(ScannedImage image)
|
||||
{
|
||||
using (var transformed = Render(image))
|
||||
{
|
||||
var stream = new MemoryStream();
|
||||
transformed.Save(stream, image.FileFormat ?? (image.RecoveryIndexImage.HighQuality ? ImageFormat.Png : ImageFormat.Jpeg));
|
||||
return stream;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -15,20 +15,22 @@ namespace NAPS2.Scan.Images
|
||||
public const int STEP_SIZE = 32;
|
||||
|
||||
private readonly IUserConfigManager userConfigManager;
|
||||
private readonly ScannedImageRenderer scannedImageRenderer;
|
||||
|
||||
public ThumbnailRenderer(IUserConfigManager userConfigManager)
|
||||
public ThumbnailRenderer(IUserConfigManager userConfigManager, ScannedImageRenderer scannedImageRenderer)
|
||||
{
|
||||
this.userConfigManager = userConfigManager;
|
||||
this.scannedImageRenderer = scannedImageRenderer;
|
||||
}
|
||||
|
||||
public Bitmap RenderThumbnail(ScannedImage scannedImage)
|
||||
{
|
||||
return RenderThumbnail(scannedImage.GetImage(), userConfigManager.Config.ThumbnailSize);
|
||||
return RenderThumbnail(scannedImageRenderer.Render(scannedImage), userConfigManager.Config.ThumbnailSize);
|
||||
}
|
||||
|
||||
public Bitmap RenderThumbnail(ScannedImage scannedImage, int size)
|
||||
{
|
||||
return RenderThumbnail(scannedImage.GetImage(), size);
|
||||
return RenderThumbnail(scannedImageRenderer.Render(scannedImage), size);
|
||||
}
|
||||
|
||||
public Bitmap RenderThumbnail(Bitmap b)
|
||||
|
@ -14,16 +14,18 @@ namespace NAPS2.WinForms
|
||||
{
|
||||
private readonly ChangeTracker changeTracker;
|
||||
private readonly ThumbnailRenderer thumbnailRenderer;
|
||||
private readonly ScannedImageRenderer scannedImageRenderer;
|
||||
|
||||
private Bitmap workingImage;
|
||||
private bool previewOutOfDate;
|
||||
private bool working;
|
||||
private Timer previewTimer;
|
||||
|
||||
public FBrightness(ChangeTracker changeTracker, ThumbnailRenderer thumbnailRenderer)
|
||||
public FBrightness(ChangeTracker changeTracker, ThumbnailRenderer thumbnailRenderer, ScannedImageRenderer scannedImageRenderer)
|
||||
{
|
||||
this.changeTracker = changeTracker;
|
||||
this.thumbnailRenderer = thumbnailRenderer;
|
||||
this.scannedImageRenderer = scannedImageRenderer;
|
||||
InitializeComponent();
|
||||
|
||||
BrightnessTransform = new BrightnessTransform();
|
||||
@ -66,7 +68,7 @@ namespace NAPS2.WinForms
|
||||
.Activate();
|
||||
Size = new Size(600, 600);
|
||||
|
||||
workingImage = Image.GetImage();
|
||||
workingImage = scannedImageRenderer.Render(Image);
|
||||
pictureBox.Image = (Bitmap)workingImage.Clone();
|
||||
UpdatePreviewBox();
|
||||
}
|
||||
|
@ -14,16 +14,18 @@ namespace NAPS2.WinForms
|
||||
{
|
||||
private readonly ChangeTracker changeTracker;
|
||||
private readonly ThumbnailRenderer thumbnailRenderer;
|
||||
private readonly ScannedImageRenderer scannedImageRenderer;
|
||||
|
||||
private Bitmap workingImage;
|
||||
private bool previewOutOfDate;
|
||||
private bool working;
|
||||
private Timer previewTimer;
|
||||
|
||||
public FContrast(ChangeTracker changeTracker, ThumbnailRenderer thumbnailRenderer)
|
||||
public FContrast(ChangeTracker changeTracker, ThumbnailRenderer thumbnailRenderer, ScannedImageRenderer scannedImageRenderer)
|
||||
{
|
||||
this.changeTracker = changeTracker;
|
||||
this.thumbnailRenderer = thumbnailRenderer;
|
||||
this.scannedImageRenderer = scannedImageRenderer;
|
||||
InitializeComponent();
|
||||
|
||||
ContrastTransform = new TrueContrastTransform();
|
||||
@ -66,7 +68,7 @@ namespace NAPS2.WinForms
|
||||
.Activate();
|
||||
Size = new Size(600, 600);
|
||||
|
||||
workingImage = Image.GetImage();
|
||||
workingImage = scannedImageRenderer.Render(Image);
|
||||
pictureBox.Image = (Bitmap)workingImage.Clone();
|
||||
UpdatePreviewBox();
|
||||
}
|
||||
|
@ -15,16 +15,18 @@ namespace NAPS2.WinForms
|
||||
{
|
||||
private readonly ChangeTracker changeTracker;
|
||||
private readonly ThumbnailRenderer thumbnailRenderer;
|
||||
private readonly ScannedImageRenderer scannedImageRenderer;
|
||||
|
||||
private Bitmap workingImage, workingImage2;
|
||||
private bool previewOutOfDate;
|
||||
private bool working;
|
||||
private Timer previewTimer;
|
||||
|
||||
public FCrop(ChangeTracker changeTracker, ThumbnailRenderer thumbnailRenderer)
|
||||
public FCrop(ChangeTracker changeTracker, ThumbnailRenderer thumbnailRenderer, ScannedImageRenderer scannedImageRenderer)
|
||||
{
|
||||
this.changeTracker = changeTracker;
|
||||
this.thumbnailRenderer = thumbnailRenderer;
|
||||
this.scannedImageRenderer = scannedImageRenderer;
|
||||
InitializeComponent();
|
||||
|
||||
CropTransform = new CropTransform();
|
||||
@ -77,8 +79,8 @@ namespace NAPS2.WinForms
|
||||
.Activate();
|
||||
Size = new Size(600, 600);
|
||||
|
||||
workingImage = Image.GetImage();
|
||||
workingImage2 = Image.GetImage();
|
||||
workingImage = scannedImageRenderer.Render(Image);
|
||||
workingImage2 = scannedImageRenderer.Render(Image);
|
||||
UpdateCropBounds();
|
||||
UpdatePreviewBox();
|
||||
|
||||
@ -199,7 +201,7 @@ namespace NAPS2.WinForms
|
||||
if (TransformMultiple)
|
||||
{
|
||||
// With multiple images, we need to have the transform scaled in case they're different sizes
|
||||
using (var referenceBitmap = Image.GetImage())
|
||||
using (var referenceBitmap = scannedImageRenderer.Render(Image))
|
||||
{
|
||||
foreach (var img in ImagesToTransform)
|
||||
{
|
||||
@ -220,7 +222,7 @@ namespace NAPS2.WinForms
|
||||
|
||||
private CropTransform ScaleCropTransform(ScannedImage img, Bitmap referenceBitmap)
|
||||
{
|
||||
using (var bitmap = img.GetImage())
|
||||
using (var bitmap = scannedImageRenderer.Render(Image))
|
||||
{
|
||||
double xScale = bitmap.Width / (double)referenceBitmap.Width,
|
||||
yScale = bitmap.Height / (double)referenceBitmap.Height;
|
||||
|
@ -48,6 +48,7 @@ namespace NAPS2.WinForms
|
||||
private readonly IUserConfigManager userConfigManager;
|
||||
private readonly KeyboardShortcutManager ksm;
|
||||
private readonly WinFormsExportHelper exportHelper;
|
||||
private readonly ScannedImageRenderer scannedImageRenderer;
|
||||
|
||||
#endregion
|
||||
|
||||
@ -64,7 +65,7 @@ namespace NAPS2.WinForms
|
||||
|
||||
#region Initialization and Culture
|
||||
|
||||
public FDesktop(StringWrapper stringWrapper, AppConfigManager appConfigManager, RecoveryManager recoveryManager, OcrDependencyManager ocrDependencyManager, IProfileManager profileManager, IScanPerformer scanPerformer, IScannedImagePrinter scannedImagePrinter, ChangeTracker changeTracker, StillImage stillImage, IOperationFactory operationFactory, IUserConfigManager userConfigManager, KeyboardShortcutManager ksm, ThumbnailRenderer thumbnailRenderer, WinFormsExportHelper exportHelper)
|
||||
public FDesktop(StringWrapper stringWrapper, AppConfigManager appConfigManager, RecoveryManager recoveryManager, OcrDependencyManager ocrDependencyManager, IProfileManager profileManager, IScanPerformer scanPerformer, IScannedImagePrinter scannedImagePrinter, ChangeTracker changeTracker, StillImage stillImage, IOperationFactory operationFactory, IUserConfigManager userConfigManager, KeyboardShortcutManager ksm, ThumbnailRenderer thumbnailRenderer, WinFormsExportHelper exportHelper, ScannedImageRenderer scannedImageRenderer)
|
||||
{
|
||||
this.stringWrapper = stringWrapper;
|
||||
this.appConfigManager = appConfigManager;
|
||||
@ -80,6 +81,7 @@ namespace NAPS2.WinForms
|
||||
this.ksm = ksm;
|
||||
this.thumbnailRenderer = thumbnailRenderer;
|
||||
this.exportHelper = exportHelper;
|
||||
this.scannedImageRenderer = scannedImageRenderer;
|
||||
InitializeComponent();
|
||||
|
||||
Shown += FDesktop_Shown;
|
||||
@ -1434,7 +1436,7 @@ namespace NAPS2.WinForms
|
||||
}
|
||||
}
|
||||
|
||||
private static IDataObject GetDataObjectForImages(IEnumerable<ScannedImage> images, bool includeBitmap)
|
||||
private IDataObject GetDataObjectForImages(IEnumerable<ScannedImage> images, bool includeBitmap)
|
||||
{
|
||||
var imageList = images.ToList();
|
||||
IDataObject ido = new DataObject();
|
||||
@ -1444,7 +1446,7 @@ namespace NAPS2.WinForms
|
||||
}
|
||||
if (includeBitmap)
|
||||
{
|
||||
using (var firstBitmap = imageList[0].GetImage())
|
||||
using (var firstBitmap = scannedImageRenderer.Render(imageList[0]))
|
||||
{
|
||||
ido.SetData(DataFormats.Bitmap, true, new Bitmap(firstBitmap));
|
||||
ido.SetData(DataFormats.Rtf, true, RtfEncodeImages(firstBitmap, imageList));
|
||||
@ -1454,7 +1456,7 @@ namespace NAPS2.WinForms
|
||||
return ido;
|
||||
}
|
||||
|
||||
private static string RtfEncodeImages(Bitmap firstBitmap, List<ScannedImage> images)
|
||||
private string RtfEncodeImages(Bitmap firstBitmap, List<ScannedImage> images)
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
sb.Append("{");
|
||||
@ -1464,7 +1466,7 @@ namespace NAPS2.WinForms
|
||||
}
|
||||
foreach (var img in images.Skip(1))
|
||||
{
|
||||
using (var bitmap = img.GetImage())
|
||||
using (var bitmap = scannedImageRenderer.Render(img))
|
||||
{
|
||||
if (!AppendRtfEncodedImage(bitmap, img.FileFormat, sb, true))
|
||||
{
|
||||
|
@ -16,16 +16,18 @@ namespace NAPS2.WinForms
|
||||
{
|
||||
private readonly ChangeTracker changeTracker;
|
||||
private readonly ThumbnailRenderer thumbnailRenderer;
|
||||
private readonly ScannedImageRenderer scannedImageRenderer;
|
||||
|
||||
private Bitmap workingImage;
|
||||
private bool previewOutOfDate;
|
||||
private bool working;
|
||||
private Timer previewTimer;
|
||||
|
||||
public FRotate(ChangeTracker changeTracker, ThumbnailRenderer thumbnailRenderer)
|
||||
public FRotate(ChangeTracker changeTracker, ThumbnailRenderer thumbnailRenderer, ScannedImageRenderer scannedImageRenderer)
|
||||
{
|
||||
this.changeTracker = changeTracker;
|
||||
this.thumbnailRenderer = thumbnailRenderer;
|
||||
this.scannedImageRenderer = scannedImageRenderer;
|
||||
InitializeComponent();
|
||||
|
||||
RotationTransform = new RotationTransform();
|
||||
@ -68,7 +70,7 @@ namespace NAPS2.WinForms
|
||||
.Activate();
|
||||
Size = new Size(600, 600);
|
||||
|
||||
workingImage = Image.GetImage();
|
||||
workingImage = scannedImageRenderer.Render(Image);
|
||||
pictureBox.Image = (Bitmap)workingImage.Clone();
|
||||
txtAngle.Text += '\u00B0';
|
||||
UpdatePreviewBox();
|
||||
|
@ -42,13 +42,15 @@ namespace NAPS2.WinForms
|
||||
private readonly IOperationFactory operationFactory;
|
||||
private readonly WinFormsExportHelper exportHelper;
|
||||
private readonly AppConfigManager appConfigManager;
|
||||
private readonly ScannedImageRenderer scannedImageRenderer;
|
||||
|
||||
public FViewer(ChangeTracker changeTracker, IOperationFactory operationFactory, WinFormsExportHelper exportHelper, AppConfigManager appConfigManager)
|
||||
public FViewer(ChangeTracker changeTracker, IOperationFactory operationFactory, WinFormsExportHelper exportHelper, AppConfigManager appConfigManager, ScannedImageRenderer scannedImageRenderer)
|
||||
{
|
||||
this.changeTracker = changeTracker;
|
||||
this.operationFactory = operationFactory;
|
||||
this.exportHelper = exportHelper;
|
||||
this.appConfigManager = appConfigManager;
|
||||
this.scannedImageRenderer = scannedImageRenderer;
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
@ -60,7 +62,7 @@ namespace NAPS2.WinForms
|
||||
|
||||
protected override void OnLoad(object sender, EventArgs e)
|
||||
{
|
||||
tiffViewer1.Image = ImageList.Images[ImageIndex].GetImage();
|
||||
tiffViewer1.Image = scannedImageRenderer.Render(ImageList.Images[ImageIndex]);
|
||||
tbPageCurrent.Text = (ImageIndex + 1).ToString(CultureInfo.InvariantCulture);
|
||||
lblPageTotal.Text = string.Format(MiscResources.OfN, ImageList.Images.Count);
|
||||
}
|
||||
@ -80,7 +82,7 @@ namespace NAPS2.WinForms
|
||||
private void UpdateImage()
|
||||
{
|
||||
tiffViewer1.Image.Dispose();
|
||||
tiffViewer1.Image = ImageList.Images[ImageIndex].GetImage();
|
||||
tiffViewer1.Image = scannedImageRenderer.Render(ImageList.Images[ImageIndex]);
|
||||
}
|
||||
|
||||
protected override void Dispose(bool disposing)
|
||||
|
@ -17,7 +17,6 @@ namespace NAPS2.DI.EntryPoints
|
||||
public static void Run(string[] args)
|
||||
{
|
||||
var kernel = new StandardKernel(new CommonModule(), new WinFormsModule());
|
||||
ScannedImage.PdfRenderer = kernel.Get<GhostscriptPdfRenderer>();
|
||||
|
||||
var lifecycle = kernel.Get<Lifecycle>();
|
||||
lifecycle.ParseArgs(args);
|
||||
|
@ -32,6 +32,7 @@ namespace NAPS2.DI.Modules
|
||||
Bind<IScannedImageImporter>().To<ScannedImageImporter>();
|
||||
Bind<IPdfImporter>().To<PdfSharpImporter>();
|
||||
Bind<IImageImporter>().To<ImageImporter>();
|
||||
Bind<IPdfRenderer>().To<GhostscriptPdfRenderer>();
|
||||
|
||||
// Export
|
||||
Bind<IPdfExporter>().To<PdfSharpExporter>();
|
||||
|
Loading…
Reference in New Issue
Block a user