This commit is contained in:
Maddo 2016-07-04 16:45:45 +02:00
commit 3b1afdf2c0
92 changed files with 23248 additions and 0 deletions

BIN
Catalog.sln.ide/edb.chk Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
Catalog.sln.ide/storage.ide Normal file

Binary file not shown.

View file

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{D27ACCF2-80FC-4DE8-AEB8-351FF076E6D5}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>CatalogLib</RootNamespace>
<AssemblyName>CatalogLib</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Class1.cs" />
<Compile Include="ImageCreator.cs" />
<Compile Include="PicSettings.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\CatalogVbLib\CatalogVbLib.vbproj">
<Project>{44465926-240d-473f-90b8-786ba4384406}</Project>
<Name>CatalogVbLib</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

12
CatalogLib/Class1.cs Normal file
View file

@ -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
{
}
}

569
CatalogLib/ImageCreator.cs Normal file
View file

@ -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);
}
}
}
}
}
/// <summary>
/// Calculate the Size of the New image
/// </summary>
/// <param name="currentwidth">Larghezza</param>
/// <param name="currentheight">Altezza</param>
/// <param name="MaxPixel"></param>
/// <param name="TipoSize"></param>
/// <returns></returns>
/// <remarks></remarks>
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;
}
}
}

157
CatalogLib/PicSettings.cs Normal file
View file

@ -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<string, object> _settingsDict = new Dictionary<string, object>();
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; }
}
}
}

View file

@ -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)]

View file

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{B3352D87-BF9F-4F7A-9162-007492DA76E4}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>CatalogLibVb</RootNamespace>
<AssemblyName>CatalogLibVb</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Class1.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

12
CatalogLibVb/Class1.cs Normal file
View file

@ -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
{
}
}

View file

@ -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")]

View file

@ -0,0 +1,118 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{44465926-240D-473F-90B8-786BA4384406}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>CatalogVbLib</RootNamespace>
<AssemblyName>CatalogVbLib</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>Windows</MyType>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>CatalogVbLib.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>CatalogVbLib.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>Binary</OptionCompare>
</PropertyGroup>
<PropertyGroup>
<OptionStrict>Off</OptionStrict>
</PropertyGroup>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Data" />
<Import Include="System.Diagnostics" />
<Import Include="System.Linq" />
<Import Include="System.Xml.Linq" />
<Import Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup>
<Compile Include="Class1.vb" />
<Compile Include="ExifReader.vb" />
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
</Compile>
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="PicSettings.vb" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>
</None>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<CustomToolNamespace>My</CustomToolNamespace>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

3
CatalogVbLib/Class1.vb Normal file
View file

@ -0,0 +1,3 @@
Public Class Class1
End Class

1068
CatalogVbLib/ExifReader.vb Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,13 @@
'------------------------------------------------------------------------------
' <auto-generated>
' 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.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MySubMain>false</MySubMain>
<SingleInstance>false</SingleInstance>
<ShutdownMode>0</ShutdownMode>
<EnableVisualStyles>true</EnableVisualStyles>
<AuthenticationMode>0</AuthenticationMode>
<ApplicationType>1</ApplicationType>
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
</MyApplicationData>

View file

@ -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
<Assembly: AssemblyTitle("CatalogVbLib")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("CatalogVbLib")>
<Assembly: AssemblyCopyright("Copyright © 2014")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)>
'Se il progetto viene esposto a COM, il GUID seguente verrà utilizzato come ID della libreria dei tipi
<Assembly: Guid("ed2ef4c1-7f15-469d-9c14-182f2ebc21b5")>
' 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")>

View file

@ -0,0 +1,62 @@
'------------------------------------------------------------------------------
' <auto-generated>
' 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.
' </auto-generated>
'------------------------------------------------------------------------------
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.
'''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Returns the cached ResourceManager instance used by this class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
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
'''<summary>
''' Overrides the current thread's CurrentUICulture property for all
''' resource lookups using this strongly typed resource class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
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

View file

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View file

@ -0,0 +1,73 @@
'------------------------------------------------------------------------------
' <auto-generated>
' 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.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
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
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
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
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
Friend Module MySettingsProperty
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
Friend ReadOnly Property Settings() As Global.CatalogVbLib.My.MySettings
Get
Return Global.CatalogVbLib.My.MySettings.Default
End Get
End Property
End Module
End Namespace

View file

@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" UseMySettingsClassName="true">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

606
CatalogVbLib/PicSettings.vb Normal file
View file

@ -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

101
ImageCatalogCS/AboutForm.Designer.cs generated Normal file
View file

@ -0,0 +1,101 @@
namespace ImageCatalogCS
{
partial class AboutForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
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;
}
}

View file

@ -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();
}
}
}

View file

@ -0,0 +1,229 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<data name="pictureBox1.InitialImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
</root>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>

View file

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ImageCatalogCS
{
class CreaImmagineSeparateThread
{
}
}

1166
ImageCatalogCS/ExifReader.cs Normal file

File diff suppressed because it is too large Load diff

View file

@ -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
}
/// <summary>
/// Preparazione per la separazione
/// </summary>
/// <param name="filesPerFolder"></param>
/// <param name="suffix"></param>
/// <param name="counterSize"></param>
/// <param name="numerationType"></param>
/// <remarks></remarks>
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;
}
/// <summary>
/// nessuna separazione
/// </summary>
/// <remarks></remarks>
public FileHelper()
{
this.separateFiles = false;
}
public Dictionary<FileInfo, DirectoryInfo> GetFilesRecursive(DirectoryInfo root, DirectoryInfo destRoot, string filter)
{
Dictionary<FileInfo, DirectoryInfo> dirSourceDest = new Dictionary<FileInfo, DirectoryInfo>();
List<FileInfo> result = new List<FileInfo>();
//Dim stack As New Stack(Of DirectoryInfo)
Stack<KeyValuePair<DirectoryInfo, DirectoryInfo>> stack = new Stack<KeyValuePair<DirectoryInfo, DirectoryInfo>>();
this.filter = filter;
KeyValuePair<DirectoryInfo, DirectoryInfo> pair = new KeyValuePair<DirectoryInfo, DirectoryInfo>();
//stack.Push(root)
stack.Push(new KeyValuePair<DirectoryInfo, DirectoryInfo>(root, destRoot));
while ((stack.Count > 0))
{
KeyValuePair<DirectoryInfo, DirectoryInfo> 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<DirectoryInfo, DirectoryInfo>(subDirectory, new DirectoryInfo(Path.Combine(dDir.FullName, subDirectory.Name))));
}
}
catch (Exception ex)
{
}
}
return dirSourceDest;
}
public Dictionary<FileInfo, DirectoryInfo> appendDictionary(Dictionary<FileInfo, DirectoryInfo> dictA, Dictionary<FileInfo, DirectoryInfo> dictB)
{
foreach (KeyValuePair<FileInfo, DirectoryInfo> pair in dictB)
{
dictA.Add(pair.Key, pair.Value);
}
return dictA;
}
public Dictionary<FileInfo, DirectoryInfo> getAllFilesInDir(DirectoryInfo dir, DirectoryInfo dirDest)
{
Dictionary<FileInfo, DirectoryInfo> dict = new Dictionary<FileInfo, DirectoryInfo>();
foreach (FileInfo File in dir.GetFiles(filter))
{
dict.Add(File, new DirectoryInfo(Path.Combine(dirDest.FullName, File.Name)));
}
return dict;
}
private Dictionary<FileInfo, DirectoryInfo> dividiFilesInDir(DirectoryInfo dir, DirectoryInfo dirDest)
{
int filesCount = dir.GetFiles(filter).Length;
int contaFilePerDir = 0;
int contaDirPerDir = 0;
string tempText = string.Empty;
Dictionary<FileInfo, DirectoryInfo> foldersDict = new Dictionary<FileInfo, DirectoryInfo>();
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;
}
}

View file

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{D11ED7B0-93E8-4F38-A142-EED72D7EE8B5}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>ImageCatalogCS</RootNamespace>
<AssemblyName>ImageCatalogCS</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Management" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="AboutForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="AboutForm.Designer.cs">
<DependentUpon>AboutForm.cs</DependentUpon>
</Compile>
<Compile Include="CreaImmagineSeparateThread.cs" />
<Compile Include="ExifReader.cs" />
<Compile Include="FileHelper.cs" />
<Compile Include="ImageCreator.cs" />
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MainForm.Designer.cs">
<DependentUpon>MainForm.cs</DependentUpon>
</Compile>
<Compile Include="PicSettings.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Temperature.cs" />
<Compile Include="XMLSettings.cs" />
<Compile Include="XYThreadPool.cs" />
<EmbeddedResource Include="AboutForm.resx">
<DependentUpon>AboutForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

File diff suppressed because it is too large Load diff

1794
ImageCatalogCS/MainForm.Designer.cs generated Normal file

File diff suppressed because it is too large Load diff

548
ImageCatalogCS/MainForm.cs Normal file
View file

@ -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<FileInfo, DirectoryInfo> dirSourceDest = new Dictionary<FileInfo, DirectoryInfo>();
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<FileInfo, DirectoryInfo> pair = default(KeyValuePair<FileInfo, DirectoryInfo>);
foreach (KeyValuePair<FileInfo, DirectoryInfo> 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<string, object> makeSettingsFromForm()
{
Dictionary<string, object> settingsDict = new Dictionary<string, object>();
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<string, object> settingsDict = new Dictionary<string, object>(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<string, object> bindSettings(Dictionary<string, object> 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;
}
}
}

View file

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View file

@ -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; }
}
}

22
ImageCatalogCS/Program.cs Normal file
View file

@ -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
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
}

View file

@ -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")]

View file

@ -0,0 +1,71 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 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.
// </auto-generated>
//------------------------------------------------------------------------------
namespace ImageCatalogCS.Properties
{
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// 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()
{
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[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;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
}
}

View file

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View file

@ -0,0 +1,30 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 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.
// </auto-generated>
//------------------------------------------------------------------------------
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;
}
}
}
}

View file

@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View file

@ -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<Temperature> Temperatures
{
get
{
List<Temperature> result = new List<Temperature>();
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;
}
}
}
}

View file

@ -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<string, object> getParametriDict()
{
CaricaParametriSetup();
Dictionary<string, object> dictParam = new Dictionary<string, object>(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; }
}
}

View file

@ -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;
}
}

6
WPFCatalog/App.config Normal file
View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>

5
WPFCatalog/App.xaml Normal file
View file

@ -0,0 +1,5 @@
<Application x:Class="WPFCatalog.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" StartupUri="MainWindow.xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" d1p1:Ignorable="d" xmlns:d1p1="http://schemas.openxmlformats.org/markup-compatibility/2006">
<Application.Resources>
<vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" xmlns:vm="clr-namespace:WPFCatalog.ViewModel" />
</Application.Resources>
</Application>

17
WPFCatalog/App.xaml.cs Normal file
View file

@ -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
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
WPFCatalog/Icons/photo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

424
WPFCatalog/MainWindow.xaml Normal file
View file

