/*******************************************************************************
* Copyright (c) MOBAC developers
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
******************************************************************************/
package mobac.program.model;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import mobac.gui.mapview.WgsGrid.WgsDensity;
import mobac.program.jaxb.PaperSizeAdapter;
import mobac.program.model.PaperSize.Format;
@XmlRootElement
public class SettingsPaperAtlas implements Cloneable {
public static final int
COMPRESSION_DEFAULT = 6, COMPRESSION_MAX = 9, COMPRESSION_MIN = 0,
CROP_DEFAULT = 15, CROP_MAX = 100, CROP_MIN = 0,
DPI_DEFAULT = 96, DPI_MAX = 300, DPI_MIN = 72;
public static final double
MARGIN_DEFAULT = 22.6d, MARGIN_MAX = 144d, MARGIN_MIN = 0.0d,
OVERLAP_DEFAULT = 28.2d, OVERLAP_MIN = 0d, OVERLAP_MAX = 144d,
PAPER_SIZE_MAX = 16384d, PAPER_SIZE_MIN = 1d;
public static final PaperSize PAPER_SIZE_DEFAULT = new PaperSize(Format.A4, false);
public int compression = COMPRESSION_DEFAULT, crop = CROP_DEFAULT, dpi = DPI_DEFAULT;
public double marginBottom = MARGIN_DEFAULT, marginLeft = MARGIN_DEFAULT, marginRight = MARGIN_DEFAULT,
marginTop = MARGIN_DEFAULT, overlap = OVERLAP_DEFAULT;
public boolean compass = true, pageNumbers = true, scaleBar = true, wgsEnabled = true;
@XmlElement(defaultValue = "A4")
@XmlJavaTypeAdapter(PaperSizeAdapter.class)
public PaperSize paperSize = PAPER_SIZE_DEFAULT;
public WgsDensity wgsDensity = SettingsWgsGrid.DEFAULT_DENSITY;
@Override
public SettingsPaperAtlas clone() {
try {
return (SettingsPaperAtlas) super.clone();
} catch (Exception e) {
throw new InternalError();
}
}
public void checkValues() {
if (compression < COMPRESSION_MIN || compression > COMPRESSION_MAX) {
compression = COMPRESSION_DEFAULT;
}
if (crop < CROP_MIN || crop > CROP_MAX) {
crop = CROP_DEFAULT;
}
if (dpi < DPI_MIN || dpi > DPI_MAX) {
dpi = DPI_DEFAULT;
}
if (marginBottom < MARGIN_MIN || marginBottom > MARGIN_MAX) {
marginBottom = MARGIN_DEFAULT;
}
if (marginLeft < MARGIN_MIN || marginLeft > MARGIN_MAX) {
marginLeft = MARGIN_DEFAULT;
}
if (marginRight < MARGIN_MIN || marginRight > MARGIN_MAX) {
marginRight = MARGIN_DEFAULT;
}
if (marginTop < MARGIN_MIN || marginTop > MARGIN_MAX) {
marginTop = MARGIN_DEFAULT;
}
if (paperSize == null) {
paperSize = PAPER_SIZE_DEFAULT;
}
if (wgsDensity == null) {
wgsDensity = SettingsWgsGrid.DEFAULT_DENSITY;
}
}
}