opencloudtiles 0.1.11

A toolbox for converting, checking and serving map tiles in various formats.
Documentation
use super::{DataConverter, Precompression, TileBBoxPyramide, TileFormat, TileReaderParameters};

pub struct TileConverterConfig {
	tile_format: Option<TileFormat>,
	tile_precompression: Option<Precompression>,
	tile_recompressor: Option<DataConverter>,
	compressor: Option<DataConverter>,
	bbox_pyramide: TileBBoxPyramide,
	force_recompress: bool,
	finalized: bool,
}

#[allow(dead_code)]
impl TileConverterConfig {
	pub fn new(
		tile_format: Option<TileFormat>, tile_precompression: Option<Precompression>,
		bbox_pyramide: TileBBoxPyramide, force_recompress: bool,
	) -> Self {
		TileConverterConfig {
			tile_format,
			tile_precompression,
			bbox_pyramide,
			tile_recompressor: None,
			compressor: None,
			force_recompress,
			finalized: false,
		}
	}
	pub fn finalize_with_parameters(&mut self, parameters: &TileReaderParameters) {
		self.bbox_pyramide.intersect(parameters.get_bbox_pyramide());

		self
			.tile_format
			.get_or_insert(parameters.get_tile_format().clone());
		self
			.tile_precompression
			.get_or_insert(*parameters.get_tile_precompression());

		let src_form = parameters.get_tile_format();
		let src_comp = parameters.get_tile_precompression();
		let dst_form = self.tile_format.as_ref().unwrap();
		let dst_comp = self.tile_precompression.as_ref().unwrap();
		let force_recompress = self.force_recompress;

		self.tile_recompressor = Some(DataConverter::new_tile_recompressor(
			src_form,
			src_comp,
			dst_form,
			dst_comp,
			force_recompress,
		));

		self.compressor = Some(DataConverter::new_compressor(dst_comp));

		self.finalized = true;
	}
	pub fn get_tile_recompressor(&self) -> &DataConverter {
		self.tile_recompressor.as_ref().unwrap()
	}
	pub fn get_compressor(&self) -> &DataConverter {
		self.compressor.as_ref().unwrap()
	}
	pub fn get_bbox_pyramide(&self) -> &TileBBoxPyramide {
		&self.bbox_pyramide
	}
	pub fn get_tile_format(&self) -> &TileFormat {
		self.tile_format.as_ref().unwrap()
	}
	pub fn get_tile_precompression(&self) -> &Precompression {
		self.tile_precompression.as_ref().unwrap()
	}
	pub fn get_max_zoom(&self) -> Option<u64> {
		self.bbox_pyramide.get_zoom_max()
	}
	pub fn get_min_zoom(&self) -> Option<u64> {
		self.bbox_pyramide.get_zoom_min()
	}
}