@ -0,0 +1,424 @@
<Window x:Name="MainWindow1" x:Class="WPFCatalog.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:wpfCatalog="clr-namespace:WPFCatalog"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance wpfCatalog:MainWindowViewModel}"
Title="Image Catalog" Height="466" Width="772"
>
<Window.Resources>
<Style x:Key="CommonStyle" TargetType="FrameworkElement">
<Setter Property="Margin" Value="4" />
</Style>
<Style TargetType="TextBox" BasedOn="{StaticResource CommonStyle}"></Style>
<Style TargetType="Button" >
<Setter Property="Margin" Value="2,2,5,5" />
</Style>
<Style TargetType="ComboBox" BasedOn="{StaticResource CommonStyle}"></Style>
</Window.Resources>
<DockPanel LastChildFill="True">
<Menu DockPanel.Dock="Top" Height="auto">
<MenuItem Header="Files"/>
<MenuItem Header="Modifica"></MenuItem>
<MenuItem Header="?"></MenuItem>
</Menu>
<StatusBar DockPanel.Dock="Bottom" Height="auto">
<StatusBarItem>
<ProgressBar Width="510" Height="10">
</ProgressBar>
</StatusBarItem>
</StatusBar>
<DockPanel >
<!--<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
</Grid.RowDefinitions>-->
<TabControl DockPanel.Dock="Left" Width="520">
<TabItem>
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Generale" Margin="0,0,5,0"/>
<Image Source="Icons/camera-photo-5.png" Width="16" Height="16" />
</StackPanel>
</TabItem.Header>
<WrapPanel>
<GroupBox Header="Directory" >
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="400"/>
<ColumnDefinition Width="30"/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="Sorgente"/>
<TextBox Grid.Row="0" Grid.Column="1" x:Name="txtSorgente" Margin="0,5" Text="{Binding DirSorgente}" />
<Button Grid.Row="0" Grid.Column="2" x:Name="btnOpenSorgente" Margin="5,5" Command="{Binding OpenSorgenteCommand}">
<Button.Content>
<Image Source="Icons/document-open-6.png" />
</Button.Content>
</Button>
<Label Grid.Row="1" Grid.Column="0" Content="Destinazione"/>
<TextBox Grid.Row="1" Grid.Column="1" x:Name="txtDestinazione" Margin="0,5" Text="{Binding DirDestinazione}"/>
<Button Grid.Row="1" Grid.Column="2" x:Name="btnOpenDestinazione" Margin="5,5" Command="{Binding OpenDestinazioneCommand}">
<Button.Content>
<Image Source="Icons/document-open-6.png" />
</Button.Content>
</Button>
<CheckBox Grid.Row="2" Grid.Column="1" Content="Aggiorna le sottodirectory" x:Name="chkAggiornaSottodirectory" IsChecked="{Binding DirAggiornaSottoDirectory}"/>
</Grid>
</GroupBox>
<GroupBox Header="Generale" Margin="2">
<StackPanel Orientation="Vertical" >
<CheckBox Content="Aggiorna JPG" x:Name="chkForzaJPG" IsChecked="{Binding GeneraleForzaJpg}" Margin="2"/>
<CheckBox Content="Rotazione Automatica" x:Name="chkRotazioneAutomatica" IsChecked="{Binding GeneraleRotazioneAutomatica}" Margin="2"/>
<CheckBox Content="Sovrascrivi File" x:Name="chkSovrascriviFile" IsChecked="{Binding GeneraleSovrascriviFile}" Margin="2"/>
</StackPanel>
</GroupBox>
<GroupBox Header="Sottocartelle" Margin="2">
<StackPanel Orientation="Vertical">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<CheckBox Grid.Row="0" Grid.Column="1" Content="Crea Sottocartelle" x:Name="chkCreaSottocartelle" Margin="4,0,0,0" IsChecked="{Binding SubdirCreaSottoCartelle}"/>
<Label Grid.Row="1" Grid.Column="0" Content="Ogni"/>
<StackPanel Orientation="Horizontal" Grid.Row="1" Grid.Column="1">
<TextBox Width="50" HorizontalAlignment="Left" x:Name="txtOgni" Text="{Binding SubdirIntervalloFile}"/>
<Label Content="file"/>
</StackPanel>
<Label Grid.Row="2" Grid.Column="0" Content="Suffisso" />
<TextBox Grid.Row="2" Grid.Column="1" HorizontalAlignment="Stretch" x:Name="txtSuffisso" Text="{Binding SubdirSuffisso}"/>
</Grid>
<StackPanel Orientation="Horizontal" >
<Label Content="Num. Cifre Contatore" />
<TextBox Width="40" HorizontalAlignment="Right" x:Name="txtNumCifreContatore" Text="{Binding SubdirCifreContatore}"/>
</StackPanel>
<RadioButton Content="Numerazione Progressiva" IsChecked="{Binding SubdirNumerazioneProgressiva}" x:Name="rdbNumerazioneProgressiva" />
<RadioButton Content="Numerazione Files" x:Name="rdbNumerazioneFiles" IsChecked="{Binding SubdirNumerazioneFiles}"/>
</StackPanel>
</GroupBox>
<GroupBox Margin="2">
<GroupBox.Header>
<StackPanel Orientation="Horizontal">
<Image Source="Icons/photo.png" />
<TextBlock Text="Foto" Margin="5,0,0,0" />
</StackPanel>
</GroupBox.Header>
<Grid >
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="15*"/>
<ColumnDefinition Width="48*"/>
<ColumnDefinition Width="88*"/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="Altezza" Grid.ColumnSpan="2" Margin="0,0,0,2" />
<TextBox Grid.Row="0" Grid.Column="2" Width="80" Margin="4,4,4,6" Text="{Binding FotoAltezza}"/>
<Label Grid.Column="0" Content="Larghezza" Grid.ColumnSpan="2" Margin="0,26,0,2" Grid.RowSpan="2" />
<TextBox Grid.Row="1" Grid.Column="2" Width="80" Margin="4,2,4,6" Text="{Binding FotoLarghezza}"></TextBox>
<Label Grid.Row="1" Grid.Column="0" Content="Qualità" Grid.ColumnSpan="2" Margin="0,24,0,1" Grid.RowSpan="2" />
<TextBox Grid.Row="2" Grid.Column="2" Width="80" Margin="4,2,4,5" />
<CheckBox Grid.Row="3" Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,16,0,17.88" IsChecked="{Binding FotoMantieniDimensioni}"/>
<TextBlock Grid.Row="3" Grid.Column="2" Text="Mantieni Dimensioni Originali" TextWrapping="WrapWithOverflow" Width="80" Margin="4,0,4,25.88" Grid.RowSpan="2" />
<Label Grid.Row="4" Grid.Column="0" Content="Suffisso" Grid.ColumnSpan="2" Margin="0,0.12,0,-0.12" />
<TextBox Grid.Row="4" Grid.Column="2" Width="80" Margin="4,4.12,4,3.88" Text="{Binding FotoSuffisso}" />
</Grid>
</GroupBox>
</WrapPanel>
</TabItem>
<TabItem>
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<CheckBox VerticalAlignment="Center" IsChecked="{Binding TestoAttivo}"/>
<Label Content="Testo" VerticalAlignment="Center"/>
<Image Source="Icons/format-justify-left-2.png" />
</StackPanel>
</TabItem.Header>
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<GroupBox Header="Carattere">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="Font"/>
<ComboBox Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2" Width="100" HorizontalAlignment="Right" SelectedItem="{Binding CarattereFont}" /> <!--todo-->
<CheckBox Grid.Row="0" Grid.Column="3" Content="Grassetto" VerticalAlignment="Center" IsChecked="{Binding CarattereGrassetto}" />
<Label Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Content="Dimensione"/>
<TextBox Grid.Row="1" Grid.Column="2" Text="{Binding CarattereDimensione}"/>
<Label Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" Content="Dimensione Miniatura"/>
<TextBox Grid.Row="2" Grid.Column="2" Text="{Binding CarattereDimensioneMiniatura}"/>
<Label Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" Content="Colore RGB" />
<TextBox Grid.Row="3" Grid.Column="2" Text="{Binding CarattereColoreRGB}"/>
<Button Grid.Row="3" Grid.Column="3" Content="Scegli..." />
</Grid>
</GroupBox>
<StackPanel Orientation="Vertical" VerticalAlignment="Stretch">
<GroupBox Header="Slide Show" VerticalAlignment="Stretch">
<StackPanel Orientation="Horizontal" >
<CheckBox Content="Data" Margin="5,0" IsChecked="{Binding SlideshowData}"/>
<CheckBox Content="Numero Foto" Margin="5,0" IsChecked="{Binding SlideshowNumeroFoto}"/>
</StackPanel>
</GroupBox>
<GroupBox Header="Testo foto verticali" VerticalAlignment="Stretch">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="Dimensione Carattere"/>
<TextBox Grid.Row="0" Grid.Column="1" Width="40" Text="{Binding TestoVertDimensioneCarattere}"/>
<Label Grid.Row="1" Grid.Column="0" Content="Margine"/>
<TextBox Grid.Row="1" Grid.Column="1" Width="40" Text="{Binding TestoVertMargine}"/>
</Grid>
</GroupBox>
</StackPanel>
</StackPanel>
<GroupBox Header="Testo da applicare">
<StackPanel Orientation="Vertical">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="Orizzontale" />
<Label Grid.Row="1" Grid.Column="0" Content="Verticale" />
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding TestoApplicareOrizzontale}"/>
<TextBox Grid.Row="1" Grid.Column="1" Height="50" MaxLines="4" AcceptsReturn="True" Text="{Binding TestoApplicareVerticale}"/>
</Grid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition Width="Auto"/>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Content="Trasparenza(0-100%)" />
<TextBox Grid.Row="0" Grid.Column="2" Text="{Binding TestoApplicareTrasparenza}" />
<Label Grid.Row="1" Grid.Column="0" Content="Posizione" />
<ComboBox Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" /> <!--ToDo-->
<CheckBox Grid.Row="2" Grid.Column="1" Content="Orario" IsChecked="{Binding TestoApplicareOrario}"/>
<CheckBox Grid.Row="2" Grid.Column="2" Content="Tempo Gara" IsChecked="{Binding TestoApplicareTempoGaraCheck}"/>
<TextBox Grid.Row="2" Grid.Column="3" Grid.ColumnSpan="2" Text="{Binding TestoApplicareTempoGara}"/>
<Label Grid.Row="0" Grid.Column="4" Grid.ColumnSpan="2" Content="Margine (pixel)" HorizontalAlignment="Right" />
<TextBox Grid.Row="0" Grid.Column="6" Grid.ColumnSpan="2" Text="{Binding TestoApplicareMargine}"/>
<Label Grid.Row="1" Grid.Column="4" Grid.ColumnSpan="2" Content="Allineamento" HorizontalAlignment="Right" />
<TextBox Grid.Row="1" Grid.Column="6" Grid.ColumnSpan="2" Text="{Binding TestoApplicareAllineamento}"/>
<Label Grid.Row="2" Grid.Column="5" Content="Partenza" />
<ComboBox Grid.Row="2" Grid.Column="6" Grid.ColumnSpan="2" /> <!--todo-->
</Grid>
</StackPanel>
</GroupBox>
</StackPanel>
</TabItem>
<TabItem>
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<CheckBox VerticalAlignment="Center" />
<Label VerticalAlignment="Center" Content="Miniature" />
<Image Source="Icons/picture.png" />
</StackPanel>
</TabItem.Header>
<WrapPanel>
<GroupBox Header="Miniature">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="100"/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="Suffisso" />
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding MiniatureSuffisso}"/>
<Label Grid.Row="1" Grid.Column="0" Content="Larghezza" />
<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding MiniatureLarghezza}"/>
<Label Grid.Row="2" Grid.Column="0" Content="Altezza" />
<TextBox Grid.Row="2" Grid.Column="1" Text="{Binding MiniatureAltezza}"/>
<Label Grid.Row="3" Grid.Column="0" Content="Qualità" />
<TextBox Grid.Row="3" Grid.Column="1" Text="{Binding MiniatureQualita}"/>
</Grid>
</GroupBox>
<GroupBox Header="Testo Miniature" >
<WrapPanel Orientation="Vertical" >
<RadioButton Content="Aggiungi Scritta" Margin="4,2,4,2" IsChecked="{Binding TestoMinAggiungiScritta}" />
<RadioButton Content="Aggiungi Orario" Margin="4,2,4,2" IsChecked="{Binding TestoMinAggiungiOrario}"/>
<RadioButton Content="Tempo Gara" Margin="4,2,4,2" IsChecked="{Binding TestoMinTempoGara}"/>
<RadioButton Content="Numero Foto" Margin="4,2,4,2" IsChecked="{Binding TestoMinNumeroFoto}"/>
<RadioButton Content="Numero + Tempo" Margin="4,2,4,2" IsChecked="{Binding TestoMinNumeroTempo}"></RadioButton>
</WrapPanel>
</GroupBox>
</WrapPanel>
</TabItem>
<TabItem>
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<CheckBox VerticalAlignment="Center" />
<Label VerticalAlignment="Center" Content="Logo" />
<Image Source="Icons/face-smile-2.png"/>
</StackPanel>
</TabItem.Header>
<WrapPanel>
<GroupBox Header="Logo">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="50" />
<ColumnDefinition Width="50"/>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="30"/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="Percorso Immagine"/>
<TextBox Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="3" Text="{Binding LogoPercorsoImmagine}"/>
<Button Grid.Row="0" Grid.Column="4" Content="..." Command="{Binding ScegliLogoCommand}" />
<Label Grid.Row="1" Grid.Column="0" Content="Altezza" />
<TextBox Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" Text="{Binding LogoAltezza}" />
<Label Grid.Row="2" Grid.Column="0" Content="Larghezza" />
<TextBox Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2" Text="{Binding LogoLarghezza}" />
<Label Grid.Row="3" Grid.Column="0" Content="Trasparenza (0-100%)" />
<TextBox Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="2" Text="{Binding LogoTrasparenza}" />
<Label Grid.Row="4" Grid.Column="0" Content="Margine (pixel %)" />
<TextBox Grid.Row="4" Grid.Column="1" Grid.ColumnSpan="2" Text="{Binding LogoMargine}" />
<Label Grid.Row="5" Grid.Column="0" Content="Posizione Orizzontale" />
<ComboBox Grid.Row="5" Grid.Column="1" Grid.ColumnSpan="2" /> <!--todo-->
<Label Grid.Row="6" Grid.Column="0" Content="Posizione Verticale" />
<ComboBox Grid.Row="6" Grid.Column="1" Grid.ColumnSpan="2" /> <!--todo-->
<Label Grid.Row="7" Grid.Column="0" Content="Colore Trasparente" />
<Image Grid.Row="7" Grid.Column="1" Width="24" Height="24" HorizontalAlignment="Left" />
<Image Grid.Row="7" Grid.Column="8" Width="24" Height="24" HorizontalAlignment="Right" />
<Image Grid.Row="1" Grid.Column="3" Grid.RowSpan="7" />
</Grid>
</GroupBox>
</WrapPanel>
</TabItem>
</TabControl>
<StackPanel DockPanel.Dock="Right" Orientation="Vertical">
<GroupBox DockPanel.Dock="Right" Header="Statistiche">
<Button Content="STOP" Width="192" Command="{Binding StopCommand}"/>
</GroupBox>
</StackPanel>
</DockPanel>
</DockPanel>
</Window>

View file

@ -0,0 +1,40 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using CatalogLib;
namespace WPFCatalog
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public PicSettings GlobalSettings = new PicSettings();
public MainWindow()
{
InitializeComponent();
DataContext = new MainWindowViewModel();
SetDefaults();
}
private void SetDefaults()
{
}
}
}

View file

@ -0,0 +1,493 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CatalogLib;
namespace WPFCatalog
{
public class MainWindowViewModel : ViewModelBase
{
public PicSettings PicSettings { get; set; }
public MainWindowViewModel()
{
PicSettings = new PicSettings();
}
#region Proprietà
public PicSettings SettingsString
{
get { return PicSettings; }
}
public string DirSorgente
{
get { return PicSettings.GetString("dirSorgente"); }
set { PicSettings.Set("dirSorgente", value); }
}
public string DirDestinazione
{
get { return PicSettings.GetString("dirDestinazione"); }
set
{
PicSettings.Set("dirDestinazione", value);
RaisePropertyChanged("DirDestinazione");
}
}
public bool DirSottoDirectory
{
get { return PicSettings.GetBool("dirSottoDirectory"); }
set
{
PicSettings.Set("dirSottoDirectory", value);
RaisePropertyChanged("DirSottoDirectory");
}
}
public bool SubdirCreaSottoCartelle
{
//get { return PicSettings.GetBool("")}
}
public string DirDividiNumFile { get { return PicSettings.GetString("dirDividiNumFile"); } set { PicSettings.Set("dirDividiNumFile", value); } }
public string DirDividiSuffisso { get { return PicSettings.GetString("dirDividiSuffisso"); } set { PicSettings.Set("dirDividiSuffisso", value); } }
public string DirDividiNumCifre { get { return PicSettings.GetString("dirDividiNumCifre"); } set { PicSettings.Set("dirDividiNumCifre", value); RaisePropertyChanged("DirDividiNumCifre");} }
public bool DirDividiDestinazione { get { return PicSettings.GetBool("dirDividiDestinazione"); } set { PicSettings.Set("dirDividiDestinazione", value); } }
public bool DirDividiTipoNumerazioneProg { get { return PicSettings.GetString("DirDividiTipoNumerazione").ToUpper() == "PROGRESSIVA"; } set { if (value == true) PicSettings.Set("DirDividiTipoNumerazione", "PROGRESSIVA"); } }
public bool DirDividiTipoNumerazioneFile { get { return PicSettings.GetString("DirDividiTipoNumerazione").ToUpper() == "FILES"; } set { if (value == false) PicSettings.Set("DirDividiTipoNumerazione", "FILES"); } }
public bool MiniatureCrea { get { return PicSettings.GetBool("miniatureCrea"); } set { PicSettings.Set("miniatureCrea",value); RaisePropertyChanged("MiniatureCrea");} }
public string MiniatureSuffisso
{
get { return PicSettings.GetString("miniatureSuffisso"); }
set
{
PicSettings.Set("miniatureSuffisso", value);
RaisePropertyChanged("MiniatureSuffisso");
}
}
public string MiniatureAltezza
{
get { return PicSettings.GetString("miniatureAltezza"); }
set
{
PicSettings.Set("miniatureAltezza", value);
RaisePropertyChanged("MiniatureAltezza");
}
}
public string MiniatureLarghezza
{
get { return PicSettings.GetString("miniatureLarghezza"); }
set
{
PicSettings.Set("miniatureLarghezza", value);
RaisePropertyChanged("MiniatureLarghezza");
}
}
public bool MiniatureAddScritta
{
get { return PicSettings.GetBool("miniatureAddScritta"); }
set
{
PicSettings.Set("miniatureAddScritta", value);
RaisePropertyChanged("MiniatureAddScritta");
}
}
public bool MiniatureAddOrario
{
get { return PicSettings.GetBool("miniatureAddOrario"); }
set
{
PicSettings.Set("miniatureAddOrario", value);
RaisePropertyChanged("MiniatureAddOrario");
}
}
public string FotoAltezza
{
get { return PicSettings.GetString("fotoAltezza"); }
set
{
PicSettings.Set("fotoAltezza", value);
RaisePropertyChanged("FotoAltezza");
}
}
public string FotoLarghezza
{
get { return PicSettings.GetString("fotoLarghezza"); }
set
{
PicSettings.Set("fotoLarghezza", value);
RaisePropertyChanged("FotoLarghezza");
}
}
public string FontDimensione
{
get { return PicSettings.GetString("fontDimensione"); }
set
{
PicSettings.Set("fontDimensione", value);
RaisePropertyChanged("FontDimensione");
}
}
public string FontDimensioneMiniatura
{
get { return PicSettings.GetString("fontDimensioneMiniatura"); }
set
{
PicSettings.Set("fontDimensioneMiniatura", value);
RaisePropertyChanged("FontDimensioneMiniatura");
}
}
public bool FontBold
{
get { return PicSettings.GetBool("fontBold"); }
set
{
PicSettings.Set("fontBold", value);
RaisePropertyChanged("FontBold");
}
}
public bool FontNome
{
get { return PicSettings.GetBool("fontNome"); }
set
{
PicSettings.Set("$parName", value);
RaisePropertyChanged("FontNome");
}
}
public string TestoTesto
{
get { return PicSettings.GetString("testoTesto"); }
set
{
PicSettings.Set("testoTesto", value);
RaisePropertyChanged("TestoTesto");
}
}
public string TestoTrasparente
{
get { return PicSettings.GetString("testoTrasparente"); }
set
{
PicSettings.Set("testoTrasparente", value);
RaisePropertyChanged("TestoTrasparente");
}
}
public string TestoMargine
{
get { return PicSettings.GetString("testoMargine"); }
set
{
PicSettings.Set("testoMargine", value);
RaisePropertyChanged("TestoMargine");
}
}
public string TestoPosizione
{
get { return PicSettings.GetString("testoPosizione"); }
set
{
PicSettings.Set("testoPosizione", value);
RaisePropertyChanged("TestoPosizione");
}
}
public string TestoAllineamento
{
get { return PicSettings.GetString("testoAllineamento"); }
set
{
PicSettings.Set("testoAllineamento", value);
RaisePropertyChanged("TestoAllineamento");
}
}
public string MarchioFile
{
get { return PicSettings.GetString("marchioFile"); }
set
{
PicSettings.Set("marchioFile", value);
RaisePropertyChanged("MarchioFile");
}
}
public string MarchioAltezza
{
get { return PicSettings.GetString("marchioAltezza"); }
set
{
PicSettings.Set("marchioAltezza", value);
RaisePropertyChanged("MarchioAltezza");
}
}
public string MarchioLarghezza
{
get { return PicSettings.GetString("marchioLarghezza"); }
set
{
PicSettings.Set("marchioLarghezza", value);
RaisePropertyChanged("MarchioLarghezza");
}
}
public string MarchioMargine
{
get { return PicSettings.GetString("marchioMargine"); }
set
{
PicSettings.Set("marchioMargine", value);
RaisePropertyChanged("MarchioMargine");
}
}
public string MarchioAllOrizzontale
{
get { return PicSettings.GetString("marchioAllOrizzontale"); }
set
{
PicSettings.Set("marchioAllOrizzontale", value);
RaisePropertyChanged("MarchioAllOrizzontale");
}
}
public string MarchioAllVerticale
{
get { return PicSettings.GetString("marchioAllVerticale"); }
set
{
PicSettings.Set("marchioAllVerticale", value);
RaisePropertyChanged("MarchioAllVerticale");
}
}
public string MarchioTrasparenza
{
get { return PicSettings.GetString("marchioTrasparenza"); }
set
{
PicSettings.Set("marchioTrasparenza", value);
RaisePropertyChanged("MarchioTrasparenza");
}
}
public bool MarchioAggiungi
{
get { return PicSettings.GetBool("marchioAggiungi"); }
set
{
PicSettings.Set("marchioAggiungi", value);
RaisePropertyChanged("MarchioAggiungi");
}
}
public bool TempoGara
{
get { return PicSettings.GetBool("tempoGara"); }
set
{
PicSettings.Set("tempoGara", value);
RaisePropertyChanged("TempoGara");
}
}
public bool Orario
{
get { return PicSettings.GetBool("orario"); }
set
{
PicSettings.Set("orario", value);
RaisePropertyChanged("Orario");
}
}
public string EtichettaOrario
{
get { return PicSettings.GetString("etichettaOrario"); }
set
{
PicSettings.Set("etichettaOrario", value);
RaisePropertyChanged("EtichettaOrario");
}
}
public bool GeneraleForzaJpg
{
get { return PicSettings.GetBool("generaleForzaJpg"); }
set
{
PicSettings.Set("generaleForzaJpg", value);
RaisePropertyChanged("GeneraleForzaJpg");
}
}
public bool GeneraleRotazioneAutomatica
{
get { return PicSettings.GetBool("generaleRotazioneAutomatica"); }
set
{
PicSettings.Set("generaleRotazioneAutomatica", value);
RaisePropertyChanged("GeneraleRotazioneAutomatica");
}
}
public bool GeneraleSovrascriviFile
{
get { return PicSettings.GetBool("generaleSovrascriviFile"); }
set
{
PicSettings.Set("generaleSovrascriviFile", value);
RaisePropertyChanged("GeneraleSovrascriviFile");
}
}
public string GrandezzaVerticale
{
get { return PicSettings.GetString("grandezzaVerticale"); }
set
{
PicSettings.Set("grandezzaVerticale", value);
RaisePropertyChanged("GrandezzaVerticale");
}
}
public string MargineVerticale
{
get { return PicSettings.GetString("margineVerticale"); }
set
{
PicSettings.Set("margineVerticale", value);
RaisePropertyChanged("MargineVerticale");
}
}
public bool DimensioniOriginali
{
get { return PicSettings.GetBool("dimensioniOriginali"); }
set
{
PicSettings.Set("dimensioniOriginali", value);
RaisePropertyChanged("DimensioniOriginali");
}
}
public string TestoVerticale
{
get { return PicSettings.GetString("testoVerticale"); }
set
{
PicSettings.Set("testoVerticale", value);
RaisePropertyChanged("TestoVerticale");
}
}
public bool NomeMiniatura
{
get { return PicSettings.GetBool("nomeMiniatura"); }
set
{
PicSettings.Set("nomeMiniatura", value);
RaisePropertyChanged("NomeMiniatura");
}
}
public bool DataFoto
{
get { return PicSettings.GetBool("dataFoto"); }
set
{
PicSettings.Set("dataFoto", value);
RaisePropertyChanged("DataFoto");
}
}
public bool NumeroFoto
{
get { return PicSettings.GetBool("numeroFoto"); }
set
{
PicSettings.Set("numeroFoto", value);
RaisePropertyChanged("NumeroFoto");
}
}
public bool TempoSmall
{
get { return PicSettings.GetBool("tempoSmall"); }
set
{
PicSettings.Set("tempoSmall", value);
RaisePropertyChanged("TempoSmall");
}
}
public bool NumTempoSmall
{
get { return PicSettings.GetBool("numTempoSmall"); }
set
{
PicSettings.Set("numTempoSmall", value);
RaisePropertyChanged("NumTempoSmall");
}
}
public string CompressioneJpeg
{
get { return PicSettings.GetString("compressioneJpeg"); }
set
{
PicSettings.Set("compressioneJpeg", value);
RaisePropertyChanged("CompressioneJpeg");
}
}
public string CompressioneJpegMiniatura
{
get { return PicSettings.GetString("compressioneJpegMiniatura"); }
set
{
PicSettings.Set("compressioneJpegMiniatura", value);
RaisePropertyChanged("CompressioneJpegMiniatura");
}
}
public string ColoreTestoRGB
{
get { return PicSettings.GetString("coloreTestoRGB"); }
set
{
PicSettings.Set("coloreTestoRGB", value);
RaisePropertyChanged("ColoreTestoRGB");
}
}
#endregion
}
}

