Catalog/MaddoShared/PicSettings.cs
MaddoScientisto 8872080741 Add color-key transparency support for logo overlays
- Allow users to select a transparent color for logo images (watermarks) via UI (checkbox, color picker, preview).
- Apply color-key transparency in both System.Drawing and ImageSharp backends: specified color in logo is made fully transparent.
- Persist transparency settings in PicSettings and SettingsDto; bind to DataModel and UI controls.
- Update logo preview to reflect transparency in real time.
- Add option to select image processing library (System.Drawing or ImageSharp) in UI and settings.
- Fix bug in SettingsService parameter loading for int/double/DateTime.
- Fully integrate color-key transparency into image processing and settings serialization.
2026-02-15 11:13:23 +01:00

87 lines
No EOL
3.5 KiB
C#

using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
namespace MaddoShared;
public class PicSettings
{
public string DirectorySorgente { get; set; }
public string DirectoryDestinazione { get; set; }
public string TestoFirmaStart { get; set; }
public string TestoFirmaStartV { get; set; }
public DateTime DataPartenza { get; set; }
public string TestoOrario { get; set; }
public int DimStandard { get; set; }
public int DimStandardMiniatura { get; set; }
public bool NomeData { get; set; }
public bool TestoNome { get; set; }
public bool UsaOrarioMiniatura { get; set; }
public bool UsaOrarioTestoApplicare { get; set; }
public bool UsaTempoGaraTestoApplicare { get; set; }
public bool UsaRotazioneAutomatica { get; set; }
public bool UsaForzaJpg { get; set; }
public int LarghezzaSmall { get; set; }
public int AltezzaSmall { get; set; }
public bool CreaMiniature { get; set; }
public bool AggiungiScritteMiniature { get; set; }
public string Suffisso { get; set; }
public string Codice { get; set; }
public int Trasparenza { get; set; }
public string IlFont { get; set; }
public bool Grassetto { get; set; }
public string Posizione { get; set; }
public string Allineamento { get; set; }
public int Margine { get; set; }
public int LogoAltezza { get; set; }
public int LogoLarghezza { get; set; }
public Color FontColoreRGB { get; set; }
public bool LogoAggiungi { get; set; }
// Initialize logo-related strings to safe defaults to avoid null reference issues
public string LogoNomeFile { get; set; } = string.Empty;
public string LogoTrasparenza { get; set; } = "100";
public string LogoMargine { get; set; } = "0";
public string LogoPosizioneH { get; set; }
public string LogoPosizioneV { get; set; }
// Color key transparency: hex color string (e.g. #FFFFFF) and whether to use it for non-PNG logos
public string TransparentColorHex { get; set; } = "#FFFFFF";
public bool UseTransparentColorKey { get; set; } = false;
// Aliases to support automatic mapping from DataModel properties
public string TransparentColor
{
get => TransparentColorHex;
set => TransparentColorHex = value;
}
public bool UseTransparentColor
{
get => UseTransparentColorKey;
set => UseTransparentColorKey = value;
}
public bool FotoGrandeDimOrigina { get; set; }
public int AltezzaBig { get; set; }
public int LarghezzaBig { get; set; }
public DirectoryInfo DestDir { get; set; }
public int DimVert { get; set; }
public int MargVert { get; set; }
public bool TestoMin { get; set; }
public int DimMin { get; set; }
public bool SecretDefault { get; set; }
public bool SecretBig { get; set; }
public bool SecretSmall { get; set; }
public string SecretPathSmall { get; set; }
public string SecretPathBig { get; set; }
public bool AggTempoGaraMin { get; set; }
public bool AggNumTempMin { get; set; }
public long JpegQuality { get; set; }
public long JpegQualityMin { get; set; }
public bool FotoRuotaADestra { get; set; } = false;
public bool FotoRuotaASinistra { get; set; } = false;
public string TempMinText { get; set; } = string.Empty;
public bool OverwriteFiles { get; set; } = false;
// Which image creator to use: "Sharp" for current implementation, "Alternate" for alternate library
public string ImageCreatorProvider { get; set; } = "Sharp";
}