const DEFAULT_REGISTRATION: bool = true;
const DEFAULT_CROP_BORDER: bool = false;
const DEFAULT_SHOW_POSITIVE_NEGATIVE: bool = false;
const DEFAULT_PACTHWISE: bool = false;
const DEFAULT_PATCH_SIZE: u8 = 32;
const DEFAULT_STEP_SIZE: u8 = 16;

#[derive(Debug, Clone, PartialEq)]
pub struct SquirrelSettings 
{
	registration: bool,
	crop_border: bool,
	show_positive_negative: bool,
	patchwise : bool,
	patch_size : u8,
	step_size : u8,
}

impl SquirrelSettings
{
	pub fn new() -> Self
	{
		Self
		{
			registration: DEFAULT_REGISTRATION,
			crop_border: DEFAULT_CROP_BORDER,
			show_positive_negative: DEFAULT_SHOW_POSITIVE_NEGATIVE,
			patchwise: DEFAULT_PACTHWISE,
			patch_size: DEFAULT_PATCH_SIZE,
			step_size: DEFAULT_STEP_SIZE
		}
	}

	pub fn registration(&self) -> bool
	{
		self.registration
	}

	pub fn set_registration(&mut self, value: bool) -> ()
	{
		self.registration = value;
	}

	pub fn crop_border(&self) -> bool
	{
		self.crop_border
	}

	pub fn set_crop_border(&mut self, value: bool) -> ()
	{
		self.crop_border = value;
	}

	pub fn show_positive_negative(&self) -> bool
	{
		self.show_positive_negative
	}

	pub fn set_show_positive_negative(&mut self, value: bool) -> ()
	{
		self.show_positive_negative = value;
	}

	pub fn patchwise(&self) -> bool
	{
		self.patchwise
	}

	pub fn set_patchwise(&mut self, value: bool) -> ()
	{
		self.patchwise = value;
	}

	pub fn patch_size(&self) -> u8
	{
		self.patch_size
	}

	pub fn set_patch_size(&mut self, value: u8) -> ()
	{
		self.patch_size = value;
	}

	pub fn step_size(&self) -> u8
	{
		self.step_size
	}

	pub fn set_step_size(&mut self, value: u8) -> ()
	{
		self.step_size = value;
	}
}

impl Default for SquirrelSettings
{
	fn default() -> Self 
	{
		Self::new()
	}
}