View file

@ -0,0 +1,55 @@
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Windows;
// 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("WPFCatalog")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("WPFCatalog")]
[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)]
//In order to begin building localizable applications, set
//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
//inside a <PropertyGroup>. For example, if you are using US english
//in your source files, set the <UICulture> to en-US. Then uncomment
//the NeutralResourceLanguage attribute below. Update the "en-US" in
//the line below to match the UICulture setting in the project file.
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
//(used if a resource is not found in the page,
// or application resource dictionaries)
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
//(used if a resource is not found in the page,
// app, or any theme specific resource dictionaries)
)]
// 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")]

View file

@ -0,0 +1,71 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18052
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WPFCatalog.Properties
{
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// 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()
{
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[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("WPFCatalog.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
}
}

View file

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View file

@ -0,0 +1,30 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18052
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WPFCatalog.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;
}
}
}
}

View file

@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View file

@ -0,0 +1,37 @@
using GalaSoft.MvvmLight;
namespace WPFCatalog.ViewModel
{
/// <summary>
/// This class contains properties that the main View can data bind to.
/// <para>
/// Use the <strong>mvvminpc</strong> snippet to add bindable properties to this ViewModel.
/// </para>
/// <para>
/// You can also use Blend to data bind with the tool's support.
/// </para>
/// <para>
/// See http://www.galasoft.ch/mvvm
/// </para>
/// </summary>
public class MainViewModel : ViewModelBase
{
/// <summary>
/// Initializes a new instance of the MainViewModel class.
/// </summary>
public MainViewModel()
{
////if (IsInDesignMode)
////{
//// // Code runs in Blend --> create design time data.
////}
////else
////{
//// // Code runs "for real"
////}
}
}
}

View file

@ -0,0 +1,63 @@
/*
In App.xaml:
<Application.Resources>
<vm:ViewModelLocator xmlns:vm="clr-namespace:WPFCatalog"
x:Key="Locator" />
</Application.Resources>
In the View:
DataContext="{Binding Source={StaticResource Locator}, Path=ViewModelName}"
You can also use Blend to do all this with the tool's support.
See http://www.galasoft.ch/mvvm
*/
using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Ioc;
using Microsoft.Practices.ServiceLocation;
namespace WPFCatalog.ViewModel
{
/// <summary>
/// This class contains static references to all the view models in the
/// application and provides an entry point for the bindings.
/// </summary>
public class ViewModelLocator
{
/// <summary>
/// Initializes a new instance of the ViewModelLocator class.
/// </summary>
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
////if (ViewModelBase.IsInDesignModeStatic)
////{
//// // Create design time view services and models
//// SimpleIoc.Default.Register<IDataService, DesignDataService>();
////}
////else
////{
//// // Create run time view services and models
//// SimpleIoc.Default.Register<IDataService, DataService>();
////}
SimpleIoc.Default.Register<MainViewModel>();
}
public MainViewModel Main
{
get
{
return ServiceLocator.Current.GetInstance<MainViewModel>();
}
}
public static void Cleanup()
{
// TODO Clear the ViewModels
}
}
}

127
WPFCatalog/ViewModelBase.cs Normal file
View file

@ -0,0 +1,127 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel;
using System.Diagnostics;
namespace WPFCatalog
{
public abstract class ViewModelBase : GalaSoft.MvvmLight.ViewModelBase, INotifyPropertyChanged, IDisposable
{
#region Constructor
protected ViewModelBase()
{
}
#endregion // Constructor
#region DisplayName
/// <summary>
/// Returns the user-friendly name of this object.
/// Child classes can set this property to a new value,
/// or override it to determine the value on-demand.
/// </summary>
public virtual string DisplayName { get; protected set; }
#endregion // DisplayName
#region Debugging Aides
///// <summary>
///// Warns the developer if this object does not have
///// a public property with the specified name. This
///// method does not exist in a Release build.
///// </summary>
//[Conditional("DEBUG")]
//[DebuggerStepThrough]
//public void VerifyPropertyName(string propertyName)
//{
// // Verify that the property name matches a real,
// // public, instance property on this object.
// if (TypeDescriptor.GetProperties(this)[propertyName] == null)
// {
// string msg = "Invalid property name: " + propertyName;
// if (this.ThrowOnInvalidPropertyName)
// throw new Exception(msg);
// else
// Debug.Fail(msg);
// }
//}
/// <summary>
/// Returns whether an exception is thrown, or if a Debug.Fail() is used
/// when an invalid property name is passed to the VerifyPropertyName method.
/// The default value is false, but subclasses used by unit tests might
/// override this property's getter to return true.
/// </summary>
protected virtual bool ThrowOnInvalidPropertyName { get; private set; }
#endregion // Debugging Aides
#region INotifyPropertyChanged Members
/// <summary>
/// Raised when a property on this object has a new value.
/// </summary>
//public event PropertyChangedEventHandler PropertyChanged;
///// <summary>
///// Raises this object's PropertyChanged event.
///// </summary>
///// <param name="propertyName">The property that has a new value.</param>
//protected virtual void OnPropertyChanged(string propertyName)
//{
// this.VerifyPropertyName(propertyName);
// PropertyChangedEventHandler handler = this.PropertyChanged;
// if (handler != null)
// {
// var e = new PropertyChangedEventArgs(propertyName);
// handler(this, e);
// }
//}
#endregion // INotifyPropertyChanged Members
#region IDisposable Members
/// <summary>
/// Invoked when this object is being removed from the application
/// and will be subject to garbage collection.
/// </summary>
public void Dispose()
{
this.OnDispose();
}
/// <summary>
/// Child classes can override this method to perform
/// clean-up logic, such as removing event handlers.
/// </summary>
protected virtual void OnDispose()
{
}
#if DEBUG
/// <summary>
/// Useful for ensuring that ViewModel objects are properly garbage collected.
/// </summary>
~ViewModelBase()
{
string msg = string.Format("{0} ({1}) ({2}) Finalized", this.GetType().Name, this.DisplayName, this.GetHashCode());
System.Diagnostics.Debug.WriteLine(msg);
}
#endif
#endregion // IDisposable Members
}
}

View file

@ -0,0 +1,178 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{638DE501-CECA-4744-B293-7AE93CAEEB01}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>WPFCatalog</RootNamespace>
<AssemblyName>WPFCatalog</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<WarningLevel>4</WarningLevel>
<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Accessibility" />
<Reference Include="GalaSoft.MvvmLight.Extras.WPF45">
<HintPath>..\packages\MvvmLightLibs.4.1.27.1\lib\net45\GalaSoft.MvvmLight.Extras.WPF45.dll</HintPath>
</Reference>
<Reference Include="GalaSoft.MvvmLight.WPF45">
<HintPath>..\packages\MvvmLightLibs.4.1.27.1\lib\net45\GalaSoft.MvvmLight.WPF45.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.ServiceLocation">
<HintPath>..\packages\CommonServiceLocator.1.0\lib\NET35\Microsoft.Practices.ServiceLocation.dll</HintPath>
</Reference>
<Reference Include="PresentationUI, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
<Reference Include="ReachFramework" />
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Data" />
<Reference Include="System.Data.Services.Client" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Printing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\MvvmLightLibs.4.1.27.1\lib\net45\System.Windows.Interactivity.dll</HintPath>
</Reference>
<Reference Include="System.Xml" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Xaml">
<RequiredTargetFramework>4.0</RequiredTargetFramework>
</Reference>
<Reference Include="UIAutomationProvider" />
<Reference Include="UIAutomationTypes" />
<Reference Include="WindowsBase" />
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="Xceed.Wpf.AvalonDock">
<HintPath>..\packages\Extended.Wpf.Toolkit.2.1.0\lib\net40\Xceed.Wpf.AvalonDock.dll</HintPath>
</Reference>
<Reference Include="Xceed.Wpf.AvalonDock.Themes.Aero">
<HintPath>..\packages\Extended.Wpf.Toolkit.2.1.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.Aero.dll</HintPath>
</Reference>
<Reference Include="Xceed.Wpf.AvalonDock.Themes.Metro">
<HintPath>..\packages\Extended.Wpf.Toolkit.2.1.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.Metro.dll</HintPath>
</Reference>
<Reference Include="Xceed.Wpf.AvalonDock.Themes.VS2010">
<HintPath>..\packages\Extended.Wpf.Toolkit.2.1.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.VS2010.dll</HintPath>
</Reference>
<Reference Include="Xceed.Wpf.DataGrid">
<HintPath>..\packages\Extended.Wpf.Toolkit.2.1.0\lib\net40\Xceed.Wpf.DataGrid.dll</HintPath>
</Reference>
<Reference Include="Xceed.Wpf.Toolkit">
<HintPath>..\packages\Extended.Wpf.Toolkit.2.1.0\lib\net40\Xceed.Wpf.Toolkit.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="App.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</ApplicationDefinition>
<Compile Include="ViewModelBase.cs" />
<Compile Include="ViewModel\MainViewModel.cs" />
<Compile Include="ViewModel\ViewModelLocator.cs" />
<Page Include="MainWindow.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Compile Include="App.xaml.cs">
<DependentUpon>App.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="MainWindow.xaml.cs">
<DependentUpon>MainWindow.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
</ItemGroup>
<ItemGroup>
<Compile Include="MainWindowViewModel.cs" />
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<AppDesigner Include="Properties\" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<Resource Include="Icons\photo.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Icons\document-open-6.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Icons\camera-photo-5.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Icons\format-justify-left-2.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Icons\picture.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Icons\face-smile-2.png" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\CatalogLib\CatalogLib.csproj">
<Project>{d27accf2-80fc-4de8-aeb8-351ff076e6d5}</Project>
<Name>CatalogLib</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="CommonServiceLocator" version="1.0" targetFramework="net45" />
<package id="Extended.Wpf.Toolkit" version="2.1.0" targetFramework="net45" />
<package id="MvvmLight" version="4.1.27.1" targetFramework="net45" />
<package id="MvvmLightLibs" version="4.1.27.1" targetFramework="net45" />
</packages>

View file

@ -0,0 +1,31 @@
Imports System.Reflection
Imports 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.
' Review the values of the assembly attributes
<Assembly: AssemblyTitle("Image Catalog")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("FornaSoft")>
<Assembly: AssemblyProduct("")>
<Assembly: AssemblyCopyright("(C) 2002-08")>
<Assembly: AssemblyTrademark("")>
<Assembly: CLSCompliant(True)>
'The following GUID is for the ID of the typelib if this project is exposed to COM
<Assembly: Guid("948AA2AA-5BED-4DD5-9C67-3126EE9109C6")>
' 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.74.*")>

View file

@ -0,0 +1 @@

View file

