/// <summary>
        /// Gets the preset spatial settings based on preset
        /// </summary>
        /// <param name="preset">The preset.</param>
        /// <returns></returns>
        public static cursorZoneSpatialSettings getPresetSpatialSettings(this cursorZoneSpatialPreset preset)
        {
            var output = new cursorZoneSpatialSettings();

            output.setPresetSpatialSettings(preset);
            return(output);
        }
        /// <summary>
        /// Deplozs spatial settings from named preset
        /// </summary>
        /// <param name="output">The output.</param>
        /// <param name="preset">The preset.</param>
        /// <returns></returns>
        /// <exception cref="System.ArgumentOutOfRangeException"></exception>
        public static cursorZoneSpatialSettings setPresetSpatialSettings(this cursorZoneSpatialSettings output, cursorZoneSpatialPreset preset)
        {
            if (output == null)
            {
                output = new cursorZoneSpatialSettings();
            }

            switch (preset)
            {
            case cursorZoneSpatialPreset.sheetNormal:
                output.width                   = 12;
                output.height                  = 240;
                output.spatialUnit             = 120;
                output.spatialUnitRatioYPerX   = 0.2F;
                output.spatialUnitMarginRatio  = 0.1F;
                output.spatialUnitPaddingRatio = 0.2F;
                output.tabPerCellUnit          = 1;
                output.padding                 = new fourSideSetting(2);
                output.margin                  = new fourSideSetting(1);
                break;

            case cursorZoneSpatialPreset.sheetSquareCell:
                output.width                 = 120;
                output.height                = 120;
                output.spatialUnit           = 25;
                output.spatialUnitRatioYPerX = 1.0F;
                output.tabPerCellUnit        = 4;
                break;

            case cursorZoneSpatialPreset.textPage:
                output.width                 = 120;
                output.height                = 120;
                output.spatialUnit           = 10;
                output.spatialUnitRatioYPerX = 1.6F;
                output.tabPerCellUnit        = 8;
                break;

            case cursorZoneSpatialPreset.console:
                output.width                 = 85;
                output.height                = 43;
                output.spatialUnit           = 5;
                output.spatialUnitRatioYPerX = 1.6F;
                output.tabPerCellUnit        = 4;
                break;

            case cursorZoneSpatialPreset.wideConsole:
                output.width                 = 160;
                output.height                = 78;
                output.spatialUnit           = 5;
                output.spatialUnitRatioYPerX = 1.6F;
                output.tabPerCellUnit        = 4;
                break;

            case cursorZoneSpatialPreset.longTextLog:
                output.width                 = 85;
                output.height                = 1200;
                output.spatialUnit           = 5;
                output.spatialUnitRatioYPerX = 1.6F;
                output.tabPerCellUnit        = 4;
                break;

            case cursorZoneSpatialPreset.a4OnFont10pt:
                output.width                 = 90;
                output.height                = 62;
                output.spatialUnit           = 10;
                output.spatialUnitRatioYPerX = 1.6F;
                output.tabPerCellUnit        = 8;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            return(output);
        }