pub(crate) struct ThumbnailMapImage {
image_buffer: RgbImage,
}Expand description
Represents a thumbnail image generated from a full-size map image.
This struct is designed to manage scaled-down versions of map images, which are useful for generating previews or comparing snapshots.
Fields§
§image_buffer: RgbImageThe underlying image buffer storing the pixel data of the thumbnail.
Implementations§
Source§impl ThumbnailMapImage
impl ThumbnailMapImage
Sourcepub(crate) const THUMBNAIL_SCALE_FACTOR: u32 = 25u32
pub(crate) const THUMBNAIL_SCALE_FACTOR: u32 = 25u32
Defines the scale factor for generating a thumbnail from a full-size map image.
The dimensions of the thumbnail are calculated by dividing the full-sized map dimensions by this constant.
Sourcepub(crate) fn thumbnail_size() -> Vec2D<u32>
pub(crate) fn thumbnail_size() -> Vec2D<u32>
Calculates the size of the thumbnail based on the full-size map dimensions.
This method uses the THUMBNAIL_SCALE_FACTOR to scale down the map size.
§Returns
A Vec2D<u32> representing the dimensions of the thumbnail.
Sourcepub(crate) fn from_fullsize(fullsize_map_image: &FullsizeMapImage) -> Self
pub(crate) fn from_fullsize(fullsize_map_image: &FullsizeMapImage) -> Self
Generates a thumbnail from a given full-sized map image.
This method scales down the provided FullsizeMapImage to create a thumbnail
using the pre-defined thumbnail_size.
§Arguments
fullsize_map_image- A reference to theFullsizeMapImageto be converted.
§Returns
A ThumbnailMapImage containing the scaled-down image.
Sourcepub(crate) fn from_snapshot<P: AsRef<Path>>(snapshot_path: P) -> Self
pub(crate) fn from_snapshot<P: AsRef<Path>>(snapshot_path: P) -> Self
Generates a thumbnail from a previously saved snapshot.
If the snapshot file exists, it is loaded and converted into a thumbnail. If it does not exist, a blank image with the dimensions of the thumbnail is created.
§Arguments
snapshot_path- The file path to the snapshot PNG.
§Returns
A ThumbnailMapImage containing either the loaded thumbnail image or a blank thumbnail.
Sourcepub(crate) async fn diff_with_snapshot<P: AsRef<Path>>(
&self,
base_snapshot_path: P,
) -> Result<EncodedImageExtract, Box<dyn Error>>
pub(crate) async fn diff_with_snapshot<P: AsRef<Path>>( &self, base_snapshot_path: P, ) -> Result<EncodedImageExtract, Box<dyn Error>>
Computes the difference between the current thumbnail and a snapshot.
This method compares the pixel data of the current thumbnail against a previously saved snapshot and creates a new image showing the differences. Pixels that are identical are marked as transparent, and differing pixels retain their values.
If the snapshot file does not exist, the current thumbnail is exported as a PNG.
§Arguments
base_snapshot_path- The file path to the base snapshot PNG.
§Returns
An EncodedImageExtract containing the diff image as a PNG.
§Errors
Returns an error if the snapshot file cannot be read or the PNG encoding fails.
Trait Implementations§
Source§impl MapImage for ThumbnailMapImage
impl MapImage for ThumbnailMapImage
Source§type Container = Vec<u8>
type Container = Vec<u8>
The container type for the pixel data, represented as a vector of bytes.
Source§type ViewSubBuffer = ImageBuffer<Rgb<u8>, Vec<u8>>
type ViewSubBuffer = ImageBuffer<Rgb<u8>, Vec<u8>>
The view type for sub-regions of the thumbnail, implemented as an ImageBuffer.
Source§fn mut_vec_view(
&mut self,
offset: Vec2D<u32>,
) -> SubBuffer<&mut ImageBuffer<Rgb<u8>, Vec<u8>>>
fn mut_vec_view( &mut self, offset: Vec2D<u32>, ) -> SubBuffer<&mut ImageBuffer<Rgb<u8>, Vec<u8>>>
Source§fn vec_view(
&self,
offset: Vec2D<u32>,
size: Vec2D<u32>,
) -> SubBuffer<&ImageBuffer<Rgb<u8>, Vec<u8>>>
fn vec_view( &self, offset: Vec2D<u32>, size: Vec2D<u32>, ) -> SubBuffer<&ImageBuffer<Rgb<u8>, Vec<u8>>>
Source§fn buffer(&self) -> &ImageBuffer<Self::Pixel, Self::Container>
fn buffer(&self) -> &ImageBuffer<Self::Pixel, Self::Container>
Returns a reference to the entire image buffer of the thumbnail.
§Returns
A reference to the image buffer storing the thumbnail’s pixel data.
Source§fn export_as_png(&self) -> Result<EncodedImageExtract, Box<dyn Error>>where
[<Self::Pixel as Pixel>::Subpixel]: EncodableLayout,
fn export_as_png(&self) -> Result<EncodedImageExtract, Box<dyn Error>>where
[<Self::Pixel as Pixel>::Subpixel]: EncodableLayout,
Source§fn export_area_as_png(
&self,
offset: Vec2D<u32>,
size: Vec2D<u32>,
) -> Result<EncodedImageExtract, Box<dyn Error>>where
[<<Self::ViewSubBuffer as GenericImageView>::Pixel as Pixel>::Subpixel]: EncodableLayout,
fn export_area_as_png(
&self,
offset: Vec2D<u32>,
size: Vec2D<u32>,
) -> Result<EncodedImageExtract, Box<dyn Error>>where
[<<Self::ViewSubBuffer as GenericImageView>::Pixel as Pixel>::Subpixel]: EncodableLayout,
Auto Trait Implementations§
impl Freeze for ThumbnailMapImage
impl RefUnwindSafe for ThumbnailMapImage
impl Send for ThumbnailMapImage
impl Sync for ThumbnailMapImage
impl Unpin for ThumbnailMapImage
impl UnwindSafe for ThumbnailMapImage
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
Source§fn lossless_try_into(self) -> Option<Dst>
fn lossless_try_into(self) -> Option<Dst>
Source§impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
Source§fn lossy_into(self) -> Dst
fn lossy_into(self) -> Dst
Source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
Source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
Source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
Source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
Source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
Source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
Source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.