@ -0,0 +1,943 @@
Imports System.IO
'Imports System.Drawing.Drawing2D
'Imports System.Drawing.Imaging
'Imports System.Threading
Public Class CreaImmagineSeparateMultiCore
Private _DirectorySorgente As String
Private _DirectoryDestinazione As String
Private _SourceDir As DirectoryInfo
Private _DestDirStart As DirectoryInfo
Private _DimStandard As Integer
Private _DimStandardMiniatura As Integer
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 _NomeFileChild As String
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 _FontColoreR As Integer
Private _FontColoreG As Integer
Private _FontColoreB As Integer
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
Public Sub CreaImmagine(ByVal InfoImg As PicInfo)
Dim TestoFirma As String = ""
_DestDir = InfoImg.DirDest
_SourceDir = InfoImg.DirSource
_DestDirStart = InfoImg.DirDestStart
_NomeFileChild = InfoImg.NomeImmagine
Dim AlphaScelta As Integer = CType((255 * (100 - _Trasparenza) / 100), Integer)
Dim DimensioneStandard As Integer
Dim DimensioneStandardMiniatura As Integer
Dim DataFoto As DateTime
Dim DataPartenzaI As DateTime = _DataPartenza
If _TestoOrario.Length > 0 Then
_TestoOrario &= " "
End If
Dim TestoFirmaPiccola As String = ""
Dim FileConta As Integer = 0
Dim ContaFileXDir As Integer = 0
Dim ContaDirXDir As Integer = 0
Dim TestoTemp As String = ""
Dim ContaTemp As Integer = 0
DimensioneStandard = _DimStandard
DimensioneStandardMiniatura = _DimStandardMiniatura
Dim g As System.Drawing.Image = System.Drawing.Image.FromFile(Path.Combine(_SourceDir.FullName, _NomeFileChild))
If _UsaOrarioTestoApplicare = True Or _UsaTempoGaraTestoApplicare = True Or _UsaOrarioMiniatura = True Then
If g.PropertyIdList.Length > 0 Then ' ci sono dati exif
Dim DatiExif As New ExifReader(CType(g, Bitmap))
DataFoto = DatiExif.DateTimeOriginal
TestoFirma = _TestoFirmaStart
If DataFoto.Year <> 1 Then
TestoFirmaPiccola = DataFoto.ToShortTimeString
If _UsaOrarioTestoApplicare = True Then
TestoFirma &= " - " & DataFoto.ToShortDateString & " " & DataFoto.ToLongTimeString
End If
If _UsaTempoGaraTestoApplicare = True Then
Dim Orario As TimeSpan = New TimeSpan(DateDiff(DateInterval.Second, DataPartenzaI, DataFoto) * 10000000)
TestoFirma &= " - " & _TestoOrario & Orario.Hours.ToString("00") & ":" & Orario.Minutes.ToString("00") & ":" & Orario.Seconds.ToString("00")
End If
End If
End If
Else
TestoFirma = _TestoFirmaStart
End If
Dim FotoRuotaADestra As Boolean = False
Dim FotoRuotaASinistra As Boolean = False
If _UsaRotazioneAutomatica = True Then
If g.PropertyIdList.Length > 0 Then ' ci sono dati exif
Dim DatiExif As New ExifReader(CType(g, Bitmap))
Select Case DatiExif.Orientation
Case ExifReader.Orientations.BottomLeft
Case ExifReader.Orientations.BottomRight
Case ExifReader.Orientations.LeftTop
Case ExifReader.Orientations.LftBottom
FotoRuotaASinistra = True
Case ExifReader.Orientations.RightBottom
Case ExifReader.Orientations.RightTop
Case ExifReader.Orientations.TopLeft
Case ExifReader.Orientations.TopRight
End Select
End If
End If
'rotazione
If FotoRuotaASinistra = True Then
g.RotateFlip(RotateFlipType.Rotate270FlipNone)
End If
If FotoRuotaADestra = True Then
g.RotateFlip(RotateFlipType.Rotate90FlipNone)
End If
Dim thisFormat As System.Drawing.Imaging.ImageFormat = g.RawFormat
If _UsaForzaJpg = True Then
thisFormat = System.Drawing.Imaging.ImageFormat.Jpeg
End If
Dim thumbSizeSmall As New Size
Dim thumbSizeBig As New Size
Dim NomeFileSmall As String = ""
Dim NomeFileBig As String = ""
Dim NomeFileBig2 As String = ""
If g.Width > g.Height Then
thumbSizeSmall = NewthumbSize(g.Width, g.Height, LarghezzaSmall, "Larghezza")
Dim SizeOrig As New Size(g.Width, g.Height)
thumbSizeBig = SizeOrig
Else
thumbSizeSmall = NewthumbSize(g.Width, g.Height, AltezzaSmall, "Altezza")
Dim SizeOrig As New Size(g.Width, g.Height)
thumbSizeBig = SizeOrig
End If
NomeFileSmall = Suffisso & _NomeFileChild
NomeFileBig = _NomeFileChild
Dim imgOutputBig As New Bitmap(g, thumbSizeBig.Width, thumbSizeBig.Height)
imgOutputBig.SetResolution(g.HorizontalResolution, g.VerticalResolution)
If _CreaMiniature = True Then
If _AggiungiScritteMiniature = False Then
If _DirectorySorgente.ToUpper = _DirectoryDestinazione.ToUpper Then
NomeFileSmall = NomeFileSmall.Substring(0, NomeFileSmall.Length - 4) & Codice & NomeFileSmall.Substring(NomeFileSmall.Length - 4)
End If
If _UsaOrarioMiniatura = True Then
If TestoFirmaPiccola.Length > 0 Then
Dim imgOutputSmall As Bitmap
imgOutputSmall = CType(imgOutputBig.Clone, Bitmap)
Dim grPhoto1 As Graphics
grPhoto1 = Graphics.FromImage(imgOutputSmall)
grPhoto1.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
Dim crFont1 As Font = Nothing
Dim crSize1 As SizeF = New SizeF
Dim LarghezzaStandard1 As Integer
If _Grassetto = True Then
crFont1 = New Font(IlFont, DimensioneStandardMiniatura, FontStyle.Bold)
Else
crFont1 = New Font(_IlFont, DimensioneStandardMiniatura)
End If
crSize1 = grPhoto1.MeasureString(TestoFirmaPiccola, crFont1)
LarghezzaStandard1 = CType(crSize1.Width, Integer)
If crSize1.Width > CType(g.Width, Single) Then
Dim Conta As Integer = DimensioneStandardMiniatura
Do
If Conta > 20 Then
Conta -= 5
Else
Conta -= 1
End If
If _Grassetto = True Then
crFont1 = New Font(_IlFont, Conta, FontStyle.Bold)
Else
crFont1 = New Font(_IlFont, Conta)
End If
crSize1 = grPhoto1.MeasureString(TestoFirmaPiccola, crFont1)
If crSize1.Width < CType(g.Width, Single) Then
LarghezzaStandard1 = CType(crSize1.Width, Integer)
Exit Do
End If
If Conta <= 5 Then Exit Do
Loop
DimensioneStandardMiniatura = Conta
End If
Dim yPosFromBottom1 As Single
Select Case _Posizione.ToUpper
Case "ALTO"
yPosFromBottom1 = (_Margine)
Case "BASSO"
'yPosFromBottom = (g.Height - _Margine - DimensioneStandard)
'yPosFromBottom1 = CType((g.Height - crFont1.Height - (g.Height * _Margine / 100) - (crFont1.Height * 0.3)), Single)
yPosFromBottom1 = CType((g.Height - crSize1.Height - (g.Height * _Margine / 100)), Single)
End Select
Dim xCenterOfImg1 As Single
Dim StrFormat1 As StringFormat = New StringFormat
Select Case _Allineamento.ToUpper
Case "SINISTRA"
xCenterOfImg1 = CType((_Margine + (LarghezzaStandard1 / 2)), Single)
If (LarghezzaStandard1 / 2) > (g.Width / 2) - _Margine Then
xCenterOfImg1 = CType((g.Width / 2), Single)
End If
Case "CENTRO"
xCenterOfImg1 = CType((g.Width / 2), Single)
Case "DESTRA"
xCenterOfImg1 = CType((g.Width - _Margine - (LarghezzaStandard1 / 2)), Single)
If (LarghezzaStandard1 / 2) > (g.Width / 2) - _Margine Then
xCenterOfImg1 = CType((g.Width / 2), Single)
End If
End Select
StrFormat1.Alignment = StringAlignment.Center
Dim semiTransBrush21 As SolidBrush = New SolidBrush(Color.FromArgb(AlphaScelta, 0, 0, 0))
Dim semiTransBrush1 As SolidBrush = New SolidBrush(Color.FromArgb(AlphaScelta, _FontColoreR, _FontColoreG, _FontColoreB))
If _Grassetto = True Then
crFont1 = New Font(_IlFont, DimensioneStandardMiniatura, FontStyle.Bold)
Else
crFont1 = New Font(_IlFont, DimensioneStandardMiniatura)
End If
grPhoto1.DrawString(TestoFirmaPiccola, crFont1, semiTransBrush21, New PointF(xCenterOfImg1 + 1, yPosFromBottom1 + 1), StrFormat1)
grPhoto1.DrawString(TestoFirmaPiccola, crFont1, semiTransBrush1, New PointF(xCenterOfImg1, yPosFromBottom1), StrFormat1)
imgOutputSmall.Save(Path.Combine(_DestDir.FullName, "Temp_" & NomeFileSmall), thisFormat)
Dim g2 As System.Drawing.Image = System.Drawing.Image.FromFile(Path.Combine(_DestDir.FullName, "Temp_" & NomeFileSmall))
Dim imgOutputSmall2 As New Bitmap(g2, thumbSizeSmall.Width, thumbSizeSmall.Height)
imgOutputSmall2.Save(Path.Combine(_DestDir.FullName, NomeFileSmall), thisFormat)
imgOutputSmall2.Dispose()
imgOutputSmall.Dispose()
g2.Dispose()
Kill(Path.Combine(_DestDir.FullName, "Temp_" & NomeFileSmall))
Else
Dim imgOutputSmall As New Bitmap(g, thumbSizeSmall.Width, thumbSizeSmall.Height)
imgOutputSmall.Save(Path.Combine(_DestDir.FullName, NomeFileSmall), thisFormat)
imgOutputSmall.Dispose()
End If
Else
Dim imgOutputSmall As New Bitmap(g, thumbSizeSmall.Width, thumbSizeSmall.Height)
imgOutputSmall.Save(Path.Combine(_DestDir.FullName, NomeFileSmall), thisFormat)
imgOutputSmall.Dispose()
End If
End If
End If
Dim grPhoto As Graphics
grPhoto = Graphics.FromImage(imgOutputBig)
grPhoto.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
Dim crFont As Font = Nothing
Dim crSize As SizeF = New SizeF
Dim LarghezzaStandard As Integer
If _Grassetto = True Then
crFont = New Font(_IlFont, DimensioneStandard, FontStyle.Bold)
Else
crFont = New Font(_IlFont, DimensioneStandard)
End If
crSize = grPhoto.MeasureString(TestoFirma, crFont)
LarghezzaStandard = CType(crSize.Width, Integer)
If crSize.Width > CType(g.Width, Single) Then
Dim Conta As Integer = DimensioneStandard
Do
If Conta > 20 Then
Conta -= 5
Else
Conta -= 1
End If
If _Grassetto = True Then
crFont = New Font(_IlFont, Conta, FontStyle.Bold)
Else
crFont = New Font(_IlFont, Conta)
End If
crSize = grPhoto.MeasureString(TestoFirma, crFont)
If crSize.Width < CType(g.Width, Single) Then
LarghezzaStandard = CType(crSize.Width, Integer)
Exit Do
End If
If Conta <= 5 Then Exit Do
Loop
DimensioneStandard = Conta
End If
Dim yPosFromBottom As Single
Select Case _Posizione.ToUpper
Case "ALTO"
yPosFromBottom = (_Margine)
Case "BASSO"
'yPosFromBottom = (g.Height - _Margine - DimensioneStandard)
'yPosFromBottom = CType((g.Height - DimensioneStandard - (g.Height * _Margine / 100) - (DimensioneStandard * 0.3)), Single)
yPosFromBottom = CType((g.Height - crSize.Height - (g.Height * _Margine / 100)), Single)
End Select
Dim xCenterOfImg As Single
Dim StrFormat As StringFormat = New StringFormat
Select Case _Allineamento.ToUpper
Case "SINISTRA"
xCenterOfImg = CType((_Margine + (LarghezzaStandard / 2)), Single)
If (LarghezzaStandard / 2) > (g.Width / 2) - _Margine Then
xCenterOfImg = CType((g.Width / 2), Single)
End If
Case "CENTRO"
xCenterOfImg = CType((g.Width / 2), Single)
Case "DESTRA"
xCenterOfImg = CType((g.Width - _Margine - (LarghezzaStandard / 2)), Single)
If (LarghezzaStandard / 2) > (g.Width / 2) - _Margine Then
xCenterOfImg = CType((g.Width / 2), Single)
End If
End Select
StrFormat.Alignment = StringAlignment.Center
Dim semiTransBrush2 As SolidBrush = New SolidBrush(Color.FromArgb(AlphaScelta, 0, 0, 0))
Dim semiTransBrush As SolidBrush = New SolidBrush(Color.FromArgb(AlphaScelta, _FontColoreR, _FontColoreG, _FontColoreB))
If _Grassetto = True Then
crFont = New Font(_IlFont, DimensioneStandard, FontStyle.Bold)
Else
crFont = New Font(_IlFont, DimensioneStandard)
End If
grPhoto.DrawString(TestoFirma, crFont, semiTransBrush2, New PointF(xCenterOfImg + 1, yPosFromBottom + 1), StrFormat)
grPhoto.DrawString(TestoFirma, crFont, semiTransBrush, New PointF(xCenterOfImg, yPosFromBottom), StrFormat)
If _DirectorySorgente.ToUpper = _DirectoryDestinazione.ToUpper Then
NomeFileBig2 = NomeFileBig
NomeFileBig = NomeFileBig.Substring(0, NomeFileBig.Length - 4) & Codice & NomeFileBig.Substring(NomeFileBig.Length - 4)
End If
'imgOutputBig
If _LogoAggiungi = True And File.Exists(_LogoNomeFile) Then
Dim ImmagineLogo As Image = Image.FromFile(_LogoNomeFile)
Dim LogoColoreTrasparente As Color = 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
Dim grWatermark As Graphics = Graphics.FromImage(imgOutputBig)
'* To achieve a transulcent watermark we will apply (2) color manipulations
Dim imageAttributes As Imaging.ImageAttributes = New Imaging.ImageAttributes
'* The first step replace the background color with one that is trasparent (Alpha=0, R=0, G=0, B=0)
Dim colorMap As Imaging.ColorMap = New Imaging.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)
Dim remapTable As Imaging.ColorMap() = {colorMap}
imageAttributes.SetRemapTable(remapTable, Imaging.ColorAdjustType.Bitmap)
'* The second color manipulation is used to change the opacity by setting the 3rd row and 3rd column to 0.3f
Dim colorMatrixElements As Single()() = {New Single() {1.0F, 0.0F, 0.0F, 0.0F, 0.0F}, New Single() {0.0F, 1.0F, 0.0F, 0.0F, 0.0F}, New Single() {0.0F, 0.0F, 1.0F, 0.0F, 0.0F}, New Single() {0.0F, 0.0F, 0.0F, CType(_LogoTrasparenza, Single) / 100, 0.0F}, New Single() {0.0F, 0.0F, 0.0F, 0.0F, 1.0F}}
Dim wmColorMatrix As Imaging.ColorMatrix = New Imaging.ColorMatrix(colorMatrixElements)
imageAttributes.SetColorMatrix(wmColorMatrix, Imaging.ColorMatrixFlag.Default, Imaging.ColorAdjustType.Bitmap)
Dim FotoLogoH As Integer = _LogoAltezza
Dim FotoLogoW As Integer = _LogoLarghezza
Dim FattoreAlt As Double = ImmagineLogo.Height / FotoLogoH
Dim FattoreLarg As Double = ImmagineLogo.Width / FotoLogoW
Dim NuovaSize As Size
If FattoreLarg > FattoreAlt Then
NuovaSize = NewthumbSize(ImmagineLogo.Width, ImmagineLogo.Height, FotoLogoW, "Larghezza")
Else
NuovaSize = NewthumbSize(ImmagineLogo.Width, ImmagineLogo.Height, FotoLogoH, "Altezza")
End If
Dim MargineUsato As Integer
Dim MargineL As Integer
Dim InPercentualeL As Boolean
If _LogoMargine.EndsWith("%") = True Then
InPercentualeL = True
Else
InPercentualeL = False
End If
MargineL = CType(Val(_LogoMargine), Integer)
If InPercentualeL = True Then
MargineUsato = CType(imgOutputBig.Height * MargineL / 100, Integer)
Else
MargineUsato = MargineL
End If
Dim xPosOfWm As Integer
Dim yPosOfWm As Integer
Select Case _LogoPosizioneH.ToUpper
Case "SINISTRA", "NESSUNA"
xPosOfWm = MargineUsato
Case "CENTRO"
xPosOfWm = CType((imgOutputBig.Width - NuovaSize.Width) / 2, Integer)
Case "DESTRA"
xPosOfWm = ((imgOutputBig.Width - NuovaSize.Width) - MargineUsato)
End Select
Select Case _LogoPosizioneV.ToUpper
Case "ALTO", "NESSUNA"
yPosOfWm = MargineUsato
Case "CENTRO"
yPosOfWm = CType((imgOutputBig.Height - NuovaSize.Height) / 2, Integer)
Case "BASSO"
yPosOfWm = ((imgOutputBig.Height - NuovaSize.Height) - MargineUsato)
End Select
grWatermark.DrawImage(ImmagineLogo, New Rectangle(xPosOfWm, yPosOfWm, NuovaSize.Width, NuovaSize.Height), 0, 0, ImmagineLogo.Width, ImmagineLogo.Height, GraphicsUnit.Pixel, imageAttributes)
grWatermark.Dispose()
End If
If _FotoGrandeDimOrigina = False Then
imgOutputBig.Save(Path.Combine(_DestDir.FullName, "Temp_" & NomeFileBig), thisFormat)
Dim g2 As System.Drawing.Image = System.Drawing.Image.FromFile(Path.Combine(_DestDir.FullName, "Temp_" & NomeFileBig))
If g2.Width > g2.Height Then
thumbSizeBig = NewthumbSize(g2.Width, g2.Height, _LarghezzaBig, "Larghezza")
Else
thumbSizeBig = NewthumbSize(g2.Width, g2.Height, _AltezzaBig, "Altezza")
End If
Dim imgOutputBig2 As New Bitmap(g2, thumbSizeBig.Width, thumbSizeBig.Height)
imgOutputBig2.Save(Path.Combine(_DestDir.FullName, NomeFileBig), thisFormat)
imgOutputBig2.Dispose()
imgOutputBig.Dispose()
g2.Dispose()
Else
imgOutputBig.Save(Path.Combine(_DestDir.FullName, NomeFileBig), thisFormat)
imgOutputBig.Dispose()
End If
If _CreaMiniature = True Then
If _AggiungiScritteMiniature = True Then
Dim g1 As System.Drawing.Image
If _FotoGrandeDimOrigina = False Then
g1 = System.Drawing.Image.FromFile(Path.Combine(_DestDir.FullName, "Temp_" & NomeFileBig))
Else
g1 = System.Drawing.Image.FromFile(Path.Combine(_DestDir.FullName, NomeFileBig))
End If
Dim imgOutputSmall As New Bitmap(g1, thumbSizeSmall.Width, thumbSizeSmall.Height)
If _DirectorySorgente.ToUpper = _DirectoryDestinazione.ToUpper Then
NomeFileSmall = NomeFileSmall.Substring(0, NomeFileSmall.Length - 4) & Codice & NomeFileSmall.Substring(NomeFileSmall.Length - 4)
End If
imgOutputSmall.Save(Path.Combine(_DestDir.FullName, NomeFileSmall), thisFormat)
imgOutputSmall.Dispose()
g1.Dispose()
End If
End If
If File.Exists(Path.Combine(_DestDir.FullName, "Temp_" & NomeFileBig)) = True Then
Kill(Path.Combine(_DestDir.FullName, "Temp_" & NomeFileBig))
End If
g.Dispose()
grPhoto.Dispose()
If _DirectorySorgente.ToUpper = _DirectoryDestinazione.ToUpper Then
Kill(Path.Combine(_SourceDir.FullName, NomeFileBig2))
End If
End Sub
Function NewthumbSize(ByVal currentwidth As Integer, ByVal currentheight As Integer, ByVal MaxPixel As Integer, ByVal TipoSize As String) As Size
' Calculate the Size of the New image
'*** Larghezza, Altezza, Auto
Dim tempMultiplier As Double
If TipoSize.ToUpper = "Larghezza".ToUpper Then
tempMultiplier = MaxPixel / currentwidth
ElseIf TipoSize.ToUpper = "Altezza".ToUpper Then
tempMultiplier = MaxPixel / currentheight
Else
If currentheight > currentwidth Then ' portrait
tempMultiplier = MaxPixel / currentheight
Else
tempMultiplier = MaxPixel / currentwidth
End If
End If
Dim NewSize As New Size(CInt(currentwidth * tempMultiplier), CInt(currentheight * tempMultiplier))
Return NewSize
End Function
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 SourceDir() As DirectoryInfo
Get
Return _SourceDir
End Get
Set(ByVal value As DirectoryInfo)
_SourceDir = value
End Set
End Property
Public Property DestDirStart() As DirectoryInfo
Get
Return _DestDirStart
End Get
Set(ByVal value As DirectoryInfo)
_DestDirStart = 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 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 NomeFileChild() As String
Get
Return _NomeFileChild
End Get
Set(ByVal value As String)
_NomeFileChild = 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 FontColoreR() As Integer
Get
Return _FontColoreR
End Get
Set(ByVal value As Integer)
_FontColoreR = value
End Set
End Property
Public Property FontColoreG() As Integer
Get
Return _FontColoreG
End Get
Set(ByVal value As Integer)
_FontColoreG = value
End Set
End Property
Public Property FontColoreB() As Integer
Get
Return _FontColoreB
End Get
Set(ByVal value As Integer)
_FontColoreB = 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
End Class

