From d2ab7bfce6f459ceceae11ec2051f2ce4349d4c2 Mon Sep 17 00:00:00 2001 From: Maddo Date: Thu, 5 Oct 2017 14:16:43 +0200 Subject: [PATCH] Cancellazione Task --- CatalogLib/ImageCreator.cs | 2 +- CatalogLib/ImgSharpCreator.cs | 82 +++++++++++++++++++----- CatalogLib/PicSettings.cs | 38 ++++++++--- WPFCatalog/MainWindow.xaml | 12 ++-- WPFCatalog/MainWindowViewModel.cs | 102 +++++++++++++++++++++++++----- 5 files changed, 189 insertions(+), 47 deletions(-) diff --git a/CatalogLib/ImageCreator.cs b/CatalogLib/ImageCreator.cs index d338c95..869544b 100644 --- a/CatalogLib/ImageCreator.cs +++ b/CatalogLib/ImageCreator.cs @@ -394,7 +394,7 @@ namespace CatalogLib } - switch (_picSettings.Posizione.ToUpper()) + switch (_picSettings.TextPosition.ToString().ToUpper()) { case "ALTO": yPosFromBottom1 = _picSettings.Margine; diff --git a/CatalogLib/ImgSharpCreator.cs b/CatalogLib/ImgSharpCreator.cs index 5f8ac41..18191e1 100644 --- a/CatalogLib/ImgSharpCreator.cs +++ b/CatalogLib/ImgSharpCreator.cs @@ -23,7 +23,16 @@ namespace CatalogLib { public class ImgSharpCreator : IImageProcessor { + private Image _logo; + public ImgSharpCreator() + { + if (!PicSettings.Instance.EnableLogo) return; + if (string.IsNullOrWhiteSpace(PicSettings.Instance.LogoPath)) return; + if (!File.Exists(PicSettings.Instance.LogoPath)) return; + _logo = Image.Load(PicSettings.Instance.LogoPath); + + } private FileInfo _currentFile; public void Start(FileInfo workFile) { @@ -141,7 +150,7 @@ namespace CatalogLib //var fff = FontCollection.SystemFonts.Find(PicSettings.Instance.NomeFont); //var font = new Font(fff, (float)PicSettings.Instance.DimensioneFont, FontStyle.Regular); //image.DrawText("sssssssssssssssssssssssssssssssssssssssssssssss", font, Color.Black, new Vector2(200, 200)); - image.Save(Path.Combine(PicSettings.Instance.DirectoryDestinazione, workFile.Name), new JpegEncoder(){Quality = PicSettings.Instance.CompressioneJpeg}); + image.Save(Path.Combine(PicSettings.Instance.DirectoryDestinazione, workFile.Name), new JpegEncoder() { Quality = PicSettings.Instance.CompressioneJpeg }); //image.Resize(200, 200).Save(""); MaddoLogger.Log("Saved Image: {0} to: {1}", workFile.FullName, Path.Combine(PicSettings.Instance.DirectoryDestinazione, workFile.Name)); @@ -201,7 +210,7 @@ namespace CatalogLib throw new ArgumentOutOfRangeException(); } // todo calcolare ridimensionamento - var size = new Vector2(); + var size = new Size(); if (PicSettings.Instance.FotoMantieniDimensioni) { @@ -213,15 +222,15 @@ namespace CatalogLib if (image.Width > image.Height) { // larghezza è il lato lungo - size = GetResizeDimensions(new Vector2(image.Width, image.Height), - new Vector2(PicSettings.Instance.FotoLarghezza, PicSettings.Instance.FotoAltezza), + size = GetResizeDimensions(new Size(image.Width, image.Height), + new Size(PicSettings.Instance.FotoLarghezza, PicSettings.Instance.FotoAltezza), true); } else { // altezza è il lato lungo - size = GetResizeDimensions(new Vector2(image.Width, image.Height), - new Vector2(PicSettings.Instance.FotoLarghezza, PicSettings.Instance.FotoAltezza), + size = GetResizeDimensions(new Size(image.Width, image.Height), + new Size(PicSettings.Instance.FotoLarghezza, PicSettings.Instance.FotoAltezza), false); } break; @@ -229,24 +238,24 @@ namespace CatalogLib if (image.Width > image.Height) { // larghezza è il lato lungo - size = GetResizeDimensions(new Vector2(image.Width, image.Height), - new Vector2(PicSettings.Instance.FotoLarghezza, PicSettings.Instance.FotoAltezza), + size = GetResizeDimensions(new Size(image.Width, image.Height), + new Size(PicSettings.Instance.FotoLarghezza, PicSettings.Instance.FotoAltezza), false); } else { // altezza è il lato lungo - size = GetResizeDimensions(new Vector2(image.Width, image.Height), - new Vector2(PicSettings.Instance.FotoLarghezza, PicSettings.Instance.FotoAltezza), + size = GetResizeDimensions(new Size(image.Width, image.Height), + new Size(PicSettings.Instance.FotoLarghezza, PicSettings.Instance.FotoAltezza), true); } break; default: throw new ArgumentOutOfRangeException(); - + } - image.Mutate(x => x.Resize((int)Math.Round(size.X), (int)Math.Round(size.Y), resampler)); + image.Mutate(x => x.Resize((size.Width), (size.Height), resampler)); //Width Formula: //original height / original width * new width = new height @@ -261,15 +270,15 @@ namespace CatalogLib } - private Vector2 GetResizeDimensions(Vector2 originalSize, Vector2 newSize, bool isWidth) + private Size GetResizeDimensions(Size originalSize, Size newSize, bool isWidth) { if (isWidth) { - return new Vector2(newSize.X, originalSize.Y / originalSize.X * newSize.X); + return new Size(newSize.Width, originalSize.Height / originalSize.Width * newSize.Height); } else { - return new Vector2(originalSize.X / originalSize.Y * newSize.Y, newSize.Y); + return new Size(originalSize.Width / originalSize.Height * newSize.Height, newSize.Height); } } @@ -464,6 +473,49 @@ namespace CatalogLib } + private void AddLogo(Image image) + { + //if (string.IsNullOrWhiteSpace(PicSettings.Instance.LogoPath)) return; + //if (!File.Exists(PicSettings.Instance.LogoPath)) return; + //using (Image logo = Image.Load(PicSettings.Instance.LogoPath)) + //{ + // Size size = new Size(); + // Point location = new Point(); + // image.Mutate(x => x.DrawImage(logo, size, location, new GraphicsOptions() + // { + + // })); + + //} + + if (_logo != null) + { + var width = PicSettings.Instance.LogoWidth; + var height = PicSettings.Instance.LogoHeight; + var fattoreAlt = _logo.Height / height; + var fattoreLarg = _logo.Width / width; + var nuovaSize = new Size(); + + nuovaSize = GetResizeDimensions(new Size(_logo.Width, _logo.Height), new Size(width, height), fattoreLarg > fattoreAlt); + //todo riguardare perché non torna cosa ho fatto + + int margineUsato; + int margineL; + bool inPercentualeL; + + inPercentualeL = PicSettings.Instance.LogoMargin.EndsWith("%"); + if (inPercentualeL) + { margineL = int.Parse(PicSettings.Instance.LogoMargin.Replace("%", ""));} + else + { + margineL = int.Parse(PicSettings.Instance.LogoMargin); + } + + + } + + } + private void WriteTextFixed(Image image) { var fo = SixLabors.Fonts.SystemFonts.Find("Microsoft Sans Serif"); diff --git a/CatalogLib/PicSettings.cs b/CatalogLib/PicSettings.cs index 1e4361c..62b34cc 100644 --- a/CatalogLib/PicSettings.cs +++ b/CatalogLib/PicSettings.cs @@ -151,10 +151,10 @@ namespace CatalogLib float fl = 0; SetFloat(key, float.TryParse(_settingsDict[key].ToString(), out f) ? fl : defaultValue); - return (float) _settingsDict[key]; + return (float)_settingsDict[key]; } - + public T Get(string key, T defaultValue) { @@ -220,8 +220,8 @@ namespace CatalogLib public bool DirAggiornaSottoDirectory { - get { return this.GetBool("DirAggiornaSottoDirectory", true); } - set { this.SetBool("DirAggiornaSottoDirectory", value); } + get => this.GetBool("DirAggiornaSottoDirectory", true); + set => this.SetBool("DirAggiornaSottoDirectory", value); } public bool Grassetto @@ -313,7 +313,9 @@ namespace CatalogLib set { SetString("DirDestinazione", value); } } - public int Margine { get => GetInt("Margin", 1); + public int Margine + { + get => GetInt("Margin", 1); set => SetInt("Margin", value); } public float MargVert { get; set; } @@ -493,19 +495,35 @@ namespace CatalogLib set => SetString("ResizeDimension", value.ToString()); } - [Obsolete] - public string Posizione + public string LogoPath { - get => string.Empty; - set { } + get => GetString("LogoPath"); + set => SetString("LogoPath", value); } + public int LogoWidth + { + get => GetInt("LogoWidth"); + set => SetInt("LogoWidth", value); + } + + public int LogoHeight + { + get => GetInt("LogoHeight"); + set => SetInt("LogoHeight", value); + } + + public string LogoMargin + { + get => GetString("LogoMargin"); + set => SetString("LogoMargin", value); + } #endregion #region Enums - + #endregion } diff --git a/WPFCatalog/MainWindow.xaml b/WPFCatalog/MainWindow.xaml index f28f0d9..c7cd8fe 100644 --- a/WPFCatalog/MainWindow.xaml +++ b/WPFCatalog/MainWindow.xaml @@ -24,7 +24,7 @@ - + @@ -67,7 +67,7 @@ - + @@ -182,15 +182,15 @@ - - + + - +