Struct plotters_bitmap::BitMapBackend

source ·
pub struct BitMapBackend<'a, P: PixelFormat = RGBPixel> { /* private fields */ }
Expand description

The backend that drawing a bitmap

§Warning

You should call .present()? on a BitMapBackend, not just drop it or allow it to go out of scope.

If the BitMapBackend is just dropped, it will make a best effort attempt to write the generated charts to the output file, but any errors that occur (such as inability to create the output file) will be silently ignored.

Implementations§

source§

impl<'a> BitMapBackend<'a, RGBPixel>

source

pub fn new<T: AsRef<Path> + ?Sized>(path: &'a T, (w, h): (u32, u32)) -> Self

Create a new bitmap backend

source

pub fn gif<T: AsRef<Path>>( path: T, (w, h): (u32, u32), frame_delay: u32, ) -> Result<Self, BitMapBackendError>

Create a new bitmap backend that generate GIF animation

When this is used, the bitmap backend acts similar to a real-time rendering backend. When the program finished drawing one frame, use present function to flush the frame into the GIF file.

  • path: The path to the GIF file to create
  • dimension: The size of the GIF image
  • speed: The amount of time for each frame to display
source

pub fn with_buffer(buf: &'a mut [u8], (w, h): (u32, u32)) -> Self

Create a new bitmap backend which only lives in-memory

When this is used, the bitmap backend will write to a user provided u8 array (or Vec<u8>) in RGB pixel format.

Note: This function provides backward compatibility for those code that assumes Plotters uses RGB pixel format and manipulates the in-memory framebuffer. For more pixel format option, use with_buffer_and_format instead.

  • buf: The buffer to operate
  • dimension: The size of the image in pixels
  • returns: The newly created bitmap backend
source§

impl<'a, P: PixelFormat> BitMapBackend<'a, P>

source

pub fn with_buffer_and_format( buf: &'a mut [u8], (w, h): (u32, u32), ) -> Result<Self, BitMapBackendError>

Create a new bitmap backend with a in-memory buffer with specific pixel format.

Note: This can be used as a way to manipulate framebuffer, mmap can be used on the top of this as well.

  • buf: The buffer to operate
  • dimension: The size of the image in pixels
  • returns: The newly created bitmap backend
source

pub fn split(&mut self, area_size: &[u32]) -> Vec<BitMapBackend<'_, P>>

Split a bitmap backend vertically into several sub drawing area which allows multi-threading rendering.

  • area_size: The size of the area
  • returns: The split backends that can be rendered in parallel

Trait Implementations§

source§

impl<'a, P: PixelFormat> DrawingBackend for BitMapBackend<'a, P>

source§

type ErrorType = BitMapBackendError

The error type reported by the backend
source§

fn get_size(&self) -> (u32, u32)

Get the dimension of the drawing backend in pixels
source§

fn ensure_prepared( &mut self, ) -> Result<(), DrawingErrorKind<BitMapBackendError>>

Ensure the backend is ready to draw
source§

fn present(&mut self) -> Result<(), DrawingErrorKind<BitMapBackendError>>

Finalize the drawing step and present all the changes. This is used as the real-time rendering support. The backend may implement in the following way, when ensure_prepared is called it checks if it needs a fresh buffer and present is called rendering all the pending changes on the screen.
source§

fn draw_pixel( &mut self, point: BackendCoord, color: BackendColor, ) -> Result<(), DrawingErrorKind<BitMapBackendError>>

Draw a pixel on the drawing backend Read more
source§

fn draw_line<S: BackendStyle>( &mut self, from: (i32, i32), to: (i32, i32), style: &S, ) -> Result<(), DrawingErrorKind<Self::ErrorType>>

Draw a line on the drawing backend Read more
source§

fn draw_rect<S: BackendStyle>( &mut self, upper_left: (i32, i32), bottom_right: (i32, i32), style: &S, fill: bool, ) -> Result<(), DrawingErrorKind<Self::ErrorType>>

Draw a rectangle on the drawing backend Read more
source§

fn blit_bitmap( &mut self, pos: BackendCoord, (sw, sh): (u32, u32), src: &[u8], ) -> Result<(), DrawingErrorKind<Self::ErrorType>>

Blit a bitmap on to the backend. Read more
source§

fn draw_path<S, I>( &mut self, path: I, style: &S, ) -> Result<(), DrawingErrorKind<Self::ErrorType>>
where S: BackendStyle, I: IntoIterator<Item = (i32, i32)>,

Draw a path on the drawing backend Read more
source§

fn draw_circle<S>( &mut self, center: (i32, i32), radius: u32, style: &S, fill: bool, ) -> Result<(), DrawingErrorKind<Self::ErrorType>>
where S: BackendStyle,

Draw a circle on the drawing backend Read more
source§

fn fill_polygon<S, I>( &mut self, vert: I, style: &S, ) -> Result<(), DrawingErrorKind<Self::ErrorType>>
where S: BackendStyle, I: IntoIterator<Item = (i32, i32)>,

source§

fn draw_text<TStyle>( &mut self, text: &str, style: &TStyle, pos: (i32, i32), ) -> Result<(), DrawingErrorKind<Self::ErrorType>>
where TStyle: BackendTextStyle,

Draw a text on the drawing backend Read more
source§

fn estimate_text_size<TStyle>( &self, text: &str, style: &TStyle, ) -> Result<(u32, u32), DrawingErrorKind<Self::ErrorType>>
where TStyle: BackendTextStyle,

Estimate the size of the horizontal text if rendered on this backend. This is important because some of the backend may not have font ability. Thus this allows those backend reports proper value rather than ask the font rasterizer for that. Read more
source§

impl<P: PixelFormat> Drop for BitMapBackend<'_, P>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<'a, P> Freeze for BitMapBackend<'a, P>

§

impl<'a, P> RefUnwindSafe for BitMapBackend<'a, P>
where P: RefUnwindSafe,

§

impl<'a, P> Send for BitMapBackend<'a, P>
where P: Send,

§

impl<'a, P> Sync for BitMapBackend<'a, P>
where P: Sync,

§

impl<'a, P> Unpin for BitMapBackend<'a, P>
where P: Unpin,

§

impl<'a, P = RGBPixel> !UnwindSafe for BitMapBackend<'a, P>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.