File diff suppressed because it is too large Load diff

1068
imagecatalog/ExifReader.vb Normal file

File diff suppressed because it is too large Load diff

143
imagecatalog/FileHelper.vb Normal file
View file

@ -0,0 +1,143 @@
Imports System.IO
Imports System.Collections.Generic
Public Class FileHelper
'Private dirSourceDest As Dictionary(Of FileInfo, DirectoryInfo)
Private filesPerFolder As Integer
Private suffix As String
Private counterSize As Integer
Private numerationType As Integer
Private filter As String
Private separateFiles As Boolean
Private extensions As String = "*.jpg,*.png,*.gif"
Public Enum numerazione
Progressiva
Files
End Enum
''' <summary>
''' Preparazione per la separazione
''' </summary>
''' <param name="filesPerFolder"></param>
''' <param name="suffix"></param>
''' <param name="counterSize"></param>
''' <param name="numerationType"></param>
''' <remarks></remarks>
Public Sub New(ByVal filesPerFolder As Integer, ByVal suffix As String, ByVal counterSize As Integer, ByVal numerationType As Integer)
Me.filesPerFolder = filesPerFolder
Me.suffix = suffix
Me.counterSize = counterSize
me.numerationType = numerationType
Me.separateFiles = True
End Sub
''' <summary>
''' nessuna separazione
''' </summary>
''' <remarks></remarks>
Public Sub New()
me.separateFiles = False
End Sub
Public Function GetFilesRecursive(ByVal root As DirectoryInfo, ByVal destRoot As DirectoryInfo, ByVal filter As String) As Dictionary(Of FileInfo, DirectoryInfo)
Dim dirSourceDest As New Dictionary(Of FileInfo, DirectoryInfo)
Dim result As New List(Of FileInfo)
'Dim stack As New Stack(Of DirectoryInfo)
Dim stack As New Stack(Of KeyValuePair(Of DirectoryInfo, DirectoryInfo))
Me.filter = filter
Dim pair As New KeyValuePair(Of DirectoryInfo, DirectoryInfo)
'stack.Push(root)
stack.Push(New KeyValuePair(Of DirectoryInfo, DirectoryInfo)(root, destRoot))
Do While (stack.Count > 0)
Dim curDirKV As KeyValuePair(Of DirectoryInfo, DirectoryInfo) = stack.Pop
'curDirKP = stack.Pop()
Dim dir As DirectoryInfo = curDirKV.Key
Dim dDir As DirectoryInfo = curDirKV.Value
Try
'result.AddRange(dir.GetFiles(filter, SearchOption.TopDirectoryOnly))
' dividere file qui
If filesPerFolder > 0 And separateFiles Then
appendDictionary(dirSourceDest, dividiFilesInDir(dir, dDir))
Else
appendDictionary(dirSourceDest, getAllFilesInDir(dir, dDir))
End If
For Each subDirectory As DirectoryInfo In dir.GetDirectories
stack.Push(New KeyValuePair(Of DirectoryInfo, DirectoryInfo)(subDirectory, New DirectoryInfo(Path.Combine(dDir.FullName, subDirectory.Name))))
Next
Catch ex As Exception
End Try
Loop
Return dirSourceDest
End Function
Public Function appendDictionary(ByVal dictA As Dictionary(Of FileInfo, DirectoryInfo), ByVal dictB As Dictionary(Of FileInfo, DirectoryInfo)) As Dictionary(Of FileInfo, DirectoryInfo)
For Each pair As KeyValuePair(Of FileInfo, DirectoryInfo) In dictB
dictA.Add(pair.Key, pair.Value)
Next
Return dictA
End Function
Public Function getAllFilesInDir(dir As DirectoryInfo, dirDest As DirectoryInfo) As Dictionary(Of FileInfo, DirectoryInfo)
Dim dict As New Dictionary(Of FileInfo, DirectoryInfo)
For Each File As FileInfo In dir.GetFiles(filter)
dict.Add(File, New DirectoryInfo(Path.Combine(dirDest.FullName, File.Name)))
Next
Return dict
End Function
Private Function dividiFilesInDir(dir As DirectoryInfo, dirDest As DirectoryInfo) As Dictionary(Of FileInfo, DirectoryInfo)
Dim filesCount As Integer = dir.GetFiles(filter).Count
Dim contaFilePerDir As Integer = 0
Dim contaDirPerDir As Integer = 0
Dim tempText As String = String.Empty
Dim foldersDict As New Dictionary(Of FileInfo, DirectoryInfo)
Dim destDir As DirectoryInfo
destDir = New DirectoryInfo(Path.Combine(dirDest.FullName))
For Each file As FileInfo In dir.GetFiles(filter)
contaFilePerDir += 1
If contaFilePerDir = (contaDirPerDir * filesPerFolder) + 1 Then
contaDirPerDir += 1
If numerationType = numerazione.Progressiva Then
tempText = contaDirPerDir.ToString
Else
tempText = (contaDirPerDir * filesPerFolder).ToString
End If
Dim i As Integer
For i = 1 To (counterSize - tempText.Length)
tempText = "0" & tempText
Next
destDir = New DirectoryInfo(Path.Combine(dirDest.FullName, suffix + tempText))
End If
If Not destDir.Exists Then
destDir.Create()
End If
foldersDict.Add(file, destDir)
Next
Return foldersDict
End Function
End Class

120
imagecatalog/Form1.resx Normal file
View file

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

2945
imagecatalog/Form1.vb Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,297 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectType>Local</ProjectType>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{8D3AA2B0-8F06-4A61-9CAD-B920EB1A8E9C}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ApplicationIcon>
</ApplicationIcon>
<AssemblyKeyContainerName>
</AssemblyKeyContainerName>
<AssemblyName>ImageCatalog</AssemblyName>
<AssemblyOriginatorKeyFile>
</AssemblyOriginatorKeyFile>
<AssemblyOriginatorKeyMode>None</AssemblyOriginatorKeyMode>
<DefaultClientScript>JScript</DefaultClientScript>
<DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
<DefaultTargetSchema>IE50</DefaultTargetSchema>
<DelaySign>false</DelaySign>
<OutputType>WinExe</OutputType>
<OptionCompare>Binary</OptionCompare>
<OptionExplicit>On</OptionExplicit>
<OptionStrict>On</OptionStrict>
<RootNamespace>ImageCatalog</RootNamespace>
<StartupObject>ImageCatalog.My.MyApplication</StartupObject>
<FileUpgradeFlags>
</FileUpgradeFlags>
<MyType>WindowsForms</MyType>
<OldToolsVersion>3.5</OldToolsVersion>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<IsWebBootstrapper>true</IsWebBootstrapper>
<ApplicationManifest>My Project\app.manifest</ApplicationManifest>
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
<PublishUrl>http://localhost/ImageCatalog/</PublishUrl>
<Install>true</Install>
<InstallFrom>Web</InstallFrom>
<UpdateEnabled>true</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.8.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\</OutputPath>
<DocumentationFile>ImageCatalog.xml</DocumentationFile>
<BaseAddress>285212672</BaseAddress>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>
</DefineConstants>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<DebugSymbols>true</DebugSymbols>
<Optimize>false</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>1</WarningLevel>
<NoWarn>42016,42017,42018,42019,42032,42353,42354,42355</NoWarn>
<DebugType>full</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\</OutputPath>
<DocumentationFile>ImageCatalog.xml</DocumentationFile>
<BaseAddress>285212672</BaseAddress>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>
</DefineConstants>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<DebugSymbols>false</DebugSymbols>
<Optimize>true</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>1</WarningLevel>
<NoWarn>42016,42017,42018,42019,42032,42353,42354,42355</NoWarn>
<DebugType>none</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
<DebugSymbols>true</DebugSymbols>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\x64\Debug\</OutputPath>
<BaseAddress>285212672</BaseAddress>
<DocumentationFile>ImageCatalog.xml</DocumentationFile>
<WarningLevel>1</WarningLevel>
<NoWarn>42016,42017,42018,42019,42032,42353,42354,42355</NoWarn>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
<DefineTrace>true</DefineTrace>
<OutputPath>bin\x64\Release\</OutputPath>
<BaseAddress>285212672</BaseAddress>
<DocumentationFile>ImageCatalog.xml</DocumentationFile>
<Optimize>true</Optimize>
<WarningLevel>1</WarningLevel>
<NoWarn>42016,42017,42018,42019,42032,42353,42354,42355</NoWarn>
<PlatformTarget>x64</PlatformTarget>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\x86\Debug\</OutputPath>
<BaseAddress>285212672</BaseAddress>
<DocumentationFile>ImageCatalog.xml</DocumentationFile>
<WarningLevel>1</WarningLevel>
<NoWarn>42016,42017,42018,42019,42032,42353,42354,42355</NoWarn>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<CodeAnalysisLogFile>bin\ImageCatalog.exe.CodeAnalysisLog.xml</CodeAnalysisLogFile>
<CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
<CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.vb</CodeAnalysisModuleSuppressionsFile>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRuleSetDirectories>;F:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
<CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
<CodeAnalysisRuleDirectories>;F:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
<CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
<CodeAnalysisFailOnMissingRules>false</CodeAnalysisFailOnMissingRules>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<DefineTrace>true</DefineTrace>
<OutputPath>bin\x86\Release\</OutputPath>
<BaseAddress>285212672</BaseAddress>
<DocumentationFile>ImageCatalog.xml</DocumentationFile>
<Optimize>true</Optimize>
<WarningLevel>1</WarningLevel>
<NoWarn>42016,42017,42018,42019,42032,42353,42354,42355</NoWarn>
<PlatformTarget>x86</PlatformTarget>
<CodeAnalysisLogFile>bin\ImageCatalog.exe.CodeAnalysisLog.xml</CodeAnalysisLogFile>
<CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
<CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.vb</CodeAnalysisModuleSuppressionsFile>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRuleSetDirectories>;F:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
<CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
<CodeAnalysisRuleDirectories>;F:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
<CodeAnalysisIgnoreBuiltInRules>true</CodeAnalysisIgnoreBuiltInRules>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.VisualBasic.PowerPacks.Vs, Version=10.0.0.0" />
<Reference Include="System">
<Name>System</Name>
</Reference>
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
<Private>True</Private>
</Reference>
<Reference Include="System.Data">
<Name>System.Data</Name>
<Private>True</Private>
</Reference>
<Reference Include="System.Drawing">
<Name>System.Drawing</Name>
<Private>True</Private>
</Reference>
<Reference Include="System.Windows.Forms">
<Name>System.Windows.Forms</Name>
</Reference>
<Reference Include="System.Xml">
<Name>System.XML</Name>
</Reference>
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Data" />
<Import Include="System.Diagnostics" />
<Import Include="System.Drawing" />
<Import Include="System.Linq" />
<Import Include="System.Windows.Forms" />
</ItemGroup>
<ItemGroup>
<Compile Include="AssemblyInfo.vb">
<SubType>Code</SubType>
</Compile>
<Compile Include="FileHelper.vb" />
<Compile Include="ImageCreator.vb" />
<Compile Include="CreaImmagineSeparateMultiCore.vb" />
<Compile Include="CreaImmagineSeparateThread.vb" />
<Compile Include="ExifReader.vb">
<SubType>Code</SubType>
</Compile>
<Compile Include="Form1.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="LoadBuffer.vb" />
<Compile Include="MainForm.Designer.vb">
<DependentUpon>MainForm.vb</DependentUpon>
</Compile>
<Compile Include="MainForm.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Module2.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
<DependentUpon>Settings.settings</DependentUpon>
</Compile>
<Compile Include="PicSettings.vb" />
<Compile Include="XYThreadPool.vb" />
<Compile Include="Module1.vb">
<SubType>Code</SubType>
</Compile>
<Compile Include="ParametriSetup.vb">
<SubType>Code</SubType>
</Compile>
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.vb</DependentUpon>
</EmbeddedResource>
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>
</None>
<None Include="app.config" />
<None Include="ClassDiagram1.cd" />
<None Include="My Project\app.manifest" />
<None Include="My Project\Settings.settings">
<CustomToolNamespace>My</CustomToolNamespace>
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
<Visible>False</Visible>
<ProductName>.NET Framework 2.0 %28x86%29</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
<Visible>False</Visible>
<ProductName>.NET Framework 3.0 %28x86%29</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
<Visible>False</Visible>
<ProductName>Windows Installer 3.1</ProductName>
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<Folder Include="Sorgenti\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
</Project>

View file

