diff --git a/Catalog.sln.ide/edb.chk b/Catalog.sln.ide/edb.chk new file mode 100644 index 0000000..d0a48d9 Binary files /dev/null and b/Catalog.sln.ide/edb.chk differ diff --git a/Catalog.sln.ide/edbres00001.jrs b/Catalog.sln.ide/edbres00001.jrs new file mode 100644 index 0000000..3301331 Binary files /dev/null and b/Catalog.sln.ide/edbres00001.jrs differ diff --git a/Catalog.sln.ide/edbres00002.jrs b/Catalog.sln.ide/edbres00002.jrs new file mode 100644 index 0000000..3301331 Binary files /dev/null and b/Catalog.sln.ide/edbres00002.jrs differ diff --git a/Catalog.sln.ide/storage.ide b/Catalog.sln.ide/storage.ide new file mode 100644 index 0000000..4569100 Binary files /dev/null and b/Catalog.sln.ide/storage.ide differ diff --git a/CatalogLib/CatalogLib.csproj b/CatalogLib/CatalogLib.csproj new file mode 100644 index 0000000..b3be219 --- /dev/null +++ b/CatalogLib/CatalogLib.csproj @@ -0,0 +1,66 @@ + + + + + Debug + AnyCPU + {D27ACCF2-80FC-4DE8-AEB8-351FF076E6D5} + Library + Properties + CatalogLib + CatalogLib + v4.5 + 512 + SAK + SAK + SAK + SAK + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + {44465926-240d-473f-90b8-786ba4384406} + CatalogVbLib + + + + + \ No newline at end of file diff --git a/CatalogLib/Class1.cs b/CatalogLib/Class1.cs new file mode 100644 index 0000000..a63356c --- /dev/null +++ b/CatalogLib/Class1.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CatalogLib +{ + public class Class1 + { + } +} diff --git a/CatalogLib/ImageCreator.cs b/CatalogLib/ImageCreator.cs new file mode 100644 index 0000000..ba4f2f1 --- /dev/null +++ b/CatalogLib/ImageCreator.cs @@ -0,0 +1,569 @@ +using System; +using System.Collections.Generic; +using System.Drawing.Drawing2D; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Drawing; +using System.Drawing.Imaging; +using CatalogVbLib; + +namespace CatalogLib +{ + public class ImageCreator + { + + #region "dichiarazioni" + + + private bool FotoRuotaADestra = false; + + private bool FotoRuotaASinistra = false; + private string TempMinText = ""; + //Private crFont1 As Font + + private string _NomeFileChild; + private DirectoryInfo _SourceDir; + private DirectoryInfo _DestDirStart; + + private DirectoryInfo _DestDir; + + private FileInfo _workFile; + private string testoFirma; + private string testoFirmaV; + private int alphaScelta; + private int _dimensioneStandard; + private int _dimensioneStandardMiniatura; + private DateTime dataFoto; + private DateTime dataPartenzaI; + private string testoOrario; + private string testoFirmaPiccola; + private Size thumbSizeSmall; + private Size thumbSizeBig; + private string nomeFileSmall; + private string nomeFileBig; + + private string nomeFileBig2; + private float yPosFromBottom; + private float yPosFromBottom1; + private float yPosFromBottom2; + private float yPosFromBottom3; + private float yPosFromBottom4; + + public string NomeFileChild + { + get { return _NomeFileChild; } + set { _NomeFileChild = value; } + } + + public DirectoryInfo DestDirStart + { + get { return _DestDirStart; } + set { _DestDirStart = value; } + } + + public DirectoryInfo SourceDir + { + get { return _SourceDir; } + set { _SourceDir = value; } + } + + public DirectoryInfo DestDir + { + get { return _DestDir; } + set { _DestDir = value; } + } + + public FileInfo WorkFile + { + get { return _workFile; } + set { _workFile = value; } + } + + #endregion + + public ImageCreator(string nomeFileChild, DirectoryInfo sourceDir, DirectoryInfo destDir, DirectoryInfo destDirStart) + { + this.NomeFileChild = nomeFileChild; + SourceDir = sourceDir; + DestDir = destDir; + DestDirStart = destDirStart; + WorkFile = new FileInfo(nomeFileChild); + } + + public ImageCreator(string nomeFileChild, DirectoryInfo sourceDir, DirectoryInfo destDir) + { + NomeFileChild = nomeFileChild; + DestDir = destDir; + } + + public ImageCreator(FileInfo file, DirectoryInfo destination) + { + WorkFile = file; + DestDir = destination; + } + + public StringDigitSubstitute CreaImmagineThread(string info) + { + + } + + public void CreaImmagineThread(string info) + { + + CatalogLib.PicSettings ps = new CatalogLib.PicSettings(); + + Image g = Image.FromFile(WorkFile.FullName); + + + + if (ps.CreaMiniature) + { + CreaMiniature(); + } + + + } + + + private void Rotation(ref System.Drawing.Image g) + { + FotoRuotaADestra = false; + FotoRuotaASinistra = false; + + if (CatalogVbLib.PicSettings.UsaRotazioneAutomatica == true) + { + // ci sono dati exif + if (g.PropertyIdList.Length > 0) + { + ExifReader DatiExif = new ExifReader((Bitmap)g); + + switch (DatiExif.Orientation) + { + case ExifReader.Orientations.BottomLeft: + + break; + case ExifReader.Orientations.BottomRight: + + break; + case ExifReader.Orientations.LeftTop: + + break; + case ExifReader.Orientations.LftBottom: + FotoRuotaASinistra = true; + break; + case ExifReader.Orientations.RightBottom: + + break; + case ExifReader.Orientations.RightTop: + + break; + case ExifReader.Orientations.TopLeft: + + break; + case ExifReader.Orientations.TopRight: + + break; + } + } + } + + if (FotoRuotaASinistra == true) + { + g.RotateFlip(RotateFlipType.Rotate270FlipNone); + } + if (FotoRuotaADestra == true) + { + g.RotateFlip(RotateFlipType.Rotate90FlipNone); + } + + } + + private void ImpostaTestoExtra(Image g) + { + if (CatalogVbLib.PicSettings.UsaOrarioTestoApplicare || + CatalogVbLib.PicSettings.UsaTempoGaraTestoApplicare || + CatalogVbLib.PicSettings.UsaOrarioMiniatura || + CatalogVbLib.PicSettings.TestoMin || + CatalogVbLib.PicSettings.AggTempoGaraMin || + CatalogVbLib.PicSettings.AggNumTempMin) + { + if (g.PropertyIdList.Length > 0) //ci sono dati exif + { + var datiExix = new ExifReader((Bitmap)g); + dataFoto = datiExix.DateTimeOriginal; + testoFirma = CatalogVbLib.PicSettings.TestoFirmaStart; + testoFirmaV = CatalogVbLib.PicSettings.TestoFirmaStartV; + + if (dataFoto.Year != 1) + { + testoFirmaPiccola = dataFoto.ToShortDateString(); + if (CatalogVbLib.PicSettings.UsaOrarioTestoApplicare) + { + testoFirma = string.Concat(testoFirma, " ", dataFoto.ToShortDateString(), " ", + dataFoto.ToLongDateString()); + testoFirmaV = string.Concat(testoFirmaV, " ", dataFoto.ToShortDateString(), " ", + dataFoto.ToLongDateString()); + + } + if (CatalogVbLib.PicSettings.UsaTempoGaraTestoApplicare) + { + TimeSpan orario = dataPartenzaI - dataFoto; + testoFirma = string.Concat(testoFirma, " ", testoOrario, orario.ToString(@"hh\:mm\:ss")); + testoFirmaV = string.Concat(testoFirmaV, " ", testoOrario, orario.ToString(@"hh\:mm\:ss")); + } + } + } + } + else + { + testoFirma = CatalogVbLib.PicSettings.TestoFirmaStart; + testoFirmaV = CatalogVbLib.PicSettings.TestoFirmaStartV; + } + } + + + private void PreparaVariabili() + { + alphaScelta = (int)(255 * (100 - CatalogVbLib.PicSettings.Trasparenza) / 100); + testoFirma = string.Empty; + testoFirmaV = string.Empty; + dataPartenzaI = CatalogVbLib.PicSettings.DataPartenza; + testoOrario = CatalogVbLib.PicSettings.TestoOrario; + if (testoOrario.Length > 0) + { + testoOrario += " "; + } + testoFirmaPiccola = string.Empty; + thumbSizeSmall = new Size(); + thumbSizeBig = new Size(); + nomeFileSmall = string.Empty; + nomeFileBig2 = string.Empty; + nomeFileBig = string.Empty; + _dimensioneStandard = CatalogVbLib.PicSettings.DimStandard; + _dimensioneStandardMiniatura = CatalogVbLib.PicSettings.DimStandardMiniatura; + + nomeFileSmall = CatalogVbLib.PicSettings.Suffisso + WorkFile.Name; + nomeFileBig = WorkFile.Name; + } + + private void PrepareThumbnailSize(Image g) + { + if (g.Width > g.Height) + { + thumbSizeSmall = NewthumbSize(g.Width, g.Height, CatalogVbLib.PicSettings.LarghezzaSmall, "Larghezza"); + Size sizeOrig = new Size(g.Width, g.Height); + thumbSizeBig = sizeOrig; + } + else + { + thumbSizeSmall = NewthumbSize(g.Width, g.Height, CatalogVbLib.PicSettings.AltezzaSmall, "Altezza"); + Size sizeOrig = new Size(g.Width, g.Height); + thumbSizeBig = sizeOrig; + } + } + + private void CreaMiniature(Image g, Bitmap imgOutputBig, ImageFormat thisFormat) + { + CatalogLib.PicSettings ps = new PicSettings(); + + if (CatalogVbLib.PicSettings.TestoMin) + { + testoFirmaPiccola = nomeFileBig; + + } + else if (CatalogVbLib.PicSettings.AggNumTempMin) + { + testoFirmaPiccola = nomeFileBig + " "; + } + + Font crFont1; + Font crFont2; + SizeF crSize1 = new SizeF(); + SizeF crSize2 = new SizeF(); + + if (CatalogVbLib.PicSettings.CreaMiniature) + { + if (!CatalogVbLib.PicSettings.AggiungiScritteMiniature) + { + if (string.Equals(CatalogVbLib.PicSettings.DirectorySorgente, CatalogVbLib.PicSettings.DirectoryDestinazione, StringComparison.CurrentCultureIgnoreCase)) + { + nomeFileSmall = nomeFileSmall.Substring(0, nomeFileSmall.Length - 4) + CatalogVbLib.PicSettings.Codice + + nomeFileSmall.Substring(nomeFileSmall.Length - 4); + } + + if (CatalogVbLib.PicSettings.UsaOrarioMiniatura || + CatalogVbLib.PicSettings.TestoMin || + CatalogVbLib.PicSettings.AggTempoGaraMin || + CatalogVbLib.PicSettings.AggNumTempMin) + { + if (!string.IsNullOrWhiteSpace(testoFirmaPiccola)) + { + Bitmap imgOutputSmall = (Bitmap)imgOutputBig.Clone(); + + Graphics grPhoto1 = Graphics.FromImage(imgOutputSmall); + grPhoto1.SmoothingMode = SmoothingMode.HighSpeed; //Todo: permettere di cambiare questo parametro + + int larghezzaStandard1; + + _dimensioneStandardMiniatura = 50; + bool grassetto = CatalogVbLib.PicSettings.Grassetto; + crFont1 = new Font(CatalogVbLib.PicSettings.IlFont, _dimensioneStandardMiniatura, grassetto ? FontStyle.Bold : FontStyle.Regular); + crFont2 = new Font(CatalogVbLib.PicSettings.IlFont, _dimensioneStandard, grassetto ? FontStyle.Bold : FontStyle.Regular); + + crSize1 = grPhoto1.MeasureString(testoFirmaPiccola, crFont1); + crSize2 = grPhoto1.MeasureString(testoFirma, crFont1); + + larghezzaStandard1 = (int)crSize1.Width; + + if (crSize1.Width > g.Width) + { + int conta = _dimensioneStandardMiniatura; + do + { + if (conta > 20) + { + conta -= 5; + } + else + { + conta -= 1; + } + + crFont1 = new Font(CatalogVbLib.PicSettings.IlFont, conta, grassetto ? FontStyle.Bold : FontStyle.Regular); + crSize1 = grPhoto1.MeasureString(testoFirmaPiccola, crFont1); + + if (crSize1.Width < g.Width) + { + larghezzaStandard1 = (int)crSize1.Width; + break; + } + + } while (conta > 5); + _dimensioneStandardMiniatura = conta; + + } + + switch (CatalogVbLib.PicSettings.Posizione.ToUpper()) + { + case "ALTO": + yPosFromBottom1 = CatalogVbLib.PicSettings.Margine; + yPosFromBottom4 = CatalogVbLib.PicSettings.MargVert; + break; + + case "BASSO": + yPosFromBottom1 = + (float) + (g.Height - crSize1.Height - (g.Height * CatalogVbLib.PicSettings.Margine / 100)); + yPosFromBottom4 = (float)(g.Height - crSize1.Height - (g.Height * CatalogVbLib.PicSettings.MargVert / 100)); + break; + } + + + float xCenterOfImg1 = Single.NaN; + + StringFormat strFormat1 = new StringFormat(); + + switch (CatalogVbLib.PicSettings.Allineamento.ToUpper()) + { + case "SINISTRA": + xCenterOfImg1 = CatalogVbLib.PicSettings.Margine + (larghezzaStandard1 / 2); + if ((larghezzaStandard1 / 2) > (g.Width / 2) - CatalogVbLib.PicSettings.Margine) + { + xCenterOfImg1 = g.Width / 2; + } + break; + + case "CENTRO": + xCenterOfImg1 = (g.Width / 2); + break; + + case "DESTRA": + xCenterOfImg1 = (g.Width - CatalogVbLib.PicSettings.Margine - (larghezzaStandard1 / 2)); + if ((larghezzaStandard1 / 2) > (g.Width / 2) - CatalogVbLib.PicSettings.Margine) + { + xCenterOfImg1 = g.Width / 2; + } + break; + + } + + strFormat1.Alignment = StringAlignment.Center; + + SolidBrush semiTransBrush21 = new SolidBrush(Color.FromArgb(alphaScelta, 0, 0, 0)); + SolidBrush semiTransBrush1 = new SolidBrush(Color.FromArgb(alphaScelta, CatalogVbLib.PicSettings.fontColoreRGB)); + + _dimensioneStandardMiniatura = CatalogVbLib.PicSettings.DimMin; + + if (ps.Grassetto) + { + crFont1 = new Font(ps.IlFont, _dimensioneStandardMiniatura, FontStyle.Bold); + } + else + { + crFont1 = new Font(ps.IlFont, _dimensioneStandardMiniatura); + } + + if (ps.TestoMin) + { + grPhoto1.DrawString(nomeFileBig, crFont1, semiTransBrush21, new PointF(xCenterOfImg1 + 1, yPosFromBottom1 + 1), strFormat1); + grPhoto1.DrawString(nomeFileBig, crFont1, semiTransBrush1, new PointF(xCenterOfImg1, yPosFromBottom1), strFormat1); + } + else if (ps.AggTempoGaraMin & ps.UsaTempoGaraTestoApplicare) + { + //TimeSpan orario = (dataPartenzaI - dataFoto) * 10000000; //todo + TimeSpan orario = dataPartenzaI - dataFoto; //todo controllare se torna la roba giusta + + string tempStr = ""; + + + + tempStr += Environment.NewLine + testoOrario + orario.Hours.ToString("00") + ":" + + orario.Minutes.ToString("00") + ":" + orario.Seconds.ToString("00"); //todo: usare una stringa formato per sta boiata + + grPhoto1.DrawString(tempStr, crFont1, semiTransBrush21, new PointF(xCenterOfImg1 + 1, yPosFromBottom1 + 1)); + grPhoto1.DrawString(tempStr, crFont1, semiTransBrush1, new PointF(xCenterOfImg1, yPosFromBottom1), strFormat1); + } + else if (ps.AggNumTempMin) //todo semplificare la logica di sti eif + { + TimeSpan orario = dataPartenzaI - dataFoto; //todo controllare se torna la roba giusta + string tempStr = ""; + tempStr += nomeFileBig + Environment.NewLine + testoOrario + orario.Hours.ToString("00") + ":" + + orario.Minutes.ToString("00") + ":" + orario.Seconds.ToString("00"); //todo: usare una stringa formato per sta boiata + + grPhoto1.DrawString(tempStr, crFont1, semiTransBrush21, new PointF(xCenterOfImg1 + 1, yPosFromBottom1 + 1)); + grPhoto1.DrawString(tempStr, crFont1, semiTransBrush1, new PointF(xCenterOfImg1, yPosFromBottom1), strFormat1); + } + else + { + grPhoto1.DrawString(testoFirmaPiccola, crFont1, semiTransBrush21, new PointF(xCenterOfImg1 + 1, yPosFromBottom1 + 1), strFormat1); + grPhoto1.DrawString(testoFirmaPiccola, crFont1, semiTransBrush1, new PointF(xCenterOfImg1, yPosFromBottom1), strFormat1); + } + + + //Salva miniatura + + imgOutputSmall.Save(Path.Combine(DestDir.FullName, "Temp_" + nomeFileSmall), thisFormat); + float width = 0; + float height = 0; + //float scale = Math.Min(width/imgOutputSmall.Width, height/imgOutputSmall.Height); + using (var bmp = new Bitmap(thumbSizeSmall.Width, thumbSizeSmall.Height)) + { + using (var graph = Graphics.FromImage(bmp)) + { + // uncomment for higher quality output + //graph.InterpolationMode = InterpolationMode.High; + //graph.CompositingQuality = CompositingQuality.HighQuality; + //graph.SmoothingMode = SmoothingMode.AntiAlias; + + graph.DrawImage(imgOutputSmall, new Rectangle(0, 0, (int)width, (int)height)); + + bmp.Save(Path.Combine(DestDir.FullName, nomeFileSmall), thisFormat); + } + } + //var bmp = new Bitmap(thumbSizeSmall.Width, thumbSizeSmall.Height); + //var graph = Graphics.FromImage(bmp); + + + +// 10 down vote accepted + + +//Target parameters: + +//float width = 1024; +//float height = 768; +//var brush = new SolidBrush(Color.Black); + +//Your original file: + +//var image = new Bitmap(file); + +//Target sizing (scale factor): + +//float scale = Math.Min(width / image.Width, height / image.Height); + +//The resize including brushing canvas first: + +//var bmp = new Bitmap((int)width, (int)height); +//var graph = Graphics.FromImage(bmp); + +//// uncomment for higher quality output +////graph.InterpolationMode = InterpolationMode.High; +////graph.CompositingQuality = CompositingQuality.HighQuality; +////graph.SmoothingMode = SmoothingMode.AntiAlias; + +//var scaleWidth = (int)(image.Width * scale); +//var scaleHeight = (int)(image.Height * scale); + +//graph.FillRectangle(brush, new RectangleF(0, 0, width, height)); +//graph.DrawImage(image, new Rectangle(((int)width - scaleWidth)/2, ((int)height - scaleHeight)/2, scaleWidth, scaleHeight)); + + + + //imgOutputSmall.Save(Path.Combine(DestDir.FullName, nomeFileSmall), thisFormat); + + + //Image g2 = Image.FromFile(Path.Combine(DestDir.FullName, "Temp_" + nomeFileSmall)); + //Bitmap imgOutputSmall2 = new Bitmap(g2, thumbSizeSmall.Width, thumbSizeSmall.Height); + //imgOutputSmall2.Save(Path.Combine(DestDir.FullName, nomeFileSmall), thisFormat); + + + + } + } + + + } + } + + + + } + + + + /// + /// Calculate the Size of the New image + /// + /// Larghezza + /// Altezza + /// + /// + /// + /// + private Size NewthumbSize(int currentwidth, int currentheight, int MaxPixel, string TipoSize) + { + // e + //*** Larghezza, Altezza, Auto + + double tempMultiplier = 0; + + if (TipoSize.ToUpper() == "Larghezza".ToUpper()) + { + tempMultiplier = MaxPixel / currentwidth; + } + else if (TipoSize.ToUpper() == "Altezza".ToUpper()) + { + tempMultiplier = MaxPixel / currentheight; + } + else + { + // portrait + if (currentheight > currentwidth) + { + tempMultiplier = MaxPixel / currentheight; + } + else + { + tempMultiplier = MaxPixel / currentwidth; + } + } + + Size NewSize = new Size(Convert.ToInt32(currentwidth * tempMultiplier), Convert.ToInt32(currentheight * tempMultiplier)); + + return NewSize; + } + } +} diff --git a/CatalogLib/PicSettings.cs b/CatalogLib/PicSettings.cs new file mode 100644 index 0000000..c490bdf --- /dev/null +++ b/CatalogLib/PicSettings.cs @@ -0,0 +1,157 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CatalogLib +{ + public class PicSettings + { + //TODO: Singleton + + private Dictionary _settingsDict = new Dictionary(); + + + public PicSettings() + { + SetDefaults(); + } + + public void Set(string key, object value) + { + if (_settingsDict.ContainsKey(key)) + { + _settingsDict[key] = value; + } + else + { + _settingsDict.Add(key,value); + } + } + + public bool Exists(string key) + { + return _settingsDict.ContainsKey(key); + } + + public int GetInt(string key) + { + return _settingsDict.ContainsKey(key) ? (int) _settingsDict[key] : 0; + } + + public string GetString(string key) + { + return _settingsDict.ContainsKey(key) ? (string) _settingsDict[key] : string.Empty; + } + + public bool GetBool(string key) + { + return _settingsDict.ContainsKey(key) && (bool) _settingsDict[key]; + } + + public void SetBool(string key, bool value) + { + if (_settingsDict.ContainsKey(key)) + { + _settingsDict[key] = value; + } + else + { + _settingsDict.Add(key, value); + } + + } + + public object GetObject(string key) + { + return _settingsDict.ContainsKey(key) ? _settingsDict[key] : null; + } + + + + public void SetDefaults() + { + Set("dirSorgente",string.Empty); + Set("dirDestinazione",string.Empty); + Set("dirAggiornaSottodirectory", false); + Set("dirCreaSottoCartelle",false); + //Set(); + } + + public bool Grassetto + { + get { return GetBool("Grassetto"); } + set { SetBool("Grassetto", value);} + } + + public string IlFont //todo + { + get { return GetString(""); } + set { } + } + + public bool TestoMin //todo + { + get { return false; } + set { } + } + + public bool AggTempoGaraMin //todo + { + get { return false; } + set { } + } + + public bool UsaTempoGaraTestoApplicare //todo + { + get { return false; } + set { } + } + + public bool AggNumTempMin //todo + { + get { return false; } + set { } + } + + public bool CreaMiniature //todo + { + get { return false; } + set { } + } + + public bool AggiungiScritteMiniature + { + get { return false; } + set { } + } + + public string Suffisso + { + get { return string.Empty; } + set { } + } + + public string Codice + { + get { return null; } + set {} + } + + public int Trasparenza + { + get { return 0; } + } + + public bool Posizione + { + get { return null; } + } + + + + } +} diff --git a/CatalogLib/Properties/AssemblyInfo.cs b/CatalogLib/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..9d7f332 --- /dev/null +++ b/CatalogLib/Properties/AssemblyInfo.cs @@ -0,0 +1,38 @@ +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("CatalogLib")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("CatalogLib")] +[assembly: AssemblyCopyright("Copyright © 2013")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("7bb8e6ce-72c8-4b36-a166-a62ed446d4e9")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: CLSCompliant(true)] \ No newline at end of file diff --git a/CatalogLibVb/CatalogLibVb.csproj b/CatalogLibVb/CatalogLibVb.csproj new file mode 100644 index 0000000..8d292d6 --- /dev/null +++ b/CatalogLibVb/CatalogLibVb.csproj @@ -0,0 +1,57 @@ + + + + + Debug + AnyCPU + {B3352D87-BF9F-4F7A-9162-007492DA76E4} + Library + Properties + CatalogLibVb + CatalogLibVb + v4.5 + 512 + SAK + SAK + SAK + SAK + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CatalogLibVb/Class1.cs b/CatalogLibVb/Class1.cs new file mode 100644 index 0000000..16254ce --- /dev/null +++ b/CatalogLibVb/Class1.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CatalogLibVb +{ + public class Class1 + { + } +} diff --git a/CatalogLibVb/Properties/AssemblyInfo.cs b/CatalogLibVb/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..0ec915f --- /dev/null +++ b/CatalogLibVb/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Le informazioni generali relative a un assembly sono controllate dal seguente +// set di attributi. Per modificare le informazioni associate a un assembly +// occorre quindi modificare i valori di questi attributi. +[assembly: AssemblyTitle("CatalogLibVb")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("CatalogLibVb")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Se si imposta ComVisible su false, i tipi in questo assembly non saranno visibili +// ai componenti COM. Se è necessario accedere a un tipo in questo assembly da +// COM, impostare su true l'attributo ComVisible per tale tipo. +[assembly: ComVisible(false)] + +// Se il progetto viene esposto a COM, il GUID che segue verrà utilizzato per creare l'ID della libreria dei tipi +[assembly: Guid("367f3879-584c-4780-8ad0-dc84d2e77928")] + +// Le informazioni sulla versione di un assembly sono costituite dai seguenti quattro valori: +// +// Numero di versione principale +// Numero di versione secondario +// Numero build +// Revisione +// +// È possibile specificare tutti i valori oppure impostare valori predefiniti per i numeri relativi alla revisione e alla build +// utilizzando l'asterisco (*) come descritto di seguito: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/CatalogVbLib/CatalogVbLib.vbproj b/CatalogVbLib/CatalogVbLib.vbproj new file mode 100644 index 0000000..638fdd4 --- /dev/null +++ b/CatalogVbLib/CatalogVbLib.vbproj @@ -0,0 +1,118 @@ + + + + + Debug + AnyCPU + {44465926-240D-473F-90B8-786BA4384406} + Library + CatalogVbLib + CatalogVbLib + 512 + Windows + v4.5 + SAK + SAK + SAK + SAK + + + true + full + true + true + bin\Debug\ + CatalogVbLib.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + pdbonly + false + true + true + bin\Release\ + CatalogVbLib.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + On + + + Binary + + + Off + + + On + + + + + + + + + + + + + + + + + + + + + + + + + + + + + True + Application.myapp + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + + VbMyResourcesResXFileCodeGenerator + Resources.Designer.vb + My.Resources + Designer + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + + + \ No newline at end of file diff --git a/CatalogVbLib/Class1.vb b/CatalogVbLib/Class1.vb new file mode 100644 index 0000000..875798b --- /dev/null +++ b/CatalogVbLib/Class1.vb @@ -0,0 +1,3 @@ +Public Class Class1 + +End Class diff --git a/CatalogVbLib/ExifReader.vb b/CatalogVbLib/ExifReader.vb new file mode 100644 index 0000000..15a19bd --- /dev/null +++ b/CatalogVbLib/ExifReader.vb @@ -0,0 +1,1068 @@ +'''----------------------------------------------------------------------------- +''' +''' Utility class for reading EXIF data from images. Provides abstraction +''' for most common data and generic utilities for work with all other. +''' +''' +''' Copyright (c) Michal A. Valášek - Altair Communications, 2003 +''' Copmany: http://software.altaircom.net * support@altaircom.net +''' Private: http://www.rider.cz * developer@rider.cz +''' This is free software licensed under GNU Lesser General Public License +''' +''' +''' [altair] 10.9.2003 Created +''' +'''----------------------------------------------------------------------------- +Public Class ExifReader + Implements IDisposable + + Private Image As System.Drawing.Bitmap + + '''----------------------------------------------------------------------------- + ''' + ''' Contains possible values of EXIF tag names (ID) + ''' + ''' See GdiPlusImaging.h + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public Enum TagNames + ExifIFD = &H8769 + GpsIFD = &H8825 + NewSubfileType = &HFE + SubfileType = &HFF + ImageWidth = &H100 + ImageHeight = &H101 + BitsPerSample = &H102 + Compression = &H103 + PhotometricInterp = &H106 + ThreshHolding = &H107 + CellWidth = &H108 + CellHeight = &H109 + FillOrder = &H10A + DocumentName = &H10D + ImageDescription = &H10E + EquipMake = &H10F + EquipModel = &H110 + StripOffsets = &H111 + Orientation = &H112 + SamplesPerPixel = &H115 + RowsPerStrip = &H116 + StripBytesCount = &H117 + MinSampleValue = &H118 + MaxSampleValue = &H119 + XResolution = &H11A + YResolution = &H11B + PlanarConfig = &H11C + PageName = &H11D + XPosition = &H11E + YPosition = &H11F + FreeOffset = &H120 + FreeByteCounts = &H121 + GrayResponseUnit = &H122 + GrayResponseCurve = &H123 + T4Option = &H124 + T6Option = &H125 + ResolutionUnit = &H128 + PageNumber = &H129 + TransferFuncition = &H12D + SoftwareUsed = &H131 + DateTime = &H132 + Artist = &H13B + HostComputer = &H13C + Predictor = &H13D + WhitePoint = &H13E + PrimaryChromaticities = &H13F + ColorMap = &H140 + HalftoneHints = &H141 + TileWidth = &H142 + TileLength = &H143 + TileOffset = &H144 + TileByteCounts = &H145 + InkSet = &H14C + InkNames = &H14D + NumberOfInks = &H14E + DotRange = &H150 + TargetPrinter = &H151 + ExtraSamples = &H152 + SampleFormat = &H153 + SMinSampleValue = &H154 + SMaxSampleValue = &H155 + TransferRange = &H156 + JPEGProc = &H200 + JPEGInterFormat = &H201 + JPEGInterLength = &H202 + JPEGRestartInterval = &H203 + JPEGLosslessPredictors = &H205 + JPEGPointTransforms = &H206 + JPEGQTables = &H207 + JPEGDCTables = &H208 + JPEGACTables = &H209 + YCbCrCoefficients = &H211 + YCbCrSubsampling = &H212 + YCbCrPositioning = &H213 + REFBlackWhite = &H214 + ICCProfile = &H8773 + Gamma = &H301 + ICCProfileDescriptor = &H302 + SRGBRenderingIntent = &H303 + ImageTitle = &H320 + Copyright = &H8298 + ResolutionXUnit = &H5001 + ResolutionYUnit = &H5002 + ResolutionXLengthUnit = &H5003 + ResolutionYLengthUnit = &H5004 + PrintFlags = &H5005 + PrintFlagsVersion = &H5006 + PrintFlagsCrop = &H5007 + PrintFlagsBleedWidth = &H5008 + PrintFlagsBleedWidthScale = &H5009 + HalftoneLPI = &H500A + HalftoneLPIUnit = &H500B + HalftoneDegree = &H500C + HalftoneShape = &H500D + HalftoneMisc = &H500E + HalftoneScreen = &H500F + JPEGQuality = &H5010 + GridSize = &H5011 + ThumbnailFormat = &H5012 + ThumbnailWidth = &H5013 + ThumbnailHeight = &H5014 + ThumbnailColorDepth = &H5015 + ThumbnailPlanes = &H5016 + ThumbnailRawBytes = &H5017 + ThumbnailSize = &H5018 + ThumbnailCompressedSize = &H5019 + ColorTransferFunction = &H501A + ThumbnailData = &H501B + ThumbnailImageWidth = &H5020 + ThumbnailImageHeight = &H502 + ThumbnailBitsPerSample = &H5022 + ThumbnailCompression = &H5023 + ThumbnailPhotometricInterp = &H5024 + ThumbnailImageDescription = &H5025 + ThumbnailEquipMake = &H5026 + ThumbnailEquipModel = &H5027 + ThumbnailStripOffsets = &H5028 + ThumbnailOrientation = &H5029 + ThumbnailSamplesPerPixel = &H502A + ThumbnailRowsPerStrip = &H502B + ThumbnailStripBytesCount = &H502C + ThumbnailResolutionX = &H502D + ThumbnailResolutionY = &H502E + ThumbnailPlanarConfig = &H502F + ThumbnailResolutionUnit = &H5030 + ThumbnailTransferFunction = &H5031 + ThumbnailSoftwareUsed = &H5032 + ThumbnailDateTime = &H5033 + ThumbnailArtist = &H5034 + ThumbnailWhitePoint = &H5035 + ThumbnailPrimaryChromaticities = &H5036 + ThumbnailYCbCrCoefficients = &H5037 + ThumbnailYCbCrSubsampling = &H5038 + ThumbnailYCbCrPositioning = &H5039 + ThumbnailRefBlackWhite = &H503A + ThumbnailCopyRight = &H503B + LuminanceTable = &H5090 + ChrominanceTable = &H5091 + FrameDelay = &H5100 + LoopCount = &H5101 + PixelUnit = &H5110 + PixelPerUnitX = &H5111 + PixelPerUnitY = &H5112 + PaletteHistogram = &H5113 + ExifExposureTime = &H829A + ExifFNumber = &H829D + ExifExposureProg = &H8822 + ExifSpectralSense = &H8824 + ExifISOSpeed = &H8827 + ExifOECF = &H8828 + ExifVer = &H9000 + ExifDTOrig = &H9003 + ExifDTDigitized = &H9004 + ExifCompConfig = &H9101 + ExifCompBPP = &H9102 + ExifShutterSpeed = &H9201 + ExifAperture = &H9202 + ExifBrightness = &H9203 + ExifExposureBias = &H9204 + ExifMaxAperture = &H9205 + ExifSubjectDist = &H9206 + ExifMeteringMode = &H9207 + ExifLightSource = &H9208 + ExifFlash = &H9209 + ExifFocalLength = &H920A + ExifMakerNote = &H927C + ExifUserComment = &H9286 + ExifDTSubsec = &H9290 + ExifDTOrigSS = &H9291 + ExifDTDigSS = &H9292 + ExifFPXVer = &HA000 + ExifColorSpace = &HA001 + ExifPixXDim = &HA002 + ExifPixYDim = &HA003 + ExifRelatedWav = &HA004 + ExifInterop = &HA005 + ExifFlashEnergy = &HA20B + ExifSpatialFR = &HA20C + ExifFocalXRes = &HA20E + ExifFocalYRes = &HA20F + ExifFocalResUnit = &HA210 + ExifSubjectLoc = &HA214 + ExifExposureIndex = &HA215 + ExifSensingMethod = &HA217 + ExifFileSource = &HA300 + ExifSceneType = &HA301 + ExifCfaPattern = &HA302 + GpsVer = &H0 + GpsLatitudeRef = &H1 + GpsLatitude = &H2 + GpsLongitudeRef = &H3 + GpsLongitude = &H4 + GpsAltitudeRef = &H5 + GpsAltitude = &H6 + GpsGpsTime = &H7 + GpsGpsSatellites = &H8 + GpsGpsStatus = &H9 + GpsGpsMeasureMode = &HA + GpsGpsDop = &HB + GpsSpeedRef = &HC + GpsSpeed = &HD + GpsTrackRef = &HE + GpsTrack = &HF + GpsImgDirRef = &H10 + GpsImgDir = &H11 + GpsMapDatum = &H12 + GpsDestLatRef = &H13 + GpsDestLat = &H14 + GpsDestLongRef = &H15 + GpsDestLong = &H16 + GpsDestBearRef = &H17 + GpsDestBear = &H18 + GpsDestDistRef = &H19 + GpsDestDist = &H1A + End Enum + + '''----------------------------------------------------------------------------- + ''' + ''' Real position of 0th row and column of picture + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public Enum Orientations + TopLeft = 1 + TopRight = 2 + BottomRight = 3 + BottomLeft = 4 + LeftTop = 5 + RightTop = 6 + RightBottom = 7 + LftBottom = 8 + End Enum + + '''----------------------------------------------------------------------------- + ''' + ''' Exposure programs + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public Enum ExposurePrograms + Manual = 1 + Normal = 2 + AperturePriority = 3 + ShutterPriority = 4 + Creative = 5 + Action = 6 + Portrait = 7 + Landscape = 8 + End Enum + + '''----------------------------------------------------------------------------- + ''' + ''' Exposure metering modes + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public Enum ExposureMeteringModes + Unknown = 0 + Average = 1 + CenterWeightedAverage = 2 + Spot = 3 + MultiSpot = 4 + MultiSegment = 5 + [Partial] = 6 + Other = 255 + End Enum + + '''----------------------------------------------------------------------------- + ''' + ''' Flash activity modes + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public Enum FlashModes + NotFired = 0 + Fired = 1 + FiredButNoStrobeReturned = 5 + FiredAndStrobeReturned = 7 + End Enum + + '''----------------------------------------------------------------------------- + ''' + ''' Possible light sources (white balance) + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public Enum LightSources + Unknown = 0 + Daylight = 1 + Fluorescent = 2 + Tungsten = 3 + Flash = 10 + StandardLightA = 17 + StandardLightB = 18 + StandardLightC = 19 + D55 = 20 + D65 = 21 + D75 = 22 + Other = 255 + End Enum + + '''----------------------------------------------------------------------------- + ''' + ''' Represents rational which is type of some Exif properties + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public Structure Rational + Dim Numerator As Int32 + Dim Denominator As Int32 + + '''----------------------------------------------------------------------------- + ''' + ''' Converts rational to string representation + ''' + ''' Optional, default "/". String to be used as delimiter of components. + ''' String representation of the rational. + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Shadows Function ToString(Optional ByVal Delimiter As String = "/") As String + Return Numerator & Delimiter & Denominator + End Function + + '''----------------------------------------------------------------------------- + ''' + ''' Converts rational to double precision real number + ''' + ''' The rational as double precision real number. + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Function ToDouble() As Double + Return Numerator / Denominator + End Function + End Structure + + '''----------------------------------------------------------------------------- + ''' + ''' Initializes new instance of this class. + ''' + ''' Bitmap to read exif information from + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public Sub New(ByVal Bitmap As System.Drawing.Bitmap) + If Bitmap Is Nothing Then Throw New ArgumentNullException("Bitmap") + Me.Image = Bitmap + End Sub + + '''----------------------------------------------------------------------------- + ''' + ''' Returns all available data in formatted string form + ''' + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public Overrides Function ToString() As String + Dim SB As New System.Text.StringBuilder + + SB.Append("Image:") + SB.Append("\n\tDimensions: " & Me.Width & " x " & Me.Height & " px") + SB.Append("\n\tResolution: " & Me.ResolutionX & " x " & Me.ResolutionY & " dpi") + SB.Append("\n\tOrientation: " & [Enum].GetName(GetType(Orientations), Me.Orientation)) + SB.Append("\n\tTitle: " & Me.Title) + SB.Append("\n\tDescription: " & Me.Description) + SB.Append("\n\tCopyright: " & Me.Copyright) + SB.Append("\nEquipment:") + SB.Append("\n\tMaker: " & Me.EquipmentMaker) + SB.Append("\n\tModel: " & Me.EquipmentModel) + SB.Append("\n\tSoftware: " & Me.Software) + SB.Append("\nDate and time:") + SB.Append("\n\tGeneral: " & Me.DateTimeLastModified.ToString()) + SB.Append("\n\tOriginal: " & Me.DateTimeOriginal.ToString()) + SB.Append("\n\tDigitized: " & Me.DateTimeDigitized.ToString()) + SB.Append("\nShooting conditions:") + SB.Append("\n\tExposure time: " & Me.ExposureTime.ToString("N4") & " s") + SB.Append("\n\tExposure program: " & [Enum].GetName(GetType(ExposurePrograms), Me.ExposureProgram)) + SB.Append("\n\tExposure mode: " & [Enum].GetName(GetType(ExposureMeteringModes), Me.ExposureMeteringMode)) + SB.Append("\n\tAperture: F" & Me.Aperture.ToString("N2")) + SB.Append("\n\tISO sensitivity: " & Me.ISO) + SB.Append("\n\tSubject distance: " & Me.SubjectDistance.ToString("N2") & " m") + SB.Append("\n\tFocal length: " & Me.FocalLength) + SB.Append("\n\tFlash: " & [Enum].GetName(GetType(FlashModes), Me.FlashMode)) + SB.Append("\n\tLight source (WB): " & [Enum].GetName(GetType(LightSources), Me.LightSource)) + SB.Append("\n\nCopyright (c) Michal A. Valasek - Altair Communications, 2003") + SB.Append("\nhttp://software.altaircom.net * support@altaircom.net") + + SB.Replace("\n", vbCrLf) + SB.Replace("\t", vbTab) + Return SB.ToString() + End Function + + '''----------------------------------------------------------------------------- + ''' + ''' Brand of equipment (EXIF EquipMake) + ''' + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public ReadOnly Property EquipmentMaker() As String + Get + Return Me.GetPropertyString(TagNames.EquipMake) + End Get + End Property + + '''----------------------------------------------------------------------------- + ''' + ''' Model of equipment (EXIF EquipModel) + ''' + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public ReadOnly Property EquipmentModel() As String + Get + Return Me.GetPropertyString(TagNames.EquipModel) + End Get + End Property + + '''----------------------------------------------------------------------------- + ''' + ''' Software used for processing (EXIF Software) + ''' + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public ReadOnly Property Software() As String + Get + Return Me.GetPropertyString(TagNames.SoftwareUsed) + End Get + End Property + + '''----------------------------------------------------------------------------- + ''' + ''' Orientation of image (position of row 0, column 0) (EXIF Orientation) + ''' + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public ReadOnly Property Orientation() As Orientations + Get + Dim X As Int32 = Me.GetPropertyInt16(TagNames.Orientation) + + If Not [Enum].IsDefined(GetType(Orientations), X) Then + Return Orientations.TopLeft + Else + Return CType([Enum].Parse(GetType(Orientations), [Enum].GetName(GetType(Orientations), X)), Orientations) + End If + End Get + End Property + + '''----------------------------------------------------------------------------- + ''' + ''' Time when image was last modified (EXIF DateTime). + ''' + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public ReadOnly Property DateTimeLastModified() As DateTime + Get + Try + Return DateTime.ParseExact(Me.GetPropertyString(TagNames.DateTime), "yyyy\:MM\:dd HH\:mm\:ss", Nothing) + Catch ex As Exception + Return DateTime.MinValue + End Try + End Get + End Property + + '''----------------------------------------------------------------------------- + ''' + ''' Time when image was taken (EXIF DateTimeOriginal). + ''' + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public ReadOnly Property DateTimeOriginal() As DateTime + Get + Try + Return DateTime.ParseExact(Me.GetPropertyString(TagNames.ExifDTOrig), "yyyy\:MM\:dd HH\:mm\:ss", Nothing) + Catch ex As Exception + Return DateTime.MinValue + End Try + End Get + End Property + + '''----------------------------------------------------------------------------- + ''' + ''' Time when image was digitized (EXIF DateTimeDigitized). + ''' + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public ReadOnly Property DateTimeDigitized() As DateTime + Get + Try + Return DateTime.ParseExact(Me.GetPropertyString(TagNames.ExifDTDigitized), "yyyy\:MM\:dd HH\:mm\:ss", Nothing) + Catch ex As Exception + Return DateTime.MinValue + End Try + End Get + End Property + + '''----------------------------------------------------------------------------- + ''' + ''' Image width + ''' + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public ReadOnly Property Width() As Int16 + Get + Return Me.GetPropertyInt16(TagNames.ImageWidth) + End Get + End Property + + '''----------------------------------------------------------------------------- + ''' + ''' Image height + ''' + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public ReadOnly Property Height() As Int16 + Get + Return Me.GetPropertyInt16(TagNames.ImageHeight) + End Get + End Property + + '''----------------------------------------------------------------------------- + ''' + ''' X resolution in dpi (EXIF XResolution/ResolutionUnit) + ''' + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public ReadOnly Property ResolutionX() As Double + Get + Dim R As Double = Me.GetPropertyRational(TagNames.XResolution).ToDouble() + + If Me.GetPropertyInt16(TagNames.ResolutionUnit) = 3 Then + '-- resolution is in points/cm + Return R * 2.54 + Else + '-- resolution is in points/inch + Return R + End If + End Get + End Property + + '''----------------------------------------------------------------------------- + ''' + ''' Y resolution in dpi (EXIF YResolution/ResolutionUnit) + ''' + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public ReadOnly Property ResolutionY() As Double + Get + Dim R As Double = Me.GetPropertyRational(TagNames.YResolution).ToDouble() + + If Me.GetPropertyInt16(TagNames.ResolutionUnit) = 3 Then + '-- resolution is in points/cm + Return R * 2.54 + Else + '-- resolution is in points/inch + Return R + End If + End Get + End Property + + '''----------------------------------------------------------------------------- + ''' + ''' Image title (EXIF ImageTitle) + ''' + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public ReadOnly Property Title() As String + Get + Return Me.GetPropertyString(TagNames.ImageTitle) + End Get + End Property + + '''----------------------------------------------------------------------------- + ''' + ''' Image description (EXIF ImageDescription) + ''' + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public ReadOnly Property Description() As String + Get + Return Me.GetPropertyString(TagNames.ImageDescription) + End Get + End Property + + '''----------------------------------------------------------------------------- + ''' + ''' Image copyright (EXIF Copyright) + ''' + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public ReadOnly Property Copyright() As String + Get + Return Me.GetPropertyString(TagNames.Copyright) + End Get + End Property + + '''----------------------------------------------------------------------------- + ''' + ''' Exposure time in seconds (EXIF ExifExposureTime/ExifShutterSpeed) + ''' + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public ReadOnly Property ExposureTime() As Double + Get + If Me.IsPropertyDefined(TagNames.ExifExposureTime) Then + '-- Exposure time is explicitly specified + Return Me.GetPropertyRational(TagNames.ExifExposureTime).ToDouble + ElseIf Me.IsPropertyDefined(TagNames.ExifShutterSpeed) Then + '-- Compute exposure time from shutter speed + Return 1 / (2 ^ Me.GetPropertyRational(TagNames.ExifShutterSpeed).ToDouble) + Else + '-- Can't figure out + Return 0 + End If + End Get + End Property + + '''----------------------------------------------------------------------------- + ''' + ''' Aperture value as F number (EXIF ExifFNumber/ExifApertureValue) + ''' + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public ReadOnly Property Aperture() As Double + Get + If Me.IsPropertyDefined(TagNames.ExifFNumber) Then + Return Me.GetPropertyRational(TagNames.ExifFNumber).ToDouble() + ElseIf Me.IsPropertyDefined(TagNames.ExifAperture) Then + Return System.Math.Sqrt(2) ^ Me.GetPropertyRational(TagNames.ExifAperture).ToDouble() + Else + Return 0 + End If + End Get + End Property + + '''----------------------------------------------------------------------------- + ''' + ''' Exposure program used (EXIF ExifExposureProg) + ''' + ''' + ''' If not specified, returns Normal (2) + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public ReadOnly Property ExposureProgram() As ExposurePrograms + Get + Dim X As Int32 = Me.GetPropertyInt16(TagNames.ExifExposureProg) + + If [Enum].IsDefined(GetType(ExposurePrograms), X) Then + Return CType([Enum].Parse(GetType(ExposurePrograms), [Enum].GetName(GetType(ExposurePrograms), X)), ExposurePrograms) + Else + Return ExposurePrograms.Normal + End If + End Get + End Property + + '''----------------------------------------------------------------------------- + ''' + ''' ISO sensitivity + ''' + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public ReadOnly Property ISO() As Int16 + Get + Return Me.GetPropertyInt16(TagNames.ExifISOSpeed) + End Get + End Property + + '''----------------------------------------------------------------------------- + ''' + ''' Subject distance in meters (EXIF SubjectDistance) + ''' + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public ReadOnly Property SubjectDistance() As Double + Get + Return Me.GetPropertyRational(TagNames.ExifSubjectDist).ToDouble() + End Get + End Property + + '''----------------------------------------------------------------------------- + ''' + ''' Exposure method metering mode used (EXIF MeteringMode) + ''' + ''' + ''' If not specified, returns Unknown (0) + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public ReadOnly Property ExposureMeteringMode() As ExposureMeteringModes + Get + Dim X As Int32 = Me.GetPropertyInt16(TagNames.ExifMeteringMode) + + If [Enum].IsDefined(GetType(ExposureMeteringModes), X) Then + Return CType([Enum].Parse(GetType(ExposureMeteringModes), [Enum].GetName(GetType(ExposureMeteringModes), X)), ExposureMeteringModes) + Else + Return ExposureMeteringModes.Unknown + End If + End Get + End Property + + '''----------------------------------------------------------------------------- + ''' + ''' Focal length of lenses in mm (EXIF FocalLength) + ''' + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public ReadOnly Property FocalLength() As Double + Get + Return Me.GetPropertyRational(TagNames.ExifFocalLength).ToDouble + End Get + End Property + + '''----------------------------------------------------------------------------- + ''' + ''' Flash mode (EXIF Flash) + ''' + ''' + ''' If not present, value NotFired (0) is returned + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public ReadOnly Property FlashMode() As FlashModes + Get + Dim X As Int32 = Me.GetPropertyInt16(TagNames.ExifFlash) + + If [Enum].IsDefined(GetType(FlashModes), X) Then + Return CType([Enum].Parse(GetType(FlashModes), [Enum].GetName(GetType(FlashModes), X)), FlashModes) + Else + Return FlashModes.NotFired + End If + End Get + End Property + + '''----------------------------------------------------------------------------- + ''' + ''' Light source / white balance (EXIF LightSource) + ''' + ''' + ''' If not specified, returns Unknown (0). + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public ReadOnly Property LightSource() As LightSources + Get + Dim X As Int32 = Me.GetPropertyInt16(TagNames.ExifLightSource) + + If [Enum].IsDefined(GetType(LightSources), X) Then + Return CType([Enum].Parse(GetType(LightSources), [Enum].GetName(GetType(LightSources), X)), LightSources) + Else + Return LightSources.Unknown + End If + End Get + End Property + + '''----------------------------------------------------------------------------- + ''' + ''' Checks if current image has specified certain property + ''' + ''' + ''' True if image has specified property, False otherwise. + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public Function IsPropertyDefined(ByVal PID As Int32) As Boolean + Return CBool([Array].IndexOf(Me.Image.PropertyIdList, PID) > -1) + End Function + + '''----------------------------------------------------------------------------- + ''' + ''' Gets specified Int32 property + ''' + ''' Property ID + ''' Optional, default 0. Default value returned if property is not present. + ''' Value of property or DefaultValue if property is not present. + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public Function GetPropertyInt32(ByVal PID As Int32, Optional ByVal DefaultValue As Int32 = 0) As Int32 + If Me.IsPropertyDefined(PID) Then + Return GetInt32(Me.Image.GetPropertyItem(PID).Value) + Else + Return DefaultValue + End If + End Function + + '''----------------------------------------------------------------------------- + ''' + ''' Gets specified Int16 property + ''' + ''' Property ID + ''' Optional, default 0. Default value returned if property is not present. + ''' Value of property or DefaultValue if property is not present. + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public Function GetPropertyInt16(ByVal PID As Int32, Optional ByVal DefaultValue As Int16 = 0) As Int16 + If Me.IsPropertyDefined(PID) Then + Return GetInt16(Me.Image.GetPropertyItem(PID).Value) + Else + Return DefaultValue + End If + End Function + + '''----------------------------------------------------------------------------- + ''' + ''' Gets specified string property + ''' + ''' Property ID + ''' Optional, default String.Empty. Default value returned if property is not present. + ''' + ''' Value of property or DefaultValue if property is not present. + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public Function GetPropertyString(ByVal PID As Int32, Optional ByVal DefaultValue As String = "") As String + If Me.IsPropertyDefined(PID) Then + Return GetString(Me.Image.GetPropertyItem(PID).Value) + Else + Return DefaultValue + End If + End Function + + '''----------------------------------------------------------------------------- + ''' + ''' Gets specified rational property + ''' + ''' Property ID + ''' + ''' Value of property or 0/1 if not present. + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public Function GetPropertyRational(ByVal PID As Int32) As Rational + If Me.IsPropertyDefined(PID) Then + Return GetRational(Me.Image.GetPropertyItem(PID).Value) + Else + Dim R As Rational + R.Numerator = 0 + R.Denominator = 1 + Return R + End If + End Function + + '''----------------------------------------------------------------------------- + ''' + ''' Reads Int32 from EXIF bytearray. + ''' + ''' EXIF bytearray to process + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public Shared Function GetInt32(ByVal B As Byte()) As Int32 + If B.Length < 4 Then Throw New ArgumentException("Data too short (4 bytes expected)", "B") + Return B(3) << 24 Or B(2) << 16 Or B(1) << 8 Or B(0) + End Function + + '''----------------------------------------------------------------------------- + ''' + ''' Reads Int16 from EXIF bytearray. + ''' + ''' EXIF bytearray to process + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public Shared Function GetInt16(ByVal B As Byte()) As Int16 + If B.Length < 2 Then Throw New ArgumentException("Data too short (2 bytes expected)", "B") + Return B(1) << 8 Or B(0) + End Function + + '''----------------------------------------------------------------------------- + ''' + ''' Reads string from EXIF bytearray. + ''' + ''' EXIF bytearray to process + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public Shared Function GetString(ByVal B As Byte()) As String + Dim R As String = System.Text.Encoding.ASCII.GetString(B) + If R.EndsWith(vbNullChar) Then R = R.Substring(0, R.Length - 1) + Return R + End Function + + '''----------------------------------------------------------------------------- + ''' + ''' Reads rational from EXIF bytearray. + ''' + ''' EXIF bytearray to process + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public Shared Function GetRational(ByVal B As Byte()) As Rational + Dim R As New Rational, N(3), D(3) As Byte + Array.Copy(B, 0, N, 0, 4) + Array.Copy(B, 4, D, 0, 4) + R.Denominator = GetInt32(D) + R.Numerator = GetInt32(N) + Return R + End Function + + '''----------------------------------------------------------------------------- + ''' + ''' Disposes unmanaged resources of this class + ''' + ''' + ''' + ''' [altair] 10.9.2003 Created + ''' + '''----------------------------------------------------------------------------- + Public Sub Dispose() Implements System.IDisposable.Dispose + Me.Image.Dispose() + End Sub +End Class diff --git a/CatalogVbLib/My Project/Application.Designer.vb b/CatalogVbLib/My Project/Application.Designer.vb new file mode 100644 index 0000000..96b7331 --- /dev/null +++ b/CatalogVbLib/My Project/Application.Designer.vb @@ -0,0 +1,13 @@ +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:4.0.30319.34011 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + diff --git a/CatalogVbLib/My Project/Application.myapp b/CatalogVbLib/My Project/Application.myapp new file mode 100644 index 0000000..758895d --- /dev/null +++ b/CatalogVbLib/My Project/Application.myapp @@ -0,0 +1,10 @@ + + + false + false + 0 + true + 0 + 1 + true + diff --git a/CatalogVbLib/My Project/AssemblyInfo.vb b/CatalogVbLib/My Project/AssemblyInfo.vb new file mode 100644 index 0000000..be5e3ed --- /dev/null +++ b/CatalogVbLib/My Project/AssemblyInfo.vb @@ -0,0 +1,35 @@ +Imports System +Imports System.Reflection +Imports System.Runtime.InteropServices + +' Le informazioni generali relative a un assembly sono controllate dal seguente +' insieme di attributi. Per modificare le informazioni associate a un assembly +' è necessario modificare i valori di questi attributi. + +' Controllare i valori degli attributi dell'assembly + + + + + + + + + + +'Se il progetto viene esposto a COM, il GUID seguente verrà utilizzato come ID della libreria dei tipi + + +' Le informazioni sulla versione di un assembly sono costituite dai seguenti quattro valori: +' +' Numero di versione principale +' Numero di versione secondario +' Numero build +' Revisione +' +' È possibile specificare tutti i valori oppure impostare valori predefiniti per i numeri relativi alla revisione e alla build +' utilizzando l'asterisco (*) come descritto di seguito: +' + + + diff --git a/CatalogVbLib/My Project/Resources.Designer.vb b/CatalogVbLib/My Project/Resources.Designer.vb new file mode 100644 index 0000000..4c63fee --- /dev/null +++ b/CatalogVbLib/My Project/Resources.Designer.vb @@ -0,0 +1,62 @@ +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:4.0.30319.34011 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My.Resources + + 'This class was auto-generated by the StronglyTypedResourceBuilder + 'class via a tool like ResGen or Visual Studio. + 'To add or remove a member, edit your .ResX file then rerun ResGen + 'with the /str option, or rebuild your VS project. + ''' + ''' A strongly-typed resource class, for looking up localized strings, etc. + ''' + _ + Friend Module Resources + + Private resourceMan As Global.System.Resources.ResourceManager + + Private resourceCulture As Global.System.Globalization.CultureInfo + + ''' + ''' Returns the cached ResourceManager instance used by this class. + ''' + _ + Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager + Get + If Object.ReferenceEquals(resourceMan, Nothing) Then + Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("CatalogVbLib.Resources", GetType(Resources).Assembly) + resourceMan = temp + End If + Return resourceMan + End Get + End Property + + ''' + ''' Overrides the current thread's CurrentUICulture property for all + ''' resource lookups using this strongly typed resource class. + ''' + _ + Friend Property Culture() As Global.System.Globalization.CultureInfo + Get + Return resourceCulture + End Get + Set(ByVal value As Global.System.Globalization.CultureInfo) + resourceCulture = value + End Set + End Property + End Module +End Namespace diff --git a/CatalogVbLib/My Project/Resources.resx b/CatalogVbLib/My Project/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/CatalogVbLib/My Project/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/CatalogVbLib/My Project/Settings.Designer.vb b/CatalogVbLib/My Project/Settings.Designer.vb new file mode 100644 index 0000000..30ce19b --- /dev/null +++ b/CatalogVbLib/My Project/Settings.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:4.0.30319.34011 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + _ + Partial Friend NotInheritable Class MySettings + Inherits Global.System.Configuration.ApplicationSettingsBase + + Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings) + +#Region "My.Settings Auto-Save Functionality" +#If _MyType = "WindowsForms" Then + Private Shared addedHandler As Boolean + + Private Shared addedHandlerLockObject As New Object + + _ + Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) + If My.Application.SaveMySettingsOnExit Then + My.Settings.Save() + End If + End Sub +#End If +#End Region + + Public Shared ReadOnly Property [Default]() As MySettings + Get + +#If _MyType = "WindowsForms" Then + If Not addedHandler Then + SyncLock addedHandlerLockObject + If Not addedHandler Then + AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings + addedHandler = True + End If + End SyncLock + End If +#End If + Return defaultInstance + End Get + End Property + End Class +End Namespace + +Namespace My + + _ + Friend Module MySettingsProperty + + _ + Friend ReadOnly Property Settings() As Global.CatalogVbLib.My.MySettings + Get + Return Global.CatalogVbLib.My.MySettings.Default + End Get + End Property + End Module +End Namespace diff --git a/CatalogVbLib/My Project/Settings.settings b/CatalogVbLib/My Project/Settings.settings new file mode 100644 index 0000000..85b890b --- /dev/null +++ b/CatalogVbLib/My Project/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/CatalogVbLib/PicSettings.vb b/CatalogVbLib/PicSettings.vb new file mode 100644 index 0000000..42a0da7 --- /dev/null +++ b/CatalogVbLib/PicSettings.vb @@ -0,0 +1,606 @@ +Imports System.IO +Imports System.Drawing.Drawing2D +Imports System.Drawing.Imaging +Imports System.Windows.Forms +Imports System.Drawing + +Public Module PicSettings + + Private _DirectorySorgente As String + Private _DirectoryDestinazione As String + + Private _DimVert As Integer + Private _MargVert As Integer + + + Private _DimStandard As Integer + Private _DimStandardMiniatura As Integer + + Private _NomeData As Boolean + Private _TestoNome As Boolean + Private _UsaOrarioMiniatura As Boolean + Private _UsaOrarioTestoApplicare As Boolean + Private _UsaTempoGaraTestoApplicare As Boolean + Private _TestoFirmaStart As String + Private _TestoFirmaStartV As String + Private _DataPartenza As DateTime + Private _TestoOrario As String + + Private _UsaRotazioneAutomatica As Boolean + Private _UsaForzaJpg As Boolean + + Private _LarghezzaSmall As Integer + Private _AltezzaSmall As Integer + + Private _CreaMiniature As Boolean + Private _AggiungiScritteMiniature As Boolean + Private _AggTempoGaraMin As Boolean + Private _AggNumTempMin As Boolean + + Private _Suffisso As String + Private _Codice As String + + Private _Trasparenza As Integer + Private _IlFont As String + Private _Grassetto As Boolean + + Private _Posizione As String + Private _Allineamento As String + Private _Margine As Integer + + Private _LogoAltezza As Integer + Private _LogoLarghezza As Integer + + Private _fontColoreRGB As System.Drawing.Color + + Private _LogoAggiungi As Boolean + Private _LogoNomeFile As String + Private _LogoTrasparenza As String + Private _LogoMargine As String + Private _LogoPosizioneH As String + Private _LogoPosizioneV As String + + Private _FotoGrandeDimOrigina As Boolean + Private _AltezzaBig As Integer + Private _LarghezzaBig As Integer + Private _DestDir As DirectoryInfo + Private _DimMin As Integer + + Private _TestoMin As Boolean + + Private _SecretDefault As Boolean + Private _SecretBig As Boolean + Private _SecretSmall As Boolean + + Private _SecretPathSmall As String + Private _SecretPathBig As String + + Private _jpegQuality As Long + Private _jpegQualityMin As Long + + Private FotoRuotaADestra As Boolean = False + Private FotoRuotaASinistra As Boolean = False + + Private TempMinText As String = "" + + Private _mainForm As Form + + 'Private progressBar As System.Windows.Forms.ProgressBar + + + + Public Property mainForm() As Form + Get + Return _mainForm + End Get + Set(ByVal value As Form) + _mainForm = value + End Set + End Property + + Public Property DirectorySorgente() As String + Get + Return _DirectorySorgente + End Get + Set(ByVal value As String) + _DirectorySorgente = value + End Set + End Property + + Public Property DirectoryDestinazione() As String + Get + Return _DirectoryDestinazione + End Get + Set(ByVal value As String) + _DirectoryDestinazione = value + End Set + End Property + + Public Property TestoFirmaStart() As String + Get + Return _TestoFirmaStart + End Get + Set(ByVal value As String) + _TestoFirmaStart = value + End Set + End Property + + Public Property TestoFirmaStartV() As String + Get + Return _TestoFirmaStartV + End Get + + Set(ByVal value As String) + _TestoFirmaStartV = value + End Set + End Property + + Public Property DataPartenza() As DateTime + Get + Return _DataPartenza + End Get + Set(ByVal value As DateTime) + _DataPartenza = value + End Set + End Property + + Public Property TestoOrario() As String + Get + Return _TestoOrario + End Get + Set(ByVal value As String) + _TestoOrario = value + End Set + End Property + + Public Property DimStandard() As Integer + Get + Return _DimStandard + End Get + Set(ByVal value As Integer) + _DimStandard = value + End Set + End Property + + Public Property DimStandardMiniatura() As Integer + Get + Return _DimStandardMiniatura + End Get + Set(ByVal value As Integer) + _DimStandardMiniatura = value + End Set + End Property + + Public Property NomeData() As Boolean + Get + Return _NomeData + End Get + Set(ByVal value As Boolean) + _NomeData = value + End Set + End Property + + Public Property TestoNome() As Boolean + Get + Return _TestoNome + End Get + Set(ByVal value As Boolean) + _TestoNome = value + End Set + End Property + + Public Property UsaOrarioMiniatura() As Boolean + Get + Return _UsaOrarioMiniatura + End Get + Set(ByVal value As Boolean) + _UsaOrarioMiniatura = value + End Set + End Property + + Public Property UsaOrarioTestoApplicare() As Boolean + Get + Return _UsaOrarioTestoApplicare + End Get + Set(ByVal value As Boolean) + _UsaOrarioTestoApplicare = value + End Set + End Property + + Public Property UsaTempoGaraTestoApplicare() As Boolean + Get + Return _UsaTempoGaraTestoApplicare + End Get + Set(ByVal value As Boolean) + _UsaTempoGaraTestoApplicare = value + End Set + End Property + + Public Property UsaRotazioneAutomatica() As Boolean + Get + Return _UsaRotazioneAutomatica + End Get + Set(ByVal value As Boolean) + _UsaRotazioneAutomatica = value + End Set + End Property + + Public Property UsaForzaJpg() As Boolean + Get + Return _UsaForzaJpg + End Get + Set(ByVal value As Boolean) + _UsaForzaJpg = value + End Set + End Property + + + + Public Property LarghezzaSmall() As Integer + Get + Return _LarghezzaSmall + End Get + Set(ByVal value As Integer) + _LarghezzaSmall = value + End Set + End Property + + Public Property AltezzaSmall() As Integer + Get + Return _AltezzaSmall + End Get + Set(ByVal value As Integer) + _AltezzaSmall = value + End Set + End Property + + + Public Property CreaMiniature() As Boolean + Get + Return _CreaMiniature + End Get + Set(ByVal value As Boolean) + _CreaMiniature = value + End Set + End Property + + Public Property AggiungiScritteMiniature() As Boolean + Get + Return _AggiungiScritteMiniature + End Get + Set(ByVal value As Boolean) + _AggiungiScritteMiniature = value + End Set + End Property + + + Public Property Suffisso() As String + Get + Return _Suffisso + End Get + Set(ByVal value As String) + _Suffisso = value + End Set + End Property + + Public Property Codice() As String + Get + Return _Codice + End Get + Set(ByVal value As String) + _Codice = value + End Set + End Property + + + Public Property Trasparenza() As Integer + Get + Return _Trasparenza + End Get + Set(ByVal value As Integer) + _Trasparenza = value + End Set + End Property + + Public Property IlFont() As String + Get + Return _IlFont + End Get + Set(ByVal value As String) + _IlFont = value + End Set + End Property + + Public Property Grassetto() As Boolean + Get + Return _Grassetto + End Get + Set(ByVal value As Boolean) + _Grassetto = value + End Set + End Property + + Public Property Posizione() As String + Get + Return _Posizione + End Get + Set(ByVal value As String) + _Posizione = value + End Set + End Property + + Public Property Allineamento() As String + Get + Return _Allineamento + End Get + Set(ByVal value As String) + _Allineamento = value + End Set + End Property + + Public Property Margine() As Integer + Get + Return _Margine + End Get + Set(ByVal value As Integer) + _Margine = value + End Set + End Property + + Public Property LogoAltezza() As Integer + Get + Return _LogoAltezza + End Get + Set(ByVal value As Integer) + _LogoAltezza = value + End Set + End Property + + Public Property LogoLarghezza() As Integer + Get + Return _LogoLarghezza + End Get + Set(ByVal value As Integer) + _LogoLarghezza = value + End Set + End Property + + Public Property fontColoreRGB() As Color + Get + Return _fontColoreRGB + End Get + Set(ByVal value As Color) + _fontColoreRGB = value + End Set + End Property + + Public Property LogoAggiungi() As Boolean + Get + Return _LogoAggiungi + End Get + Set(ByVal value As Boolean) + _LogoAggiungi = value + End Set + End Property + + Public Property LogoNomeFile() As String + Get + Return _LogoNomeFile + End Get + Set(ByVal value As String) + _LogoNomeFile = value + End Set + End Property + + Public Property LogoTrasparenza() As String + Get + Return _LogoTrasparenza + End Get + Set(ByVal value As String) + _LogoTrasparenza = value + End Set + End Property + + Public Property LogoMargine() As String + Get + Return _LogoMargine + End Get + Set(ByVal value As String) + _LogoMargine = value + End Set + End Property + + Public Property LogoPosizioneH() As String + Get + Return _LogoPosizioneH + End Get + Set(ByVal value As String) + _LogoPosizioneH = value + End Set + End Property + + Public Property LogoPosizioneV() As String + Get + Return _LogoPosizioneV + End Get + Set(ByVal value As String) + _LogoPosizioneV = value + End Set + End Property + + Public Property FotoGrandeDimOrigina() As Boolean + Get + Return _FotoGrandeDimOrigina + End Get + Set(ByVal value As Boolean) + _FotoGrandeDimOrigina = value + End Set + End Property + + Public Property AltezzaBig() As Integer + Get + Return _AltezzaBig + End Get + Set(ByVal value As Integer) + _AltezzaBig = value + End Set + End Property + + Public Property LarghezzaBig() As Integer + Get + Return _LarghezzaBig + End Get + Set(ByVal value As Integer) + _LarghezzaBig = value + End Set + End Property + + Public Property DestDir() As DirectoryInfo + Get + Return _DestDir + End Get + Set(ByVal value As DirectoryInfo) + _DestDir = value + End Set + End Property + + Public Property DimVert() As Integer + Get + Return _DimVert + + End Get + Set(ByVal value As Integer) + _DimVert = value + + End Set + End Property + + Public Property MargVert() As Integer + Get + Return _MargVert + + End Get + Set(ByVal value As Integer) + _MargVert = value + End Set + End Property + + Public Property TestoMin() As Boolean + Get + Return _TestoMin + + End Get + Set(ByVal value As Boolean) + _TestoMin = value + + End Set + End Property + + Public Property DimMin() As Integer + Get + Return _DimMin + + End Get + Set(ByVal value As Integer) + _DimMin = value + + End Set + End Property + + Public Property SecretDefault() As Boolean + Get + Return _SecretDefault + + End Get + Set(ByVal value As Boolean) + _SecretDefault = value + + End Set + End Property + + Public Property SecretBig() As Boolean + Get + Return _SecretBig + + End Get + Set(ByVal value As Boolean) + _SecretBig = value + + End Set + End Property + + Public Property SecretSmall() As Boolean + Get + Return _SecretSmall + + End Get + Set(ByVal value As Boolean) + _SecretSmall = value + + End Set + End Property + + Public Property SecretPathSmall() As String + Get + Return _SecretPathSmall + + End Get + Set(ByVal value As String) + _SecretPathSmall = value + + End Set + End Property + + Public Property SecretPathBig() As String + Get + Return _SecretPathBig + + End Get + Set(ByVal value As String) + _SecretPathBig = value + + End Set + End Property + + Public Property AggTempoGaraMin() As Boolean + Get + Return _AggTempoGaraMin + + End Get + Set(ByVal value As Boolean) + _AggTempoGaraMin = value + + End Set + End Property + + Public Property AggNumTempMin() As Boolean + Get + Return _AggNumTempMin + + End Get + Set(ByVal value As Boolean) + _AggNumTempMin = value + + End Set + End Property + + Public Property jpegQuality() As Long + Get + Return _jpegQuality + End Get + Set(ByVal value As Long) + _jpegQuality = value + End Set + + End Property + + Public Property jpegQualityMin() As Long + Get + Return _jpegQualityMin + End Get + Set(ByVal value As Long) + _jpegQualityMin = value + End Set + + End Property +End Module diff --git a/ImageCatalogCS/AboutForm.Designer.cs b/ImageCatalogCS/AboutForm.Designer.cs new file mode 100644 index 0000000..01cd505 --- /dev/null +++ b/ImageCatalogCS/AboutForm.Designer.cs @@ -0,0 +1,101 @@ +namespace ImageCatalogCS +{ + partial class AboutForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutForm)); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.button1 = new System.Windows.Forms.Button(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 213); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(75, 13); + this.label1.TabIndex = 0; + this.label1.Text = "Image Catalog"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(350, 213); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(66, 13); + this.label2.TabIndex = 1; + this.label2.Text = "Versione 3.0"; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(176, 239); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(75, 23); + this.button1.TabIndex = 2; + this.button1.Text = "Chiudi"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // pictureBox1 + // + this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); + this.pictureBox1.InitialImage = ((System.Drawing.Image)(resources.GetObject("pictureBox1.InitialImage"))); + this.pictureBox1.Location = new System.Drawing.Point(15, 13); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(401, 197); + this.pictureBox1.TabIndex = 3; + this.pictureBox1.TabStop = false; + // + // AboutForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(433, 274); + this.Controls.Add(this.pictureBox1); + this.Controls.Add(this.button1); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Name = "AboutForm"; + this.Text = "AboutForm"; + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.PictureBox pictureBox1; + } +} \ No newline at end of file diff --git a/ImageCatalogCS/AboutForm.cs b/ImageCatalogCS/AboutForm.cs new file mode 100644 index 0000000..80e20f9 --- /dev/null +++ b/ImageCatalogCS/AboutForm.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ImageCatalogCS +{ + public partial class AboutForm : Form + { + public AboutForm() + { + InitializeComponent(); + } + + private void button1_Click(object sender, EventArgs e) + { + this.Close(); + } + } +} diff --git a/ImageCatalogCS/AboutForm.resx b/ImageCatalogCS/AboutForm.resx new file mode 100644 index 0000000..02a449f --- /dev/null +++ b/ImageCatalogCS/AboutForm.resx @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + iVBORw0KGgoAAAANSUhEUgAAAZ4AAADQCAIAAAC4O5DwAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAS + cwAAEnMBjCK5BwAAC05JREFUeF7t2sGBG0cORmEn4PPmooCUxO7FGTgaJ+NgtE0OKZMeTTdQDVQBf7/v + 4svuDLsK9boo6bcfACCHtAEQRNoACCJtAASRNgCCSBsAQaQNgCDSBkAQaQMgiLQBEETaAAgibQAEkTYA + gkgbAEGkDYAg0gZAEGkDIIi0ARBE2gAIIm0ABJE2AIJIGwBBpA2AINIGQBBpAyCItAEQRNoACCJtAASR + NgCCSBsAQaQNgCDSBkAQaQMgiLQBEETaAAgibQAEkTYAgkgbAEGkDYAg0pbqr++/Dfn259+PnwBhjEci + 0hZndFBtvv/1+DXoifGYi7SdkzuvX+Gt3QTjsQ5pG/H3n98eU7QaL+uCGI8KSJtHnZn9NxJXAONRCWkz + qTu0b/gmsgbjUdDKtB0PRIG9aDK1r1asmvsPlUSO2cXGo8WRfViXNsNQLL5GNxzbF3MX74Jpu+Z4HG90 + lZ1dlTbLXCwsW+7YHm5+2F+sTVvCa6UtvWr7q7N0PAy/vMberkmbZTSWrU/Y4OxyTtWJDzUlb9dJ25zx + 2Hj2beZ4lD68L1akzfTOm3IgP5k2tzeD+z9yZUgftWukbep4bEYWacJ4WJZh/f7OT5tt6ReUbfbc3px6 + TOcQpy6pftpWjMdmfNcSx8O0Fqt3eHbabOs9fVVGXnUxAh7Vfujy1lU7bevGY3N2pTLGo+gxfjM5bbZl + nrwkSwd3E3Odsk5wzuVNOG3G8fjP478ZAvYsejxsPy9n2Gymps24vFPXwzS4vz/+myTumNuOYcICq6bN + tKDf/vff5Jdj0GpFjkfFw/xmYtqMb7+ZM2/5SN//sJ7az7toPvChD234reGLLJk203hsm25++BITEjUe + Bc/zm2lpMy7EzJU43uNtFE2fe/9DW8Y3+rGPP3bsbzQf0adlE29mGo9NxwkJGY+CR/rVrLRZR3/aMhzu + i3VuTZ/YMAWf3+hnHa554K9US5txPCz/y6oTEjAe1l2Pn22DOWkz7NuHWWtwtCfPz2Gf8ENHPyrlrB/9 + 0rD11kqbdTw2rSfk9HhYt33Fbk9Jm3nuw07avv3P87INsWU4+GlZ229+2jPMW/y0YtiNPAvWf0LOjYd5 + 3ycd7RcT0na0+z/Nmfb9j/P+GaKrsP/z8nZ/9/eGLLt5xJ/mbLafZzw2EhNyZjyKne4X+WkzD/2UZ9/d + iX9/gv1tG5mzM0N0iuu5B5h3+Wn6pJt4l0llQk6Mx/4SvJp8cctOm/3BC876iQ3/QvxRKEIkbV5MSN0j + npw2+8RXHPWEN+jujyRt3TAhG3vbpn7+1LQVfWYzBteMtH12nQmx7/7Ebc9MW/ey7T/A0CbtLwlp64YJ + +eDY/mmPkJi2io/rEz9mu2vS+bSTtl+40IQUPOx5aetftqNn8A/a/s8ruwwGjt3+oJE2JuTJMQCTtj4r + bfuvs3d1N+zoKXyf/OCntT7sV00bE/JUrm1JadMom+E57B8+8EcV5E7bh9bPfMeEPFVrW07aPINe+/V9 + 3GjT5z/+Mc1P+WDafur79EzIk2cGJjxLStp0ymYauaOHsCxH9WU4cjZtH1quAhPyYFqIp/y2ZaRNqWwb + 8+N83i3z/7V72YLSdtdvLZiQD7XalpA2z5S3GGPXjo1oH7bQtN1N+MISiAn5UKpt8WlzDXmTCc4d3V7H + +Nei03bTaV2YkLtKhz88bYpl26SNrsCN7SYjbZtGq8OE3BQ6/tFpcz1ar2OdcXo7XUx2JaVt02hImBBn + 4FMfLjhtwmXbBL+Y2z3/jry0bS57uW84IXXaFpu2Qs3OEnWGWz7811LT1uuMX3xCytxuQtPmK1vbS8vp + V7PSde0hOW3N1uzKE1ImAqFp881373vL6FkWu609paet33G/6oRUqUBk2nzPJHF18TyyaNQ+TEhbz5G5 + 3oQ4r6xpDx2Ytot8Hf21rydY7EG/8Hz+naeNqF/jw3+dCfFtdNrTB6bN90TSdxh87dyfQ13jRdFbkWtb + XNoufWmDz4kbHO/E8py7m7SjcWkrcg1FE8N1o23VOa9tSS0IS1uRWyj6GP1qymuxuhLXtrC0cWmD39jV + jekprsS1LSptXNowYuzmxvgUV+HaFpW2EldQNDR0cWN+ahNKW4kbKFoaaRsDVFuFHgSlzTmeTCb+Qdvk + eP+cIePatiZtfJ/Ai5G2MUKlFQhCTNoqRBptjfxdAte20gp8jVuSNsYSb0baxuuxsgJFIG0oYOArKWmr + zPuyStjNmLQVuH6is4G0MUSVXTVtvHDxbuAbKWmrjLQBd3wjFbM+CaQNFZA2Mc4NTbiDkzZUQNrEkDbg + hrSJIW3ADWkTsz4JpA0V+NPG35CWRtqAG9KmhX+yC9wM/Ls23o+VOTc0owgxaSvwIOiMtIkhbcAN30fF + OIuQ8Z6KSRt/2IYzuLSpKRAE0ob1uLSp8e1oym4GpY1vpFfyc7eDXlH+svFyrK1CD4LSVqHSyPLl5sbs + I2WTU+CP2sLSVuFZEMOxlxFtGygbr8biKtx0otLmfBjSVtGKyDjfiXeUrbgSF52wtPmehuEsaX7bBn4j + w1NeiRiEpY1rm4LJd6iRsDE69ZVoQVzauLYpGGnb4GYO/SrK1kCNFMSljWubhMHgeOdz6L624ZXYQI0S + BKaNa5uG0epYt3Qwnne8EBvwbXDalgamrcoj4aQz7dl8WbjhZj7xOmzBtc95exqZtirPhLNORygDA9ND + lRtOaNq4tskoFzfC1oVrdBIjEJo2X9sY1tJKxY1ZaaNMA2LT5nsurm21+S7hiRiURjyvxNQ3VnDaytxG + EaLA1Y0LWyt1AhCdtjrRRoi1VzcmpJlCX9vC0+ZqG9e2DlbVjenop9Dpj08bbVM0O29c11qqdPYT0uZ5 + Pia4kVl5433XlWdC0nc5I220TVhu36haZ57ZyD/4KWnztI1h7ig8cLziBNQ69jlpo20XcTpxJE1HsUOf + lDbHYzLcKoydY8M1OV5zU64zWWmjbcCVVCtbXtocj0rbgObKlS0xbbStiN19EF76qz73EgUPe2LaHF9K + GbRU+3Onufi7s8e8RSt41FPTRtvK2N8JteW/1tMWYD7oE/89RG7a7PdUxi3b0fRNHLpURyOn8pyVVCxb + dtrsT03b0h2+Z/qf+sNpI2wJap7x9LTRtkqON6Pv2T/+hsCIZTB/M5s8WvlpMz86gzeDZTf65c3w/mS8 + cpQ93hPSZr+48W1hCtMwtimB7WgxWkmsZZu/AVPSVvj5L8q4IcX7xitzOeMWrBikOWkrvQQXZX3dlCyD + NWpMVC7jPiyZoFlpE7kniLEXosjO2Ht8x3UtVe0zPS1t5oVgHOfy5O1mxaA6i3bHSzJb8QM9MW3WU0Tb + pvPm7SG3HoMf6oYRmqD6aZ6aNmPned+uMHIz+mx4kk+E7B1Zm8O0YSuP8ty0GQ8QbVslpm+rULVpbIOy + dENmp81Ye4Z0oYZ942U4V4dDPD9ttnVhVldrEjgGZT7TaCy/naxImy1uXNxKqFs4BmQRy0gUeOOsSZsp + boxuJXUSx1ysZTi6Ja7Sq9JmWSG+a5RkuXLHYxhqMLziimzVurRZzggv6OJyM8f2l9PoQrIybVA0Wjuu + ZQhF2gAIIm0ABJE2AIJIGwBBpA2AINIGQBBpAyCItAEQRNoACCJtAASRNgCCSBsAQaQNgCDSBkAQaQMg + iLQBEETaAAgibQAEkTYAgkgbAEGkDYAg0gZAEGkDIIi0ARBE2gAIIm0ABJE2AIJIGwBBpA2AINIGQBBp + AyCItAEQRNoACCJtAASRNgCCSBsAQaQNgCDSBkAQaQMgiLQBEETaAAgibQAEkTYAgkgbAEGkDYAg0gZA + EGkDIIi0ARBE2gAIIm0ABJE2AIJIGwA5P378HyuEmb0husDDAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAAZ4AAADQCAIAAAC4O5DwAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAS + cwAAEnMBjCK5BwAAC05JREFUeF7t2sGBG0cORmEn4PPmooCUxO7FGTgaJ+NgtE0OKZMeTTdQDVQBf7/v + 4svuDLsK9boo6bcfACCHtAEQRNoACCJtAASRNgCCSBsAQaQNgCDSBkAQaQMgiLQBEETaAAgibQAEkTYA + gkgbAEGkDYAg0gZAEGkDIIi0ARBE2gAIIm0ABJE2AIJIGwBBpA2AINIGQBBpAyCItAEQRNoACCJtAASR + NgCCSBsAQaQNgCDSBkAQaQMgiLQBEETaAAgibQAEkTYAgkgbAEGkDYAg0pbqr++/Dfn259+PnwBhjEci + 0hZndFBtvv/1+DXoifGYi7SdkzuvX+Gt3QTjsQ5pG/H3n98eU7QaL+uCGI8KSJtHnZn9NxJXAONRCWkz + qTu0b/gmsgbjUdDKtB0PRIG9aDK1r1asmvsPlUSO2cXGo8WRfViXNsNQLL5GNxzbF3MX74Jpu+Z4HG90 + lZ1dlTbLXCwsW+7YHm5+2F+sTVvCa6UtvWr7q7N0PAy/vMberkmbZTSWrU/Y4OxyTtWJDzUlb9dJ25zx + 2Hj2beZ4lD68L1akzfTOm3IgP5k2tzeD+z9yZUgftWukbep4bEYWacJ4WJZh/f7OT5tt6ReUbfbc3px6 + TOcQpy6pftpWjMdmfNcSx8O0Fqt3eHbabOs9fVVGXnUxAh7Vfujy1lU7bevGY3N2pTLGo+gxfjM5bbZl + nrwkSwd3E3Odsk5wzuVNOG3G8fjP478ZAvYsejxsPy9n2Gymps24vFPXwzS4vz/+myTumNuOYcICq6bN + tKDf/vff5Jdj0GpFjkfFw/xmYtqMb7+ZM2/5SN//sJ7az7toPvChD234reGLLJk203hsm25++BITEjUe + Bc/zm2lpMy7EzJU43uNtFE2fe/9DW8Y3+rGPP3bsbzQf0adlE29mGo9NxwkJGY+CR/rVrLRZR3/aMhzu + i3VuTZ/YMAWf3+hnHa554K9US5txPCz/y6oTEjAe1l2Pn22DOWkz7NuHWWtwtCfPz2Gf8ENHPyrlrB/9 + 0rD11kqbdTw2rSfk9HhYt33Fbk9Jm3nuw07avv3P87INsWU4+GlZ229+2jPMW/y0YtiNPAvWf0LOjYd5 + 3ycd7RcT0na0+z/Nmfb9j/P+GaKrsP/z8nZ/9/eGLLt5xJ/mbLafZzw2EhNyZjyKne4X+WkzD/2UZ9/d + iX9/gv1tG5mzM0N0iuu5B5h3+Wn6pJt4l0llQk6Mx/4SvJp8cctOm/3BC876iQ3/QvxRKEIkbV5MSN0j + npw2+8RXHPWEN+jujyRt3TAhG3vbpn7+1LQVfWYzBteMtH12nQmx7/7Ebc9MW/ey7T/A0CbtLwlp64YJ + +eDY/mmPkJi2io/rEz9mu2vS+bSTtl+40IQUPOx5aetftqNn8A/a/s8ruwwGjt3+oJE2JuTJMQCTtj4r + bfuvs3d1N+zoKXyf/OCntT7sV00bE/JUrm1JadMom+E57B8+8EcV5E7bh9bPfMeEPFVrW07aPINe+/V9 + 3GjT5z/+Mc1P+WDafur79EzIk2cGJjxLStp0ymYauaOHsCxH9WU4cjZtH1quAhPyYFqIp/y2ZaRNqWwb + 8+N83i3z/7V72YLSdtdvLZiQD7XalpA2z5S3GGPXjo1oH7bQtN1N+MISiAn5UKpt8WlzDXmTCc4d3V7H + +Nei03bTaV2YkLtKhz88bYpl26SNrsCN7SYjbZtGq8OE3BQ6/tFpcz1ar2OdcXo7XUx2JaVt02hImBBn + 4FMfLjhtwmXbBL+Y2z3/jry0bS57uW84IXXaFpu2Qs3OEnWGWz7811LT1uuMX3xCytxuQtPmK1vbS8vp + V7PSde0hOW3N1uzKE1ImAqFp881373vL6FkWu609paet33G/6oRUqUBk2nzPJHF18TyyaNQ+TEhbz5G5 + 3oQ4r6xpDx2Ytot8Hf21rydY7EG/8Hz+naeNqF/jw3+dCfFtdNrTB6bN90TSdxh87dyfQ13jRdFbkWtb + XNoufWmDz4kbHO/E8py7m7SjcWkrcg1FE8N1o23VOa9tSS0IS1uRWyj6GP1qymuxuhLXtrC0cWmD39jV + jekprsS1LSptXNowYuzmxvgUV+HaFpW2EldQNDR0cWN+ahNKW4kbKFoaaRsDVFuFHgSlzTmeTCb+Qdvk + eP+cIePatiZtfJ/Ai5G2MUKlFQhCTNoqRBptjfxdAte20gp8jVuSNsYSb0baxuuxsgJFIG0oYOArKWmr + zPuyStjNmLQVuH6is4G0MUSVXTVtvHDxbuAbKWmrjLQBd3wjFbM+CaQNFZA2Mc4NTbiDkzZUQNrEkDbg + hrSJIW3ADWkTsz4JpA0V+NPG35CWRtqAG9KmhX+yC9wM/Ls23o+VOTc0owgxaSvwIOiMtIkhbcAN30fF + OIuQ8Z6KSRt/2IYzuLSpKRAE0ob1uLSp8e1oym4GpY1vpFfyc7eDXlH+svFyrK1CD4LSVqHSyPLl5sbs + I2WTU+CP2sLSVuFZEMOxlxFtGygbr8biKtx0otLmfBjSVtGKyDjfiXeUrbgSF52wtPmehuEsaX7bBn4j + w1NeiRiEpY1rm4LJd6iRsDE69ZVoQVzauLYpGGnb4GYO/SrK1kCNFMSljWubhMHgeOdz6L624ZXYQI0S + BKaNa5uG0epYt3Qwnne8EBvwbXDalgamrcoj4aQz7dl8WbjhZj7xOmzBtc95exqZtirPhLNORygDA9ND + lRtOaNq4tskoFzfC1oVrdBIjEJo2X9sY1tJKxY1ZaaNMA2LT5nsurm21+S7hiRiURjyvxNQ3VnDaytxG + EaLA1Y0LWyt1AhCdtjrRRoi1VzcmpJlCX9vC0+ZqG9e2DlbVjenop9Dpj08bbVM0O29c11qqdPYT0uZ5 + Pia4kVl5433XlWdC0nc5I220TVhu36haZ57ZyD/4KWnztI1h7ig8cLziBNQ69jlpo20XcTpxJE1HsUOf + lDbHYzLcKoydY8M1OV5zU64zWWmjbcCVVCtbXtocj0rbgObKlS0xbbStiN19EF76qz73EgUPe2LaHF9K + GbRU+3Onufi7s8e8RSt41FPTRtvK2N8JteW/1tMWYD7oE/89RG7a7PdUxi3b0fRNHLpURyOn8pyVVCxb + dtrsT03b0h2+Z/qf+sNpI2wJap7x9LTRtkqON6Pv2T/+hsCIZTB/M5s8WvlpMz86gzeDZTf65c3w/mS8 + cpQ93hPSZr+48W1hCtMwtimB7WgxWkmsZZu/AVPSVvj5L8q4IcX7xitzOeMWrBikOWkrvQQXZX3dlCyD + NWpMVC7jPiyZoFlpE7kniLEXosjO2Ht8x3UtVe0zPS1t5oVgHOfy5O1mxaA6i3bHSzJb8QM9MW3WU0Tb + pvPm7SG3HoMf6oYRmqD6aZ6aNmPned+uMHIz+mx4kk+E7B1Zm8O0YSuP8ty0GQ8QbVslpm+rULVpbIOy + dENmp81Ye4Z0oYZ942U4V4dDPD9ttnVhVldrEjgGZT7TaCy/naxImy1uXNxKqFs4BmQRy0gUeOOsSZsp + boxuJXUSx1ysZTi6Ja7Sq9JmWSG+a5RkuXLHYxhqMLziimzVurRZzggv6OJyM8f2l9PoQrIybVA0Wjuu + ZQhF2gAIIm0ABJE2AIJIGwBBpA2AINIGQBBpAyCItAEQRNoACCJtAASRNgCCSBsAQaQNgCDSBkAQaQMg + iLQBEETaAAgibQAEkTYAgkgbAEGkDYAg0gZAEGkDIIi0ARBE2gAIIm0ABJE2AIJIGwBBpA2AINIGQBBp + AyCItAEQRNoACCJtAASRNgCCSBsAQaQNgCDSBkAQaQMgiLQBEETaAAgibQAEkTYAgkgbAEGkDYAg0gZA + EGkDIIi0ARBE2gAIIm0ABJE2AIJIGwA5P378HyuEmb0husDDAAAAAElFTkSuQmCC + + + \ No newline at end of file diff --git a/ImageCatalogCS/App.config b/ImageCatalogCS/App.config new file mode 100644 index 0000000..8e15646 --- /dev/null +++ b/ImageCatalogCS/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/ImageCatalogCS/CreaImmagineSeparateThread.cs b/ImageCatalogCS/CreaImmagineSeparateThread.cs new file mode 100644 index 0000000..4444736 --- /dev/null +++ b/ImageCatalogCS/CreaImmagineSeparateThread.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ImageCatalogCS +{ + class CreaImmagineSeparateThread + { + } +} diff --git a/ImageCatalogCS/ExifReader.cs b/ImageCatalogCS/ExifReader.cs new file mode 100644 index 0000000..9f801be --- /dev/null +++ b/ImageCatalogCS/ExifReader.cs @@ -0,0 +1,1166 @@ +using Microsoft.VisualBasic; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Data; +using System.Diagnostics; +///----------------------------------------------------------------------------- +/// +/// Utility class for reading EXIF data from images. Provides abstraction +/// for most common data and generic utilities for work with all other. +/// +/// +/// Copyright (c) Michal A. Valášek - Altair Communications, 2003 +/// Copmany: http://software.altaircom.net * support@altaircom.net +/// Private: http://www.rider.cz * developer@rider.cz +/// This is free software licensed under GNU Lesser General Public License +/// +/// +/// [altair] 10.9.2003 Created +/// +///----------------------------------------------------------------------------- +public class ExifReader : IDisposable +{ + + + private System.Drawing.Bitmap Image; + ///----------------------------------------------------------------------------- + /// + /// Contains possible values of EXIF tag names (ID) + /// + /// See GdiPlusImaging.h + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public enum TagNames + { + ExifIFD = 0x8769, + GpsIFD = 0x8825, + NewSubfileType = 0xfe, + SubfileType = 0xff, + ImageWidth = 0x100, + ImageHeight = 0x101, + BitsPerSample = 0x102, + Compression = 0x103, + PhotometricInterp = 0x106, + ThreshHolding = 0x107, + CellWidth = 0x108, + CellHeight = 0x109, + FillOrder = 0x10a, + DocumentName = 0x10d, + ImageDescription = 0x10e, + EquipMake = 0x10f, + EquipModel = 0x110, + StripOffsets = 0x111, + Orientation = 0x112, + SamplesPerPixel = 0x115, + RowsPerStrip = 0x116, + StripBytesCount = 0x117, + MinSampleValue = 0x118, + MaxSampleValue = 0x119, + XResolution = 0x11a, + YResolution = 0x11b, + PlanarConfig = 0x11c, + PageName = 0x11d, + XPosition = 0x11e, + YPosition = 0x11f, + FreeOffset = 0x120, + FreeByteCounts = 0x121, + GrayResponseUnit = 0x122, + GrayResponseCurve = 0x123, + T4Option = 0x124, + T6Option = 0x125, + ResolutionUnit = 0x128, + PageNumber = 0x129, + TransferFuncition = 0x12d, + SoftwareUsed = 0x131, + DateTime = 0x132, + Artist = 0x13b, + HostComputer = 0x13c, + Predictor = 0x13d, + WhitePoint = 0x13e, + PrimaryChromaticities = 0x13f, + ColorMap = 0x140, + HalftoneHints = 0x141, + TileWidth = 0x142, + TileLength = 0x143, + TileOffset = 0x144, + TileByteCounts = 0x145, + InkSet = 0x14c, + InkNames = 0x14d, + NumberOfInks = 0x14e, + DotRange = 0x150, + TargetPrinter = 0x151, + ExtraSamples = 0x152, + SampleFormat = 0x153, + SMinSampleValue = 0x154, + SMaxSampleValue = 0x155, + TransferRange = 0x156, + JPEGProc = 0x200, + JPEGInterFormat = 0x201, + JPEGInterLength = 0x202, + JPEGRestartInterval = 0x203, + JPEGLosslessPredictors = 0x205, + JPEGPointTransforms = 0x206, + JPEGQTables = 0x207, + JPEGDCTables = 0x208, + JPEGACTables = 0x209, + YCbCrCoefficients = 0x211, + YCbCrSubsampling = 0x212, + YCbCrPositioning = 0x213, + REFBlackWhite = 0x214, + ICCProfile = 0x8773, + Gamma = 0x301, + ICCProfileDescriptor = 0x302, + SRGBRenderingIntent = 0x303, + ImageTitle = 0x320, + Copyright = 0x8298, + ResolutionXUnit = 0x5001, + ResolutionYUnit = 0x5002, + ResolutionXLengthUnit = 0x5003, + ResolutionYLengthUnit = 0x5004, + PrintFlags = 0x5005, + PrintFlagsVersion = 0x5006, + PrintFlagsCrop = 0x5007, + PrintFlagsBleedWidth = 0x5008, + PrintFlagsBleedWidthScale = 0x5009, + HalftoneLPI = 0x500a, + HalftoneLPIUnit = 0x500b, + HalftoneDegree = 0x500c, + HalftoneShape = 0x500d, + HalftoneMisc = 0x500e, + HalftoneScreen = 0x500f, + JPEGQuality = 0x5010, + GridSize = 0x5011, + ThumbnailFormat = 0x5012, + ThumbnailWidth = 0x5013, + ThumbnailHeight = 0x5014, + ThumbnailColorDepth = 0x5015, + ThumbnailPlanes = 0x5016, + ThumbnailRawBytes = 0x5017, + ThumbnailSize = 0x5018, + ThumbnailCompressedSize = 0x5019, + ColorTransferFunction = 0x501a, + ThumbnailData = 0x501b, + ThumbnailImageWidth = 0x5020, + ThumbnailImageHeight = 0x502, + ThumbnailBitsPerSample = 0x5022, + ThumbnailCompression = 0x5023, + ThumbnailPhotometricInterp = 0x5024, + ThumbnailImageDescription = 0x5025, + ThumbnailEquipMake = 0x5026, + ThumbnailEquipModel = 0x5027, + ThumbnailStripOffsets = 0x5028, + ThumbnailOrientation = 0x5029, + ThumbnailSamplesPerPixel = 0x502a, + ThumbnailRowsPerStrip = 0x502b, + ThumbnailStripBytesCount = 0x502c, + ThumbnailResolutionX = 0x502d, + ThumbnailResolutionY = 0x502e, + ThumbnailPlanarConfig = 0x502f, + ThumbnailResolutionUnit = 0x5030, + ThumbnailTransferFunction = 0x5031, + ThumbnailSoftwareUsed = 0x5032, + ThumbnailDateTime = 0x5033, + ThumbnailArtist = 0x5034, + ThumbnailWhitePoint = 0x5035, + ThumbnailPrimaryChromaticities = 0x5036, + ThumbnailYCbCrCoefficients = 0x5037, + ThumbnailYCbCrSubsampling = 0x5038, + ThumbnailYCbCrPositioning = 0x5039, + ThumbnailRefBlackWhite = 0x503a, + ThumbnailCopyRight = 0x503b, + LuminanceTable = 0x5090, + ChrominanceTable = 0x5091, + FrameDelay = 0x5100, + LoopCount = 0x5101, + PixelUnit = 0x5110, + PixelPerUnitX = 0x5111, + PixelPerUnitY = 0x5112, + PaletteHistogram = 0x5113, + ExifExposureTime = 0x829a, + ExifFNumber = 0x829d, + ExifExposureProg = 0x8822, + ExifSpectralSense = 0x8824, + ExifISOSpeed = 0x8827, + ExifOECF = 0x8828, + ExifVer = 0x9000, + ExifDTOrig = 0x9003, + ExifDTDigitized = 0x9004, + ExifCompConfig = 0x9101, + ExifCompBPP = 0x9102, + ExifShutterSpeed = 0x9201, + ExifAperture = 0x9202, + ExifBrightness = 0x9203, + ExifExposureBias = 0x9204, + ExifMaxAperture = 0x9205, + ExifSubjectDist = 0x9206, + ExifMeteringMode = 0x9207, + ExifLightSource = 0x9208, + ExifFlash = 0x9209, + ExifFocalLength = 0x920a, + ExifMakerNote = 0x927c, + ExifUserComment = 0x9286, + ExifDTSubsec = 0x9290, + ExifDTOrigSS = 0x9291, + ExifDTDigSS = 0x9292, + ExifFPXVer = 0xa000, + ExifColorSpace = 0xa001, + ExifPixXDim = 0xa002, + ExifPixYDim = 0xa003, + ExifRelatedWav = 0xa004, + ExifInterop = 0xa005, + ExifFlashEnergy = 0xa20b, + ExifSpatialFR = 0xa20c, + ExifFocalXRes = 0xa20e, + ExifFocalYRes = 0xa20f, + ExifFocalResUnit = 0xa210, + ExifSubjectLoc = 0xa214, + ExifExposureIndex = 0xa215, + ExifSensingMethod = 0xa217, + ExifFileSource = 0xa300, + ExifSceneType = 0xa301, + ExifCfaPattern = 0xa302, + GpsVer = 0x0, + GpsLatitudeRef = 0x1, + GpsLatitude = 0x2, + GpsLongitudeRef = 0x3, + GpsLongitude = 0x4, + GpsAltitudeRef = 0x5, + GpsAltitude = 0x6, + GpsGpsTime = 0x7, + GpsGpsSatellites = 0x8, + GpsGpsStatus = 0x9, + GpsGpsMeasureMode = 0xa, + GpsGpsDop = 0xb, + GpsSpeedRef = 0xc, + GpsSpeed = 0xd, + GpsTrackRef = 0xe, + GpsTrack = 0xf, + GpsImgDirRef = 0x10, + GpsImgDir = 0x11, + GpsMapDatum = 0x12, + GpsDestLatRef = 0x13, + GpsDestLat = 0x14, + GpsDestLongRef = 0x15, + GpsDestLong = 0x16, + GpsDestBearRef = 0x17, + GpsDestBear = 0x18, + GpsDestDistRef = 0x19, + GpsDestDist = 0x1a + } + + ///----------------------------------------------------------------------------- + /// + /// Real position of 0th row and column of picture + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public enum Orientations + { + TopLeft = 1, + TopRight = 2, + BottomRight = 3, + BottomLeft = 4, + LeftTop = 5, + RightTop = 6, + RightBottom = 7, + LftBottom = 8 + } + + ///----------------------------------------------------------------------------- + /// + /// Exposure programs + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public enum ExposurePrograms + { + Manual = 1, + Normal = 2, + AperturePriority = 3, + ShutterPriority = 4, + Creative = 5, + Action = 6, + Portrait = 7, + Landscape = 8 + } + + ///----------------------------------------------------------------------------- + /// + /// Exposure metering modes + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public enum ExposureMeteringModes + { + Unknown = 0, + Average = 1, + CenterWeightedAverage = 2, + Spot = 3, + MultiSpot = 4, + MultiSegment = 5, + Partial = 6, + Other = 255 + } + + ///----------------------------------------------------------------------------- + /// + /// Flash activity modes + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public enum FlashModes + { + NotFired = 0, + Fired = 1, + FiredButNoStrobeReturned = 5, + FiredAndStrobeReturned = 7 + } + + ///----------------------------------------------------------------------------- + /// + /// Possible light sources (white balance) + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public enum LightSources + { + Unknown = 0, + Daylight = 1, + Fluorescent = 2, + Tungsten = 3, + Flash = 10, + StandardLightA = 17, + StandardLightB = 18, + StandardLightC = 19, + D55 = 20, + D65 = 21, + D75 = 22, + Other = 255 + } + + ///----------------------------------------------------------------------------- + /// + /// Represents rational which is type of some Exif properties + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public struct Rational + { + public Int32 Numerator; + + public Int32 Denominator; + ///----------------------------------------------------------------------------- + /// + /// Converts rational to string representation + /// + /// Optional, default "/". String to be used as delimiter of components. + /// String representation of the rational. + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public new string ToString(string Delimiter = "/") + { + return Numerator + Delimiter + Denominator; + } + + ///----------------------------------------------------------------------------- + /// + /// Converts rational to double precision real number + /// + /// The rational as double precision real number. + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public double ToDouble() + { + return Numerator / Denominator; + } + } + + ///----------------------------------------------------------------------------- + /// + /// Initializes new instance of this class. + /// + /// Bitmap to read exif information from + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public ExifReader(System.Drawing.Bitmap Bitmap) + { + if (Bitmap == null) + throw new ArgumentNullException("Bitmap"); + this.Image = Bitmap; + } + + ///----------------------------------------------------------------------------- + /// + /// Returns all available data in formatted string form + /// + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public override string ToString() + { + System.Text.StringBuilder SB = new System.Text.StringBuilder(); + + SB.Append("Image:"); + SB.Append("\\n\\tDimensions: " + this.Width + " x " + this.Height + " px"); + SB.Append("\\n\\tResolution: " + this.ResolutionX + " x " + this.ResolutionY + " dpi"); + SB.Append("\\n\\tOrientation: " + Enum.GetName(typeof(Orientations), this.Orientation)); + SB.Append("\\n\\tTitle: " + this.Title); + SB.Append("\\n\\tDescription: " + this.Description); + SB.Append("\\n\\tCopyright: " + this.Copyright); + SB.Append("\\nEquipment:"); + SB.Append("\\n\\tMaker: " + this.EquipmentMaker); + SB.Append("\\n\\tModel: " + this.EquipmentModel); + SB.Append("\\n\\tSoftware: " + this.Software); + SB.Append("\\nDate and time:"); + SB.Append("\\n\\tGeneral: " + this.DateTimeLastModified.ToString()); + SB.Append("\\n\\tOriginal: " + this.DateTimeOriginal.ToString()); + SB.Append("\\n\\tDigitized: " + this.DateTimeDigitized.ToString()); + SB.Append("\\nShooting conditions:"); + SB.Append("\\n\\tExposure time: " + this.ExposureTime.ToString("N4") + " s"); + SB.Append("\\n\\tExposure program: " + Enum.GetName(typeof(ExposurePrograms), this.ExposureProgram)); + SB.Append("\\n\\tExposure mode: " + Enum.GetName(typeof(ExposureMeteringModes), this.ExposureMeteringMode)); + SB.Append("\\n\\tAperture: F" + this.Aperture.ToString("N2")); + SB.Append("\\n\\tISO sensitivity: " + this.ISO); + SB.Append("\\n\\tSubject distance: " + this.SubjectDistance.ToString("N2") + " m"); + SB.Append("\\n\\tFocal length: " + this.FocalLength); + SB.Append("\\n\\tFlash: " + Enum.GetName(typeof(FlashModes), this.FlashMode)); + SB.Append("\\n\\tLight source (WB): " + Enum.GetName(typeof(LightSources), this.LightSource)); + SB.Append("\\n\\nCopyright (c) Michal A. Valasek - Altair Communications, 2003"); + SB.Append("\\nhttp://software.altaircom.net * support@altaircom.net"); + + SB.Replace("\\n", System.Environment.NewLine); + SB.Replace("\\t", "\t"); + return SB.ToString(); + } + + ///----------------------------------------------------------------------------- + /// + /// Brand of equipment (EXIF EquipMake) + /// + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public string EquipmentMaker + { + get { return this.GetPropertyString((int)TagNames.EquipMake); } + } + + ///----------------------------------------------------------------------------- + /// + /// Model of equipment (EXIF EquipModel) + /// + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public string EquipmentModel + { + get { return this.GetPropertyString((int)TagNames.EquipModel); } + } + + ///----------------------------------------------------------------------------- + /// + /// Software used for processing (EXIF Software) + /// + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public string Software + { + get { return this.GetPropertyString((int)TagNames.SoftwareUsed); } + } + + ///----------------------------------------------------------------------------- + /// + /// Orientation of image (position of row 0, column 0) (EXIF Orientation) + /// + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public Orientations Orientation + { + get + { + Int32 X = this.GetPropertyInt16((int)TagNames.Orientation); + + if (!Enum.IsDefined(typeof(Orientations), X)) + { + return Orientations.TopLeft; + } + else + { + return (Orientations)Enum.Parse(typeof(Orientations), Enum.GetName(typeof(Orientations), X)); + } + } + } + + ///----------------------------------------------------------------------------- + /// + /// Time when image was last modified (EXIF DateTime). + /// + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public DateTime DateTimeLastModified + { + get + { + try + { + return DateTime.ParseExact(this.GetPropertyString((int)TagNames.DateTime), "yyyy\\:MM\\:dd HH\\:mm\\:ss", null); + } + catch (Exception ex) + { + return DateTime.MinValue; + } + } + } + + ///----------------------------------------------------------------------------- + /// + /// Time when image was taken (EXIF DateTimeOriginal). + /// + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public DateTime DateTimeOriginal + { + get + { + try + { + return DateTime.ParseExact(this.GetPropertyString((int)TagNames.ExifDTOrig), "yyyy\\:MM\\:dd HH\\:mm\\:ss", null); + } + catch (Exception ex) + { + return DateTime.MinValue; + } + } + } + + ///----------------------------------------------------------------------------- + /// + /// Time when image was digitized (EXIF DateTimeDigitized). + /// + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public DateTime DateTimeDigitized + { + get + { + try + { + return DateTime.ParseExact(this.GetPropertyString((int)TagNames.ExifDTDigitized), "yyyy\\:MM\\:dd HH\\:mm\\:ss", null); + } + catch (Exception ex) + { + return DateTime.MinValue; + } + } + } + + ///----------------------------------------------------------------------------- + /// + /// Image width + /// + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public Int16 Width + { + get { return this.GetPropertyInt16((int)TagNames.ImageWidth); } + } + + ///----------------------------------------------------------------------------- + /// + /// Image height + /// + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public Int16 Height + { + get { return this.GetPropertyInt16((int)TagNames.ImageHeight); } + } + + ///----------------------------------------------------------------------------- + /// + /// X resolution in dpi (EXIF XResolution/ResolutionUnit) + /// + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public double ResolutionX + { + get + { + double R = this.GetPropertyRational((int)TagNames.XResolution).ToDouble(); + + if (this.GetPropertyInt16((int)TagNames.ResolutionUnit) == 3) + { + //-- resolution is in points/cm + return R * 2.54; + } + else + { + //-- resolution is in points/inch + return R; + } + } + } + + ///----------------------------------------------------------------------------- + /// + /// Y resolution in dpi (EXIF YResolution/ResolutionUnit) + /// + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public double ResolutionY + { + get + { + double R = this.GetPropertyRational((int)TagNames.YResolution).ToDouble(); + + if (this.GetPropertyInt16((int)TagNames.ResolutionUnit) == 3) + { + //-- resolution is in points/cm + return R * 2.54; + } + else + { + //-- resolution is in points/inch + return R; + } + } + } + + ///----------------------------------------------------------------------------- + /// + /// Image title (EXIF ImageTitle) + /// + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public string Title + { + get { return this.GetPropertyString((int)TagNames.ImageTitle); } + } + + ///----------------------------------------------------------------------------- + /// + /// Image description (EXIF ImageDescription) + /// + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public string Description + { + get { return this.GetPropertyString((int)TagNames.ImageDescription); } + } + + ///----------------------------------------------------------------------------- + /// + /// Image copyright (EXIF Copyright) + /// + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public string Copyright + { + get { return this.GetPropertyString((int)TagNames.Copyright); } + } + + ///----------------------------------------------------------------------------- + /// + /// Exposure time in seconds (EXIF ExifExposureTime/ExifShutterSpeed) + /// + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public double ExposureTime + { + get + { + if (this.IsPropertyDefined((int)TagNames.ExifExposureTime)) + { + //-- Exposure time is explicitly specified + return this.GetPropertyRational((int)TagNames.ExifExposureTime).ToDouble(); + } + else if (this.IsPropertyDefined((int)TagNames.ExifShutterSpeed)) + { + //-- Compute exposure time from shutter speed + return 1 / (Math.Pow(2, this.GetPropertyRational((int)TagNames.ExifShutterSpeed).ToDouble())); + } + else + { + //-- Can't figure out + return 0; + } + } + } + + ///----------------------------------------------------------------------------- + /// + /// Aperture value as F number (EXIF ExifFNumber/ExifApertureValue) + /// + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public double Aperture + { + get + { + if (this.IsPropertyDefined((int)TagNames.ExifFNumber)) + { + return this.GetPropertyRational((int)TagNames.ExifFNumber).ToDouble(); + } + else if (this.IsPropertyDefined((int)TagNames.ExifAperture)) + { + return Math.Pow(System.Math.Sqrt(2), this.GetPropertyRational((int)TagNames.ExifAperture).ToDouble()); + } + else + { + return 0; + } + } + } + + ///----------------------------------------------------------------------------- + /// + /// Exposure program used (EXIF ExifExposureProg) + /// + /// + /// If not specified, returns Normal (2) + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public ExposurePrograms ExposureProgram + { + get + { + Int32 X = this.GetPropertyInt16((int)TagNames.ExifExposureProg); + + if (Enum.IsDefined(typeof(ExposurePrograms), X)) + { + return (ExposurePrograms)Enum.Parse(typeof(ExposurePrograms), Enum.GetName(typeof(ExposurePrograms), X)); + } + else + { + return ExposurePrograms.Normal; + } + } + } + + ///----------------------------------------------------------------------------- + /// + /// ISO sensitivity + /// + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public Int16 ISO + { + get { return this.GetPropertyInt16((int)TagNames.ExifISOSpeed); } + } + + ///----------------------------------------------------------------------------- + /// + /// Subject distance in meters (EXIF SubjectDistance) + /// + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public double SubjectDistance + { + get { return this.GetPropertyRational((int)TagNames.ExifSubjectDist).ToDouble(); } + } + + ///----------------------------------------------------------------------------- + /// + /// Exposure method metering mode used (EXIF MeteringMode) + /// + /// + /// If not specified, returns Unknown (0) + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public ExposureMeteringModes ExposureMeteringMode + { + get + { + Int32 X = this.GetPropertyInt16((int)TagNames.ExifMeteringMode); + + if (Enum.IsDefined(typeof(ExposureMeteringModes), X)) + { + return (ExposureMeteringModes)Enum.Parse(typeof(ExposureMeteringModes), Enum.GetName(typeof(ExposureMeteringModes), X)); + } + else + { + return ExposureMeteringModes.Unknown; + } + } + } + + ///----------------------------------------------------------------------------- + /// + /// Focal length of lenses in mm (EXIF FocalLength) + /// + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public double FocalLength + { + get { return this.GetPropertyRational((int)TagNames.ExifFocalLength).ToDouble(); } + } + + ///----------------------------------------------------------------------------- + /// + /// Flash mode (EXIF Flash) + /// + /// + /// If not present, value NotFired (0) is returned + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public FlashModes FlashMode + { + get + { + Int32 X = this.GetPropertyInt16((int)TagNames.ExifFlash); + + if (Enum.IsDefined(typeof(FlashModes), X)) + { + return (FlashModes)Enum.Parse(typeof(FlashModes), Enum.GetName(typeof(FlashModes), X)); + } + else + { + return FlashModes.NotFired; + } + } + } + + ///----------------------------------------------------------------------------- + /// + /// Light source / white balance (EXIF LightSource) + /// + /// + /// If not specified, returns Unknown (0). + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public LightSources LightSource + { + get + { + Int32 X = this.GetPropertyInt16((int)TagNames.ExifLightSource); + + if (Enum.IsDefined(typeof(LightSources), X)) + { + return (LightSources)Enum.Parse(typeof(LightSources), Enum.GetName(typeof(LightSources), X)); + } + else + { + return LightSources.Unknown; + } + } + } + + ///----------------------------------------------------------------------------- + /// + /// Checks if current image has specified certain property + /// + /// + /// True if image has specified property, False otherwise. + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public bool IsPropertyDefined(Int32 PID) + { + return Convert.ToBoolean(Array.IndexOf(this.Image.PropertyIdList, PID) > -1); + } + + ///----------------------------------------------------------------------------- + /// + /// Gets specified Int32 property + /// + /// Property ID + /// Optional, default 0. Default value returned if property is not present. + /// Value of property or DefaultValue if property is not present. + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public Int32 GetPropertyInt32(Int32 PID, Int32 DefaultValue = 0) + { + if (this.IsPropertyDefined(PID)) + { + return GetInt32(this.Image.GetPropertyItem(PID).Value); + } + else + { + return DefaultValue; + } + } + + ///----------------------------------------------------------------------------- + /// + /// Gets specified Int16 property + /// + /// Property ID + /// Optional, default 0. Default value returned if property is not present. + /// Value of property or DefaultValue if property is not present. + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public Int16 GetPropertyInt16(Int32 PID, Int16 DefaultValue = 0) + { + if (this.IsPropertyDefined(PID)) + { + return GetInt16(this.Image.GetPropertyItem(PID).Value); + } + else + { + return DefaultValue; + } + } + + ///----------------------------------------------------------------------------- + /// + /// Gets specified string property + /// + /// Property ID + /// Optional, default String.Empty. Default value returned if property is not present. + /// + /// Value of property or DefaultValue if property is not present. + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public string GetPropertyString(Int32 PID, string DefaultValue = "") + { + if (this.IsPropertyDefined(PID)) + { + return GetString(this.Image.GetPropertyItem(PID).Value); + } + else + { + return DefaultValue; + } + } + + ///----------------------------------------------------------------------------- + /// + /// Gets specified rational property + /// + /// Property ID + /// + /// Value of property or 0/1 if not present. + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public Rational GetPropertyRational(Int32 PID) + { + if (this.IsPropertyDefined(PID)) + { + return GetRational(this.Image.GetPropertyItem(PID).Value); + } + else + { + Rational R = default(Rational); + R.Numerator = 0; + R.Denominator = 1; + return R; + } + } + + ///----------------------------------------------------------------------------- + /// + /// Reads Int32 from EXIF bytearray. + /// + /// EXIF bytearray to process + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public static Int32 GetInt32(byte[] B) + { + if (B.Length < 4) + throw new ArgumentException("Data too short (4 bytes expected)", "B"); + return B[3] << 24 | B[2] << 16 | B[1] << 8 | B[0]; + } + + ///----------------------------------------------------------------------------- + /// + /// Reads Int16 from EXIF bytearray. + /// + /// EXIF bytearray to process + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public static Int16 GetInt16(byte[] B) + { + if (B.Length < 2) + throw new ArgumentException("Data too short (2 bytes expected)", "B"); + return Convert.ToInt16(B[1] << 8 | B[0]); + } + + ///----------------------------------------------------------------------------- + /// + /// Reads string from EXIF bytearray. + /// + /// EXIF bytearray to process + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public static string GetString(byte[] B) + { + string R = System.Text.Encoding.ASCII.GetString(B); + if (R.EndsWith(string.Empty)) + R = R.Substring(0, R.Length - 1); + return R; + } + + ///----------------------------------------------------------------------------- + /// + /// Reads rational from EXIF bytearray. + /// + /// EXIF bytearray to process + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public static Rational GetRational(byte[] B) + { + Rational R = new Rational(); + byte[] N = new byte[4]; + byte[] D = new byte[4]; + Array.Copy(B, 0, N, 0, 4); + Array.Copy(B, 4, D, 0, 4); + R.Denominator = GetInt32(D); + R.Numerator = GetInt32(N); + return R; + } + + ///----------------------------------------------------------------------------- + /// + /// Disposes unmanaged resources of this class + /// + /// + /// + /// [altair] 10.9.2003 Created + /// + ///----------------------------------------------------------------------------- + public void Dispose() + { + this.Image.Dispose(); + } +} \ No newline at end of file diff --git a/ImageCatalogCS/FileHelper.cs b/ImageCatalogCS/FileHelper.cs new file mode 100644 index 0000000..0e68384 --- /dev/null +++ b/ImageCatalogCS/FileHelper.cs @@ -0,0 +1,173 @@ +using Microsoft.VisualBasic; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Data; +using System.Diagnostics; +using System.IO; + +public class FileHelper +{ + //Private dirSourceDest As Dictionary(Of FileInfo, DirectoryInfo) + private int filesPerFolder; + private string suffix; + private int counterSize; + private int numerationType; + private string filter; + private bool separateFiles; + + private string extensions = "*.jpg,*.png,*.gif"; + + public enum numerazione + { + Progressiva, + Files + } + /// + /// Preparazione per la separazione + /// + /// + /// + /// + /// + /// + public FileHelper(int filesPerFolder, string suffix, int counterSize, int numerationType) + { + this.filesPerFolder = filesPerFolder; + this.suffix = suffix; + this.counterSize = counterSize; + this.numerationType = numerationType; + this.separateFiles = true; + } + + /// + /// nessuna separazione + /// + /// + public FileHelper() + { + this.separateFiles = false; + } + + + public Dictionary GetFilesRecursive(DirectoryInfo root, DirectoryInfo destRoot, string filter) + { + Dictionary dirSourceDest = new Dictionary(); + List result = new List(); + + //Dim stack As New Stack(Of DirectoryInfo) + Stack> stack = new Stack>(); + + + this.filter = filter; + KeyValuePair pair = new KeyValuePair(); + + + //stack.Push(root) + stack.Push(new KeyValuePair(root, destRoot)); + + while ((stack.Count > 0)) + { + KeyValuePair curDirKV = stack.Pop(); + //curDirKP = stack.Pop() + DirectoryInfo dir = curDirKV.Key; + DirectoryInfo dDir = curDirKV.Value; + try + { + //result.AddRange(dir.GetFiles(filter, SearchOption.TopDirectoryOnly)) + // dividere file qui + if (filesPerFolder > 0 & separateFiles) + { + appendDictionary(dirSourceDest, dividiFilesInDir(dir, dDir)); + } + else + { + appendDictionary(dirSourceDest, getAllFilesInDir(dir, dDir)); + } + + + + foreach (DirectoryInfo subDirectory in dir.GetDirectories()) + { + stack.Push(new KeyValuePair(subDirectory, new DirectoryInfo(Path.Combine(dDir.FullName, subDirectory.Name)))); + + } + + } + catch (Exception ex) + { + } + } + + return dirSourceDest; + } + + public Dictionary appendDictionary(Dictionary dictA, Dictionary dictB) + { + foreach (KeyValuePair pair in dictB) + { + dictA.Add(pair.Key, pair.Value); + } + return dictA; + } + + public Dictionary getAllFilesInDir(DirectoryInfo dir, DirectoryInfo dirDest) + { + Dictionary dict = new Dictionary(); + foreach (FileInfo File in dir.GetFiles(filter)) + { + dict.Add(File, new DirectoryInfo(Path.Combine(dirDest.FullName, File.Name))); + + } + return dict; + } + + private Dictionary dividiFilesInDir(DirectoryInfo dir, DirectoryInfo dirDest) + { + int filesCount = dir.GetFiles(filter).Length; + int contaFilePerDir = 0; + int contaDirPerDir = 0; + string tempText = string.Empty; + Dictionary foldersDict = new Dictionary(); + + DirectoryInfo destDir = null; + destDir = new DirectoryInfo(Path.Combine(dirDest.FullName)); + + foreach (FileInfo file in dir.GetFiles(filter)) + { + contaFilePerDir += 1; + + if (contaFilePerDir == (contaDirPerDir * filesPerFolder) + 1) + { + contaDirPerDir += 1; + + if (numerazione.Progressiva.Equals(numerationType)) + { + tempText = contaDirPerDir.ToString(); + } + else + { + tempText = (contaDirPerDir * filesPerFolder).ToString(); + } + int i = 0; + for (i = 1; i <= (counterSize - tempText.Length); i++) + { + tempText = "0" + tempText; + } + destDir = new DirectoryInfo(Path.Combine(dirDest.FullName, suffix + tempText)); + + + + } + + if (!destDir.Exists) + { + destDir.Create(); + } + + foldersDict.Add(file, destDir); + } + + return foldersDict; + } +} \ No newline at end of file diff --git a/ImageCatalogCS/ImageCatalog 3.csproj b/ImageCatalogCS/ImageCatalog 3.csproj new file mode 100644 index 0000000..e134fca --- /dev/null +++ b/ImageCatalogCS/ImageCatalog 3.csproj @@ -0,0 +1,110 @@ + + + + + Debug + AnyCPU + {D11ED7B0-93E8-4F38-A142-EED72D7EE8B5} + WinExe + Properties + ImageCatalogCS + ImageCatalogCS + v4.5 + 512 + SAK + SAK + SAK + SAK + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + Form + + + AboutForm.cs + + + + + + + Form + + + MainForm.cs + + + + + + + + + AboutForm.cs + + + MainForm.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + \ No newline at end of file diff --git a/ImageCatalogCS/ImageCreator.cs b/ImageCatalogCS/ImageCreator.cs new file mode 100644 index 0000000..3c03533 --- /dev/null +++ b/ImageCatalogCS/ImageCreator.cs @@ -0,0 +1,1057 @@ +using Microsoft.VisualBasic; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Data; +using System.Diagnostics; +using System.IO; +using System.Drawing.Drawing2D; +using System.Drawing.Imaging; +using System.Drawing; +using ImageCatalogCS; +using System.Windows.Forms; +//using System.Drawing; +//Imports System.Threading + +public class ImageCreator +{ + #region "dichiarazioni" + + + private bool FotoRuotaADestra = false; + + private bool FotoRuotaASinistra = false; + private string TempMinText = ""; + //Private crFont1 As Font + + private string _NomeFileChild; + private DirectoryInfo _SourceDir; + private DirectoryInfo _DestDirStart; + + private DirectoryInfo _DestDir; + + private FileInfo _workFile; + private string testoFirma; + private string testoFirmaV; + private int alphaScelta; + private int DimensioneStandard; + private int DimensioneStandardMiniatura; + private DateTime dataFoto; + private DateTime dataPartenzaI; + private string testoOrario; + private string testoFirmaPiccola; + private Size thumbSizeSmall; + private Size thumbSizeBig; + private string nomeFileSmall; + private string nomeFileBig; + + private string nomeFileBig2; + private float yPosFromBottom; + private float yPosFromBottom1; + private float yPosFromBottom2; + private float yPosFromBottom3; + + private float yPosFromBottom4; + + #endregion + public ImageCreator() + { + } + + public ImageCreator(string nomeFileChild, DirectoryInfo sourceDir, DirectoryInfo destDir, DirectoryInfo destDirStart) + { + this._NomeFileChild = nomeFileChild; + this._SourceDir = sourceDir; + this._DestDir = destDir; + this._DestDirStart = destDirStart; + this._workFile = new FileInfo(nomeFileChild); + } + + public ImageCreator(string nomeFileChild, DirectoryInfo sourceDir, DirectoryInfo destDir) + { + this._NomeFileChild = nomeFileChild; + this._DestDir = destDir; + } + + public ImageCreator(FileInfo file, DirectoryInfo destination) + { + this._workFile = file; + this._DestDir = destination; + + } + + + + public void CreaImmagineThread(string Info) + { + + try + { + preparaVariabili(); + //Dim g As System.Drawing.Image = System.Drawing.Image.FromFile(Path.Combine(SourceDir.FullName, NomeFileChild)) + System.Drawing.Image g = System.Drawing.Image.FromFile(WorkFile.FullName); + + // Imposta testo extra + impostaTestoExtra(g); + + // Ruota l'immagine in base ai dati EXIF + Rotation(ref g); + + // Forza jpeg se è selezionata l'opzione + System.Drawing.Imaging.ImageFormat thisFormat = g.RawFormat; + if (PicSettings.UsaForzaJpg == true) + thisFormat = System.Drawing.Imaging.ImageFormat.Jpeg; + + prepareThumbnailSize(g); + + Bitmap imgOutputBig = new Bitmap(g, thumbSizeBig.Width, thumbSizeBig.Height); + imgOutputBig.SetResolution(g.HorizontalResolution, g.VerticalResolution); + + // Crea le miniature + creaMiniature(g, imgOutputBig, thisFormat); + + aggiungiTesto(g, imgOutputBig); + + aggiungiLogo(imgOutputBig); + + salvaFoto(imgOutputBig, thumbSizeBig, nomeFileBig, nomeFileSmall, thumbSizeSmall, thisFormat); + + g.Dispose(); + + GC.Collect(); + + //PicSettings.mainForm.stepProgressBar(); + + + } + catch (Exception ex) + { + + MessageBox.Show(ex.Message); + + + } + + + + } + + + private void Rotation(ref System.Drawing.Image g) + { + FotoRuotaADestra = false; + FotoRuotaASinistra = false; + + if (PicSettings.UsaRotazioneAutomatica) + { + // ci sono dati exif + if (g.PropertyIdList.Length > 0) + { + ExifReader DatiExif = new ExifReader((Bitmap)g); + + switch (DatiExif.Orientation) + { + case ExifReader.Orientations.BottomLeft: + + break; + case ExifReader.Orientations.BottomRight: + + break; + case ExifReader.Orientations.LeftTop: + + break; + case ExifReader.Orientations.LftBottom: + FotoRuotaASinistra = true; + break; + case ExifReader.Orientations.RightBottom: + + break; + case ExifReader.Orientations.RightTop: + + break; + case ExifReader.Orientations.TopLeft: + + break; + case ExifReader.Orientations.TopRight: + + break; + } + } + } + + if (FotoRuotaASinistra == true) + { + g.RotateFlip(RotateFlipType.Rotate270FlipNone); + } + if (FotoRuotaADestra == true) + { + g.RotateFlip(RotateFlipType.Rotate90FlipNone); + } + + + + } + /// + /// Aggiunge Orario, tempo gara e altri + /// + /// Image + /// + private void impostaTestoExtra(Image g) + { + + if (PicSettings.UsaOrarioTestoApplicare | PicSettings.UsaTempoGaraTestoApplicare | PicSettings.UsaOrarioMiniatura | PicSettings.TestoMin | PicSettings.AggTempoGaraMin | PicSettings.AggNumTempMin) + { + // ci sono dati exif + if (g.PropertyIdList.Length > 0) + { + ExifReader DatiExif = new ExifReader((Bitmap)g); + dataFoto = DatiExif.DateTimeOriginal; + testoFirma = PicSettings.TestoFirmaStart; + testoFirmaV = PicSettings.TestoFirmaStartV; + + if (dataFoto.Year != 1) + { + testoFirmaPiccola = dataFoto.ToShortTimeString(); + if (PicSettings.UsaOrarioTestoApplicare == true) + { + testoFirma += " " + dataFoto.ToShortDateString() + " " + dataFoto.ToLongTimeString(); + testoFirmaV += " " + dataFoto.ToShortDateString() + " " + dataFoto.ToLongTimeString(); + } + if (PicSettings.UsaTempoGaraTestoApplicare == true) + { + TimeSpan Orario = dataFoto.Subtract(dataPartenzaI); + + + //TimeSpan Orario = new TimeSpan( DateAndTime.DateDiff(DateInterval.Second, dataPartenzaI, dataFoto) * 10000000); + testoFirma += " " + testoOrario + Orario.Hours.ToString("00") + ":" + Orario.Minutes.ToString("00") + ":" + Orario.Seconds.ToString("00"); + testoFirmaV += " " + testoOrario + Orario.Hours.ToString("00") + ":" + Orario.Minutes.ToString("00") + ":" + Orario.Seconds.ToString("00"); + } + } + + } + } + else + { + testoFirma = PicSettings.TestoFirmaStart; + testoFirmaV = PicSettings.TestoFirmaStartV; + + } + } + + /// + /// Prepara diverse variabili azzerandole, elaborandole e prendendole dalle impostazioni + /// + /// + private void preparaVariabili() + { + alphaScelta = Convert.ToInt32((255 * (100 - PicSettings.Trasparenza) / 100)); + testoFirma = ""; + testoFirmaV = ""; + dataPartenzaI = PicSettings.DataPartenza; + testoOrario = PicSettings.TestoOrario; + if (testoOrario.Length > 0) + testoOrario += " "; + testoFirmaPiccola = ""; + thumbSizeSmall = new Size(); + thumbSizeBig = new Size(); + nomeFileSmall = ""; + nomeFileBig2 = ""; + nomeFileBig = ""; + DimensioneStandard = PicSettings.dimStandard; + DimensioneStandardMiniatura = PicSettings.dimStandardMiniatura; + //nomeFileSmall = Suffisso & NomeFileChild + //nomeFileBig = NomeFileChild + nomeFileSmall = PicSettings.Suffisso + WorkFile.Name; + nomeFileBig = WorkFile.Name; + } + + private void prepareThumbnailSize(Image g) + { + if (g.Width > g.Height) + { + thumbSizeSmall = NewthumbSize(g.Width, g.Height, PicSettings.LarghezzaSmall, "Larghezza"); + Size SizeOrig = new Size(g.Width, g.Height); + thumbSizeBig = SizeOrig; + } + else + { + thumbSizeSmall = NewthumbSize(g.Width, g.Height, PicSettings.AltezzaSmall, "Altezza"); + Size SizeOrig = new Size(g.Width, g.Height); + thumbSizeBig = SizeOrig; + } + } + + private void creaMiniature(Image g, Bitmap imgOutputBig, ImageFormat thisFormat) + { + if (PicSettings.TestoMin) + { + testoFirmaPiccola = nomeFileBig; + } + else if (PicSettings.AggNumTempMin) + { + testoFirmaPiccola = nomeFileBig + " "; + } + //Dim yPosFromBottom4 As Single + + Font crFont1 = null; + Font crFont2 = null; + SizeF crSize1 = new SizeF(); + SizeF crSize2 = new SizeF(); + + if (PicSettings.CreaMiniature == true) + { + if (PicSettings.AggiungiScritteMiniature == false) + { + if (string.Equals(PicSettings.directorySorgente.ToUpper(), + PicSettings.directoryDestinazione.ToUpper())) + { + nomeFileSmall = nomeFileSmall.Substring(0, nomeFileSmall.Length - 4) + PicSettings.Codice + nomeFileSmall.Substring(nomeFileSmall.Length - 4); + } + + if (PicSettings.UsaOrarioMiniatura | PicSettings.TestoMin | PicSettings.AggTempoGaraMin | PicSettings.AggNumTempMin) + { + if (testoFirmaPiccola.Length > 0) + { + Bitmap imgOutputSmall = default(Bitmap); + imgOutputSmall = (Bitmap)imgOutputBig.Clone(); + + Graphics grPhoto1 = default(Graphics); + grPhoto1 = Graphics.FromImage(imgOutputSmall); + grPhoto1.SmoothingMode = SmoothingMode.AntiAlias; + + int LarghezzaStandard1 = 0; + //quick fix + DimensioneStandardMiniatura = 50; + if (PicSettings.Grassetto == true) + { + crFont1 = new Font(PicSettings.IlFont, DimensioneStandardMiniatura, FontStyle.Bold); + crFont2 = new Font(PicSettings.IlFont, DimensioneStandard, FontStyle.Bold); + } + else + { + crFont1 = new Font(PicSettings.IlFont, DimensioneStandardMiniatura); + crFont2 = new Font(PicSettings.IlFont, DimensioneStandard); + } + + crSize1 = grPhoto1.MeasureString(testoFirmaPiccola, crFont1); + crSize2 = grPhoto1.MeasureString(testoFirma, crFont1); + LarghezzaStandard1 = Convert.ToInt32(crSize1.Width); + + if (crSize1.Width > Convert.ToSingle(g.Width)) + { + int Conta = DimensioneStandardMiniatura; + do + { + if (Conta > 20) + { + Conta -= 5; + } + else + { + Conta -= 1; + } + if (PicSettings.Grassetto == true) + { + crFont1 = new Font(PicSettings.IlFont, Conta, FontStyle.Bold); + } + else + { + crFont1 = new Font(PicSettings.IlFont, Conta); + } + crSize1 = grPhoto1.MeasureString(testoFirmaPiccola, crFont1); + if (crSize1.Width < Convert.ToSingle(g.Width)) + { + LarghezzaStandard1 = Convert.ToInt32(crSize1.Width); + break; // TODO: might not be correct. Was : Exit Do + } + if (Conta <= 5) + break; // TODO: might not be correct. Was : Exit Do + } while (true); + DimensioneStandardMiniatura = Conta; + } + + switch (PicSettings.Posizione.ToUpper()) + { + case "ALTO": + yPosFromBottom1 = (PicSettings.Margine); + yPosFromBottom4 = (PicSettings.margVert); + + break; + case "BASSO": + yPosFromBottom1 = Convert.ToSingle((g.Height - crSize1.Height - (g.Height * PicSettings.Margine / 100))); + yPosFromBottom4 = Convert.ToSingle((g.Height - crSize1.Height - (g.Height * PicSettings.margVert / 100))); + + break; + } + + float xCenterOfImg1 = 0; + + StringFormat StrFormat1 = new StringFormat(); + switch (PicSettings.Allineamento.ToUpper()) + { + case "SINISTRA": + xCenterOfImg1 = Convert.ToSingle((PicSettings.Margine + (LarghezzaStandard1 / 2))); + + if ((LarghezzaStandard1 / 2) > (g.Width / 2) - PicSettings.Margine) + { + xCenterOfImg1 = Convert.ToSingle((g.Width / 2)); + } + + break; + + case "CENTRO": + xCenterOfImg1 = Convert.ToSingle((g.Width / 2)); + + break; + + case "DESTRA": + xCenterOfImg1 = Convert.ToSingle((g.Width - PicSettings.Margine - (LarghezzaStandard1 / 2))); + + if ((LarghezzaStandard1 / 2) > (g.Width / 2) - PicSettings.Margine) + { + xCenterOfImg1 = Convert.ToSingle((g.Width / 2)); + } + + break; + + } + StrFormat1.Alignment = StringAlignment.Center; + + SolidBrush semiTransBrush21 = new SolidBrush(Color.FromArgb(alphaScelta, 0, 0, 0)); + SolidBrush semiTransBrush1 = new SolidBrush(Color.FromArgb(alphaScelta, PicSettings.fontColoreRGB)); + + //quick fix + DimensioneStandardMiniatura = PicSettings.DimMin; + + if (PicSettings.Grassetto == true) + { + crFont1 = new Font(PicSettings.IlFont, DimensioneStandardMiniatura, FontStyle.Bold); + } + else + { + crFont1 = new Font(PicSettings.IlFont, DimensioneStandardMiniatura); + } + //asdgadfhdfhjgfsjgfjygfdhsdafa + if (PicSettings.TestoMin) + { + grPhoto1.DrawString(nomeFileBig, crFont1, semiTransBrush21, new PointF(xCenterOfImg1 + 1, yPosFromBottom1 + 1), StrFormat1); + grPhoto1.DrawString(nomeFileBig, crFont1, semiTransBrush1, new PointF(xCenterOfImg1, yPosFromBottom1), StrFormat1); + } + else if (PicSettings.AggTempoGaraMin & PicSettings.UsaTempoGaraTestoApplicare) + { + //TimeSpan Orario = new TimeSpan(DateAndTime.DateDiff(DateInterval.Second, dataPartenzaI, dataFoto) * 10000000); + TimeSpan Orario = dataFoto.Subtract(dataPartenzaI); + string tempstr = ""; + + + tempstr += Environment.NewLine + testoOrario + Orario.Hours.ToString("00") + ":" + Orario.Minutes.ToString("00") + ":" + Orario.Seconds.ToString("00"); + + + grPhoto1.DrawString(tempstr, crFont1, semiTransBrush21, new PointF(xCenterOfImg1 + 1, yPosFromBottom1 + 1), StrFormat1); + grPhoto1.DrawString(tempstr, crFont1, semiTransBrush1, new PointF(xCenterOfImg1, yPosFromBottom1), StrFormat1); + + } + else if (PicSettings.AggNumTempMin) + { + TimeSpan Orario = dataFoto.Subtract(dataPartenzaI); + //TimeSpan Orario = new TimeSpan(DateAndTime.DateDiff(DateInterval.Second, dataPartenzaI, dataFoto) * 10000000); + string tempstr = ""; + tempstr += nomeFileBig; + + tempstr += Environment.NewLine + testoOrario + Orario.Hours.ToString("00") + ":" + Orario.Minutes.ToString("00") + ":" + Orario.Seconds.ToString("00"); + + + grPhoto1.DrawString(tempstr, crFont1, semiTransBrush21, new PointF(xCenterOfImg1 + 1, yPosFromBottom1 + 1), StrFormat1); + grPhoto1.DrawString(tempstr, crFont1, semiTransBrush1, new PointF(xCenterOfImg1, yPosFromBottom1), StrFormat1); + + + } + else + { + grPhoto1.DrawString(testoFirmaPiccola, crFont1, semiTransBrush21, new PointF(xCenterOfImg1 + 1, yPosFromBottom1 + 1), StrFormat1); + grPhoto1.DrawString(testoFirmaPiccola, crFont1, semiTransBrush1, new PointF(xCenterOfImg1, yPosFromBottom1), StrFormat1); + } + + // Salva la miniatura + imgOutputSmall.Save(Path.Combine(DestDir.FullName, "Temp_" + nomeFileSmall), thisFormat); + System.Drawing.Image g2 = System.Drawing.Image.FromFile(Path.Combine(DestDir.FullName, "Temp_" + nomeFileSmall)); + Bitmap imgOutputSmall2 = new Bitmap(g2, thumbSizeSmall.Width, thumbSizeSmall.Height); + imgOutputSmall2.Save(Path.Combine(DestDir.FullName, nomeFileSmall), thisFormat); + + imgOutputSmall2.Dispose(); + imgOutputSmall.Dispose(); + g2.Dispose(); + File.Delete((Path.Combine(DestDir.FullName, "Temp_" + nomeFileSmall))); + } + else + { + Bitmap imgOutputSmall = new Bitmap(g, thumbSizeSmall.Width, thumbSizeSmall.Height); + imgOutputSmall.Save(Path.Combine(DestDir.FullName, nomeFileSmall), thisFormat); + imgOutputSmall.Dispose(); + } + } + else + { + Bitmap imgOutputSmall = new Bitmap(g, thumbSizeSmall.Width, thumbSizeSmall.Height); + imgOutputSmall.Save(Path.Combine(DestDir.FullName, nomeFileSmall), thisFormat); + imgOutputSmall.Dispose(); + } + } + } + } + + private void aggiungiTesto(Image g, Bitmap imgOutputBig) + { + Graphics grPhoto = default(Graphics); + grPhoto = Graphics.FromImage(imgOutputBig); + grPhoto.SmoothingMode = SmoothingMode.AntiAlias; + + Font crFont = null; + SizeF crSize = new SizeF(); + int LarghezzaStandard = 0; + + if (PicSettings.Grassetto == true) + { + crFont = new Font(PicSettings.IlFont, DimensioneStandard, FontStyle.Bold); + } + else + { + crFont = new Font(PicSettings.IlFont, DimensioneStandard); + } + crSize = grPhoto.MeasureString(testoFirma, crFont); + LarghezzaStandard = Convert.ToInt32(crSize.Width); + + if (crSize.Width > Convert.ToSingle(g.Width)) + { + int Conta = DimensioneStandard; + do + { + if (Conta > 20) + { + Conta -= 5; + } + else + { + Conta -= 1; + } + if (PicSettings.Grassetto == true) + { + crFont = new Font(PicSettings.IlFont, Conta, FontStyle.Bold); + } + else + { + crFont = new Font(PicSettings.IlFont, Conta); + } + crSize = grPhoto.MeasureString(testoFirma, crFont); + if (crSize.Width < Convert.ToSingle(g.Width)) + { + LarghezzaStandard = Convert.ToInt32(crSize.Width); + break; // TODO: might not be correct. Was : Exit Do + } + if (Conta <= 5) + break; // TODO: might not be correct. Was : Exit Do + } while (true); + DimensioneStandard = Conta; + } + + + switch (PicSettings.Posizione.ToUpper()) + { + case "ALTO": + yPosFromBottom = (PicSettings.Margine); + yPosFromBottom3 = (PicSettings.margVert); + + break; + case "BASSO": + yPosFromBottom = Convert.ToSingle((g.Height - crSize.Height - (g.Height * PicSettings.Margine / 100))); + yPosFromBottom3 = Convert.ToSingle((g.Height - crSize.Height - (g.Height * PicSettings.margVert / 100))); + break; + } + + float xCenterOfImg = 0; + float xCenterOfImg3 = 0; + StringFormat StrFormat = new StringFormat(); + switch (PicSettings.Allineamento.ToUpper()) + { + case "SINISTRA": + xCenterOfImg = Convert.ToSingle((PicSettings.Margine + (LarghezzaStandard / 2))); + xCenterOfImg3 = Convert.ToSingle((PicSettings.margVert + (LarghezzaStandard / 2))); + if ((LarghezzaStandard / 2) > (g.Width / 2) - PicSettings.Margine) + { + xCenterOfImg = Convert.ToSingle((g.Width / 2)); + } + if ((LarghezzaStandard / 2) > (g.Width / 2) - PicSettings.margVert) + { + xCenterOfImg3 = Convert.ToSingle((g.Width / 2)); + } + + break; + case "CENTRO": + xCenterOfImg = Convert.ToSingle((g.Width / 2)); + + break; + case "DESTRA": + xCenterOfImg = Convert.ToSingle((g.Width - PicSettings.Margine - (LarghezzaStandard / 2))); + xCenterOfImg3 = Convert.ToSingle((g.Width - PicSettings.margVert - (LarghezzaStandard / 2))); + if ((LarghezzaStandard / 2) > (g.Width / 2) - PicSettings.Margine) + { + xCenterOfImg = Convert.ToSingle((g.Width / 2)); + } + if ((LarghezzaStandard / 2) > (g.Width / 2) - PicSettings.margVert) + { + xCenterOfImg3 = Convert.ToSingle((g.Width / 2)); + } + + break; + } + StrFormat.Alignment = StringAlignment.Center; + + SolidBrush semiTransBrush2 = new SolidBrush(Color.FromArgb(alphaScelta, 0, 0, 0)); + //Dim semiTransBrush As SolidBrush = New SolidBrush(Color.FromArgb(AlphaScelta, _FontColoreR, _FontColoreG, _FontColoreB)) + SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(alphaScelta, PicSettings.fontColoreRGB)); + + + if (FotoRuotaADestra | FotoRuotaASinistra) + { + if (PicSettings.Grassetto == true) + { + crFont = new Font(PicSettings.IlFont, PicSettings.dimVert, FontStyle.Bold); + } + else + { + crFont = new Font(PicSettings.IlFont, PicSettings.dimVert); + } + + + } + else + { + if (PicSettings.Grassetto == true) + { + crFont = new Font(PicSettings.IlFont, DimensioneStandard, FontStyle.Bold); + } + else + { + crFont = new Font(PicSettings.IlFont, DimensioneStandard); + } + } + + + //qui scrive il testo (nomefilebig) + if (PicSettings.TestoNome) + { + if (PicSettings.NomeData & g.PropertyIdList.Length > 0) + { + ExifReader DatiExif = new ExifReader((Bitmap)g); + dataFoto = DatiExif.DateTimeOriginal; + + grPhoto.DrawString((nomeFileBig + " " + dataFoto.ToShortDateString()), crFont, semiTransBrush2, new PointF(xCenterOfImg + 1, yPosFromBottom + 1), StrFormat); + grPhoto.DrawString((nomeFileBig + " " + dataFoto.ToShortDateString()), crFont, semiTransBrush, new PointF(xCenterOfImg, yPosFromBottom), StrFormat); + } + else + { + grPhoto.DrawString(nomeFileBig, crFont, semiTransBrush2, new PointF(xCenterOfImg + 1, yPosFromBottom + 1), StrFormat); + grPhoto.DrawString(nomeFileBig, crFont, semiTransBrush, new PointF(xCenterOfImg, yPosFromBottom), StrFormat); + + } + } + + if (PicSettings.TestoNome == false) + { + if (FotoRuotaADestra | FotoRuotaASinistra) + { + + if (PicSettings.TestoMin == false) + { + + grPhoto.DrawString(testoFirmaV, crFont, semiTransBrush2, new PointF(xCenterOfImg + 1, yPosFromBottom3 + 1), StrFormat); + grPhoto.DrawString(testoFirmaV, crFont, semiTransBrush, new PointF(xCenterOfImg, yPosFromBottom3), StrFormat); + } + + if (PicSettings.TestoMin == true) + { + grPhoto.DrawString(testoFirmaV, crFont, semiTransBrush2, new PointF(xCenterOfImg + 1, yPosFromBottom4 + 1), StrFormat); + grPhoto.DrawString(testoFirmaV, crFont, semiTransBrush, new PointF(xCenterOfImg, yPosFromBottom4), StrFormat); + + } + } + else + { + grPhoto.DrawString(testoFirma, crFont, semiTransBrush2, new PointF(xCenterOfImg + 1, yPosFromBottom + 1), StrFormat); + grPhoto.DrawString(testoFirma, crFont, semiTransBrush, new PointF(xCenterOfImg, yPosFromBottom), StrFormat); + + + } + } + + if (PicSettings.directorySorgente.ToUpper() == PicSettings.directoryDestinazione.ToUpper()) + { + nomeFileBig2 = nomeFileBig; + nomeFileBig = nomeFileBig.Substring(0, nomeFileBig.Length - 4) + PicSettings.Codice + nomeFileBig.Substring(nomeFileBig.Length - 4); + } + grPhoto.Dispose(); + } + + + + + private void aggiungiLogo(Bitmap imgOutputBig) + { + //imgOutputBig + + if (PicSettings.LogoAggiungi == true & File.Exists(PicSettings.LogoNomeFile)) + { + Image ImmagineLogo = Image.FromFile(PicSettings.LogoNomeFile); + + Color LogoColoreTrasparente = Color.White; + //Dim bmWatermark As Bitmap + + //* Create a Bitmap based on the previously modified photograph Bitmap + //bmWatermark = New Bitmap(imgOutputBig) + //bmWatermark.SetResolution(imgOutputBig.HorizontalResolution, imgOutputBig.VerticalResolution) + + //* Load this Bitmap into a new Graphic Object + Graphics grWatermark = Graphics.FromImage(imgOutputBig); + + //* To achieve a translucent watermark we will apply (2) color manipulations + ImageAttributes imageAttributes = new ImageAttributes(); + + //* The first step replace the background color with one that is transparent (Alpha=0, R=0, G=0, B=0) + ColorMap colorMap = new ColorMap(); + + //* background this will be the color we search for and replace with transparency + colorMap.OldColor = LogoColoreTrasparente; + colorMap.NewColor = Color.FromArgb(0, 0, 0, 0); + + ColorMap[] remapTable = { colorMap }; + imageAttributes.SetRemapTable(remapTable, ColorAdjustType.Bitmap); + + //* The second color manipulation is used to change the opacity by setting the 3rd row and 3rd column to 0.3f + float[][] colorMatrixElements = { + new float[] { + 1f, + 0f, + 0f, + 0f, + 0f + }, + new float[] { + 0f, + 1f, + 0f, + 0f, + 0f + }, + new float[] { + 0f, + 0f, + 1f, + 0f, + 0f + }, + new float[] { + 0f, + 0f, + 0f, + Convert.ToSingle(PicSettings.LogoTrasparenza) / 100, + 0f + }, + new float[] { + 0f, + 0f, + 0f, + 0f, + 1f + } + }; + ColorMatrix wmColorMatrix = new ColorMatrix(colorMatrixElements); + imageAttributes.SetColorMatrix(wmColorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap); + + int FotoLogoH = PicSettings.LogoAltezza; + int FotoLogoW = PicSettings.LogoLarghezza; + double FattoreAlt = ImmagineLogo.Height / FotoLogoH; + double FattoreLarg = ImmagineLogo.Width / FotoLogoW; + Size NuovaSize = default(Size); + if (FattoreLarg > FattoreAlt) + { + NuovaSize = NewthumbSize(ImmagineLogo.Width, ImmagineLogo.Height, FotoLogoW, "Larghezza"); + } + else + { + NuovaSize = NewthumbSize(ImmagineLogo.Width, ImmagineLogo.Height, FotoLogoH, "Altezza"); + } + + int MargineUsato = 0; + int MargineL = 0; + bool InPercentualeL = false; + if (PicSettings.LogoMargine.EndsWith("%") == true) + { + InPercentualeL = true; + } + else + { + InPercentualeL = false; + } + MargineL = Convert.ToInt32(PicSettings.LogoMargine); + if (InPercentualeL == true) + { + MargineUsato = Convert.ToInt32(imgOutputBig.Height * MargineL / 100); + } + else + { + MargineUsato = MargineL; + } + + int xPosOfWm = 0; + int yPosOfWm = 0; + switch (PicSettings.LogoPosizioneH.ToUpper()) + { + case "SINISTRA": + case "NESSUNA": + xPosOfWm = MargineUsato; + + break; + case "CENTRO": + xPosOfWm = Convert.ToInt32((imgOutputBig.Width - NuovaSize.Width) / 2); + + break; + case "DESTRA": + xPosOfWm = ((imgOutputBig.Width - NuovaSize.Width) - MargineUsato); + break; + } + switch (PicSettings.LogoPosizioneV.ToUpper()) + { + case "ALTO": + case "NESSUNA": + yPosOfWm = MargineUsato; + + break; + case "CENTRO": + yPosOfWm = Convert.ToInt32((imgOutputBig.Height - NuovaSize.Height) / 2); + + break; + case "BASSO": + yPosOfWm = ((imgOutputBig.Height - NuovaSize.Height) - MargineUsato); + break; + } + + grWatermark.DrawImage(ImmagineLogo, new Rectangle(xPosOfWm, yPosOfWm, NuovaSize.Width, NuovaSize.Height), 0, 0, ImmagineLogo.Width, ImmagineLogo.Height, GraphicsUnit.Pixel, imageAttributes); + grWatermark.Dispose(); + } + } + + + + private void salvaFoto(Bitmap imgOutputBig, Size thumbSizeBig, string NomeFileBig, string NomeFileSmall, Size thumbSizeSmall, ImageFormat thisFormat) + { + if (PicSettings.FotoGrandeDimOrigina == false) + { + //attenzione non controlla se è png + //imgOutputBig.Save(Path.Combine(_DestDir.FullName, "Temp_" & NomeFileBig), thisFormat) + if (thisFormat.Equals(ImageFormat.Jpeg)) + { + salvaImmagineCustomQuality(imgOutputBig, Path.Combine(DestDir.FullName, "Temp_" + NomeFileBig), PicSettings.jpegQuality); + } + else + { + imgOutputBig.Save(Path.Combine(_DestDir.FullName, "Temp_" + NomeFileBig), thisFormat); + } + + + System.Drawing.Image g2 = System.Drawing.Image.FromFile(Path.Combine(DestDir.FullName, "Temp_" + NomeFileBig)); + if (g2.Width > g2.Height) + { + thumbSizeBig = NewthumbSize(g2.Width, g2.Height, PicSettings.LarghezzaBig, "Larghezza"); + } + else + { + thumbSizeBig = NewthumbSize(g2.Width, g2.Height, PicSettings.AltezzaBig, "Altezza"); + } + Bitmap imgOutputBig2 = new Bitmap(g2, thumbSizeBig.Width, thumbSizeBig.Height); + // + if (thisFormat.Equals(ImageFormat.Jpeg)) + { + salvaImmagineCustomQuality(imgOutputBig2, Path.Combine(DestDir.FullName, NomeFileBig), PicSettings.jpegQuality); + } + else + { + imgOutputBig2.Save(Path.Combine(_DestDir.FullName, NomeFileBig), thisFormat); + } + + imgOutputBig2.Dispose(); + imgOutputBig.Dispose(); + g2.Dispose(); + } + else + { + // + if (thisFormat.Equals(ImageFormat.Jpeg)) + { + salvaImmagineCustomQuality(imgOutputBig, Path.Combine(DestDir.FullName, NomeFileBig), PicSettings.jpegQuality); + } + else + { + imgOutputBig.Save(Path.Combine(_DestDir.FullName, NomeFileBig), thisFormat); + } + + imgOutputBig.Dispose(); + } + + + if (PicSettings.CreaMiniature) + { + if (PicSettings.AggiungiScritteMiniature == true) + { + System.Drawing.Image g1 = null; + if (PicSettings.FotoGrandeDimOrigina == false) + { + g1 = System.Drawing.Image.FromFile(Path.Combine(DestDir.FullName, "Temp_" + NomeFileBig)); + } + else + { + g1 = System.Drawing.Image.FromFile(Path.Combine(DestDir.FullName, NomeFileBig)); + } + Bitmap imgOutputSmall = new Bitmap(g1, thumbSizeSmall.Width, thumbSizeSmall.Height); + if (PicSettings.directorySorgente.ToUpper() == PicSettings.directoryDestinazione.ToUpper()) + { + NomeFileSmall = NomeFileSmall.Substring(0, NomeFileSmall.Length - 4) + PicSettings.Codice + NomeFileSmall.Substring(NomeFileSmall.Length - 4); + } + // + if (thisFormat.Equals(ImageFormat.Jpeg)) + { + salvaImmagineCustomQuality(imgOutputSmall, Path.Combine(DestDir.FullName, NomeFileSmall), PicSettings.jpegQualityMin); + } + else + { + imgOutputSmall.Save(Path.Combine(_DestDir.FullName, NomeFileSmall), thisFormat); + } + + imgOutputSmall.Dispose(); + g1.Dispose(); + } + + + + } + + if (File.Exists(Path.Combine(DestDir.FullName, "Temp_" + NomeFileBig)) == true) + { + File.Delete(Path.Combine(DestDir.FullName, "Temp_" + NomeFileBig)); + } + + + } + + + private void salvaImmagineCustomQuality(Bitmap imageToSave, string nomeFileFinale, long quality) + { + ImageCodecInfo JgpEncoder = GetEncoder(ImageFormat.Jpeg); + Encoder MyEncoder = Encoder.Quality; + + EncoderParameters MyEncoderParameters = new EncoderParameters(1); + + EncoderParameter MyEncoderParameter = new EncoderParameter(MyEncoder, PicSettings.jpegQuality); + MyEncoderParameters.Param[0] = MyEncoderParameter; + imageToSave.Save(nomeFileFinale, JgpEncoder, MyEncoderParameters); + imageToSave.Dispose(); + } + + + + private ImageCodecInfo GetEncoder(ImageFormat format) + { + + ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders(); + + ImageCodecInfo codec = null; + foreach (ImageCodecInfo codec_loopVariable in codecs) + { + codec = codec_loopVariable; + if (codec.FormatID == format.Guid) + { + return codec; + } + } + return null; + + } + + + + + + + /// + /// Calculate the Size of the New image + /// + /// Larghezza + /// Altezza + /// + /// + /// + /// + private Size NewthumbSize(int currentwidth, int currentheight, int MaxPixel, string TipoSize) + { + // e + //*** Larghezza, Altezza, Auto + + double tempMultiplier = 0; + + if (TipoSize.ToUpper() == "Larghezza".ToUpper()) + { + tempMultiplier = MaxPixel / currentwidth; + } + else if (TipoSize.ToUpper() == "Altezza".ToUpper()) + { + tempMultiplier = MaxPixel / currentheight; + } + else + { + // portrait + if (currentheight > currentwidth) + { + tempMultiplier = MaxPixel / currentheight; + } + else + { + tempMultiplier = MaxPixel / currentwidth; + } + } + + Size NewSize = new Size(Convert.ToInt32(currentwidth * tempMultiplier), Convert.ToInt32(currentheight * tempMultiplier)); + + return NewSize; + } + + public FileInfo WorkFile + { + get { return _workFile; } + set { _workFile = value; } + } + + public DirectoryInfo DestDir + { + get { return _DestDir; } + set { _DestDir = value; } + } + + public DirectoryInfo SourceDir + { + get { return _SourceDir; } + set { _SourceDir = value; } + } + + public DirectoryInfo DestDirStart + { + get { return _DestDirStart; } + set { _DestDirStart = value; } + } + + public string NomeFileChild + { + get { return _NomeFileChild; } + set { _NomeFileChild = value; } + } + + +} \ No newline at end of file diff --git a/ImageCatalogCS/MainForm.Designer.cs b/ImageCatalogCS/MainForm.Designer.cs new file mode 100644 index 0000000..54b8132 --- /dev/null +++ b/ImageCatalogCS/MainForm.Designer.cs @@ -0,0 +1,1794 @@ +namespace ImageCatalogCS +{ + partial class MainForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.ProgressBar1 = new System.Windows.Forms.ProgressBar(); + this.CheckBox22 = new System.Windows.Forms.CheckBox(); + this.Label43 = new System.Windows.Forms.Label(); + this.TabControl1 = new System.Windows.Forms.TabControl(); + this.TabPage5 = new System.Windows.Forms.TabPage(); + this.GroupBox11 = new System.Windows.Forms.GroupBox(); + this.Label8 = new System.Windows.Forms.Label(); + this.TextBox8 = new System.Windows.Forms.TextBox(); + this.Label7 = new System.Windows.Forms.Label(); + this.TextBox7 = new System.Windows.Forms.TextBox(); + this.GroupBox3 = new System.Windows.Forms.GroupBox(); + this.chkAggiornaSottodirectory = new System.Windows.Forms.CheckBox(); + this.Button3 = new System.Windows.Forms.Button(); + this.Button2 = new System.Windows.Forms.Button(); + this.Label1 = new System.Windows.Forms.Label(); + this.Label2 = new System.Windows.Forms.Label(); + this.txtSorgente = new System.Windows.Forms.TextBox(); + this.txtDestinazione = new System.Windows.Forms.TextBox(); + this.GroupBox8 = new System.Windows.Forms.GroupBox(); + this.rdbNumFiles = new System.Windows.Forms.RadioButton(); + this.rdbNumProgressiva = new System.Windows.Forms.RadioButton(); + this.txtCifreContatore = new System.Windows.Forms.TextBox(); + this.Label34 = new System.Windows.Forms.Label(); + this.txtSuffissoCartelle = new System.Windows.Forms.TextBox(); + this.Label33 = new System.Windows.Forms.Label(); + this.Label31 = new System.Windows.Forms.Label(); + this.chkCreaSottocartelle = new System.Windows.Forms.CheckBox(); + this.txtFilePerCartella = new System.Windows.Forms.TextBox(); + this.Label32 = new System.Windows.Forms.Label(); + this.GroupBox7 = new System.Windows.Forms.GroupBox(); + this.chkSovrascriviFile = new System.Windows.Forms.CheckBox(); + this.chkRotazioneAutomatica = new System.Windows.Forms.CheckBox(); + this.chkForzaJpg = new System.Windows.Forms.CheckBox(); + this.TabPage3 = new System.Windows.Forms.TabPage(); + this.CheckBox2 = new System.Windows.Forms.CheckBox(); + this.GroupBox10 = new System.Windows.Forms.GroupBox(); + this.Label42 = new System.Windows.Forms.Label(); + this.Label41 = new System.Windows.Forms.Label(); + this.TextBox31 = new System.Windows.Forms.TextBox(); + this.TextBox30 = new System.Windows.Forms.TextBox(); + this.GroupBox9 = new System.Windows.Forms.GroupBox(); + this.CheckBox17 = new System.Windows.Forms.CheckBox(); + this.CheckBox16 = new System.Windows.Forms.CheckBox(); + this.GroupBox5 = new System.Windows.Forms.GroupBox(); + this.TextBox34 = new System.Windows.Forms.TextBox(); + this.Button8 = new System.Windows.Forms.Button(); + this.Label36 = new System.Windows.Forms.Label(); + this.TextBox25 = new System.Windows.Forms.TextBox(); + this.Label35 = new System.Windows.Forms.Label(); + this.ComboBox3 = new System.Windows.Forms.ComboBox(); + this.TextBox11 = new System.Windows.Forms.TextBox(); + this.Label12 = new System.Windows.Forms.Label(); + this.Label11 = new System.Windows.Forms.Label(); + this.CheckBox3 = new System.Windows.Forms.CheckBox(); + this.GroupBox4 = new System.Windows.Forms.GroupBox(); + this.Label40 = new System.Windows.Forms.Label(); + this.TextBox29 = new System.Windows.Forms.TextBox(); + this.TextBox18 = new System.Windows.Forms.TextBox(); + this.Label26 = new System.Windows.Forms.Label(); + this.DateTimePicker1 = new System.Windows.Forms.DateTimePicker(); + this.CheckBox8 = new System.Windows.Forms.CheckBox(); + this.TextBox9 = new System.Windows.Forms.TextBox(); + this.CheckBox7 = new System.Windows.Forms.CheckBox(); + this.Label4 = new System.Windows.Forms.Label(); + this.TextBox4 = new System.Windows.Forms.TextBox(); + this.Label9 = new System.Windows.Forms.Label(); + this.Label13 = new System.Windows.Forms.Label(); + this.ComboBox1 = new System.Windows.Forms.ComboBox(); + this.ComboBox2 = new System.Windows.Forms.ComboBox(); + this.Label14 = new System.Windows.Forms.Label(); + this.TextBox12 = new System.Windows.Forms.TextBox(); + this.Label15 = new System.Windows.Forms.Label(); + this.TabPage2 = new System.Windows.Forms.TabPage(); + this.GroupBox2 = new System.Windows.Forms.GroupBox(); + this.Label45 = new System.Windows.Forms.Label(); + this.TextBox32 = new System.Windows.Forms.TextBox(); + this.TextBox26 = new System.Windows.Forms.TextBox(); + this.Label37 = new System.Windows.Forms.Label(); + this.Label38 = new System.Windows.Forms.Label(); + this.TextBox27 = new System.Windows.Forms.TextBox(); + this.Label39 = new System.Windows.Forms.Label(); + this.TextBox28 = new System.Windows.Forms.TextBox(); + this.CheckBox15 = new System.Windows.Forms.CheckBox(); + this.TabPage1 = new System.Windows.Forms.TabPage(); + this.GroupBox1 = new System.Windows.Forms.GroupBox(); + this.Label46 = new System.Windows.Forms.Label(); + this.TextBox33 = new System.Windows.Forms.TextBox(); + this.Panel2 = new System.Windows.Forms.Panel(); + this.RadioButton3 = new System.Windows.Forms.RadioButton(); + this.RadioButton7 = new System.Windows.Forms.RadioButton(); + this.RadioButton4 = new System.Windows.Forms.RadioButton(); + this.RadioButton6 = new System.Windows.Forms.RadioButton(); + this.RadioButton5 = new System.Windows.Forms.RadioButton(); + this.Label5 = new System.Windows.Forms.Label(); + this.TextBox5 = new System.Windows.Forms.TextBox(); + this.Label6 = new System.Windows.Forms.Label(); + this.TextBox6 = new System.Windows.Forms.TextBox(); + this.Label3 = new System.Windows.Forms.Label(); + this.TextBox3 = new System.Windows.Forms.TextBox(); + this.CheckBox1 = new System.Windows.Forms.CheckBox(); + this.TabPage4 = new System.Windows.Forms.TabPage(); + this.GroupBox6 = new System.Windows.Forms.GroupBox(); + this.PictureBox2 = new System.Windows.Forms.PictureBox(); + this.PictureBox1 = new System.Windows.Forms.PictureBox(); + this.ComboBox5 = new System.Windows.Forms.ComboBox(); + this.ComboBox4 = new System.Windows.Forms.ComboBox(); + this.TextBox19 = new System.Windows.Forms.TextBox(); + this.Label28 = new System.Windows.Forms.Label(); + this.CheckBox5 = new System.Windows.Forms.CheckBox(); + this.TextBox15 = new System.Windows.Forms.TextBox(); + this.TextBox14 = new System.Windows.Forms.TextBox(); + this.Label25 = new System.Windows.Forms.Label(); + this.TextBox16 = new System.Windows.Forms.TextBox(); + this.Label24 = new System.Windows.Forms.Label(); + this.Label22 = new System.Windows.Forms.Label(); + this.Label23 = new System.Windows.Forms.Label(); + this.Button4 = new System.Windows.Forms.Button(); + this.TextBox10 = new System.Windows.Forms.TextBox(); + this.Label29 = new System.Windows.Forms.Label(); + this.Label30 = new System.Windows.Forms.Label(); + this.PictureBox3 = new System.Windows.Forms.PictureBox(); + this.Label20 = new System.Windows.Forms.Label(); + this.Label19 = new System.Windows.Forms.Label(); + this.Label18 = new System.Windows.Forms.Label(); + this.lblFotoTotaliNum = new System.Windows.Forms.Label(); + this.menuStrip1 = new System.Windows.Forms.MenuStrip(); + this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.caricaImpostazioniToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.salvaImpostazioniToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.creaCatalogoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.esciToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.aiutoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.informazioniToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.groupBox12 = new System.Windows.Forms.GroupBox(); + this.btnStopCreazione = new System.Windows.Forms.Button(); + this.lblLog = new System.Windows.Forms.ListBox(); + this.txtFileInfo = new System.Windows.Forms.TextBox(); + this.panelTesto = new System.Windows.Forms.Panel(); + this.panelMiniature = new System.Windows.Forms.Panel(); + this.TabControl1.SuspendLayout(); + this.TabPage5.SuspendLayout(); + this.GroupBox11.SuspendLayout(); + this.GroupBox3.SuspendLayout(); + this.GroupBox8.SuspendLayout(); + this.GroupBox7.SuspendLayout(); + this.TabPage3.SuspendLayout(); + this.GroupBox10.SuspendLayout(); + this.GroupBox9.SuspendLayout(); + this.GroupBox5.SuspendLayout(); + this.GroupBox4.SuspendLayout(); + this.TabPage2.SuspendLayout(); + this.GroupBox2.SuspendLayout(); + this.TabPage1.SuspendLayout(); + this.GroupBox1.SuspendLayout(); + this.Panel2.SuspendLayout(); + this.TabPage4.SuspendLayout(); + this.GroupBox6.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.PictureBox2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.PictureBox1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.PictureBox3)).BeginInit(); + this.menuStrip1.SuspendLayout(); + this.groupBox12.SuspendLayout(); + this.panelTesto.SuspendLayout(); + this.panelMiniature.SuspendLayout(); + this.SuspendLayout(); + // + // ProgressBar1 + // + this.ProgressBar1.Location = new System.Drawing.Point(16, 401); + this.ProgressBar1.Name = "ProgressBar1"; + this.ProgressBar1.Size = new System.Drawing.Size(513, 13); + this.ProgressBar1.TabIndex = 81; + // + // CheckBox22 + // + this.CheckBox22.AutoSize = true; + this.CheckBox22.Location = new System.Drawing.Point(6, 365); + this.CheckBox22.Name = "CheckBox22"; + this.CheckBox22.Size = new System.Drawing.Size(104, 17); + this.CheckBox22.TabIndex = 80; + this.CheckBox22.Text = "Arresta il sistema"; + this.CheckBox22.UseVisualStyleBackColor = true; + // + // Label43 + // + this.Label43.AutoSize = true; + this.Label43.Location = new System.Drawing.Point(3, 349); + this.Label43.Name = "Label43"; + this.Label43.Size = new System.Drawing.Size(25, 13); + this.Label43.TabIndex = 79; + this.Label43.Text = "000"; + this.Label43.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // TabControl1 + // + this.TabControl1.Controls.Add(this.TabPage5); + this.TabControl1.Controls.Add(this.TabPage3); + this.TabControl1.Controls.Add(this.TabPage2); + this.TabControl1.Controls.Add(this.TabPage1); + this.TabControl1.Controls.Add(this.TabPage4); + this.TabControl1.Location = new System.Drawing.Point(12, 27); + this.TabControl1.Name = "TabControl1"; + this.TabControl1.SelectedIndex = 0; + this.TabControl1.Size = new System.Drawing.Size(521, 372); + this.TabControl1.TabIndex = 78; + // + // TabPage5 + // + this.TabPage5.Controls.Add(this.GroupBox11); + this.TabPage5.Controls.Add(this.GroupBox3); + this.TabPage5.Controls.Add(this.GroupBox8); + this.TabPage5.Controls.Add(this.GroupBox7); + this.TabPage5.Location = new System.Drawing.Point(4, 22); + this.TabPage5.Name = "TabPage5"; + this.TabPage5.Padding = new System.Windows.Forms.Padding(3); + this.TabPage5.Size = new System.Drawing.Size(513, 346); + this.TabPage5.TabIndex = 4; + this.TabPage5.Text = "Generale"; + this.TabPage5.UseVisualStyleBackColor = true; + // + // GroupBox11 + // + this.GroupBox11.Controls.Add(this.Label8); + this.GroupBox11.Controls.Add(this.TextBox8); + this.GroupBox11.Controls.Add(this.Label7); + this.GroupBox11.Controls.Add(this.TextBox7); + this.GroupBox11.Location = new System.Drawing.Point(7, 209); + this.GroupBox11.Name = "GroupBox11"; + this.GroupBox11.Size = new System.Drawing.Size(191, 132); + this.GroupBox11.TabIndex = 48; + this.GroupBox11.TabStop = false; + this.GroupBox11.Text = "Avanzate (ATTENZIONE)"; + // + // Label8 + // + this.Label8.AutoSize = true; + this.Label8.Location = new System.Drawing.Point(64, 26); + this.Label8.Name = "Label8"; + this.Label8.Size = new System.Drawing.Size(61, 13); + this.Label8.TabIndex = 3; + this.Label8.Text = "Min Thread"; + // + // TextBox8 + // + this.TextBox8.Location = new System.Drawing.Point(7, 20); + this.TextBox8.Name = "TextBox8"; + this.TextBox8.Size = new System.Drawing.Size(47, 20); + this.TextBox8.TabIndex = 2; + this.TextBox8.Text = "5"; + // + // Label7 + // + this.Label7.AutoSize = true; + this.Label7.Location = new System.Drawing.Point(61, 48); + this.Label7.Name = "Label7"; + this.Label7.Size = new System.Drawing.Size(64, 13); + this.Label7.TabIndex = 1; + this.Label7.Text = "Max Thread"; + // + // TextBox7 + // + this.TextBox7.Location = new System.Drawing.Point(7, 46); + this.TextBox7.Name = "TextBox7"; + this.TextBox7.Size = new System.Drawing.Size(47, 20); + this.TextBox7.TabIndex = 0; + this.TextBox7.Text = "15"; + // + // GroupBox3 + // + this.GroupBox3.Controls.Add(this.chkAggiornaSottodirectory); + this.GroupBox3.Controls.Add(this.Button3); + this.GroupBox3.Controls.Add(this.Button2); + this.GroupBox3.Controls.Add(this.Label1); + this.GroupBox3.Controls.Add(this.Label2); + this.GroupBox3.Controls.Add(this.txtSorgente); + this.GroupBox3.Controls.Add(this.txtDestinazione); + this.GroupBox3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(192))))); + this.GroupBox3.Location = new System.Drawing.Point(6, 6); + this.GroupBox3.Name = "GroupBox3"; + this.GroupBox3.Size = new System.Drawing.Size(496, 101); + this.GroupBox3.TabIndex = 35; + this.GroupBox3.TabStop = false; + this.GroupBox3.Text = "Directory"; + // + // chkAggiornaSottodirectory + // + this.chkAggiornaSottodirectory.ForeColor = System.Drawing.Color.Black; + this.chkAggiornaSottodirectory.Location = new System.Drawing.Point(80, 64); + this.chkAggiornaSottodirectory.Name = "chkAggiornaSottodirectory"; + this.chkAggiornaSottodirectory.Size = new System.Drawing.Size(152, 24); + this.chkAggiornaSottodirectory.TabIndex = 25; + this.chkAggiornaSottodirectory.Text = "aggiorna le sottodirectory"; + // + // Button3 + // + this.Button3.Location = new System.Drawing.Point(462, 40); + this.Button3.Name = "Button3"; + this.Button3.Size = new System.Drawing.Size(24, 20); + this.Button3.TabIndex = 6; + this.Button3.Text = "..."; + // + // Button2 + // + this.Button2.Location = new System.Drawing.Point(462, 16); + this.Button2.Name = "Button2"; + this.Button2.Size = new System.Drawing.Size(24, 20); + this.Button2.TabIndex = 5; + this.Button2.Text = "..."; + // + // Label1 + // + this.Label1.AutoSize = true; + this.Label1.ForeColor = System.Drawing.Color.Black; + this.Label1.Location = new System.Drawing.Point(6, 19); + this.Label1.Name = "Label1"; + this.Label1.Size = new System.Drawing.Size(50, 13); + this.Label1.TabIndex = 3; + this.Label1.Text = "Sorgente"; + // + // Label2 + // + this.Label2.AutoSize = true; + this.Label2.ForeColor = System.Drawing.Color.Black; + this.Label2.Location = new System.Drawing.Point(6, 43); + this.Label2.Name = "Label2"; + this.Label2.Size = new System.Drawing.Size(68, 13); + this.Label2.TabIndex = 4; + this.Label2.Text = "Destinazione"; + // + // txtSorgente + // + this.txtSorgente.Location = new System.Drawing.Point(80, 16); + this.txtSorgente.Name = "txtSorgente"; + this.txtSorgente.Size = new System.Drawing.Size(376, 20); + this.txtSorgente.TabIndex = 0; + this.txtSorgente.Text = "TextBox1"; + // + // txtDestinazione + // + this.txtDestinazione.Location = new System.Drawing.Point(80, 40); + this.txtDestinazione.Name = "txtDestinazione"; + this.txtDestinazione.Size = new System.Drawing.Size(376, 20); + this.txtDestinazione.TabIndex = 1; + this.txtDestinazione.Text = "TextBox2"; + // + // GroupBox8 + // + this.GroupBox8.Controls.Add(this.rdbNumFiles); + this.GroupBox8.Controls.Add(this.rdbNumProgressiva); + this.GroupBox8.Controls.Add(this.txtCifreContatore); + this.GroupBox8.Controls.Add(this.Label34); + this.GroupBox8.Controls.Add(this.txtSuffissoCartelle); + this.GroupBox8.Controls.Add(this.Label33); + this.GroupBox8.Controls.Add(this.Label31); + this.GroupBox8.Controls.Add(this.chkCreaSottocartelle); + this.GroupBox8.Controls.Add(this.txtFilePerCartella); + this.GroupBox8.Controls.Add(this.Label32); + this.GroupBox8.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(192))))); + this.GroupBox8.Location = new System.Drawing.Point(204, 113); + this.GroupBox8.Name = "GroupBox8"; + this.GroupBox8.Size = new System.Drawing.Size(192, 152); + this.GroupBox8.TabIndex = 47; + this.GroupBox8.TabStop = false; + this.GroupBox8.Text = "Sottocartelle"; + // + // rdbNumFiles + // + this.rdbNumFiles.ForeColor = System.Drawing.Color.Black; + this.rdbNumFiles.Location = new System.Drawing.Point(32, 128); + this.rdbNumFiles.Name = "rdbNumFiles"; + this.rdbNumFiles.Size = new System.Drawing.Size(136, 16); + this.rdbNumFiles.TabIndex = 38; + this.rdbNumFiles.Text = "Numerazione files"; + // + // rdbNumProgressiva + // + this.rdbNumProgressiva.Checked = true; + this.rdbNumProgressiva.ForeColor = System.Drawing.Color.Black; + this.rdbNumProgressiva.Location = new System.Drawing.Point(32, 112); + this.rdbNumProgressiva.Name = "rdbNumProgressiva"; + this.rdbNumProgressiva.Size = new System.Drawing.Size(152, 16); + this.rdbNumProgressiva.TabIndex = 37; + this.rdbNumProgressiva.TabStop = true; + this.rdbNumProgressiva.Text = "Numerazione progressiva"; + // + // txtCifreContatore + // + this.txtCifreContatore.Location = new System.Drawing.Point(128, 88); + this.txtCifreContatore.Name = "txtCifreContatore"; + this.txtCifreContatore.Size = new System.Drawing.Size(56, 20); + this.txtCifreContatore.TabIndex = 34; + this.txtCifreContatore.Text = "4"; + // + // Label34 + // + this.Label34.ForeColor = System.Drawing.Color.Black; + this.Label34.Location = new System.Drawing.Point(8, 88); + this.Label34.Name = "Label34"; + this.Label34.Size = new System.Drawing.Size(112, 16); + this.Label34.TabIndex = 33; + this.Label34.Text = "Num. cifre contatore"; + this.Label34.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // txtSuffissoCartelle + // + this.txtSuffissoCartelle.Location = new System.Drawing.Point(56, 64); + this.txtSuffissoCartelle.Name = "txtSuffissoCartelle"; + this.txtSuffissoCartelle.Size = new System.Drawing.Size(128, 20); + this.txtSuffissoCartelle.TabIndex = 32; + this.txtSuffissoCartelle.Text = "TextBox20"; + // + // Label33 + // + this.Label33.ForeColor = System.Drawing.Color.Black; + this.Label33.Location = new System.Drawing.Point(6, 67); + this.Label33.Name = "Label33"; + this.Label33.Size = new System.Drawing.Size(48, 16); + this.Label33.TabIndex = 31; + this.Label33.Text = "Suffisso"; + // + // Label31 + // + this.Label31.ForeColor = System.Drawing.Color.Black; + this.Label31.Location = new System.Drawing.Point(24, 40); + this.Label31.Name = "Label31"; + this.Label31.Size = new System.Drawing.Size(32, 16); + this.Label31.TabIndex = 30; + this.Label31.Text = "ogni"; + // + // chkCreaSottocartelle + // + this.chkCreaSottocartelle.ForeColor = System.Drawing.Color.Black; + this.chkCreaSottocartelle.Location = new System.Drawing.Point(56, 16); + this.chkCreaSottocartelle.Name = "chkCreaSottocartelle"; + this.chkCreaSottocartelle.Size = new System.Drawing.Size(112, 16); + this.chkCreaSottocartelle.TabIndex = 29; + this.chkCreaSottocartelle.Text = "crea sottocartelle"; + // + // txtFilePerCartella + // + this.txtFilePerCartella.Location = new System.Drawing.Point(56, 40); + this.txtFilePerCartella.Name = "txtFilePerCartella"; + this.txtFilePerCartella.Size = new System.Drawing.Size(64, 20); + this.txtFilePerCartella.TabIndex = 27; + this.txtFilePerCartella.Text = "99"; + // + // Label32 + // + this.Label32.ForeColor = System.Drawing.Color.Black; + this.Label32.Location = new System.Drawing.Point(128, 40); + this.Label32.Name = "Label32"; + this.Label32.Size = new System.Drawing.Size(24, 16); + this.Label32.TabIndex = 28; + this.Label32.Text = "file"; + // + // GroupBox7 + // + this.GroupBox7.Controls.Add(this.chkSovrascriviFile); + this.GroupBox7.Controls.Add(this.chkRotazioneAutomatica); + this.GroupBox7.Controls.Add(this.chkForzaJpg); + this.GroupBox7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(192))))); + this.GroupBox7.Location = new System.Drawing.Point(6, 113); + this.GroupBox7.Name = "GroupBox7"; + this.GroupBox7.Size = new System.Drawing.Size(192, 88); + this.GroupBox7.TabIndex = 45; + this.GroupBox7.TabStop = false; + this.GroupBox7.Text = "Generale"; + // + // chkSovrascriviFile + // + this.chkSovrascriviFile.AutoSize = true; + this.chkSovrascriviFile.Location = new System.Drawing.Point(16, 61); + this.chkSovrascriviFile.Name = "chkSovrascriviFile"; + this.chkSovrascriviFile.Size = new System.Drawing.Size(94, 17); + this.chkSovrascriviFile.TabIndex = 2; + this.chkSovrascriviFile.Text = "Sovrascrivi file"; + this.chkSovrascriviFile.UseVisualStyleBackColor = true; + // + // chkRotazioneAutomatica + // + this.chkRotazioneAutomatica.ForeColor = System.Drawing.Color.Black; + this.chkRotazioneAutomatica.Location = new System.Drawing.Point(16, 39); + this.chkRotazioneAutomatica.Name = "chkRotazioneAutomatica"; + this.chkRotazioneAutomatica.Size = new System.Drawing.Size(136, 16); + this.chkRotazioneAutomatica.TabIndex = 1; + this.chkRotazioneAutomatica.Text = "Rotazione automatica"; + // + // chkForzaJpg + // + this.chkForzaJpg.Checked = true; + this.chkForzaJpg.CheckState = System.Windows.Forms.CheckState.Checked; + this.chkForzaJpg.ForeColor = System.Drawing.Color.Black; + this.chkForzaJpg.Location = new System.Drawing.Point(16, 18); + this.chkForzaJpg.Name = "chkForzaJpg"; + this.chkForzaJpg.Size = new System.Drawing.Size(80, 16); + this.chkForzaJpg.TabIndex = 0; + this.chkForzaJpg.Text = "Forza Jpg"; + // + // TabPage3 + // + this.TabPage3.Controls.Add(this.panelTesto); + this.TabPage3.Controls.Add(this.CheckBox2); + this.TabPage3.Location = new System.Drawing.Point(4, 22); + this.TabPage3.Name = "TabPage3"; + this.TabPage3.Padding = new System.Windows.Forms.Padding(3); + this.TabPage3.Size = new System.Drawing.Size(513, 346); + this.TabPage3.TabIndex = 2; + this.TabPage3.Text = "Testo"; + this.TabPage3.UseVisualStyleBackColor = true; + // + // CheckBox2 + // + this.CheckBox2.AutoSize = true; + this.CheckBox2.Location = new System.Drawing.Point(7, 8); + this.CheckBox2.Name = "CheckBox2"; + this.CheckBox2.Size = new System.Drawing.Size(93, 17); + this.CheckBox2.TabIndex = 40; + this.CheckBox2.Text = "Aggiungi testo"; + this.CheckBox2.UseVisualStyleBackColor = true; + this.CheckBox2.CheckedChanged += new System.EventHandler(this.CheckBox2_CheckedChanged); + // + // GroupBox10 + // + this.GroupBox10.Controls.Add(this.Label42); + this.GroupBox10.Controls.Add(this.Label41); + this.GroupBox10.Controls.Add(this.TextBox31); + this.GroupBox10.Controls.Add(this.TextBox30); + this.GroupBox10.Location = new System.Drawing.Point(313, 50); + this.GroupBox10.Name = "GroupBox10"; + this.GroupBox10.Size = new System.Drawing.Size(186, 73); + this.GroupBox10.TabIndex = 39; + this.GroupBox10.TabStop = false; + this.GroupBox10.Text = "Testo foto verticali"; + // + // Label42 + // + this.Label42.AutoSize = true; + this.Label42.Location = new System.Drawing.Point(7, 46); + this.Label42.Name = "Label42"; + this.Label42.Size = new System.Drawing.Size(45, 13); + this.Label42.TabIndex = 3; + this.Label42.Text = "Margine"; + // + // Label41 + // + this.Label41.AutoSize = true; + this.Label41.Location = new System.Drawing.Point(7, 25); + this.Label41.Name = "Label41"; + this.Label41.Size = new System.Drawing.Size(108, 13); + this.Label41.TabIndex = 2; + this.Label41.Text = "Dimensione Carattere"; + // + // TextBox31 + // + this.TextBox31.Location = new System.Drawing.Point(131, 46); + this.TextBox31.Name = "TextBox31"; + this.TextBox31.Size = new System.Drawing.Size(39, 20); + this.TextBox31.TabIndex = 1; + // + // TextBox30 + // + this.TextBox30.Location = new System.Drawing.Point(131, 22); + this.TextBox30.Name = "TextBox30"; + this.TextBox30.Size = new System.Drawing.Size(39, 20); + this.TextBox30.TabIndex = 0; + // + // GroupBox9 + // + this.GroupBox9.Controls.Add(this.CheckBox17); + this.GroupBox9.Controls.Add(this.CheckBox16); + this.GroupBox9.Location = new System.Drawing.Point(313, 3); + this.GroupBox9.Name = "GroupBox9"; + this.GroupBox9.Size = new System.Drawing.Size(186, 45); + this.GroupBox9.TabIndex = 38; + this.GroupBox9.TabStop = false; + this.GroupBox9.Text = "Slide show"; + // + // CheckBox17 + // + this.CheckBox17.AutoSize = true; + this.CheckBox17.Location = new System.Drawing.Point(96, 18); + this.CheckBox17.Name = "CheckBox17"; + this.CheckBox17.Size = new System.Drawing.Size(84, 17); + this.CheckBox17.TabIndex = 1; + this.CheckBox17.Text = "Numero foto"; + this.CheckBox17.UseVisualStyleBackColor = true; + // + // CheckBox16 + // + this.CheckBox16.AutoSize = true; + this.CheckBox16.Location = new System.Drawing.Point(6, 19); + this.CheckBox16.Name = "CheckBox16"; + this.CheckBox16.Size = new System.Drawing.Size(49, 17); + this.CheckBox16.TabIndex = 0; + this.CheckBox16.Text = "Data"; + this.CheckBox16.UseVisualStyleBackColor = true; + // + // GroupBox5 + // + this.GroupBox5.Controls.Add(this.TextBox34); + this.GroupBox5.Controls.Add(this.Button8); + this.GroupBox5.Controls.Add(this.Label36); + this.GroupBox5.Controls.Add(this.TextBox25); + this.GroupBox5.Controls.Add(this.Label35); + this.GroupBox5.Controls.Add(this.ComboBox3); + this.GroupBox5.Controls.Add(this.TextBox11); + this.GroupBox5.Controls.Add(this.Label12); + this.GroupBox5.Controls.Add(this.Label11); + this.GroupBox5.Controls.Add(this.CheckBox3); + this.GroupBox5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(192))))); + this.GroupBox5.Location = new System.Drawing.Point(3, 3); + this.GroupBox5.Name = "GroupBox5"; + this.GroupBox5.Size = new System.Drawing.Size(304, 120); + this.GroupBox5.TabIndex = 37; + this.GroupBox5.TabStop = false; + this.GroupBox5.Text = "Carattere"; + // + // TextBox34 + // + this.TextBox34.Location = new System.Drawing.Point(160, 91); + this.TextBox34.Name = "TextBox34"; + this.TextBox34.Size = new System.Drawing.Size(56, 20); + this.TextBox34.TabIndex = 36; + this.TextBox34.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + // + // Button8 + // + this.Button8.ForeColor = System.Drawing.Color.Black; + this.Button8.Location = new System.Drawing.Point(222, 89); + this.Button8.Name = "Button8"; + this.Button8.Size = new System.Drawing.Size(74, 24); + this.Button8.TabIndex = 35; + this.Button8.Text = "Scegli..."; + // + // Label36 + // + this.Label36.ForeColor = System.Drawing.Color.Black; + this.Label36.Location = new System.Drawing.Point(8, 60); + this.Label36.Name = "Label36"; + this.Label36.Size = new System.Drawing.Size(120, 19); + this.Label36.TabIndex = 34; + this.Label36.Text = "Dimensione miniatura"; + this.Label36.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // TextBox25 + // + this.TextBox25.Location = new System.Drawing.Point(160, 59); + this.TextBox25.Name = "TextBox25"; + this.TextBox25.Size = new System.Drawing.Size(56, 20); + this.TextBox25.TabIndex = 33; + this.TextBox25.Text = "TextBox25"; + // + // Label35 + // + this.Label35.ForeColor = System.Drawing.Color.Black; + this.Label35.Location = new System.Drawing.Point(8, 93); + this.Label35.Name = "Label35"; + this.Label35.Size = new System.Drawing.Size(72, 16); + this.Label35.TabIndex = 32; + this.Label35.Text = "Colore RGB"; + this.Label35.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // ComboBox3 + // + this.ComboBox3.Location = new System.Drawing.Point(96, 8); + this.ComboBox3.Name = "ComboBox3"; + this.ComboBox3.Size = new System.Drawing.Size(120, 21); + this.ComboBox3.TabIndex = 28; + this.ComboBox3.Text = "ComboBox3"; + // + // TextBox11 + // + this.TextBox11.Location = new System.Drawing.Point(160, 35); + this.TextBox11.Name = "TextBox11"; + this.TextBox11.Size = new System.Drawing.Size(56, 20); + this.TextBox11.TabIndex = 27; + this.TextBox11.Text = "TextBox11"; + // + // Label12 + // + this.Label12.AutoSize = true; + this.Label12.ForeColor = System.Drawing.Color.Black; + this.Label12.Location = new System.Drawing.Point(8, 38); + this.Label12.Name = "Label12"; + this.Label12.Size = new System.Drawing.Size(62, 13); + this.Label12.TabIndex = 26; + this.Label12.Text = "Dimensione"; + this.Label12.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // Label11 + // + this.Label11.AutoSize = true; + this.Label11.ForeColor = System.Drawing.Color.Black; + this.Label11.Location = new System.Drawing.Point(56, 8); + this.Label11.Name = "Label11"; + this.Label11.Size = new System.Drawing.Size(28, 13); + this.Label11.TabIndex = 22; + this.Label11.Text = "Font"; + // + // CheckBox3 + // + this.CheckBox3.ForeColor = System.Drawing.Color.Black; + this.CheckBox3.Location = new System.Drawing.Point(224, 8); + this.CheckBox3.Name = "CheckBox3"; + this.CheckBox3.Size = new System.Drawing.Size(72, 24); + this.CheckBox3.TabIndex = 24; + this.CheckBox3.Text = "Grassetto"; + // + // GroupBox4 + // + this.GroupBox4.Controls.Add(this.Label40); + this.GroupBox4.Controls.Add(this.TextBox29); + this.GroupBox4.Controls.Add(this.TextBox18); + this.GroupBox4.Controls.Add(this.Label26); + this.GroupBox4.Controls.Add(this.DateTimePicker1); + this.GroupBox4.Controls.Add(this.CheckBox8); + this.GroupBox4.Controls.Add(this.TextBox9); + this.GroupBox4.Controls.Add(this.CheckBox7); + this.GroupBox4.Controls.Add(this.Label4); + this.GroupBox4.Controls.Add(this.TextBox4); + this.GroupBox4.Controls.Add(this.Label9); + this.GroupBox4.Controls.Add(this.Label13); + this.GroupBox4.Controls.Add(this.ComboBox1); + this.GroupBox4.Controls.Add(this.ComboBox2); + this.GroupBox4.Controls.Add(this.Label14); + this.GroupBox4.Controls.Add(this.TextBox12); + this.GroupBox4.Controls.Add(this.Label15); + this.GroupBox4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(192))))); + this.GroupBox4.Location = new System.Drawing.Point(3, 129); + this.GroupBox4.Name = "GroupBox4"; + this.GroupBox4.Size = new System.Drawing.Size(496, 171); + this.GroupBox4.TabIndex = 36; + this.GroupBox4.TabStop = false; + this.GroupBox4.Text = "Testo da applicare"; + // + // Label40 + // + this.Label40.AutoSize = true; + this.Label40.Location = new System.Drawing.Point(8, 52); + this.Label40.Name = "Label40"; + this.Label40.Size = new System.Drawing.Size(48, 13); + this.Label40.TabIndex = 40; + this.Label40.Text = "Verticale"; + // + // TextBox29 + // + this.TextBox29.Location = new System.Drawing.Point(72, 49); + this.TextBox29.Multiline = true; + this.TextBox29.Name = "TextBox29"; + this.TextBox29.Size = new System.Drawing.Size(408, 44); + this.TextBox29.TabIndex = 39; + // + // TextBox18 + // + this.TextBox18.Location = new System.Drawing.Point(232, 147); + this.TextBox18.Name = "TextBox18"; + this.TextBox18.Size = new System.Drawing.Size(100, 20); + this.TextBox18.TabIndex = 38; + // + // Label26 + // + this.Label26.AutoSize = true; + this.Label26.ForeColor = System.Drawing.Color.Black; + this.Label26.Location = new System.Drawing.Point(344, 147); + this.Label26.Name = "Label26"; + this.Label26.Size = new System.Drawing.Size(48, 13); + this.Label26.TabIndex = 37; + this.Label26.Text = "partenza"; + // + // DateTimePicker1 + // + this.DateTimePicker1.Format = System.Windows.Forms.DateTimePickerFormat.Time; + this.DateTimePicker1.Location = new System.Drawing.Point(392, 147); + this.DateTimePicker1.Name = "DateTimePicker1"; + this.DateTimePicker1.Size = new System.Drawing.Size(88, 20); + this.DateTimePicker1.TabIndex = 36; + // + // CheckBox8 + // + this.CheckBox8.ForeColor = System.Drawing.Color.Black; + this.CheckBox8.Location = new System.Drawing.Point(72, 147); + this.CheckBox8.Name = "CheckBox8"; + this.CheckBox8.Size = new System.Drawing.Size(56, 16); + this.CheckBox8.TabIndex = 35; + this.CheckBox8.Text = "Orario"; + // + // TextBox9 + // + this.TextBox9.Location = new System.Drawing.Point(120, 99); + this.TextBox9.Name = "TextBox9"; + this.TextBox9.Size = new System.Drawing.Size(56, 20); + this.TextBox9.TabIndex = 20; + this.TextBox9.Text = "TextBox9"; + // + // CheckBox7 + // + this.CheckBox7.ForeColor = System.Drawing.Color.Black; + this.CheckBox7.Location = new System.Drawing.Point(136, 147); + this.CheckBox7.Name = "CheckBox7"; + this.CheckBox7.Size = new System.Drawing.Size(88, 16); + this.CheckBox7.TabIndex = 34; + this.CheckBox7.Text = "Tempo gara"; + // + // Label4 + // + this.Label4.AutoSize = true; + this.Label4.ForeColor = System.Drawing.Color.Black; + this.Label4.Location = new System.Drawing.Point(8, 24); + this.Label4.Name = "Label4"; + this.Label4.Size = new System.Drawing.Size(59, 13); + this.Label4.TabIndex = 9; + this.Label4.Text = "Orizzontale"; + // + // TextBox4 + // + this.TextBox4.Location = new System.Drawing.Point(72, 24); + this.TextBox4.Name = "TextBox4"; + this.TextBox4.Size = new System.Drawing.Size(408, 20); + this.TextBox4.TabIndex = 8; + this.TextBox4.Text = "TextBox4"; + // + // Label9 + // + this.Label9.AutoSize = true; + this.Label9.ForeColor = System.Drawing.Color.Black; + this.Label9.Location = new System.Drawing.Point(8, 99); + this.Label9.Name = "Label9"; + this.Label9.Size = new System.Drawing.Size(110, 13); + this.Label9.TabIndex = 19; + this.Label9.Text = "Trasparenza (0-100%)"; + // + // Label13 + // + this.Label13.AutoSize = true; + this.Label13.ForeColor = System.Drawing.Color.Black; + this.Label13.Location = new System.Drawing.Point(16, 123); + this.Label13.Name = "Label13"; + this.Label13.Size = new System.Drawing.Size(52, 13); + this.Label13.TabIndex = 29; + this.Label13.Text = "Posizione"; + // + // ComboBox1 + // + this.ComboBox1.Location = new System.Drawing.Point(72, 123); + this.ComboBox1.Name = "ComboBox1"; + this.ComboBox1.Size = new System.Drawing.Size(104, 21); + this.ComboBox1.TabIndex = 28; + this.ComboBox1.Text = "ComboBox1"; + // + // ComboBox2 + // + this.ComboBox2.Location = new System.Drawing.Point(376, 123); + this.ComboBox2.Name = "ComboBox2"; + this.ComboBox2.Size = new System.Drawing.Size(104, 21); + this.ComboBox2.TabIndex = 31; + this.ComboBox2.Text = "ComboBox2"; + // + // Label14 + // + this.Label14.AutoSize = true; + this.Label14.ForeColor = System.Drawing.Color.Black; + this.Label14.Location = new System.Drawing.Point(304, 123); + this.Label14.Name = "Label14"; + this.Label14.Size = new System.Drawing.Size(67, 13); + this.Label14.TabIndex = 30; + this.Label14.Text = "Allineamento"; + // + // TextBox12 + // + this.TextBox12.Location = new System.Drawing.Point(376, 99); + this.TextBox12.Name = "TextBox12"; + this.TextBox12.Size = new System.Drawing.Size(104, 20); + this.TextBox12.TabIndex = 33; + this.TextBox12.Text = "TextBox12"; + // + // Label15 + // + this.Label15.AutoSize = true; + this.Label15.ForeColor = System.Drawing.Color.Black; + this.Label15.Location = new System.Drawing.Point(296, 99); + this.Label15.Name = "Label15"; + this.Label15.Size = new System.Drawing.Size(75, 13); + this.Label15.TabIndex = 32; + this.Label15.Text = "Margine (pixel)"; + // + // TabPage2 + // + this.TabPage2.Controls.Add(this.GroupBox2); + this.TabPage2.Location = new System.Drawing.Point(4, 22); + this.TabPage2.Name = "TabPage2"; + this.TabPage2.Padding = new System.Windows.Forms.Padding(3); + this.TabPage2.Size = new System.Drawing.Size(513, 351); + this.TabPage2.TabIndex = 5; + this.TabPage2.Text = "Foto"; + this.TabPage2.UseVisualStyleBackColor = true; + // + // GroupBox2 + // + this.GroupBox2.Controls.Add(this.Label45); + this.GroupBox2.Controls.Add(this.TextBox32); + this.GroupBox2.Controls.Add(this.TextBox26); + this.GroupBox2.Controls.Add(this.Label37); + this.GroupBox2.Controls.Add(this.Label38); + this.GroupBox2.Controls.Add(this.TextBox27); + this.GroupBox2.Controls.Add(this.Label39); + this.GroupBox2.Controls.Add(this.TextBox28); + this.GroupBox2.Controls.Add(this.CheckBox15); + this.GroupBox2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(192))))); + this.GroupBox2.Location = new System.Drawing.Point(3, 6); + this.GroupBox2.Name = "GroupBox2"; + this.GroupBox2.Size = new System.Drawing.Size(304, 156); + this.GroupBox2.TabIndex = 36; + this.GroupBox2.TabStop = false; + this.GroupBox2.Text = "Foto grande"; + // + // Label45 + // + this.Label45.AutoSize = true; + this.Label45.Location = new System.Drawing.Point(11, 86); + this.Label45.Name = "Label45"; + this.Label45.Size = new System.Drawing.Size(40, 13); + this.Label45.TabIndex = 22; + this.Label45.Text = "Qualità"; + // + // TextBox32 + // + this.TextBox32.Location = new System.Drawing.Point(72, 80); + this.TextBox32.Name = "TextBox32"; + this.TextBox32.Size = new System.Drawing.Size(72, 20); + this.TextBox32.TabIndex = 21; + this.TextBox32.Text = "100"; + // + // TextBox26 + // + this.TextBox26.Location = new System.Drawing.Point(224, 48); + this.TextBox26.Name = "TextBox26"; + this.TextBox26.Size = new System.Drawing.Size(56, 20); + this.TextBox26.TabIndex = 20; + this.TextBox26.Text = "TextBox26"; + // + // Label37 + // + this.Label37.ForeColor = System.Drawing.Color.Black; + this.Label37.Location = new System.Drawing.Point(168, 48); + this.Label37.Name = "Label37"; + this.Label37.Size = new System.Drawing.Size(48, 16); + this.Label37.TabIndex = 19; + this.Label37.Text = "Suffisso"; + this.Label37.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // Label38 + // + this.Label38.AutoSize = true; + this.Label38.ForeColor = System.Drawing.Color.Black; + this.Label38.Location = new System.Drawing.Point(24, 24); + this.Label38.Name = "Label38"; + this.Label38.Size = new System.Drawing.Size(41, 13); + this.Label38.TabIndex = 16; + this.Label38.Text = "Altezza"; + // + // TextBox27 + // + this.TextBox27.Location = new System.Drawing.Point(72, 24); + this.TextBox27.Name = "TextBox27"; + this.TextBox27.Size = new System.Drawing.Size(72, 20); + this.TextBox27.TabIndex = 14; + this.TextBox27.Text = "TextBox27"; + // + // Label39 + // + this.Label39.AutoSize = true; + this.Label39.ForeColor = System.Drawing.Color.Black; + this.Label39.Location = new System.Drawing.Point(8, 48); + this.Label39.Name = "Label39"; + this.Label39.Size = new System.Drawing.Size(56, 13); + this.Label39.TabIndex = 17; + this.Label39.Text = "Larghezza"; + // + // TextBox28 + // + this.TextBox28.Location = new System.Drawing.Point(72, 48); + this.TextBox28.Name = "TextBox28"; + this.TextBox28.Size = new System.Drawing.Size(72, 20); + this.TextBox28.TabIndex = 15; + this.TextBox28.Text = "TextBox28"; + // + // CheckBox15 + // + this.CheckBox15.Checked = true; + this.CheckBox15.CheckState = System.Windows.Forms.CheckState.Checked; + this.CheckBox15.ForeColor = System.Drawing.Color.Black; + this.CheckBox15.Location = new System.Drawing.Point(168, 16); + this.CheckBox15.Name = "CheckBox15"; + this.CheckBox15.Size = new System.Drawing.Size(120, 32); + this.CheckBox15.TabIndex = 18; + this.CheckBox15.Text = "Mantieni dimensioni originali"; + // + // TabPage1 + // + this.TabPage1.Controls.Add(this.panelMiniature); + this.TabPage1.Controls.Add(this.CheckBox1); + this.TabPage1.Location = new System.Drawing.Point(4, 22); + this.TabPage1.Name = "TabPage1"; + this.TabPage1.Padding = new System.Windows.Forms.Padding(3); + this.TabPage1.Size = new System.Drawing.Size(513, 346); + this.TabPage1.TabIndex = 0; + this.TabPage1.Text = "Miniature"; + this.TabPage1.UseVisualStyleBackColor = true; + // + // GroupBox1 + // + this.GroupBox1.Controls.Add(this.Label46); + this.GroupBox1.Controls.Add(this.TextBox33); + this.GroupBox1.Controls.Add(this.Panel2); + this.GroupBox1.Controls.Add(this.Label5); + this.GroupBox1.Controls.Add(this.TextBox5); + this.GroupBox1.Controls.Add(this.Label6); + this.GroupBox1.Controls.Add(this.TextBox6); + this.GroupBox1.Controls.Add(this.Label3); + this.GroupBox1.Controls.Add(this.TextBox3); + this.GroupBox1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(192))))); + this.GroupBox1.Location = new System.Drawing.Point(3, 3); + this.GroupBox1.Name = "GroupBox1"; + this.GroupBox1.Size = new System.Drawing.Size(350, 210); + this.GroupBox1.TabIndex = 25; + this.GroupBox1.TabStop = false; + this.GroupBox1.Text = "Miniature"; + // + // Label46 + // + this.Label46.AutoSize = true; + this.Label46.Location = new System.Drawing.Point(198, 43); + this.Label46.Name = "Label46"; + this.Label46.Size = new System.Drawing.Size(40, 13); + this.Label46.TabIndex = 21; + this.Label46.Text = "Qualità"; + // + // TextBox33 + // + this.TextBox33.Location = new System.Drawing.Point(244, 40); + this.TextBox33.Name = "TextBox33"; + this.TextBox33.Size = new System.Drawing.Size(100, 20); + this.TextBox33.TabIndex = 20; + // + // Panel2 + // + this.Panel2.Controls.Add(this.RadioButton3); + this.Panel2.Controls.Add(this.RadioButton7); + this.Panel2.Controls.Add(this.RadioButton4); + this.Panel2.Controls.Add(this.RadioButton6); + this.Panel2.Controls.Add(this.RadioButton5); + this.Panel2.Location = new System.Drawing.Point(56, 114); + this.Panel2.Name = "Panel2"; + this.Panel2.Size = new System.Drawing.Size(235, 90); + this.Panel2.TabIndex = 19; + // + // RadioButton3 + // + this.RadioButton3.AutoSize = true; + this.RadioButton3.Location = new System.Drawing.Point(15, 16); + this.RadioButton3.Name = "RadioButton3"; + this.RadioButton3.Size = new System.Drawing.Size(99, 17); + this.RadioButton3.TabIndex = 14; + this.RadioButton3.TabStop = true; + this.RadioButton3.Text = "Aggiungi Scritta"; + this.RadioButton3.UseVisualStyleBackColor = true; + // + // RadioButton7 + // + this.RadioButton7.AutoSize = true; + this.RadioButton7.Location = new System.Drawing.Point(129, 40); + this.RadioButton7.Name = "RadioButton7"; + this.RadioButton7.Size = new System.Drawing.Size(95, 17); + this.RadioButton7.TabIndex = 18; + this.RadioButton7.TabStop = true; + this.RadioButton7.Text = "numero+tempo"; + this.RadioButton7.UseVisualStyleBackColor = true; + // + // RadioButton4 + // + this.RadioButton4.AutoSize = true; + this.RadioButton4.Location = new System.Drawing.Point(15, 40); + this.RadioButton4.Name = "RadioButton4"; + this.RadioButton4.Size = new System.Drawing.Size(95, 17); + this.RadioButton4.TabIndex = 15; + this.RadioButton4.TabStop = true; + this.RadioButton4.Text = "Aggiungi orario"; + this.RadioButton4.UseVisualStyleBackColor = true; + // + // RadioButton6 + // + this.RadioButton6.AutoSize = true; + this.RadioButton6.Location = new System.Drawing.Point(129, 16); + this.RadioButton6.Name = "RadioButton6"; + this.RadioButton6.Size = new System.Drawing.Size(83, 17); + this.RadioButton6.TabIndex = 17; + this.RadioButton6.TabStop = true; + this.RadioButton6.Text = "Numero foto"; + this.RadioButton6.UseVisualStyleBackColor = true; + // + // RadioButton5 + // + this.RadioButton5.AutoSize = true; + this.RadioButton5.Location = new System.Drawing.Point(15, 65); + this.RadioButton5.Name = "RadioButton5"; + this.RadioButton5.Size = new System.Drawing.Size(84, 17); + this.RadioButton5.TabIndex = 16; + this.RadioButton5.TabStop = true; + this.RadioButton5.Text = "Tempo Gara"; + this.RadioButton5.UseVisualStyleBackColor = true; + // + // Label5 + // + this.Label5.AutoSize = true; + this.Label5.ForeColor = System.Drawing.Color.Black; + this.Label5.Location = new System.Drawing.Point(24, 88); + this.Label5.Name = "Label5"; + this.Label5.Size = new System.Drawing.Size(41, 13); + this.Label5.TabIndex = 12; + this.Label5.Text = "Altezza"; + // + // TextBox5 + // + this.TextBox5.Location = new System.Drawing.Point(72, 64); + this.TextBox5.Name = "TextBox5"; + this.TextBox5.Size = new System.Drawing.Size(88, 20); + this.TextBox5.TabIndex = 10; + this.TextBox5.Text = "TextBox5"; + // + // Label6 + // + this.Label6.AutoSize = true; + this.Label6.ForeColor = System.Drawing.Color.Black; + this.Label6.Location = new System.Drawing.Point(8, 64); + this.Label6.Name = "Label6"; + this.Label6.Size = new System.Drawing.Size(56, 13); + this.Label6.TabIndex = 13; + this.Label6.Text = "Larghezza"; + // + // TextBox6 + // + this.TextBox6.Location = new System.Drawing.Point(72, 88); + this.TextBox6.Name = "TextBox6"; + this.TextBox6.Size = new System.Drawing.Size(88, 20); + this.TextBox6.TabIndex = 11; + this.TextBox6.Text = "TextBox6"; + // + // Label3 + // + this.Label3.AutoSize = true; + this.Label3.ForeColor = System.Drawing.Color.Black; + this.Label3.Location = new System.Drawing.Point(24, 40); + this.Label3.Name = "Label3"; + this.Label3.Size = new System.Drawing.Size(44, 13); + this.Label3.TabIndex = 7; + this.Label3.Text = "Suffisso"; + // + // TextBox3 + // + this.TextBox3.Location = new System.Drawing.Point(72, 40); + this.TextBox3.Name = "TextBox3"; + this.TextBox3.Size = new System.Drawing.Size(88, 20); + this.TextBox3.TabIndex = 6; + this.TextBox3.Text = "TextBox3"; + // + // CheckBox1 + // + this.CheckBox1.ForeColor = System.Drawing.Color.Black; + this.CheckBox1.Location = new System.Drawing.Point(6, 7); + this.CheckBox1.Name = "CheckBox1"; + this.CheckBox1.Size = new System.Drawing.Size(104, 24); + this.CheckBox1.TabIndex = 5; + this.CheckBox1.Text = "Crea miniature"; + this.CheckBox1.CheckedChanged += new System.EventHandler(this.CheckBox1_CheckedChanged); + // + // TabPage4 + // + this.TabPage4.Controls.Add(this.GroupBox6); + this.TabPage4.Location = new System.Drawing.Point(4, 22); + this.TabPage4.Name = "TabPage4"; + this.TabPage4.Padding = new System.Windows.Forms.Padding(3); + this.TabPage4.Size = new System.Drawing.Size(513, 351); + this.TabPage4.TabIndex = 3; + this.TabPage4.Text = "Logo"; + this.TabPage4.UseVisualStyleBackColor = true; + // + // GroupBox6 + // + this.GroupBox6.Controls.Add(this.PictureBox2); + this.GroupBox6.Controls.Add(this.PictureBox1); + this.GroupBox6.Controls.Add(this.ComboBox5); + this.GroupBox6.Controls.Add(this.ComboBox4); + this.GroupBox6.Controls.Add(this.TextBox19); + this.GroupBox6.Controls.Add(this.Label28); + this.GroupBox6.Controls.Add(this.CheckBox5); + this.GroupBox6.Controls.Add(this.TextBox15); + this.GroupBox6.Controls.Add(this.TextBox14); + this.GroupBox6.Controls.Add(this.Label25); + this.GroupBox6.Controls.Add(this.TextBox16); + this.GroupBox6.Controls.Add(this.Label24); + this.GroupBox6.Controls.Add(this.Label22); + this.GroupBox6.Controls.Add(this.Label23); + this.GroupBox6.Controls.Add(this.Button4); + this.GroupBox6.Controls.Add(this.TextBox10); + this.GroupBox6.Controls.Add(this.Label29); + this.GroupBox6.Controls.Add(this.Label30); + this.GroupBox6.Controls.Add(this.PictureBox3); + this.GroupBox6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(192))))); + this.GroupBox6.Location = new System.Drawing.Point(6, 6); + this.GroupBox6.Name = "GroupBox6"; + this.GroupBox6.Size = new System.Drawing.Size(496, 224); + this.GroupBox6.TabIndex = 42; + this.GroupBox6.TabStop = false; + this.GroupBox6.Text = "Logo"; + // + // PictureBox2 + // + this.PictureBox2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.PictureBox2.Location = new System.Drawing.Point(144, 192); + this.PictureBox2.Name = "PictureBox2"; + this.PictureBox2.Size = new System.Drawing.Size(24, 24); + this.PictureBox2.TabIndex = 44; + this.PictureBox2.TabStop = false; + this.PictureBox2.Visible = false; + // + // PictureBox1 + // + this.PictureBox1.Cursor = System.Windows.Forms.Cursors.Cross; + this.PictureBox1.Location = new System.Drawing.Point(256, 56); + this.PictureBox1.Name = "PictureBox1"; + this.PictureBox1.Size = new System.Drawing.Size(224, 160); + this.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.PictureBox1.TabIndex = 43; + this.PictureBox1.TabStop = false; + // + // ComboBox5 + // + this.ComboBox5.Location = new System.Drawing.Point(144, 168); + this.ComboBox5.Name = "ComboBox5"; + this.ComboBox5.Size = new System.Drawing.Size(96, 21); + this.ComboBox5.TabIndex = 42; + this.ComboBox5.Text = "ComboBox5"; + // + // ComboBox4 + // + this.ComboBox4.Location = new System.Drawing.Point(144, 144); + this.ComboBox4.Name = "ComboBox4"; + this.ComboBox4.Size = new System.Drawing.Size(96, 21); + this.ComboBox4.TabIndex = 41; + this.ComboBox4.Text = "ComboBox4"; + // + // TextBox19 + // + this.TextBox19.Location = new System.Drawing.Point(144, 96); + this.TextBox19.Name = "TextBox19"; + this.TextBox19.Size = new System.Drawing.Size(96, 20); + this.TextBox19.TabIndex = 40; + this.TextBox19.Text = "TextBox19"; + // + // Label28 + // + this.Label28.ForeColor = System.Drawing.Color.Black; + this.Label28.Location = new System.Drawing.Point(17, 97); + this.Label28.Name = "Label28"; + this.Label28.Size = new System.Drawing.Size(120, 16); + this.Label28.TabIndex = 39; + this.Label28.Text = "Trasparenza (0-100%)"; + this.Label28.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // CheckBox5 + // + this.CheckBox5.ForeColor = System.Drawing.Color.Black; + this.CheckBox5.Location = new System.Drawing.Point(0, 26); + this.CheckBox5.Name = "CheckBox5"; + this.CheckBox5.Size = new System.Drawing.Size(72, 20); + this.CheckBox5.TabIndex = 38; + this.CheckBox5.Text = "Aggiungi"; + // + // TextBox15 + // + this.TextBox15.Location = new System.Drawing.Point(144, 72); + this.TextBox15.Name = "TextBox15"; + this.TextBox15.Size = new System.Drawing.Size(96, 20); + this.TextBox15.TabIndex = 19; + this.TextBox15.Text = "TextBox15"; + // + // TextBox14 + // + this.TextBox14.Location = new System.Drawing.Point(144, 48); + this.TextBox14.Name = "TextBox14"; + this.TextBox14.Size = new System.Drawing.Size(96, 20); + this.TextBox14.TabIndex = 18; + this.TextBox14.Text = "TextBox14"; + // + // Label25 + // + this.Label25.AutoSize = true; + this.Label25.ForeColor = System.Drawing.Color.Black; + this.Label25.Location = new System.Drawing.Point(17, 168); + this.Label25.Name = "Label25"; + this.Label25.Size = new System.Drawing.Size(95, 13); + this.Label25.TabIndex = 36; + this.Label25.Text = "Posizione verticale"; + this.Label25.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // TextBox16 + // + this.TextBox16.Location = new System.Drawing.Point(144, 120); + this.TextBox16.Name = "TextBox16"; + this.TextBox16.Size = new System.Drawing.Size(96, 20); + this.TextBox16.TabIndex = 35; + this.TextBox16.Text = "TextBox16"; + // + // Label24 + // + this.Label24.AutoSize = true; + this.Label24.ForeColor = System.Drawing.Color.Black; + this.Label24.Location = new System.Drawing.Point(19, 123); + this.Label24.Name = "Label24"; + this.Label24.Size = new System.Drawing.Size(88, 13); + this.Label24.TabIndex = 34; + this.Label24.Text = "Margine (pixel/%)"; + this.Label24.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // Label22 + // + this.Label22.AutoSize = true; + this.Label22.ForeColor = System.Drawing.Color.Black; + this.Label22.Location = new System.Drawing.Point(19, 51); + this.Label22.Name = "Label22"; + this.Label22.Size = new System.Drawing.Size(41, 13); + this.Label22.TabIndex = 20; + this.Label22.Text = "Altezza"; + this.Label22.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // Label23 + // + this.Label23.AutoSize = true; + this.Label23.ForeColor = System.Drawing.Color.Black; + this.Label23.Location = new System.Drawing.Point(19, 75); + this.Label23.Name = "Label23"; + this.Label23.Size = new System.Drawing.Size(56, 13); + this.Label23.TabIndex = 21; + this.Label23.Text = "Larghezza"; + this.Label23.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // Button4 + // + this.Button4.Location = new System.Drawing.Point(464, 24); + this.Button4.Name = "Button4"; + this.Button4.Size = new System.Drawing.Size(24, 20); + this.Button4.TabIndex = 8; + this.Button4.Text = "..."; + // + // TextBox10 + // + this.TextBox10.Location = new System.Drawing.Point(144, 24); + this.TextBox10.Name = "TextBox10"; + this.TextBox10.Size = new System.Drawing.Size(312, 20); + this.TextBox10.TabIndex = 6; + this.TextBox10.Text = "TextBox10"; + // + // Label29 + // + this.Label29.AutoSize = true; + this.Label29.ForeColor = System.Drawing.Color.Black; + this.Label29.Location = new System.Drawing.Point(17, 147); + this.Label29.Name = "Label29"; + this.Label29.Size = new System.Drawing.Size(105, 13); + this.Label29.TabIndex = 36; + this.Label29.Text = "Posizione orizzontale"; + this.Label29.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // Label30 + // + this.Label30.AutoSize = true; + this.Label30.ForeColor = System.Drawing.Color.Black; + this.Label30.Location = new System.Drawing.Point(19, 203); + this.Label30.Name = "Label30"; + this.Label30.Size = new System.Drawing.Size(93, 13); + this.Label30.TabIndex = 36; + this.Label30.Text = "Colore trasparente"; + this.Label30.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.Label30.Visible = false; + // + // PictureBox3 + // + this.PictureBox3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.PictureBox3.Location = new System.Drawing.Point(216, 192); + this.PictureBox3.Name = "PictureBox3"; + this.PictureBox3.Size = new System.Drawing.Size(24, 24); + this.PictureBox3.TabIndex = 44; + this.PictureBox3.TabStop = false; + this.PictureBox3.Visible = false; + // + // Label20 + // + this.Label20.AutoSize = true; + this.Label20.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label20.Location = new System.Drawing.Point(6, 301); + this.Label20.Name = "Label20"; + this.Label20.Size = new System.Drawing.Size(104, 16); + this.Label20.TabIndex = 74; + this.Label20.Text = "foto generate:"; + // + // Label19 + // + this.Label19.AutoSize = true; + this.Label19.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label19.Location = new System.Drawing.Point(6, 282); + this.Label19.Name = "Label19"; + this.Label19.Size = new System.Drawing.Size(80, 16); + this.Label19.TabIndex = 73; + this.Label19.Text = "foto totali: "; + // + // Label18 + // + this.Label18.AutoSize = true; + this.Label18.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label18.Location = new System.Drawing.Point(110, 301); + this.Label18.Name = "Label18"; + this.Label18.Size = new System.Drawing.Size(19, 20); + this.Label18.TabIndex = 72; + this.Label18.Text = "0"; + // + // lblFotoTotaliNum + // + this.lblFotoTotaliNum.AutoSize = true; + this.lblFotoTotaliNum.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblFotoTotaliNum.Location = new System.Drawing.Point(110, 282); + this.lblFotoTotaliNum.Name = "lblFotoTotaliNum"; + this.lblFotoTotaliNum.Size = new System.Drawing.Size(19, 20); + this.lblFotoTotaliNum.TabIndex = 71; + this.lblFotoTotaliNum.Text = "0"; + // + // menuStrip1 + // + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.fileToolStripMenuItem, + this.aiutoToolStripMenuItem}); + this.menuStrip1.Location = new System.Drawing.Point(0, 0); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.Size = new System.Drawing.Size(756, 24); + this.menuStrip1.TabIndex = 82; + this.menuStrip1.Text = "menuStrip1"; + // + // fileToolStripMenuItem + // + this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.caricaImpostazioniToolStripMenuItem, + this.salvaImpostazioniToolStripMenuItem, + this.creaCatalogoToolStripMenuItem, + this.esciToolStripMenuItem}); + this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; + this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); + this.fileToolStripMenuItem.Text = "File"; + // + // caricaImpostazioniToolStripMenuItem + // + this.caricaImpostazioniToolStripMenuItem.Name = "caricaImpostazioniToolStripMenuItem"; + this.caricaImpostazioniToolStripMenuItem.Size = new System.Drawing.Size(187, 22); + this.caricaImpostazioniToolStripMenuItem.Text = "Carica impostazioni..."; + this.caricaImpostazioniToolStripMenuItem.Click += new System.EventHandler(this.caricaImpostazioniToolStripMenuItem_Click); + // + // salvaImpostazioniToolStripMenuItem + // + this.salvaImpostazioniToolStripMenuItem.Name = "salvaImpostazioniToolStripMenuItem"; + this.salvaImpostazioniToolStripMenuItem.Size = new System.Drawing.Size(187, 22); + this.salvaImpostazioniToolStripMenuItem.Text = "Salva impostazioni..."; + // + // creaCatalogoToolStripMenuItem + // + this.creaCatalogoToolStripMenuItem.Name = "creaCatalogoToolStripMenuItem"; + this.creaCatalogoToolStripMenuItem.Size = new System.Drawing.Size(187, 22); + this.creaCatalogoToolStripMenuItem.Text = "Crea catalogo"; + // + // esciToolStripMenuItem + // + this.esciToolStripMenuItem.Name = "esciToolStripMenuItem"; + this.esciToolStripMenuItem.Size = new System.Drawing.Size(187, 22); + this.esciToolStripMenuItem.Text = "Esci"; + // + // aiutoToolStripMenuItem + // + this.aiutoToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.informazioniToolStripMenuItem}); + this.aiutoToolStripMenuItem.Name = "aiutoToolStripMenuItem"; + this.aiutoToolStripMenuItem.Size = new System.Drawing.Size(48, 20); + this.aiutoToolStripMenuItem.Text = "Aiuto"; + // + // informazioniToolStripMenuItem + // + this.informazioniToolStripMenuItem.Name = "informazioniToolStripMenuItem"; + this.informazioniToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.informazioniToolStripMenuItem.Text = "Informazioni"; + this.informazioniToolStripMenuItem.Click += new System.EventHandler(this.informazioniToolStripMenuItem_Click); + // + // groupBox12 + // + this.groupBox12.Controls.Add(this.txtFileInfo); + this.groupBox12.Controls.Add(this.lblLog); + this.groupBox12.Controls.Add(this.btnStopCreazione); + this.groupBox12.Controls.Add(this.lblFotoTotaliNum); + this.groupBox12.Controls.Add(this.CheckBox22); + this.groupBox12.Controls.Add(this.Label18); + this.groupBox12.Controls.Add(this.Label43); + this.groupBox12.Controls.Add(this.Label19); + this.groupBox12.Controls.Add(this.Label20); + this.groupBox12.Location = new System.Drawing.Point(539, 27); + this.groupBox12.Name = "groupBox12"; + this.groupBox12.Size = new System.Drawing.Size(204, 387); + this.groupBox12.TabIndex = 83; + this.groupBox12.TabStop = false; + this.groupBox12.Text = "Statistiche"; + // + // btnStopCreazione + // + this.btnStopCreazione.Location = new System.Drawing.Point(6, 20); + this.btnStopCreazione.Name = "btnStopCreazione"; + this.btnStopCreazione.Size = new System.Drawing.Size(192, 40); + this.btnStopCreazione.TabIndex = 82; + this.btnStopCreazione.Text = "STOP CREAZIONE"; + this.btnStopCreazione.UseVisualStyleBackColor = true; + this.btnStopCreazione.Click += new System.EventHandler(this.btnStopCreazione_Click); + // + // lblLog + // + this.lblLog.FormattingEnabled = true; + this.lblLog.Location = new System.Drawing.Point(6, 68); + this.lblLog.Name = "lblLog"; + this.lblLog.Size = new System.Drawing.Size(192, 95); + this.lblLog.TabIndex = 83; + // + // txtFileInfo + // + this.txtFileInfo.Enabled = false; + this.txtFileInfo.Location = new System.Drawing.Point(6, 170); + this.txtFileInfo.Multiline = true; + this.txtFileInfo.Name = "txtFileInfo"; + this.txtFileInfo.Size = new System.Drawing.Size(192, 109); + this.txtFileInfo.TabIndex = 84; + // + // panelTesto + // + this.panelTesto.Controls.Add(this.GroupBox5); + this.panelTesto.Controls.Add(this.GroupBox10); + this.panelTesto.Controls.Add(this.GroupBox9); + this.panelTesto.Controls.Add(this.GroupBox4); + this.panelTesto.Location = new System.Drawing.Point(3, 28); + this.panelTesto.Name = "panelTesto"; + this.panelTesto.Size = new System.Drawing.Size(504, 312); + this.panelTesto.TabIndex = 85; + // + // panelMiniature + // + this.panelMiniature.Controls.Add(this.GroupBox1); + this.panelMiniature.Location = new System.Drawing.Point(6, 36); + this.panelMiniature.Name = "panelMiniature"; + this.panelMiniature.Size = new System.Drawing.Size(501, 304); + this.panelMiniature.TabIndex = 27; + // + // MainForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(756, 427); + this.Controls.Add(this.groupBox12); + this.Controls.Add(this.TabControl1); + this.Controls.Add(this.menuStrip1); + this.Controls.Add(this.ProgressBar1); + this.MainMenuStrip = this.menuStrip1; + this.Name = "MainForm"; + this.Text = "Form1"; + this.Load += new System.EventHandler(this.Form1_Load); + this.TabControl1.ResumeLayout(false); + this.TabPage5.ResumeLayout(false); + this.GroupBox11.ResumeLayout(false); + this.GroupBox11.PerformLayout(); + this.GroupBox3.ResumeLayout(false); + this.GroupBox3.PerformLayout(); + this.GroupBox8.ResumeLayout(false); + this.GroupBox8.PerformLayout(); + this.GroupBox7.ResumeLayout(false); + this.GroupBox7.PerformLayout(); + this.TabPage3.ResumeLayout(false); + this.TabPage3.PerformLayout(); + this.GroupBox10.ResumeLayout(false); + this.GroupBox10.PerformLayout(); + this.GroupBox9.ResumeLayout(false); + this.GroupBox9.PerformLayout(); + this.GroupBox5.ResumeLayout(false); + this.GroupBox5.PerformLayout(); + this.GroupBox4.ResumeLayout(false); + this.GroupBox4.PerformLayout(); + this.TabPage2.ResumeLayout(false); + this.GroupBox2.ResumeLayout(false); + this.GroupBox2.PerformLayout(); + this.TabPage1.ResumeLayout(false); + this.GroupBox1.ResumeLayout(false); + this.GroupBox1.PerformLayout(); + this.Panel2.ResumeLayout(false); + this.Panel2.PerformLayout(); + this.TabPage4.ResumeLayout(false); + this.GroupBox6.ResumeLayout(false); + this.GroupBox6.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.PictureBox2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.PictureBox1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.PictureBox3)).EndInit(); + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); + this.groupBox12.ResumeLayout(false); + this.groupBox12.PerformLayout(); + this.panelTesto.ResumeLayout(false); + this.panelMiniature.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + internal System.Windows.Forms.ProgressBar ProgressBar1; + internal System.Windows.Forms.CheckBox CheckBox22; + internal System.Windows.Forms.Label Label43; + internal System.Windows.Forms.TabControl TabControl1; + internal System.Windows.Forms.TabPage TabPage5; + internal System.Windows.Forms.GroupBox GroupBox11; + internal System.Windows.Forms.Label Label8; + internal System.Windows.Forms.TextBox TextBox8; + internal System.Windows.Forms.Label Label7; + internal System.Windows.Forms.TextBox TextBox7; + internal System.Windows.Forms.GroupBox GroupBox3; + internal System.Windows.Forms.CheckBox chkAggiornaSottodirectory; + internal System.Windows.Forms.Button Button3; + internal System.Windows.Forms.Button Button2; + internal System.Windows.Forms.Label Label1; + internal System.Windows.Forms.Label Label2; + internal System.Windows.Forms.TextBox txtSorgente; + internal System.Windows.Forms.TextBox txtDestinazione; + internal System.Windows.Forms.GroupBox GroupBox8; + internal System.Windows.Forms.RadioButton rdbNumFiles; + internal System.Windows.Forms.RadioButton rdbNumProgressiva; + internal System.Windows.Forms.TextBox txtCifreContatore; + internal System.Windows.Forms.Label Label34; + internal System.Windows.Forms.TextBox txtSuffissoCartelle; + internal System.Windows.Forms.Label Label33; + internal System.Windows.Forms.Label Label31; + internal System.Windows.Forms.CheckBox chkCreaSottocartelle; + internal System.Windows.Forms.TextBox txtFilePerCartella; + internal System.Windows.Forms.Label Label32; + internal System.Windows.Forms.GroupBox GroupBox7; + internal System.Windows.Forms.CheckBox chkSovrascriviFile; + internal System.Windows.Forms.CheckBox chkRotazioneAutomatica; + internal System.Windows.Forms.CheckBox chkForzaJpg; + internal System.Windows.Forms.TabPage TabPage3; + internal System.Windows.Forms.CheckBox CheckBox2; + internal System.Windows.Forms.GroupBox GroupBox10; + internal System.Windows.Forms.Label Label42; + internal System.Windows.Forms.Label Label41; + internal System.Windows.Forms.TextBox TextBox31; + internal System.Windows.Forms.TextBox TextBox30; + internal System.Windows.Forms.GroupBox GroupBox9; + internal System.Windows.Forms.CheckBox CheckBox17; + internal System.Windows.Forms.CheckBox CheckBox16; + internal System.Windows.Forms.GroupBox GroupBox5; + internal System.Windows.Forms.TextBox TextBox34; + internal System.Windows.Forms.Button Button8; + internal System.Windows.Forms.Label Label36; + internal System.Windows.Forms.TextBox TextBox25; + internal System.Windows.Forms.Label Label35; + internal System.Windows.Forms.ComboBox ComboBox3; + internal System.Windows.Forms.TextBox TextBox11; + internal System.Windows.Forms.Label Label12; + internal System.Windows.Forms.Label Label11; + internal System.Windows.Forms.CheckBox CheckBox3; + internal System.Windows.Forms.GroupBox GroupBox4; + internal System.Windows.Forms.Label Label40; + internal System.Windows.Forms.TextBox TextBox29; + internal System.Windows.Forms.TextBox TextBox18; + internal System.Windows.Forms.Label Label26; + internal System.Windows.Forms.DateTimePicker DateTimePicker1; + internal System.Windows.Forms.CheckBox CheckBox8; + internal System.Windows.Forms.TextBox TextBox9; + internal System.Windows.Forms.CheckBox CheckBox7; + internal System.Windows.Forms.Label Label4; + internal System.Windows.Forms.TextBox TextBox4; + internal System.Windows.Forms.Label Label9; + internal System.Windows.Forms.Label Label13; + internal System.Windows.Forms.ComboBox ComboBox1; + internal System.Windows.Forms.ComboBox ComboBox2; + internal System.Windows.Forms.Label Label14; + internal System.Windows.Forms.TextBox TextBox12; + internal System.Windows.Forms.Label Label15; + internal System.Windows.Forms.TabPage TabPage2; + internal System.Windows.Forms.GroupBox GroupBox2; + internal System.Windows.Forms.Label Label45; + internal System.Windows.Forms.TextBox TextBox32; + internal System.Windows.Forms.TextBox TextBox26; + internal System.Windows.Forms.Label Label37; + internal System.Windows.Forms.Label Label38; + internal System.Windows.Forms.TextBox TextBox27; + internal System.Windows.Forms.Label Label39; + internal System.Windows.Forms.TextBox TextBox28; + internal System.Windows.Forms.CheckBox CheckBox15; + internal System.Windows.Forms.TabPage TabPage1; + internal System.Windows.Forms.GroupBox GroupBox1; + internal System.Windows.Forms.Label Label46; + internal System.Windows.Forms.TextBox TextBox33; + internal System.Windows.Forms.Panel Panel2; + internal System.Windows.Forms.RadioButton RadioButton3; + internal System.Windows.Forms.RadioButton RadioButton7; + internal System.Windows.Forms.RadioButton RadioButton4; + internal System.Windows.Forms.RadioButton RadioButton6; + internal System.Windows.Forms.RadioButton RadioButton5; + internal System.Windows.Forms.Label Label5; + internal System.Windows.Forms.TextBox TextBox5; + internal System.Windows.Forms.Label Label6; + internal System.Windows.Forms.TextBox TextBox6; + internal System.Windows.Forms.Label Label3; + internal System.Windows.Forms.TextBox TextBox3; + internal System.Windows.Forms.CheckBox CheckBox1; + internal System.Windows.Forms.TabPage TabPage4; + internal System.Windows.Forms.GroupBox GroupBox6; + internal System.Windows.Forms.PictureBox PictureBox2; + internal System.Windows.Forms.PictureBox PictureBox1; + internal System.Windows.Forms.ComboBox ComboBox5; + internal System.Windows.Forms.ComboBox ComboBox4; + internal System.Windows.Forms.TextBox TextBox19; + internal System.Windows.Forms.Label Label28; + internal System.Windows.Forms.CheckBox CheckBox5; + internal System.Windows.Forms.TextBox TextBox15; + internal System.Windows.Forms.TextBox TextBox14; + internal System.Windows.Forms.Label Label25; + internal System.Windows.Forms.TextBox TextBox16; + internal System.Windows.Forms.Label Label24; + internal System.Windows.Forms.Label Label22; + internal System.Windows.Forms.Label Label23; + internal System.Windows.Forms.Button Button4; + internal System.Windows.Forms.TextBox TextBox10; + internal System.Windows.Forms.Label Label29; + internal System.Windows.Forms.Label Label30; + internal System.Windows.Forms.PictureBox PictureBox3; + internal System.Windows.Forms.Label Label20; + internal System.Windows.Forms.Label Label19; + internal System.Windows.Forms.Label Label18; + internal System.Windows.Forms.Label lblFotoTotaliNum; + private System.Windows.Forms.MenuStrip menuStrip1; + private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem caricaImpostazioniToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem salvaImpostazioniToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem creaCatalogoToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem aiutoToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem informazioniToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem esciToolStripMenuItem; + private System.Windows.Forms.GroupBox groupBox12; + private System.Windows.Forms.Button btnStopCreazione; + private System.Windows.Forms.ListBox lblLog; + private System.Windows.Forms.TextBox txtFileInfo; + private System.Windows.Forms.Panel panelTesto; + private System.Windows.Forms.Panel panelMiniature; + + } +} + diff --git a/ImageCatalogCS/MainForm.cs b/ImageCatalogCS/MainForm.cs new file mode 100644 index 0000000..c11509f --- /dev/null +++ b/ImageCatalogCS/MainForm.cs @@ -0,0 +1,548 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.IO; +using System.Drawing.Text; +using System.Threading; + +public delegate void XyThreadAdd(string Info); + +namespace ImageCatalogCS +{ + public partial class MainForm : Form + { + private bool stopAttivo; + private bool waterSelectColor = false; + + //pool + private XYThreadPool myPool = new XYThreadPool(); + + private int contaImmaginiThread; + + private int maxThreads = 15; + private int minThreads = 5; + + public MainForm() + { + InitializeComponent(); + } + + private void setDefaults() + { + txtSorgente.Text = ""; + txtDestinazione.Text = ""; + TextBox3.Text = "tn_"; + TextBox4.Text = ""; + TextBox5.Text = "350"; + TextBox6.Text = "350"; + TextBox27.Text = "2240"; + TextBox28.Text = "2240"; + TextBox9.Text = "0"; + TextBox11.Text = "20"; + TextBox12.Text = "8"; + //TextBox13.Text = "" + TextBox10.Text = ""; + TextBox14.Text = "430"; + TextBox15.Text = "430"; + TextBox16.Text = "290"; + txtFilePerCartella.Text = "99"; + TextBox19.Text = "100"; + txtSuffissoCartelle.Text = ""; + txtCifreContatore.Text = "2"; + TextBox25.Text = "50"; + TextBox26.Text = ""; + TextBox7.Text = Convert.ToString(15); + TextBox8.Text = Convert.ToString(5); + TextBox34.Text = "Yellow"; + TextBox30.Text = "20"; + TextBox31.Text = "6"; + TextBox32.Text = "85"; + TextBox33.Text = "30"; + + + ComboBox1.Items.Add("Alto"); + ComboBox1.Items.Add("Basso"); + ComboBox1.SelectedIndex = 1; + + ComboBox2.Items.Add("Sinistra"); + ComboBox2.Items.Add("Centro"); + ComboBox2.Items.Add("Destra"); + ComboBox2.SelectedIndex = 1; + + // Create a obejct of InstalledFontCollection + InstalledFontCollection InstalledFonts = new InstalledFontCollection(); + // Gets the array of FontFamily objects associated with this FontCollection. + FontFamily[] fontfamilies = InstalledFonts.Families; + + // Populates font combobox with the font name + + foreach (FontFamily fontFamily in fontfamilies) + { + ComboBox3.Items.Add(fontFamily.Name); + } + + ComboBox3.Text = ComboBox3.Items[0].ToString(); + + ComboBox4.Items.Add("Sinistra"); + ComboBox4.Items.Add("Centro"); + ComboBox4.Items.Add("Destra"); + ComboBox4.SelectedIndex = 2; + + ComboBox5.Items.Add("Alto"); + ComboBox5.Items.Add("Centro"); + ComboBox5.Items.Add("Basso"); + ComboBox5.SelectedIndex = 2; + } + + private void Form1_Load(object sender, EventArgs e) + { + Application.EnableVisualStyles(); + setDefaults(); + } + + private void btnCreaCatalogo_Click(object sender, EventArgs e) + { + DateTime timestart; + DateTime timeStop; + + timestart = DateTime.Now; + + txtFileInfo.Text = string.Empty; + lblFotoTotaliNum.Text = "0"; + Label18.Text = "0"; + Label43.Text = "-s"; + + maxThreads = Convert.ToInt32(TextBox7.Text); + minThreads = Convert.ToInt32(TextBox18.Text); + + //setPicSettings(txtSorgente.Text, txtDestinazione.Text); + makeSettingsFromForm(); + ProgressBar1.Minimum = 0; + ProgressBar1.Step = 1; + ProgressBar1.Value = 0; + + System.Threading.Thread t1 = new System.Threading.Thread(creaCatalogoThread); + + + } + + private void creaCatalogoThread() +{ + System.DateTime timeStart = DateTime.Now; + myPool.StopThreadPool(); + myPool.StartThreadPool(minThreads, maxThreads); + contaImmaginiThread = 0; + + //creaImmaginiWithThreadMod(txtSorgente.Text, txtDestinazione.Text) + //creaimmaginiWithThreadDict(txtSorgente.Text, txtDestinazione.Text); + ThreadPoolWorkItem ThAttivo = null; + //int i = 0; + + // fine + + +} + + private int getNumerazione() + { + int numerazione = 0; + if (rdbNumProgressiva.Checked) + { + numerazione = (int)FileHelper.numerazione.Progressiva; + } + else + { + numerazione = (int)FileHelper.numerazione.Files; + } + return numerazione; + } + + private void creaimmaginiWithThreadDict(string SourcePath, string DestPath) +{ + Dictionary dirSourceDest = new Dictionary(); + + if (chkAggiornaSottodirectory.Checked & chkCreaSottocartelle.Checked) { + FileHelper helper = new FileHelper(Convert.ToInt32(txtFilePerCartella.Text), txtSuffissoCartelle.Text, Convert.ToInt32(txtCifreContatore.Text), getNumerazione()); + //getfilesrecursive + dirSourceDest = helper.GetFilesRecursive(new DirectoryInfo(SourcePath), new DirectoryInfo(DestPath), "*.jpg"); + + } else if (chkAggiornaSottodirectory.Checked & !chkCreaSottocartelle.Checked) { + + } + //else if () + + //= getDirsDict(SourcePath, DestPath) + + KeyValuePair pair = default(KeyValuePair); + + foreach (KeyValuePair pair_loopVariable in dirSourceDest) { + pair = pair_loopVariable; + //setLabel10Text("File: " + pair.Key.Name); + string b = (Convert.ToInt32(Label18.Text) + 1).ToString(); + + ImageCreator ClsCreaImmagine = new ImageCreator(pair.Key, pair.Value); + contaImmaginiThread += 1; + myPool.InsertWorkItem(pair.Key.Name, new XyThreadAdd(ClsCreaImmagine.CreaImmagineThread), new object[1] { pair.Key.Name }, true); + + } + +} + + private Dictionary makeSettingsFromForm() + { + Dictionary settingsDict = new Dictionary(); + settingsDict.Add("sourceDirRoot", new DirectoryInfo(txtSorgente.Text)); + settingsDict.Add("destDirRoot", new DirectoryInfo(txtDestinazione.Text)); + + settingsDict.Add("DirDividiDestinazione", chkCreaSottocartelle.Checked); + settingsDict.Add("DirDividiNumFile", txtFilePerCartella.Text); + settingsDict.Add("DirDividiSuffisso", txtSuffissoCartelle.Text); + settingsDict.Add("DirDividiNumCifre", txtCifreContatore.Text); + + settingsDict.Add("DirDividiTipoNumerazione", rdbNumProgressiva.Checked ? "Progressiva" : "Files"); + + // if (rdbNumProgressiva.Checked) + // settingsDict.Add("DirDividiTipoNumerazione", "Progressiva"); + //else + // settingsDict.Add("DirDividiTipoNumerazione", "Files"); + + // Checkbox + settingsDict.Add("creaMiniature", CheckBox1.Checked); + settingsDict.Add("aggiungiTesto", CheckBox2.Checked); + settingsDict.Add("grassetto", CheckBox3.Checked); + settingsDict.Add("logoAggiungi", CheckBox5.Checked); + settingsDict.Add("usaOrarioTestoApplicare", CheckBox8.Checked); + //settingsDict.Add("usaOrarioMiniatura", CheckBox12.Checked); + settingsDict.Add("fotoGrandeDimOrigina", CheckBox15.Checked); + + settingsDict.Add("dimStandard", Convert.ToInt32(TextBox11.Text)); + settingsDict.Add("dimStandardMiniatura", Convert.ToInt32(TextBox25.Text)); + + + + + settingsDict.Add("usaRotazioneAutomatica", chkRotazioneAutomatica.Checked); + settingsDict.Add("usaForzaJpg", chkForzaJpg.Checked); + + settingsDict.Add("testoNome", CheckBox17.Checked); + settingsDict.Add("nomeData", CheckBox16.Checked); + + settingsDict.Add("testoFirmaStart", TextBox4.Text); + settingsDict.Add("testoFirmaStartV", TextBox29.Text); + + settingsDict.Add("dataPartenza", DateTimePicker1.Value); + settingsDict.Add("testoOrario", TextBox18.Text); + + settingsDict.Add("altezzaSmall", Convert.ToInt32(TextBox6.Text)); + settingsDict.Add("larghezzaSmall", Convert.ToInt32(TextBox5.Text)); + + + settingsDict.Add("aggiungiScritteMiniature", RadioButton3.Checked); + settingsDict.Add("aggTempoGaraMin", RadioButton5.Checked); + settingsDict.Add("aggNumTempMin", RadioButton7.Checked); + + settingsDict.Add("dimVert", Convert.ToUInt32(TextBox30.Text)); + settingsDict.Add("margVert", Convert.ToInt32(TextBox31.Text)); + + settingsDict.Add("suffisso", TextBox3.Text); + settingsDict.Add("trasparenza", Convert.ToInt32(TextBox9.Text)); + settingsDict.Add("ilFont", ComboBox3.SelectedItem.ToString()); + + + settingsDict.Add("posizione", ComboBox1.SelectedItem.ToString()); + settingsDict.Add("allineamento", ComboBox2.SelectedItem.ToString()); + settingsDict.Add("margine", Convert.ToInt32(TextBox12.Text)); + + settingsDict.Add("logoAltezza", Convert.ToInt32(TextBox14.Text)); + settingsDict.Add("logoLarghezza", Convert.ToInt32(TextBox15.Text)); + + settingsDict.Add("fontColoreRGB", ColorTranslator.FromHtml(TextBox34.Text)); + + + settingsDict.Add("logoNomeFile", TextBox10.Text); + settingsDict.Add("logoTrasparenza", TextBox19.Text); + settingsDict.Add("logoMargine", TextBox16.Text); + settingsDict.Add("logoPosizioneH", ComboBox4.Text); + settingsDict.Add("logoPosizioneV", ComboBox5.Text); + + + settingsDict.Add("altezzaBig", Convert.ToInt32(TextBox27.Text)); + settingsDict.Add("larghezzaBig", Convert.ToInt32(TextBox28.Text)); + settingsDict.Add("dimMin", Convert.ToInt32(TextBox25.Text)); + + settingsDict.Add("testoMin", RadioButton6.Checked); + + settingsDict.Add("jpegQuality", Convert.ToInt32(TextBox32.Text)); + settingsDict.Add("jpegQualityMin", Convert.ToInt32(TextBox33.Text)); + + return settingsDict; + } + + private void setPicSettings(string SourcePath, string DestPath) + { + DirectoryInfo SourceDir = new DirectoryInfo(SourcePath); + DirectoryInfo DestDirStart = new DirectoryInfo(DestPath); + DirectoryInfo DestDir = null; + + PicSettings.directorySorgente = txtSorgente.Text; + PicSettings.directoryDestinazione = txtDestinazione.Text; + + + PicSettings.dimStandard = Convert.ToInt32(TextBox11.Text); + PicSettings.dimStandardMiniatura = Convert.ToInt32(TextBox25.Text); + + //PicSettings.UsaOrarioMiniatura = CheckBox12.Checked; + PicSettings.UsaOrarioTestoApplicare = CheckBox8.Checked; + PicSettings.UsaTempoGaraTestoApplicare = CheckBox7.Checked; + + PicSettings.UsaRotazioneAutomatica = chkRotazioneAutomatica.Checked; + PicSettings.UsaForzaJpg = chkForzaJpg.Checked; + + if (CheckBox17.Checked) + { + PicSettings.TestoNome = true; + } + else + { + PicSettings.TestoNome = false; + + } + + if (CheckBox16.Checked) + { + PicSettings.NomeData = true; + } + else + { + PicSettings.NomeData = false; + } + PicSettings.TestoFirmaStart = TextBox4.Text; + PicSettings.TestoFirmaStartV = TextBox29.Text; + + PicSettings.DataPartenza = DateTimePicker1.Value; + PicSettings.TestoOrario = TextBox18.Text; + + PicSettings.AltezzaSmall = Convert.ToInt32(TextBox6.Text); + PicSettings.LarghezzaSmall = Convert.ToInt32(TextBox5.Text); + + PicSettings.CreaMiniature = CheckBox1.Checked; + PicSettings.AggiungiScritteMiniature = RadioButton3.Checked; + PicSettings.AggTempoGaraMin = RadioButton5.Checked; + PicSettings.AggNumTempMin = RadioButton7.Checked; + + + PicSettings.dimVert = Convert.ToInt32(TextBox30.Text); + PicSettings.margVert = Convert.ToInt32(TextBox31.Text); + + //PicSettings.NomeFileChild = childFile.Name + PicSettings.Suffisso = TextBox3.Text; + //PicSettings.Codice = TextBox13.Text + + PicSettings.Trasparenza = Convert.ToInt32(TextBox9.Text); + PicSettings.IlFont = ComboBox3.SelectedItem.ToString(); + PicSettings.Grassetto = CheckBox3.Checked; + + PicSettings.Posizione = ComboBox1.SelectedItem.ToString(); + PicSettings.Allineamento = ComboBox2.SelectedItem.ToString(); + PicSettings.Margine = Convert.ToInt32(TextBox12.Text); + + PicSettings.LogoAltezza = Convert.ToInt32(TextBox14.Text); + PicSettings.LogoLarghezza = Convert.ToInt32(TextBox15.Text); + + PicSettings.fontColoreRGB = ColorTranslator.FromHtml(TextBox34.Text); + + PicSettings.LogoAggiungi = CheckBox5.Checked; + PicSettings.LogoNomeFile = TextBox10.Text; + PicSettings.LogoTrasparenza = TextBox19.Text; + PicSettings.LogoMargine = TextBox16.Text; + PicSettings.LogoPosizioneH = ComboBox4.Text; + PicSettings.LogoPosizioneV = ComboBox5.Text; + + PicSettings.FotoGrandeDimOrigina = CheckBox15.Checked; + PicSettings.AltezzaBig = Convert.ToInt32(TextBox27.Text); + PicSettings.LarghezzaBig = Convert.ToInt32(TextBox28.Text); + PicSettings.DimMin = Convert.ToInt32(TextBox25.Text); + + PicSettings.TestoMin = RadioButton6.Checked; + + PicSettings.jpegQuality = Convert.ToInt64(TextBox32.Text); + PicSettings.jpegQualityMin = Convert.ToInt64(TextBox33.Text); + + PicSettings.mainForm = this; + + + } + + private void makeSettingsFromFile() + { + OpenFileDialog openFileDialog = new OpenFileDialog(); + openFileDialog.Filter = "Setup (*.xml)|*.xml|All valid files (*.*)|*.*"; + openFileDialog.FilterIndex = 0; + openFileDialog.RestoreDirectory = true; + + Dictionary settingsDict = new Dictionary(StringComparer.OrdinalIgnoreCase); + + if (DialogResult.OK == openFileDialog.ShowDialog()) + { + XMLSettings xmlSettings = new XMLSettings(openFileDialog.FileName); + settingsDict = xmlSettings.getParametriDict(); + + + settingsDict = bindSettings(settingsDict); + setLogoMiniature(); + this.Text = string.Format("Image Catalog - {0}", openFileDialog.FileName); + + + } + } + + private void setLogoMiniature() + { + if (File.Exists(TextBox10.Text)) + { + + PictureBox1.Image = Image.FromFile(TextBox10.Text); + if (PictureBox1.Image.Height >= PictureBox1.Image.Width) + { + PictureBox1.Height = 160; + PictureBox1.Width = Convert.ToInt32(160 * PictureBox1.Image.Width / PictureBox1.Image.Height); + } + else + { + PictureBox1.Width = 224; + PictureBox1.Height = Convert.ToInt32(224 * PictureBox1.Image.Height / PictureBox1.Image.Width); + } + } + } + + private Dictionary bindSettings(Dictionary dict) + { + + txtSorgente.Text = dict["dirSorgente"].ToString(); + txtDestinazione.Text = dict["dirDestinazione"].ToString(); + chkAggiornaSottodirectory.Checked = Convert.ToBoolean(dict["DirSottoDirectory"]); + + chkCreaSottocartelle.Checked = Convert.ToBoolean(dict["dirDividiDestinazione"]); + txtFilePerCartella.Text = dict["dirDividiNumFile"].ToString(); + txtSuffissoCartelle.Text = dict["dirDividiSuffisso"].ToString(); + txtCifreContatore.Text = dict["dirDividiNumCifre"].ToString(); + + if (dict["dirDividiTipoNumerazione"].ToString().ToUpper() == "PROGRESSIVA") + rdbNumProgressiva.Checked = true; + else + rdbNumFiles.Checked = true; + + CheckBox1.Checked = Convert.ToBoolean(dict["miniatureCrea"]); + TextBox3.Text = dict["miniatureSuffisso"].ToString(); + TextBox5.Text = dict["miniatureAltezza"].ToString(); + TextBox6.Text = dict["miniatureLarghezza"].ToString(); + RadioButton3.Checked = Convert.ToBoolean(dict["miniatureAddScritta"]); + RadioButton4.Checked = Convert.ToBoolean(dict["miniatureAddOrario"]); + + TextBox27.Text = dict["fotoAltezza"].ToString(); + TextBox28.Text = dict["fotoLarghezza"].ToString(); + + TextBox11.Text = dict["fontDimensione"].ToString(); + TextBox25.Text = dict["fontDimensioneMiniatura"].ToString(); + CheckBox3.Checked = Convert.ToBoolean(dict["fontBold"]); + ComboBox3.Text = dict["fontNome"].ToString(); + + TextBox4.Text = dict["testoTesto"].ToString(); + TextBox9.Text = dict["testoTrasparente"].ToString(); + TextBox12.Text = dict["testoMargine"].ToString(); + ComboBox1.Text = dict["testoPosizione"].ToString(); + ComboBox2.Text = dict["testoAllineamento"].ToString(); + + TextBox10.Text = dict["marchioFile"].ToString(); + TextBox14.Text = dict["marchioAltezza"].ToString(); + TextBox15.Text = dict["marchioLarghezza"].ToString(); + TextBox16.Text = dict["marchioMargine"].ToString(); + ComboBox4.Text = dict["marchioAllOrizzontale"].ToString(); + ComboBox5.Text = dict["marchioAllVerticale"].ToString(); + TextBox19.Text = dict["marchioTrasparenza"].ToString(); + CheckBox5.Checked = Convert.ToBoolean(dict["MarchioAggiungi"]); + + CheckBox7.Checked = Convert.ToBoolean(dict["tempoGara"]); + CheckBox8.Checked = Convert.ToBoolean(dict["orario"]); + TextBox18.Text = dict["etichettaOrario"].ToString(); + + chkForzaJpg.Checked = Convert.ToBoolean(dict["generaleForzaJpg"]); + chkRotazioneAutomatica.Checked = Convert.ToBoolean(dict["generaleRotazioneAutomatica"]); + + TextBox30.Text = dict["grandezzaVerticale"].ToString(); + TextBox31.Text = dict["margineVerticale"].ToString(); + CheckBox15.Checked = Convert.ToBoolean(dict["dimensioniOriginali"]); + TextBox29.Text = dict["testoVerticale"].ToString(); + RadioButton6.Checked = Convert.ToBoolean(dict["nomeMiniatura"]); + CheckBox16.Checked = Convert.ToBoolean(dict["dataFoto"]); + CheckBox17.Checked = Convert.ToBoolean(dict["numeroFoto"]); + + + RadioButton5.Checked = Convert.ToBoolean(dict["tempoSmall"]); + RadioButton7.Checked = Convert.ToBoolean(dict["numTempoSmall"]); + + TextBox32.Text = dict["compressioneJpeg"].ToString(); + TextBox33.Text = dict["compressioneJpegMiniatura"].ToString(); + + TextBox34.Text = dict["coloreTestoRGB"].ToString(); + + + + return dict; + } + + + + + private void caricaImpostazioniToolStripMenuItem_Click(object sender, EventArgs e) + { + makeSettingsFromFile(); + } + + private void btnStopCreazione_Click(object sender, EventArgs e) + { + + } + + private void informazioniToolStripMenuItem_Click(object sender, EventArgs e) + { + AboutForm about = new AboutForm(); + about.Show(); + } + + private void CheckBox2_CheckedChanged(object sender, EventArgs e) + { + if (CheckBox2.Checked) + panelTesto.Enabled = true; + else + panelTesto.Enabled = false; + } + + private void CheckBox1_CheckedChanged(object sender, EventArgs e) + { + if (CheckBox1.Checked) + panelMiniature.Enabled = true; + else + panelMiniature.Enabled = false; + } + + + + + + + + + + + + + + } +} diff --git a/ImageCatalogCS/MainForm.resx b/ImageCatalogCS/MainForm.resx new file mode 100644 index 0000000..d5494e3 --- /dev/null +++ b/ImageCatalogCS/MainForm.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/ImageCatalogCS/PicSettings.cs b/ImageCatalogCS/PicSettings.cs new file mode 100644 index 0000000..9f930c8 --- /dev/null +++ b/ImageCatalogCS/PicSettings.cs @@ -0,0 +1,92 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ImageCatalogCS +{ + static class PicSettings + { + // Root + public static string directorySorgente { get; set; } + public static string directoryDestinazione { get; set; } + + public static int dimVert { get; set; } + public static int margVert { get; set; } + + public static int dimStandard { get; set; } + public static int dimStandardMiniatura { get; set; } + + public static bool NomeData { get; set; } + public static bool TestoNome { get; set; } + public static bool UsaOrarioMiniatura { get; set; } + public static bool UsaOrarioTestoApplicare { get; set; } + public static bool UsaTempoGaraTestoApplicare { get; set; } + public static string TestoFirmaStart { get; set; } + public static string TestoFirmaStartV { get; set; } + public static DateTime DataPartenza { get; set; } + + public static string TestoOrario { get; set; } + public static bool UsaRotazioneAutomatica { get; set; } + + public static bool UsaForzaJpg { get; set; } + public static int LarghezzaSmall { get; set; } + + public static int AltezzaSmall { get; set; } + public static bool CreaMiniature { get; set; } + public static bool AggiungiScritteMiniature { get; set; } + public static bool AggTempoGaraMin { get; set; } + + public static bool AggNumTempMin { get; set; } + public static string Suffisso { get; set; } + + public static string Codice { get; set; } + public static int Trasparenza { get; set; } + public static string IlFont { get; set; } + + public static bool Grassetto { get; set; } + public static string Posizione { get; set; } + public static string Allineamento { get; set; } + + public static int Margine { get; set; } + public static int LogoAltezza { get; set; } + + public static int LogoLarghezza { get; set; } + + public static Color fontColoreRGB { get; set; } + public static bool LogoAggiungi { get; set; } + public static string LogoNomeFile { get; set; } + public static string LogoTrasparenza { get; set; } + public static string LogoMargine { get; set; } + public static string LogoPosizioneH { get; set; } + + public static string LogoPosizioneV { get; set; } + public static bool FotoGrandeDimOrigina { get; set; } + public static int AltezzaBig { get; set; } + public static int LarghezzaBig { get; set; } + public static DirectoryInfo DestDir { get; set; } + + public static int DimMin { get; set; } + + public static bool TestoMin { get; set; } + public static bool SecretDefault { get; set; } + public static bool SecretBig { get; set; } + + public static bool SecretSmall { get; set; } + public static string SecretPathSmall { get; set; } + + public static string SecretPathBig { get; set; } + public static long jpegQuality { get; set; } + + public static long jpegQualityMin { get; set; } + public static bool FotoRuotaADestra { get; set; } // Default False + + public static bool FotoRuotaASinistra { get; set; } // Default False + + public static string TempMinText { get; set; } // Default "" + public static MainForm mainForm { get; set; } + } +} diff --git a/ImageCatalogCS/Program.cs b/ImageCatalogCS/Program.cs new file mode 100644 index 0000000..9c2ec36 --- /dev/null +++ b/ImageCatalogCS/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ImageCatalogCS +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new MainForm()); + } + } +} diff --git a/ImageCatalogCS/Properties/AssemblyInfo.cs b/ImageCatalogCS/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..97f38c2 --- /dev/null +++ b/ImageCatalogCS/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("ImageCatalogCS")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ImageCatalogCS")] +[assembly: AssemblyCopyright("Copyright © 2012")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("00b0a7a5-0de0-48e6-b0c9-ec214aa338dd")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/ImageCatalogCS/Properties/Resources.Designer.cs b/ImageCatalogCS/Properties/Resources.Designer.cs new file mode 100644 index 0000000..9c3a10e --- /dev/null +++ b/ImageCatalogCS/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.18010 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ImageCatalogCS.Properties +{ + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ImageCatalogCS.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/ImageCatalogCS/Properties/Resources.resx b/ImageCatalogCS/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/ImageCatalogCS/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ImageCatalogCS/Properties/Settings.Designer.cs b/ImageCatalogCS/Properties/Settings.Designer.cs new file mode 100644 index 0000000..684a319 --- /dev/null +++ b/ImageCatalogCS/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.18010 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ImageCatalogCS.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/ImageCatalogCS/Properties/Settings.settings b/ImageCatalogCS/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/ImageCatalogCS/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/ImageCatalogCS/Temperature.cs b/ImageCatalogCS/Temperature.cs new file mode 100644 index 0000000..a56ed82 --- /dev/null +++ b/ImageCatalogCS/Temperature.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Management; + + + +namespace ImageCatalogCS +{ + public class Temperature + { + public double CurrentValue { get; set; } + public string InstanceName { get; set; } + public static List Temperatures + { + get + { + List result = new List(); + ManagementObjectSearcher searcher = new ManagementObjectSearcher(@"root\WMI", "SELECT * FROM MSAcpi_ThermalZoneTemperature"); + foreach (ManagementObject obj in searcher.Get()) + { + Double temp = Convert.ToDouble(obj["CurrentTemperature"].ToString()); + temp = (temp - 2732) / 10.0; + result.Add(new Temperature { CurrentValue = temp, InstanceName = obj["InstanceName"].ToString() }); + } + return result; + + } + } + } +} diff --git a/ImageCatalogCS/XMLSettings.cs b/ImageCatalogCS/XMLSettings.cs new file mode 100644 index 0000000..2443542 --- /dev/null +++ b/ImageCatalogCS/XMLSettings.cs @@ -0,0 +1,208 @@ +using Microsoft.VisualBasic; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Data; +using System.Diagnostics; +using System.IO; + +public class XMLSettings +{ + + + private DataSet _ElencoParametri; + + private string _NomeFileSetup; + public XMLSettings(string FileSetup) + { + _ElencoParametri = new DataSet(); + _NomeFileSetup = FileSetup; + + if (!string.IsNullOrEmpty(FileSetup)) + { + CaricaParametriSetup(); + } + } + + public XMLSettings() + { + _ElencoParametri = new DataSet(); + _NomeFileSetup = ""; + } + + public void CaricaParametriSetup() + { + _ElencoParametri = LeggiXmlDataSet("Setup", _NomeFileSetup, "Nome"); + } + + public void SalvaParametriSetup() + { + if (System.IO.File.Exists(_NomeFileSetup) == true) + { + File.Delete(_NomeFileSetup); + } + _ElencoParametri.WriteXml(_NomeFileSetup); + } + + public Dictionary getParametriDict() + { + CaricaParametriSetup(); + Dictionary dictParam = new Dictionary(StringComparer.OrdinalIgnoreCase); + + //DataRow[] LElenco = _ElencoParametri.Tables["Setup"].Select("Nome='" + NomeParametro + "'"); + //DataTable table = _ElencoParametri.Tables["Setup"]; + + foreach (DataRow row in _ElencoParametri.Tables["Setup"].Rows) + { + dictParam.Add(row["Nome"].ToString(), row["Valore"]); + } + + return dictParam; + } + + public string LeggiParametroString(string NomeParametro) + { + string Risposta = ""; + + try + { + DataRow[] LElenco = _ElencoParametri.Tables["Setup"].Select("Nome='" + NomeParametro + "'"); + + DataRow LaRiga = null; + foreach (DataRow LaRiga_loopVariable in LElenco) + { + LaRiga = LaRiga_loopVariable; + Risposta = LaRiga["Valore"].ToString(); + } + } + catch + { + Risposta = ""; + } + + return Risposta; + } + + public bool LeggiParametroBoolean(string NomeParametro) + { + string Risposta = ""; + + try + { + DataRow[] LElenco = _ElencoParametri.Tables["Setup"].Select("Nome='" + NomeParametro + "'"); + + DataRow LaRiga = null; + foreach (DataRow LaRiga_loopVariable in LElenco) + { + LaRiga = LaRiga_loopVariable; + Risposta = LaRiga["Valore"].ToString(); + } + } + catch + { + Risposta = ""; + } + + switch (Risposta.ToUpper()) + { + case "TRUE": + case "OK": + case "SI": + case "1": + case "YES": + case "VERO": + return true; + default: + return false; + } + } + + public void AggiornaParametro(string NomeParametro, object ValoreParametro) + { + try + { + if (_ElencoParametri.Tables["Setup"] == null) + { + DataTable TabellaTmp = new DataTable("Setup"); + DataRow RigaTmp = null; + + DataColumn LaColonna = null; + LaColonna = TabellaTmp.Columns.Add("Nome", System.Type.GetType("System.String")); + LaColonna = TabellaTmp.Columns.Add("Valore", System.Type.GetType("System.String")); + + //* Aggiunge alla tabella tutte le righe + RigaTmp = TabellaTmp.NewRow(); + RigaTmp["Nome"] = NomeParametro; + RigaTmp["Valore"] = ValoreParametro; + TabellaTmp.Rows.Add(RigaTmp); + + _ElencoParametri.Tables.Add(TabellaTmp); + } + else + { + DataRow[] LElenco = _ElencoParametri.Tables["Setup"].Select("Nome='" + NomeParametro + "'"); + + if (LElenco.Length == 0) + { + DataRow LaRiga = null; + LaRiga = _ElencoParametri.Tables["Setup"].NewRow(); + LaRiga["Nome"] = NomeParametro; + LaRiga["Valore"] = ValoreParametro; + _ElencoParametri.Tables["Setup"].Rows.Add(LaRiga); + } + else + { + LElenco[0]["Valore"] = ValoreParametro; + } + } + + } + catch + { + } + } + + + private DataTable LeggiXmlDataTable(string NomeTabella, string NomeFileXml, string NomeColonnaChiave = "") + { + //* Crea e Legge il dataset dal file xml + System.Data.DataSet DataSetXml = new System.Data.DataSet(); + DataSetXml.ReadXml(NomeFileXml); + + //* Aggiunge il campo chiave + if (!string.IsNullOrEmpty(NomeColonnaChiave)) + { + DataSetXml.Tables[NomeTabella].Constraints.Add(NomeColonnaChiave, DataSetXml.Tables[NomeTabella].Columns[NomeColonnaChiave], true); + } + + //* Restituisce la risposta + return DataSetXml.Tables[NomeTabella]; + } + + private static DataSet LeggiXmlDataSet(string NomeTabella, string NomeFileXml, string NomeColonnaChiave = "") + { + //* Crea e Legge il dataset dal file xml + DataSet DataSetXml = new DataSet(); + DataSetXml.ReadXml(NomeFileXml); + + //* Aggiunge il campo chiave + if (!string.IsNullOrEmpty(NomeColonnaChiave)) + { + DataSetXml.Tables[NomeTabella].Constraints.Add(NomeColonnaChiave, DataSetXml.Tables[NomeTabella].Columns[NomeColonnaChiave], true); + } + + //* Restituisce la risposta + return DataSetXml; + } + + + + + public string NomeFileSetup + { + get { return _NomeFileSetup; } + set { _NomeFileSetup = value; } + } + + +} \ No newline at end of file diff --git a/ImageCatalogCS/XYThreadPool.cs b/ImageCatalogCS/XYThreadPool.cs new file mode 100644 index 0000000..005b30c --- /dev/null +++ b/ImageCatalogCS/XYThreadPool.cs @@ -0,0 +1,251 @@ +using Microsoft.VisualBasic; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Data; +using System.Diagnostics; + +using System.Threading; + +public delegate void ThreadErrorHandlerDelegate(ThreadPoolWorkItem oWorkItem, Exception oError); + +public class ThreadPoolWorkItem +{ + public bool m_bStoreOutput = false; + public string m_sName = ""; + public Delegate m_pMethod = null; + public object[] m_pInput = null; + public object m_oOutput = null; + public Exception m_oException = null; + public ThreadPoolWorkItem() + { + } + public ThreadPoolWorkItem(string sName, Delegate pMethod, object[] pInput, bool bStoreOutput) + { + m_sName = sName; + m_pMethod = pMethod; + m_pInput = pInput; + m_bStoreOutput = bStoreOutput; + } +} + +public class XYThreadPool +{ + private Hashtable m_htThreads = new Hashtable(256); + private int m_nMinThreadCount = 5; + private int m_nMaxThreadCount = 10; + private int m_nShutdownPause = 200; + private int m_nServerPause = 25; + private bool m_bContinue = false; + private static Exception m_oException = null; + private Queue m_qInput = new Queue(1024); + private Queue m_qOutput = new Queue(1024); + private Delegate m_delegateThreadErrorHandler = new ThreadErrorHandlerDelegate(OnThreadError); + private void ThreadProc() + { + while (m_bContinue) + { + object obj = null; + Monitor.Enter(this); + if (m_qInput.Count > 0) + obj = m_qInput.Dequeue(); + Monitor.Exit(this); + if (obj == null) + { + bool bQuit = false; + Monitor.Enter(this); + if (m_htThreads.Count > m_nMinThreadCount) + { + m_htThreads.Remove(Thread.CurrentThread.Name); + bQuit = true; + } + Monitor.Exit(this); + if (bQuit) + return; + Thread.Sleep(10 * m_nServerPause); + } + else + { + ThreadPoolWorkItem oWorkItem = (ThreadPoolWorkItem)obj; + //oWorkItem.m_oOutput = oWorkItem.m_pMethod.DynamicInvoke(oWorkItem.m_pInput) + try + { + oWorkItem.m_oOutput = oWorkItem.m_pMethod.DynamicInvoke(oWorkItem.m_pInput); + } + catch (Exception oBug) + { + if ((m_delegateThreadErrorHandler != null)) + { + try + { + object[] pInput = { + oWorkItem, + oBug + }; + m_delegateThreadErrorHandler.DynamicInvoke(pInput); + } + catch + { + } + } + } + if (oWorkItem.m_bStoreOutput) + { + Monitor.Enter(m_qOutput); + m_qOutput.Enqueue(oWorkItem); + Monitor.Exit(m_qOutput); + } + Thread.Sleep(m_nServerPause); + } + } + } + private static void OnThreadError(ThreadPoolWorkItem oWorkItem, Exception oError) + { + if (oWorkItem == null) + { + m_oException = oError; + } + else + { + oWorkItem.m_oException = oError; + } + } + public void SetThreadErrorHandler(ThreadErrorHandlerDelegate pMethod) + { + Monitor.Enter(this); + m_delegateThreadErrorHandler = pMethod; + Monitor.Exit(this); + } + public void SetServerPause(int nMilliseconds) + { + Monitor.Enter(this); + if (nMilliseconds > 9 & nMilliseconds < 101) + m_nServerPause = nMilliseconds; + Monitor.Exit(this); + } + public void SetShutdownPause(int nMilliseconds) + { + Monitor.Enter(this); + m_nShutdownPause = nMilliseconds; + Monitor.Exit(this); + } + public Exception GetException() + { + return m_oException; + } + public void InsertWorkItem(ThreadPoolWorkItem oWorkItem) + { + try + { + Monitor.Enter(this); + m_qInput.Enqueue(oWorkItem); + if (m_bContinue && m_qInput.Count > m_htThreads.Count && m_htThreads.Count < m_nMaxThreadCount) + { + Thread th = new Thread(ThreadProc); + th.Name = Guid.NewGuid().ToString(); + m_htThreads.Add(th.Name, th); + th.Start(); + } + } + catch (Exception oBug) + { + m_oException = oBug; + } + finally + { + Monitor.Exit(this); + } + } + public void InsertWorkItem(string sName, Delegate pMethod, object[] pArgs, bool bStoreOutput) + { + InsertWorkItem(new ThreadPoolWorkItem(sName, pMethod, pArgs, bStoreOutput)); + } + public ThreadPoolWorkItem ExtractWorkItem() + { + object oWorkItem = null; + Monitor.Enter(m_qOutput); + if (m_qOutput.Count > 0) + oWorkItem = m_qOutput.Dequeue(); + Monitor.Exit(m_qOutput); + if (oWorkItem == null) + return null; + return (ThreadPoolWorkItem)oWorkItem; + } + public bool StartThreadPool(int nMinThreadCount = 5, int nMaxThreadCount = 10) + { + try + { + Monitor.Enter(this); + if (m_bContinue == false) + { + m_bContinue = true; + if (nMinThreadCount > 0) + { + m_nMinThreadCount = nMinThreadCount; + } + if (nMaxThreadCount > m_nMinThreadCount) + { + m_nMaxThreadCount = nMaxThreadCount; + } + else + { + m_nMaxThreadCount = 2 * m_nMinThreadCount; + } + int i = 0; + for (i = 1; i <= m_nMinThreadCount; i++) + { + Thread th = new Thread(ThreadProc); + th.Name = Guid.NewGuid().ToString(); + m_htThreads.Add(th.Name, th); + th.Start(); + } + } + return true; + } + catch (Exception oBug) + { + m_bContinue = false; + m_oException = oBug; + return false; + } + finally + { + Monitor.Exit(this); + } + } + public void StopThreadPool() + { + Monitor.Enter(this); + m_bContinue = false; + Thread.Sleep(Math.Max(200, m_nShutdownPause)); + if ((m_nShutdownPause > 0)) + { + IDictionaryEnumerator dict = m_htThreads.GetEnumerator(); + while (dict.MoveNext()) + { + Thread th = (Thread)dict.Value; + if (th.IsAlive) + { + try + { + th.Abort(); + } + catch + { + } + } + } + } + m_htThreads.Clear(); + m_qInput.Clear(); + // m_qOutput.Clear() + Monitor.Exit(this); + } + public int GetThreadCount() + { + Monitor.Enter(this); + int nCount = m_htThreads.Count; + Monitor.Exit(this); + return nCount; + } +} \ No newline at end of file diff --git a/WPFCatalog/App.config b/WPFCatalog/App.config new file mode 100644 index 0000000..8e15646 --- /dev/null +++ b/WPFCatalog/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/WPFCatalog/App.xaml b/WPFCatalog/App.xaml new file mode 100644 index 0000000..7e98dfe --- /dev/null +++ b/WPFCatalog/App.xaml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/WPFCatalog/App.xaml.cs b/WPFCatalog/App.xaml.cs new file mode 100644 index 0000000..ac50df1 --- /dev/null +++ b/WPFCatalog/App.xaml.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Linq; +using System.Threading.Tasks; +using System.Windows; + +namespace WPFCatalog +{ + /// + /// Interaction logic for App.xaml + /// + public partial class App : Application + { + } +} diff --git a/WPFCatalog/Icons/camera-photo-5.png b/WPFCatalog/Icons/camera-photo-5.png new file mode 100644 index 0000000..1e54dea Binary files /dev/null and b/WPFCatalog/Icons/camera-photo-5.png differ diff --git a/WPFCatalog/Icons/document-open-6.png b/WPFCatalog/Icons/document-open-6.png new file mode 100644 index 0000000..fe03b7f Binary files /dev/null and b/WPFCatalog/Icons/document-open-6.png differ diff --git a/WPFCatalog/Icons/face-smile-2.png b/WPFCatalog/Icons/face-smile-2.png new file mode 100644 index 0000000..24ce7a5 Binary files /dev/null and b/WPFCatalog/Icons/face-smile-2.png differ diff --git a/WPFCatalog/Icons/format-justify-left-2.png b/WPFCatalog/Icons/format-justify-left-2.png new file mode 100644 index 0000000..d6abc05 Binary files /dev/null and b/WPFCatalog/Icons/format-justify-left-2.png differ diff --git a/WPFCatalog/Icons/photo.png b/WPFCatalog/Icons/photo.png new file mode 100644 index 0000000..0b2e201 Binary files /dev/null and b/WPFCatalog/Icons/photo.png differ diff --git a/WPFCatalog/Icons/picture.png b/WPFCatalog/Icons/picture.png new file mode 100644 index 0000000..b773744 Binary files /dev/null and b/WPFCatalog/Icons/picture.png differ diff --git a/WPFCatalog/MainWindow.xaml b/WPFCatalog/MainWindow.xaml new file mode 100644 index 0000000..acaeff7 --- /dev/null +++ b/WPFCatalog/MainWindow.xaml @@ -0,0 +1,424 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +