private void SelectMaskClick(object sender, RoutedEventArgs e)
        {
            string img4 = ImageTools.openFileSelectDialog("Select a PNG mask image");

            MaskFileBox.Text = img4;
            maskMap          = new DirectBitmap(ImageTools.loadImage(img4));
            maskImage        = ImageTools.BitmapToBitmapImage(maskMap.Bitmap);
            updatePreview();
        }
        private void SelectSpecClick(object sender, RoutedEventArgs e)
        {
            string img2 = ImageTools.openFileSelectDialog("Select a PNG base image");

            SpecFileBox.Text = img2;
            auxMap           = new DirectBitmap(ImageTools.loadImage(img2));
            auxImage         = ImageTools.BitmapToBitmapImage(auxMap.Bitmap);
            updatePreview();
        }
        private void SelectSmoothClick(object sender, RoutedEventArgs e)
        {
            string img3 = ImageTools.openFileSelectDialog("Select a PNG base image");

            SmoothFileBox.Text = img3;
            smoothMap          = new DirectBitmap(ImageTools.loadImage(img3));
            smoothImage        = ImageTools.BitmapToBitmapImage(smoothMap.Bitmap);
            updatePreview();
        }
        private void SelectBaseMapClik(object sender, RoutedEventArgs e)
        {
            string img1 = ImageTools.openFileSelectDialog("Select a PNG base image");

            DiffFileBox.Text = img1;
            diffuseMap       = new DirectBitmap(ImageTools.loadImage(img1));
            diffuseImage     = ImageTools.BitmapToBitmapImage(diffuseMap.Bitmap);
            updatePreview();
        }
        private void generateFinished()
        {
            diffText   = string.Empty;
            auxText    = string.Empty;
            smoothText = string.Empty;

            if (generatorDiff != null)
            {
                diffuseNormMap      = (DirectBitmap)generatorDiff.dest;
                diffuseDiffMap      = (DirectBitmap)generatorDiff.difference;
                diffuseColDiffMap   = (DirectBitmap)generatorDiff.coloredDiff;
                diffuseNormImage    = ImageTools.BitmapToBitmapImage(diffuseNormMap.Bitmap);
                diffuseDiffImage    = ImageTools.BitmapToBitmapImage(diffuseDiffMap.Bitmap);
                diffuseColDiffImage = ImageTools.BitmapToBitmapImage(diffuseColDiffMap.Bitmap);
                diffText            = generatorDiff.outText;
            }

            if (generatorAux != null)
            {
                auxNormMap      = (DirectBitmap)generatorAux.dest;
                auxDiffMap      = (DirectBitmap)generatorAux.difference;
                auxColDiffMap   = (DirectBitmap)generatorAux.coloredDiff;
                auxNormImage    = ImageTools.BitmapToBitmapImage(auxNormMap.Bitmap);
                auxDiffImage    = ImageTools.BitmapToBitmapImage(auxDiffMap.Bitmap);
                auxColDiffImage = ImageTools.BitmapToBitmapImage(auxColDiffMap.Bitmap);
                auxText         = generatorAux.outText;
                if (string.IsNullOrEmpty(auxText))
                {
                    auxText = "0,0,0";
                }
            }
            else
            {
                auxText = "0,0,0";
            }

            if (generatorSmooth != null)
            {
                smoothNormMap      = (DirectBitmap)generatorSmooth.dest;
                smoothDiffMap      = (DirectBitmap)generatorSmooth.difference;
                smoothColDiffMap   = (DirectBitmap)generatorSmooth.coloredDiff;
                smoothNormImage    = ImageTools.BitmapToBitmapImage(smoothNormMap.Bitmap);
                smoothDiffImage    = ImageTools.BitmapToBitmapImage(smoothDiffMap.Bitmap);
                smoothColDiffImage = ImageTools.BitmapToBitmapImage(smoothColDiffMap.Bitmap);
                smoothText         = generatorSmooth.outText;
                if (string.IsNullOrEmpty(smoothText))
                {
                    smoothText = "0,0,0";
                }
            }
            else
            {
                smoothText = "0,0,0";
            }

            generatorDiff   = null;
            generatorAux    = null;
            generatorSmooth = null;

            //dispose of all of the Bitmaps used for processing
            diffuseNormMap?.Dispose();
            diffuseNormMap = null;
            diffuseDiffMap?.Dispose();
            diffuseDiffMap = null;
            diffuseColDiffMap?.Dispose();
            diffuseColDiffMap = null;

            auxNormMap?.Dispose();
            auxNormMap = null;
            auxDiffMap?.Dispose();
            auxDiffMap = null;
            auxColDiffMap?.Dispose();
            auxColDiffMap = null;

            smoothNormMap?.Dispose();
            smoothNormMap = null;
            smoothDiffMap?.Dispose();
            smoothDiffMap = null;
            smoothColDiffMap?.Dispose();
            smoothColDiffMap = null;

            updatePreview();
        }