@ -0,0 +1,835 @@
Imports System.IO
Imports System.Drawing.Drawing2D
Imports System.Drawing.Imaging
'Imports System.Threading
Public Class ImageCreator
#Region "dichiarazioni"
Private FotoRuotaADestra As Boolean = False
Private FotoRuotaASinistra As Boolean = False
Private TempMinText As String = ""
'Private crFont1 As Font
Private _NomeFileChild As String
Private _SourceDir As DirectoryInfo
Private _DestDirStart As DirectoryInfo
Private _DestDir As DirectoryInfo
Private _workFile As FileInfo
Private testoFirma As String
Private testoFirmaV As String
Private alphaScelta As Integer
Private DimensioneStandard As Integer
Private DimensioneStandardMiniatura As Integer
Private dataFoto As DateTime
Private dataPartenzaI As DateTime
Private testoOrario As String
Private testoFirmaPiccola As String
Private thumbSizeSmall As Size
Private thumbSizeBig As Size
Private nomeFileSmall As String
Private nomeFileBig As String
Private nomeFileBig2 As String
Private yPosFromBottom As Single
Private yPosFromBottom1 As Single
Private yPosFromBottom2 As Single
Private yPosFromBottom3 As Single
Private yPosFromBottom4 As Single
#End Region
Public Sub New()
End Sub
Public Sub New(ByVal nomeFileChild As String, ByVal sourceDir As DirectoryInfo, ByVal destDir As DirectoryInfo, ByVal destDirStart As DirectoryInfo)
Me.NomeFileChild = nomeFileChild
Me.SourceDir = sourceDir
Me.DestDir = destDir
Me.DestDirStart = destDirStart
Me.WorkFile = New FileInfo(nomeFileChild)
End Sub
Public Sub New(ByVal nomeFileChild As String, ByVal sourceDir As DirectoryInfo, ByVal destDir As DirectoryInfo)
Me.NomeFileChild = nomeFileChild
Me.DestDir = destDir
End Sub
Public Sub New(ByVal file As FileInfo, ByVal destination As DirectoryInfo)
Me.WorkFile = file
me.DestDir = destination
End Sub
Public Sub CreaImmagineThread(ByVal Info As String)
#If Not Debug Then
Try
#End If
preparaVariabili()
'Dim g As System.Drawing.Image = System.Drawing.Image.FromFile(Path.Combine(SourceDir.FullName, NomeFileChild))
Dim g As System.Drawing.Image = System.Drawing.Image.FromFile(WorkFile.FullName)
' Imposta testo extra
impostaTestoExtra(g)
' Ruota l'immagine in base ai dati EXIF
Rotation(g)
' Forza jpeg se è selezionata l'opzione
Dim thisFormat As System.Drawing.Imaging.ImageFormat = g.RawFormat
If PicSettings.UsaForzaJpg = True Then thisFormat = System.Drawing.Imaging.ImageFormat.Jpeg
prepareThumbnailSize(g)
Dim imgOutputBig As 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()
#If Not Debug Then
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
#End If
End Sub
Private Sub Rotation(ByRef g As System.Drawing.Image)
FotoRuotaADestra = False
FotoRuotaASinistra = False
If PicSettings.UsaRotazioneAutomatica = True Then
If g.PropertyIdList.Length > 0 Then ' ci sono dati exif
Dim DatiExif As New ExifReader(CType(g, Bitmap))
Select Case DatiExif.Orientation
Case ExifReader.Orientations.BottomLeft
Case ExifReader.Orientations.BottomRight
Case ExifReader.Orientations.LeftTop
Case ExifReader.Orientations.LftBottom
FotoRuotaASinistra = True
Case ExifReader.Orientations.RightBottom
Case ExifReader.Orientations.RightTop
Case ExifReader.Orientations.TopLeft
Case ExifReader.Orientations.TopRight
End Select
End If
End If
If FotoRuotaASinistra = True Then
g.RotateFlip(RotateFlipType.Rotate270FlipNone)
End If
If FotoRuotaADestra = True Then
g.RotateFlip(RotateFlipType.Rotate90FlipNone)
End If
End Sub
''' <summary>
''' Aggiunge Orario, tempo gara e altri
''' </summary>
''' <param name="g">Image</param>
''' <remarks></remarks>
Private Sub impostaTestoExtra(g As Image)
If PicSettings.UsaOrarioTestoApplicare Or
PicSettings.UsaTempoGaraTestoApplicare Or
PicSettings.UsaOrarioMiniatura Or
PicSettings.TestoMin Or
PicSettings.AggTempoGaraMin Or
PicSettings.AggNumTempMin Then
If g.PropertyIdList.Length > 0 Then ' ci sono dati exif
Dim DatiExif As New ExifReader(CType(g, Bitmap))
dataFoto = DatiExif.DateTimeOriginal
testoFirma = PicSettings.TestoFirmaStart
testoFirmaV = PicSettings.TestoFirmaStartV
If dataFoto.Year <> 1 Then
testoFirmaPiccola = dataFoto.ToShortTimeString
If PicSettings.UsaOrarioTestoApplicare = True Then
testoFirma &= " " & dataFoto.ToShortDateString & " " & dataFoto.ToLongTimeString
testoFirmaV &= " " & dataFoto.ToShortDateString & " " & dataFoto.ToLongTimeString
End If
If PicSettings.UsaTempoGaraTestoApplicare = True Then
Dim Orario As TimeSpan = New TimeSpan(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")
End If
End If
End If
Else
testoFirma = PicSettings.TestoFirmaStart
testoFirmaV = PicSettings.TestoFirmaStartV
End If
End Sub
''' <summary>
''' Prepara diverse variabili azzerandole, elaborandole e prendendole dalle impostazioni
''' </summary>
''' <remarks></remarks>
Private Sub preparaVariabili()
alphaScelta = CType((255 * (100 - PicSettings.Trasparenza) / 100), Integer)
testoFirma = ""
testoFirmaV = ""
dataPartenzaI = PicSettings.DataPartenza
testoOrario = PicSettings.TestoOrario
If testoOrario.Length > 0 Then testoOrario &= " "
testoFirmaPiccola = ""
thumbSizeSmall = New Size
thumbSizeBig = New Size
nomeFileSmall = ""
nomeFileBig2 = ""
nomeFileBig = ""
DimensioneStandard = PicSettings.DimStandard
DimensioneStandardMiniatura = PicSettings.DimStandardMiniatura
'nomeFileSmall = Suffisso & NomeFileChild
'nomeFileBig = NomeFileChild
nomeFileSmall = Suffisso & WorkFile.Name
nomeFileBig = WorkFile.Name
End Sub
Private Sub prepareThumbnailSize(g As Image)
If g.Width > g.Height Then
thumbSizeSmall = NewthumbSize(g.Width, g.Height, LarghezzaSmall, "Larghezza")
Dim SizeOrig As New Size(g.Width, g.Height)
thumbSizeBig = SizeOrig
Else
thumbSizeSmall = NewthumbSize(g.Width, g.Height, AltezzaSmall, "Altezza")
Dim SizeOrig As New Size(g.Width, g.Height)
thumbSizeBig = SizeOrig
End If
End Sub
Private Sub creaMiniature(g As Image, imgOutputBig As Bitmap, thisFormat As ImageFormat)
If PicSettings.TestoMin Then
testoFirmaPiccola = nomeFileBig
ElseIf PicSettings.AggNumTempMin Then
testoFirmaPiccola = nomeFileBig + " "
End If
'Dim yPosFromBottom4 As Single
Dim crFont1 As Font = Nothing
Dim crFont2 As Font = Nothing
Dim crSize1 As SizeF = New SizeF
Dim crSize2 As SizeF = New SizeF
If PicSettings.CreaMiniature = True Then
If PicSettings.AggiungiScritteMiniature = False Then
If PicSettings.DirectorySorgente.ToUpper = PicSettings.DirectoryDestinazione.ToUpper Then
nomeFileSmall = nomeFileSmall.Substring(0, nomeFileSmall.Length - 4) & Codice & nomeFileSmall.Substring(nomeFileSmall.Length - 4)
End If
If PicSettings.UsaOrarioMiniatura Or
PicSettings.TestoMin Or
PicSettings.AggTempoGaraMin Or
PicSettings.AggNumTempMin Then
If testoFirmaPiccola.Length > 0 Then
Dim imgOutputSmall As Bitmap
imgOutputSmall = CType(imgOutputBig.Clone, Bitmap)
Dim grPhoto1 As Graphics
grPhoto1 = Graphics.FromImage(imgOutputSmall)
grPhoto1.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
Dim LarghezzaStandard1 As Integer
'quick fix
DimensioneStandardMiniatura = 50
If PicSettings.Grassetto = True Then
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)
End If
crSize1 = grPhoto1.MeasureString(testoFirmaPiccola, crFont1)
crSize2 = grPhoto1.MeasureString(testoFirma, crFont1)
LarghezzaStandard1 = CType(crSize1.Width, Integer)
If crSize1.Width > CType(g.Width, Single) Then
Dim Conta As Integer = DimensioneStandardMiniatura
Do
If Conta > 20 Then
Conta -= 5
Else
Conta -= 1
End If
If PicSettings.Grassetto = True Then
crFont1 = New Font(PicSettings.IlFont, Conta, FontStyle.Bold)
Else
crFont1 = New Font(PicSettings.IlFont, Conta)
End If
crSize1 = grPhoto1.MeasureString(testoFirmaPiccola, crFont1)
If crSize1.Width < CType(g.Width, Single) Then
LarghezzaStandard1 = CType(crSize1.Width, Integer)
Exit Do
End If
If Conta <= 5 Then Exit Do
Loop
DimensioneStandardMiniatura = Conta
End If
Select Case PicSettings.Posizione.ToUpper
Case "ALTO"
yPosFromBottom1 = (PicSettings.Margine)
yPosFromBottom4 = (PicSettings.MargVert)
Case "BASSO"
yPosFromBottom1 = CType((g.Height - crSize1.Height - (g.Height * PicSettings.Margine / 100)), Single)
yPosFromBottom4 = CType((g.Height - crSize1.Height - (g.Height * PicSettings.MargVert / 100)), Single)
End Select
Dim xCenterOfImg1 As Single
Dim StrFormat1 As StringFormat = New StringFormat
Select Case PicSettings.Allineamento.ToUpper
Case "SINISTRA"
xCenterOfImg1 = CType((PicSettings.Margine + (LarghezzaStandard1 / 2)), Single)
If (LarghezzaStandard1 / 2) > (g.Width / 2) - PicSettings.Margine Then
xCenterOfImg1 = CType((g.Width / 2), Single)
End If
Case "CENTRO"
xCenterOfImg1 = CType((g.Width / 2), Single)
Case "DESTRA"
xCenterOfImg1 = CType((g.Width - PicSettings.Margine - (LarghezzaStandard1 / 2)), Single)
If (LarghezzaStandard1 / 2) > (g.Width / 2) - PicSettings.Margine Then
xCenterOfImg1 = CType((g.Width / 2), Single)
End If
End Select
StrFormat1.Alignment = StringAlignment.Center
Dim semiTransBrush21 As SolidBrush = New SolidBrush(Color.FromArgb(alphaScelta, 0, 0, 0))
Dim semiTransBrush1 As SolidBrush = New SolidBrush(Color.FromArgb(alphaScelta, PicSettings.fontColoreRGB))
'quick fix
DimensioneStandardMiniatura = PicSettings.DimMin
If PicSettings.Grassetto = True Then
crFont1 = New Font(PicSettings.IlFont, DimensioneStandardMiniatura, FontStyle.Bold)
Else
crFont1 = New Font(PicSettings.IlFont, DimensioneStandardMiniatura)
End If
'asdgadfhdfhjgfsjgfjygfdhsdafa
If PicSettings.TestoMin Then
grPhoto1.DrawString(nomeFileBig, crFont1, semiTransBrush21, New PointF(xCenterOfImg1 + 1, yPosFromBottom1 + 1), StrFormat1)
grPhoto1.DrawString(nomeFileBig, crFont1, semiTransBrush1, New PointF(xCenterOfImg1, yPosFromBottom1), StrFormat1)
ElseIf PicSettings.AggTempoGaraMin And PicSettings.UsaTempoGaraTestoApplicare Then
Dim Orario As TimeSpan = New TimeSpan(DateDiff(DateInterval.Second, dataPartenzaI, dataFoto) * 10000000)
Dim tempstr As String = ""
tempstr &= ControlChars.CrLf & 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)
ElseIf PicSettings.AggNumTempMin Then
Dim Orario As TimeSpan = New TimeSpan(DateDiff(DateInterval.Second, dataPartenzaI, dataFoto) * 10000000)
Dim tempstr As String = ""
tempstr &= nomeFileBig
tempstr &= ControlChars.CrLf & 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)
End If
' Salva la miniatura
imgOutputSmall.Save(Path.Combine(DestDir.FullName, "Temp_" & nomeFileSmall), thisFormat)
Dim g2 As System.Drawing.Image = System.Drawing.Image.FromFile(Path.Combine(DestDir.FullName, "Temp_" & nomeFileSmall))
Dim imgOutputSmall2 As New Bitmap(g2, thumbSizeSmall.Width, thumbSizeSmall.Height)
imgOutputSmall2.Save(Path.Combine(DestDir.FullName, nomeFileSmall), thisFormat)
imgOutputSmall2.Dispose()
imgOutputSmall.Dispose()
g2.Dispose()
Kill(Path.Combine(DestDir.FullName, "Temp_" & nomeFileSmall))
Else
Dim imgOutputSmall As New Bitmap(g, thumbSizeSmall.Width, thumbSizeSmall.Height)
imgOutputSmall.Save(Path.Combine(DestDir.FullName, nomeFileSmall), thisFormat)
imgOutputSmall.Dispose()
End If
Else
Dim imgOutputSmall As New Bitmap(g, thumbSizeSmall.Width, thumbSizeSmall.Height)
imgOutputSmall.Save(Path.Combine(DestDir.FullName, nomeFileSmall), thisFormat)
imgOutputSmall.Dispose()
End If
End If
End If
End Sub
Private Sub aggiungiTesto(g As Image, imgOutputBig As Bitmap)
Dim grPhoto As Graphics
grPhoto = Graphics.FromImage(imgOutputBig)
grPhoto.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
Dim crFont As Font = Nothing
Dim crSize As SizeF = New SizeF
Dim LarghezzaStandard As Integer
If PicSettings.Grassetto = True Then
crFont = New Font(PicSettings.IlFont, DimensioneStandard, FontStyle.Bold)
Else
crFont = New Font(PicSettings.IlFont, DimensioneStandard)
End If
crSize = grPhoto.MeasureString(testoFirma, crFont)
LarghezzaStandard = CType(crSize.Width, Integer)
If crSize.Width > CType(g.Width, Single) Then
Dim Conta As Integer = DimensioneStandard
Do
If Conta > 20 Then
Conta -= 5
Else
Conta -= 1
End If
If PicSettings.Grassetto = True Then
crFont = New Font(PicSettings.IlFont, Conta, FontStyle.Bold)
Else
crFont = New Font(PicSettings.IlFont, Conta)
End If
crSize = grPhoto.MeasureString(testoFirma, crFont)
If crSize.Width < CType(g.Width, Single) Then
LarghezzaStandard = CType(crSize.Width, Integer)
Exit Do
End If
If Conta <= 5 Then Exit Do
Loop
DimensioneStandard = Conta
End If
Select Case PicSettings.Posizione.ToUpper
Case "ALTO"
yPosFromBottom = (PicSettings.Margine)
yPosFromBottom3 = (PicSettings.MargVert)
Case "BASSO"
yPosFromBottom = CType((g.Height - crSize.Height - (g.Height * PicSettings.Margine / 100)), Single)
yPosFromBottom3 = CType((g.Height - crSize.Height - (g.Height * PicSettings.MargVert / 100)), Single)
End Select
Dim xCenterOfImg As Single
Dim xCenterOfImg3 As Single
Dim StrFormat As StringFormat = New StringFormat
Select Case PicSettings.Allineamento.ToUpper
Case "SINISTRA"
xCenterOfImg = CType((PicSettings.Margine + (LarghezzaStandard / 2)), Single)
xCenterOfImg3 = CType((PicSettings.MargVert + (LarghezzaStandard / 2)), Single)
If (LarghezzaStandard / 2) > (g.Width / 2) - PicSettings.Margine Then
xCenterOfImg = CType((g.Width / 2), Single)
End If
If (LarghezzaStandard / 2) > (g.Width / 2) - PicSettings.MargVert Then
xCenterOfImg3 = CType((g.Width / 2), Single)
End If
Case "CENTRO"
xCenterOfImg = CType((g.Width / 2), Single)
Case "DESTRA"
xCenterOfImg = CType((g.Width - PicSettings.Margine - (LarghezzaStandard / 2)), Single)
xCenterOfImg3 = CType((g.Width - PicSettings.MargVert - (LarghezzaStandard / 2)), Single)
If (LarghezzaStandard / 2) > (g.Width / 2) - PicSettings.Margine Then
xCenterOfImg = CType((g.Width / 2), Single)
End If
If (LarghezzaStandard / 2) > (g.Width / 2) - PicSettings.MargVert Then
xCenterOfImg3 = CType((g.Width / 2), Single)
End If
End Select
StrFormat.Alignment = StringAlignment.Center
Dim semiTransBrush2 As SolidBrush = New SolidBrush(Color.FromArgb(alphaScelta, 0, 0, 0))
'Dim semiTransBrush As SolidBrush = New SolidBrush(Color.FromArgb(AlphaScelta, _FontColoreR, _FontColoreG, _FontColoreB))
Dim semiTransBrush As SolidBrush = New SolidBrush(Color.FromArgb(alphaScelta, PicSettings.fontColoreRGB))
If FotoRuotaADestra Or FotoRuotaASinistra Then
If PicSettings.Grassetto = True Then
crFont = New Font(PicSettings.IlFont, DimVert, FontStyle.Bold)
Else
crFont = New Font(PicSettings.IlFont, DimVert)
End If
Else
If PicSettings.Grassetto = True Then
crFont = New Font(PicSettings.IlFont, DimensioneStandard, FontStyle.Bold)
Else
crFont = New Font(PicSettings.IlFont, DimensioneStandard)
End If
End If
'qui scrive il testo (nomefilebig)
If PicSettings.TestoNome Then
If NomeData And g.PropertyIdList.Length > 0 Then
Dim DatiExif As New ExifReader(CType(g, Bitmap))
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)
End If
End If
If PicSettings.TestoNome = False Then
If FotoRuotaADestra Or FotoRuotaASinistra Then
If PicSettings.TestoMin = False Then
grPhoto.DrawString(testoFirmaV, crFont, semiTransBrush2, New PointF(xCenterOfImg + 1, yPosFromBottom3 + 1), StrFormat)
grPhoto.DrawString(testoFirmaV, crFont, semiTransBrush, New PointF(xCenterOfImg, yPosFromBottom3), StrFormat)
End If
If PicSettings.TestoMin = True Then
grPhoto.DrawString(testoFirmaV, crFont, semiTransBrush2, New PointF(xCenterOfImg + 1, yPosFromBottom4 + 1), StrFormat)
grPhoto.DrawString(testoFirmaV, crFont, semiTransBrush, New PointF(xCenterOfImg, yPosFromBottom4), StrFormat)
End If
Else
grPhoto.DrawString(testoFirma, crFont, semiTransBrush2, New PointF(xCenterOfImg + 1, yPosFromBottom + 1), StrFormat)
grPhoto.DrawString(testoFirma, crFont, semiTransBrush, New PointF(xCenterOfImg, yPosFromBottom), StrFormat)
End If
End If
If PicSettings.DirectorySorgente.ToUpper = PicSettings.DirectoryDestinazione.ToUpper Then
nomeFileBig2 = nomeFileBig
nomeFileBig = nomeFileBig.Substring(0, nomeFileBig.Length - 4) & Codice & nomeFileBig.Substring(nomeFileBig.Length - 4)
End If
grPhoto.Dispose()
End Sub
Private Sub aggiungiLogo(imgOutputBig As Bitmap)
'imgOutputBig
If PicSettings.LogoAggiungi = True And File.Exists(PicSettings.LogoNomeFile) Then
Dim ImmagineLogo As Image = Image.FromFile(PicSettings.LogoNomeFile)
Dim LogoColoreTrasparente As Color = 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
Dim grWatermark As Graphics = Graphics.FromImage(imgOutputBig)
'* To achieve a translucent watermark we will apply (2) color manipulations
Dim imageAttributes As Imaging.ImageAttributes = New Imaging.ImageAttributes
'* The first step replace the background color with one that is transparent (Alpha=0, R=0, G=0, B=0)
Dim colorMap As Imaging.ColorMap = New Imaging.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)
Dim remapTable As Imaging.ColorMap() = {colorMap}
imageAttributes.SetRemapTable(remapTable, Imaging.ColorAdjustType.Bitmap)
'* The second color manipulation is used to change the opacity by setting the 3rd row and 3rd column to 0.3f
Dim colorMatrixElements As Single()() = {New Single() {1.0F, 0.0F, 0.0F, 0.0F, 0.0F}, New Single() {0.0F, 1.0F, 0.0F, 0.0F, 0.0F}, New Single() {0.0F, 0.0F, 1.0F, 0.0F, 0.0F}, New Single() {0.0F, 0.0F, 0.0F, CType(PicSettings.LogoTrasparenza, Single) / 100, 0.0F}, New Single() {0.0F, 0.0F, 0.0F, 0.0F, 1.0F}}
Dim wmColorMatrix As Imaging.ColorMatrix = New Imaging.ColorMatrix(colorMatrixElements)
imageAttributes.SetColorMatrix(wmColorMatrix, Imaging.ColorMatrixFlag.Default, Imaging.ColorAdjustType.Bitmap)
Dim FotoLogoH As Integer = PicSettings.LogoAltezza
Dim FotoLogoW As Integer = PicSettings.LogoLarghezza
Dim FattoreAlt As Double = ImmagineLogo.Height / FotoLogoH
Dim FattoreLarg As Double = ImmagineLogo.Width / FotoLogoW
Dim NuovaSize As Size
If FattoreLarg > FattoreAlt Then
NuovaSize = NewthumbSize(ImmagineLogo.Width, ImmagineLogo.Height, FotoLogoW, "Larghezza")
Else
NuovaSize = NewthumbSize(ImmagineLogo.Width, ImmagineLogo.Height, FotoLogoH, "Altezza")
End If
Dim MargineUsato As Integer
Dim MargineL As Integer
Dim InPercentualeL As Boolean
If PicSettings.LogoMargine.EndsWith("%") = True Then
InPercentualeL = True
Else
InPercentualeL = False
End If
MargineL = CType(Val(PicSettings.LogoMargine), Integer)
If InPercentualeL = True Then
MargineUsato = CType(imgOutputBig.Height * MargineL / 100, Integer)
Else
MargineUsato = MargineL
End If
Dim xPosOfWm As Integer
Dim yPosOfWm As Integer
Select Case PicSettings.LogoPosizioneH.ToUpper
Case "SINISTRA", "NESSUNA"
xPosOfWm = MargineUsato
Case "CENTRO"
xPosOfWm = CType((imgOutputBig.Width - NuovaSize.Width) / 2, Integer)
Case "DESTRA"
xPosOfWm = ((imgOutputBig.Width - NuovaSize.Width) - MargineUsato)
End Select
Select Case PicSettings.LogoPosizioneV.ToUpper
Case "ALTO", "NESSUNA"
yPosOfWm = MargineUsato
Case "CENTRO"
yPosOfWm = CType((imgOutputBig.Height - NuovaSize.Height) / 2, Integer)
Case "BASSO"
yPosOfWm = ((imgOutputBig.Height - NuovaSize.Height) - MargineUsato)
End Select
grWatermark.DrawImage(ImmagineLogo, New Rectangle(xPosOfWm, yPosOfWm, NuovaSize.Width, NuovaSize.Height), 0, 0, ImmagineLogo.Width, ImmagineLogo.Height, GraphicsUnit.Pixel, imageAttributes)
grWatermark.Dispose()
End If
End Sub
Private Sub salvaFoto(imgOutputBig As Bitmap, thumbSizeBig As Size, NomeFileBig As String, NomeFileSmall As String, thumbSizeSmall As Size, thisFormat As ImageFormat)
If PicSettings.FotoGrandeDimOrigina = False Then
'attenzione non controlla se è png
'imgOutputBig.Save(Path.Combine(_DestDir.FullName, "Temp_" & NomeFileBig), thisFormat)
If thisFormat.Equals(ImageFormat.Jpeg) Then
salvaImmagineCustomQuality(imgOutputBig, Path.Combine(DestDir.FullName, "Temp_" & NomeFileBig), jpegQuality)
Else
imgOutputBig.Save(Path.Combine(_DestDir.FullName, "Temp_" & NomeFileBig), thisFormat)
End If
Dim g2 As System.Drawing.Image = System.Drawing.Image.FromFile(Path.Combine(DestDir.FullName, "Temp_" & NomeFileBig))
If g2.Width > g2.Height Then
thumbSizeBig = NewthumbSize(g2.Width, g2.Height, PicSettings.LarghezzaBig, "Larghezza")
Else
thumbSizeBig = NewthumbSize(g2.Width, g2.Height, PicSettings.AltezzaBig, "Altezza")
End If
Dim imgOutputBig2 As New Bitmap(g2, thumbSizeBig.Width, thumbSizeBig.Height)
'
If thisFormat.Equals(ImageFormat.Jpeg) Then
salvaImmagineCustomQuality(imgOutputBig2, Path.Combine(DestDir.FullName, NomeFileBig), jpegQuality)
Else
imgOutputBig2.Save(Path.Combine(_DestDir.FullName, NomeFileBig), thisFormat)
End If
imgOutputBig2.Dispose()
imgOutputBig.Dispose()
g2.Dispose()
Else
'
If thisFormat.Equals(ImageFormat.Jpeg) Then
salvaImmagineCustomQuality(imgOutputBig, Path.Combine(DestDir.FullName, NomeFileBig), jpegQuality)
Else
imgOutputBig.Save(Path.Combine(_DestDir.FullName, NomeFileBig), thisFormat)
End If
imgOutputBig.Dispose()
End If
If PicSettings.CreaMiniature Then
If PicSettings.AggiungiScritteMiniature = True Then
Dim g1 As System.Drawing.Image
If PicSettings.FotoGrandeDimOrigina = False Then
g1 = System.Drawing.Image.FromFile(Path.Combine(DestDir.FullName, "Temp_" & NomeFileBig))
Else
g1 = System.Drawing.Image.FromFile(Path.Combine(DestDir.FullName, NomeFileBig))
End If
Dim imgOutputSmall As New Bitmap(g1, thumbSizeSmall.Width, thumbSizeSmall.Height)
If PicSettings.DirectorySorgente.ToUpper = PicSettings.DirectoryDestinazione.ToUpper Then
NomeFileSmall = NomeFileSmall.Substring(0, NomeFileSmall.Length - 4) & Codice & NomeFileSmall.Substring(NomeFileSmall.Length - 4)
End If
'
If thisFormat.Equals(ImageFormat.Jpeg) Then
salvaImmagineCustomQuality(imgOutputSmall, Path.Combine(DestDir.FullName, NomeFileSmall), jpegQualityMin)
Else
imgOutputSmall.Save(Path.Combine(_DestDir.FullName, NomeFileSmall), thisFormat)
End If
imgOutputSmall.Dispose()
g1.Dispose()
End If
End If
If File.Exists(Path.Combine(DestDir.FullName, "Temp_" & NomeFileBig)) = True Then
Kill(Path.Combine(DestDir.FullName, "Temp_" & NomeFileBig))
End If
End Sub
Private Sub salvaImmagineCustomQuality(imageToSave As Bitmap, nomeFileFinale As String, quality As Long)
Dim JgpEncoder As ImageCodecInfo = GetEncoder(ImageFormat.Jpeg)
Dim MyEncoder As Encoder = Encoder.Quality
Dim MyEncoderParameters As New EncoderParameters(1)
Dim MyEncoderParameter As New EncoderParameter(MyEncoder, jpegQuality)
MyEncoderParameters.Param(0) = MyEncoderParameter
imageToSave.Save(nomeFileFinale, JgpEncoder, MyEncoderParameters)
imageToSave.Dispose()
End Sub
Private Function GetEncoder(ByVal format As ImageFormat) As ImageCodecInfo
Dim codecs As ImageCodecInfo() = ImageCodecInfo.GetImageDecoders()
Dim codec As ImageCodecInfo
For Each codec In codecs
If codec.FormatID = format.Guid Then
Return codec
End If
Next codec
Return Nothing
End Function
''' <summary>
''' Calculate the Size of the New image
''' </summary>
''' <param name="currentwidth">Larghezza</param>
''' <param name="currentheight">Altezza</param>
''' <param name="MaxPixel"></param>
''' <param name="TipoSize"></param>
''' <returns></returns>
''' <remarks></remarks>
Private Function NewthumbSize(ByVal currentwidth As Integer, ByVal currentheight As Integer, ByVal MaxPixel As Integer, ByVal TipoSize As String) As Size
' e
'*** Larghezza, Altezza, Auto
Dim tempMultiplier As Double
If TipoSize.ToUpper = "Larghezza".ToUpper Then
tempMultiplier = MaxPixel / currentwidth
ElseIf TipoSize.ToUpper = "Altezza".ToUpper Then
tempMultiplier = MaxPixel / currentheight
Else
If currentheight > currentwidth Then ' portrait
tempMultiplier = MaxPixel / currentheight
Else
tempMultiplier = MaxPixel / currentwidth
End If
End If
Dim NewSize As New Size(CInt(currentwidth * tempMultiplier), CInt(currentheight * tempMultiplier))
Return NewSize
End Function
Public Property WorkFile() As FileInfo
Get
Return _workFile
End Get
Set(value As FileInfo)
_workFile = 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 SourceDir() As DirectoryInfo
Get
Return _SourceDir
End Get
Set(ByVal value As DirectoryInfo)
_SourceDir = value
End Set
End Property
Public Property DestDirStart() As DirectoryInfo
Get
Return _DestDirStart
End Get
Set(ByVal value As DirectoryInfo)
_DestDirStart = value
End Set
End Property
Public Property NomeFileChild() As String
Get
Return _NomeFileChild
End Get
Set(ByVal value As String)
_NomeFileChild = value
End Set
End Property
End Class

