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