View file

@ -0,0 +1,9 @@
Imports System.Collections.Generic
Imports System.IO
Public Class LoadBuffer
Public imageList As New List(Of System.Drawing.Image)
Public picSourceList As New List(Of FileInfo)
Public dirSourceList As New List(Of List(Of FileInfo))
End Class

1786
imagecatalog/MainForm.Designer.vb generated Normal file

File diff suppressed because it is too large Load diff

120
imagecatalog/MainForm.resx Normal file
View file

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

1328
imagecatalog/MainForm.vb Normal file

File diff suppressed because it is too large Load diff

155
imagecatalog/Module1.vb Normal file
View file

@ -0,0 +1,155 @@
Module Module1
'Sub CaricaIni()
' Dim Parola As String
' Dim i As Integer
' Dim p As Integer
' If Dir$(NomeIni) <> "" Then
' Open NomeIni For Input As #1
' Input #1, NumeroMacchine
' For i = 1 To NumeroMacchine
' Input #1, NomeMacchina(i)
' Input #1, CodiceMacchina(i)
' Input #1, TempoMacchinaFerma(i)
' Input #1, LunghezzaImpulso(i)
' Input #1, TempoRegistrazioneDati(i)
' Input #1, RangoVelocita(i)
' Input #1, MaxVelocita(i)
' Input #1, NumeroRulli(i)
' Input #1, NumeroFili(i)
' Input #1, IndirizzoMacchina(i)
' Input #1, StampaAutoMacchina(i)
' Next i
' Input #1, SettimanaInizio
' Input #1, SettimanaFine
' Input #1, Chiusura
' Input #1, OrarioStampa
' Input #1, OrarioStampaSecondi
' Input #1, OrarioAccendiProg
' Input #1, OrarioSpengiProg
' Input #1, NomeDitta
' Input #1, StampaAutoGiorno
' Input #1, StampaAutoWeek
' Input #1, StampaGiornoRiepilogo
' Input #1, StampaGiornoGrafTMFA
' Input #1, StampaGiornoGrafVel
' Input #1, StampaWeekRiepilogo
' Input #1, StampaWeekGrafTMFA
' Input #1, StampaWeekGrafVel
' Input #1, StampanteManuale
' Input #1, StampanteAutomatica
' Input #1, StampanteNomeAghi
' Input #1, StampanteNomeLaser
' Input #1, NomePortaComm
' Input #1, TurniTotali
' For p = 1 To TurniTotali
' Input #1, TurnoNumero(p)
' Input #1, TurnoInizioMinuti(p)
' Input #1, TurnoFineMinuti(p)
' Input #1, TurnoInizioSecondi(p)
' Input #1, TurnoFineSecondi(p)
' Next p
' Input #1, Parola
' Close #1
' PassWordAmm = Trim$(Cripta(Parola, ChiaveCriDecri))
' End If
'End Sub
'Sub SalvaIni()
' Dim Conto As Single
' Dim Nomefile As String
' Dim NomeDir As String
' Dim Testo As String
' Dim TestoA As String
' Dim i As Integer
' Dim k As Integer
' Dim p As Integer
' Dim Lungo As Integer
' Dim Resto As Integer
' Dim Primo(3) As String
' For i = 1 To NumeroMacchine
' If Right$(DirectoryProgramma, 1) = "\" Then
' NomeDir = DirectoryProgramma + NomeMacchina(i)
' Else
' NomeDir = DirectoryProgramma + "\" + NomeMacchina(i)
' End If
' Nomefile = NomeDir + "\" + NomeMacchina(i) + ".SYS"
' If Dir$(Nomefile) = "" Then MkDir(NomeDir)
' Next i
'Open NomeIni For Output As #3
' Print #3, NumeroMacchine
' For i = 1 To NumeroMacchine
' If Right$(DirectoryProgramma, 1) = "\" Then
' Nomefile = DirectoryProgramma + NomeMacchina(i) + "\" + NomeMacchina(i) + ".SYS"
' Else
' Nomefile = DirectoryProgramma + "\" + NomeMacchina(i) + "\" + NomeMacchina(i) + ".SYS"
' End If
' Open Nomefile For Output As #4
' Write #4, NomeMacchina(i)
' Write #4, CodiceMacchina(i)
' Print #4, TempoMacchinaFerma(i)
' Print #4, LunghezzaImpulso(i)
' Print #4, TempoRegistrazioneDati(i)
' Print #4, RangoVelocita(i)
' Print #4, MaxVelocita(i)
' Print #4, NumeroRulli(i)
' Print #4, NumeroFili(i)
' Print #4, IndirizzoMacchina(i)
' Write #4, StampaAutoMacchina(i)
' Close #4
' Write #3, NomeMacchina(i)
' Write #3, CodiceMacchina(i)
' Print #3, TempoMacchinaFerma(i)
' Print #3, LunghezzaImpulso(i)
' Print #3, TempoRegistrazioneDati(i)
' Print #3, RangoVelocita(i)
' Print #3, MaxVelocita(i)
' Print #3, NumeroRulli(i)
' Print #3, NumeroFili(i)
' Print #3, IndirizzoMacchina(i)
' Write #3, StampaAutoMacchina(i)
' Next i
' Print #3, SettimanaInizio
' Print #3, SettimanaFine
' Write #3, Chiusura
' Write #3, OrarioStampa
' Print #3, OrarioStampaSecondi
' Write #3, OrarioAccendiProg
' Write #3, OrarioSpengiProg
' Write #3, NomeDitta
' Write #3, StampaAutoGiorno
' Write #3, StampaAutoWeek
' Write #3, StampaGiornoRiepilogo
' Write #3, StampaGiornoGrafTMFA
' Write #3, StampaGiornoGrafVel
' Write #3, StampaWeekRiepilogo
' Write #3, StampaWeekGrafTMFA
' Write #3, StampaWeekGrafVel
' Write #3, StampanteManuale
' Write #3, StampanteAutomatica
' Write #3, StampanteNomeAghi
' Write #3, StampanteNomeLaser
' Write #3, NomePortaComm
' Print #3, TurniTotali
' For p = 1 To TurniTotali
' Print #3, TurnoNumero(p)
' Print #3, TurnoInizioMinuti(p)
' Print #3, TurnoFineMinuti(p)
' Print #3, TurnoInizioSecondi(p)
' Print #3, TurnoFineSecondi(p)
' Next p
' Testo = Cripta(PassWordAmm, ChiaveCriDecri)
' Write #3, Testo
'Close #3
'End Sub
Public SetupIni As New ParametriSetup
End Module

3
imagecatalog/Module2.vb Normal file
View file

@ -0,0 +1,3 @@
Module Module2
End Module

View file

@ -0,0 +1,38 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.18033
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
'NOTE: This file is auto-generated; do not modify it directly. To make changes,
' or if you encounter build errors in this file, go to the Project Designer
' (go to Project Properties or double-click the My Project node in
' Solution Explorer), and make changes on the Application tab.
'
Partial Friend Class MyApplication
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Public Sub New()
MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
Me.IsSingleInstance = false
Me.EnableVisualStyles = true
Me.SaveMySettingsOnExit = true
Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses
End Sub
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Protected Overrides Sub OnCreateMainForm()
Me.MainForm = Global.ImageCatalog.MainForm
End Sub
End Class
End Namespace

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MySubMain>true</MySubMain>
<MainForm>MainForm</MainForm>
<SingleInstance>false</SingleInstance>
<ShutdownMode>0</ShutdownMode>
<EnableVisualStyles>true</EnableVisualStyles>
<AuthenticationMode>0</AuthenticationMode>
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
</MyApplicationData>

View file

@ -0,0 +1,73 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.18033
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
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
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
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
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
Friend Module MySettingsProperty
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
Friend ReadOnly Property Settings() As Global.ImageCatalog.My.MySettings
Get
Return Global.ImageCatalog.My.MySettings.Default
End Get
End Property
End Module
End Namespace

View file

@ -0,0 +1,6 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" UseMySettingsClassName="true">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
</SettingsFile>

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- UAC Manifest Options
If you want to change the Windows User Account Control level replace the
requestedExecutionLevel node with one of the following.
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
If you want to utilize File and Registry Virtualization for backward
compatibility then delete the requestedExecutionLevel node.
-->
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</asmv1:assembly>

View file

@ -0,0 +1,148 @@
Public Class ParametriSetup
Private _ElencoParametri As DataSet
Private _NomeFileSetup As String
Public Sub New(ByVal FileSetup As String)
_ElencoParametri = New DataSet
_NomeFileSetup = FileSetup
If FileSetup <> "" Then
CaricaParametriSetup()
End If
End Sub
Public Sub New()
_ElencoParametri = New DataSet
_NomeFileSetup = ""
End Sub
Public Sub CaricaParametriSetup()
_ElencoParametri = LeggiXmlDataSet("Setup", _NomeFileSetup, "Nome")
End Sub
Public Sub SalvaParametriSetup()
If System.IO.File.Exists(_NomeFileSetup) = True Then
Kill(_NomeFileSetup)
End If
_ElencoParametri.WriteXml(_NomeFileSetup)
End Sub
Public Function LeggiParametroString(ByVal NomeParametro As String) As String
Dim Risposta As String = ""
Try
Dim LElenco As DataRow() = _ElencoParametri.Tables("Setup").Select("Nome='" & NomeParametro & "'")
Dim LaRiga As DataRow
For Each LaRiga In LElenco
Risposta = LaRiga("Valore").ToString
Next
Catch
Risposta = ""
End Try
Return Risposta
End Function
Public Function LeggiParametroBoolean(ByVal NomeParametro As String) As Boolean
Dim Risposta As String = ""
Try
Dim LElenco As DataRow() = _ElencoParametri.Tables("Setup").Select("Nome='" & NomeParametro & "'")
Dim LaRiga As DataRow
For Each LaRiga In LElenco
Risposta = LaRiga("Valore").ToString
Next
Catch
Risposta = ""
End Try
Select Case Risposta.ToUpper
Case "TRUE", "OK", "SI", "1", "YES", "VERO"
Return True
Case Else
Return False
End Select
End Function
Public Sub AggiornaParametro(ByVal NomeParametro As String, ByVal ValoreParametro As Object)
Try
If _ElencoParametri.Tables("Setup") Is Nothing Then
Dim TabellaTmp As New DataTable("Setup")
Dim RigaTmp As DataRow
Dim LaColonna As DataColumn
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
Dim LElenco As DataRow() = _ElencoParametri.Tables("Setup").Select("Nome='" & NomeParametro & "'")
If LElenco.Length = 0 Then
Dim LaRiga As DataRow
LaRiga = _ElencoParametri.Tables("Setup").NewRow
LaRiga("Nome") = NomeParametro
LaRiga("Valore") = ValoreParametro
_ElencoParametri.Tables("Setup").Rows.Add(LaRiga)
Else
LElenco(0).Item("Valore") = ValoreParametro
End If
End If
Catch
End Try
End Sub
Private Function LeggiXmlDataTable(ByVal NomeTabella As String, ByVal NomeFileXml As String, Optional ByVal NomeColonnaChiave As String = "") As DataTable
'* Crea e Legge il dataset dal file xml
Dim DataSetXml As New System.Data.DataSet
DataSetXml.ReadXml(NomeFileXml)
'* Aggiunge il campo chiave
If NomeColonnaChiave <> "" Then
DataSetXml.Tables(NomeTabella).Constraints.Add(NomeColonnaChiave, DataSetXml.Tables(NomeTabella).Columns(NomeColonnaChiave), True)
End If
'* Restituisce la risposta
Return DataSetXml.Tables(NomeTabella)
End Function
Private Shared Function LeggiXmlDataSet(ByVal NomeTabella As String, ByVal NomeFileXml As String, Optional ByVal NomeColonnaChiave As String = "") As DataSet
'* Crea e Legge il dataset dal file xml
Dim DataSetXml As New System.Data.DataSet
DataSetXml.ReadXml(NomeFileXml)
'* Aggiunge il campo chiave
If NomeColonnaChiave <> "" Then
DataSetXml.Tables(NomeTabella).Constraints.Add(NomeColonnaChiave, DataSetXml.Tables(NomeTabella).Columns(NomeColonnaChiave), True)
End If
'* Restituisce la risposta
Return DataSetXml
End Function
Public Property NomeFileSetup() As String
Get
Return _NomeFileSetup
End Get
Set(ByVal Value As String)
_NomeFileSetup = Value
End Set
End Property
End Class

604
imagecatalog/PicSettings.vb Normal file
View file

@ -0,0 +1,604 @@
Imports System.IO
Imports System.Drawing.Drawing2D
Imports System.Drawing.Imaging
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 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 MainForm
'Private progressBar As System.Windows.Forms.ProgressBar
Public Property mainForm() As MainForm
Get
Return _mainForm
End Get
Set(ByVal value As MainForm)
_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

View file

@ -0,0 +1,185 @@
Option Explicit On
Option Strict On
Imports System.Threading
Imports System.Collections
Public Delegate Sub ThreadErrorHandlerDelegate(ByVal oWorkItem As ThreadPoolWorkItem, ByVal oError As Exception)
Public Class ThreadPoolWorkItem
Public m_bStoreOutput As Boolean = False
Public m_sName As String = ""
Public m_pMethod As [Delegate] = Nothing
Public m_pInput As Object() = Nothing
Public m_oOutput As Object = Nothing
Public m_oException As Exception = Nothing
Public Sub New()
End Sub
Public Sub New(ByVal sName As String, ByVal pMethod As [Delegate], ByVal pInput As Object(), ByVal bStoreOutput As Boolean)
m_sName = sName
m_pMethod = pMethod
m_pInput = pInput
m_bStoreOutput = bStoreOutput
End Sub
End Class
Public Class XYThreadPool
Private m_htThreads As Hashtable = New Hashtable(256)
Private m_nMinThreadCount As Integer = 5
Private m_nMaxThreadCount As Integer = 10
Private m_nShutdownPause As Integer = 200
Private m_nServerPause As Integer = 25
Private m_bContinue As Boolean = False
Private m_oException As Exception = Nothing
Private m_qInput As Queue = New Queue(1024)
Private m_qOutput As Queue = New Queue(1024)
Private m_delegateThreadErrorHandler As [Delegate] = New ThreadErrorHandlerDelegate(AddressOf OnThreadError)
Private Sub ThreadProc()
While m_bContinue
Dim obj As Object = Nothing
Monitor.Enter(Me)
If m_qInput.Count > 0 Then obj = m_qInput.Dequeue()
Monitor.Exit(Me)
If obj Is Nothing Then
Dim bQuit As Boolean = False
Monitor.Enter(Me)
If m_htThreads.Count > m_nMinThreadCount Then
m_htThreads.Remove(Thread.CurrentThread.Name)
bQuit = True
End If
Monitor.Exit(Me)
If bQuit Then Return
Thread.Sleep(10 * m_nServerPause)
Else
Dim oWorkItem As ThreadPoolWorkItem = CType(obj, ThreadPoolWorkItem)
'oWorkItem.m_oOutput = oWorkItem.m_pMethod.DynamicInvoke(oWorkItem.m_pInput)
Try
oWorkItem.m_oOutput = oWorkItem.m_pMethod.DynamicInvoke(oWorkItem.m_pInput)
Catch oBug As Exception
If Not m_delegateThreadErrorHandler Is Nothing Then
Try
Dim pInput As Object() = {oWorkItem, oBug}
m_delegateThreadErrorHandler.DynamicInvoke(pInput)
Catch
End Try
End If
End Try
If oWorkItem.m_bStoreOutput Then
Monitor.Enter(m_qOutput)
m_qOutput.Enqueue(oWorkItem)
Monitor.Exit(m_qOutput)
End If
Thread.Sleep(m_nServerPause)
End If
End While
End Sub
Private Sub OnThreadError(ByVal oWorkItem As ThreadPoolWorkItem, ByVal oError As Exception)
If oWorkItem Is Nothing Then
m_oException = oError
Else
oWorkItem.m_oException = oError
End If
End Sub
Public Sub SetThreadErrorHandler(ByVal pMethod As ThreadErrorHandlerDelegate)
Monitor.Enter(Me)
m_delegateThreadErrorHandler = pMethod
Monitor.Exit(Me)
End Sub
Public Sub SetServerPause(ByVal nMilliseconds As Integer)
Monitor.Enter(Me)
If nMilliseconds > 9 And nMilliseconds < 101 Then m_nServerPause = nMilliseconds
Monitor.Exit(Me)
End Sub
Public Sub SetShutdownPause(ByVal nMilliseconds As Integer)
Monitor.Enter(Me)
m_nShutdownPause = nMilliseconds
Monitor.Exit(Me)
End Sub
Public Function GetException() As Exception
Return m_oException
End Function
Public Sub InsertWorkItem(ByVal oWorkItem As ThreadPoolWorkItem)
Try
Monitor.Enter(Me)
m_qInput.Enqueue(oWorkItem)
If m_bContinue AndAlso m_qInput.Count > m_htThreads.Count AndAlso m_htThreads.Count < m_nMaxThreadCount Then
Dim th As Thread = New Thread(AddressOf ThreadProc)
th.Name = Guid.NewGuid.ToString()
m_htThreads.Add(th.Name, th)
th.Start()
End If
Catch oBug As Exception
m_oException = oBug
Finally
Monitor.Exit(Me)
End Try
End Sub
Public Sub InsertWorkItem(ByVal sName As String, ByVal pMethod As [Delegate], ByVal pArgs As Object(), ByVal bStoreOutput As Boolean)
InsertWorkItem(New ThreadPoolWorkItem(sName, pMethod, pArgs, bStoreOutput))
End Sub
Public Function ExtractWorkItem() As ThreadPoolWorkItem
Dim oWorkItem As Object = Nothing
Monitor.Enter(m_qOutput)
If m_qOutput.Count > 0 Then oWorkItem = m_qOutput.Dequeue()
Monitor.Exit(m_qOutput)
If oWorkItem Is Nothing Then Return Nothing
Return CType(oWorkItem, ThreadPoolWorkItem)
End Function
Public Function StartThreadPool(Optional ByVal nMinThreadCount As Integer = 5, Optional ByVal nMaxThreadCount As Integer = 10) As Boolean
Try
Monitor.Enter(Me)
If m_bContinue = False Then
m_bContinue = True
If nMinThreadCount > 0 Then
m_nMinThreadCount = nMinThreadCount
End If
If nMaxThreadCount > m_nMinThreadCount Then
m_nMaxThreadCount = nMaxThreadCount
Else
m_nMaxThreadCount = 2 * m_nMinThreadCount
End If
Dim i As Integer
For i = 1 To m_nMinThreadCount
Dim th As Thread = New Thread(AddressOf ThreadProc)
th.Name = Guid.NewGuid.ToString()
m_htThreads.Add(th.Name, th)
th.Start()
Next i
End If
Return True
Catch oBug As Exception
m_bContinue = False
m_oException = oBug
Return False
Finally
Monitor.Exit(Me)
End Try
End Function
Public Sub StopThreadPool()
Monitor.Enter(Me)
m_bContinue = False
Thread.Sleep(Math.Max(200, m_nShutdownPause))
If (m_nShutdownPause > 0) Then
Dim dict As IDictionaryEnumerator = m_htThreads.GetEnumerator()
While dict.MoveNext()
Dim th As Thread = CType(dict.Value(), Thread)
If th.IsAlive Then
Try
th.Abort()
Catch
End Try
End If
End While
End If
m_htThreads.Clear()
m_qInput.Clear()
' m_qOutput.Clear()
Monitor.Exit(Me)
End Sub
Public Function GetThreadCount() As Integer
Monitor.Enter(Me)
Dim nCount As Integer = m_htThreads.Count
Monitor.Exit(Me)
Return nCount
End Function
End Class

23
imagecatalog/app.config Normal file
View file

@ -0,0 +1,23 @@
<?xml version="1.0"?>
<configuration>
<system.diagnostics>
<sources>
<!-- Questa sezione definisce la configurazione di registrazione per My.Application.Log -->
<source name="DefaultSource" switchName="DefaultSwitch">
<listeners>
<add name="FileLog"/>
<!-- Per scrivere nel log eventi dell'applicazione, rimuovere il commento dalla sezione sottostante -->
<!--<add name="EventLog"/>-->
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="Information"/>
</switches>
<sharedListeners>
<add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter"/>
<!-- Per scrivere nel log eventi dell'applicazione, rimuovere il commento dalla sezione sottostante e sostituire APPLICATION_NAME con il nome dell'applicazione -->
<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
</sharedListeners>
</system.diagnostics>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/></startup></configuration>