ESPHome  2024.11.0
Public Member Functions | Protected Attributes
esphome::online_image::ImageDecoder Class Reference

Class to abstract decoding different image formats. More...

#include <image_decoder.h>

Inheritance diagram for esphome::online_image::ImageDecoder:
esphome::online_image::PngDecoder

Public Member Functions

 ImageDecoder (OnlineImage *image)
 Construct a new Image Decoder object. More...
 
virtual ~ImageDecoder ()=default
 
virtual void prepare (uint32_t download_size)
 Initialize the decoder. More...
 
virtual int decode (uint8_t *buffer, size_t size)
 Decode a part of the image. More...
 
void set_size (int width, int height)
 Request the image to be resized once the actual dimensions are known. More...
 
void draw (int x, int y, int w, int h, const Color &color)
 Draw a rectangle on the display_buffer using the defined color. More...
 
bool is_finished () const
 

Protected Attributes

OnlineImageimage_
 
uint32_t download_size_ = 1
 
uint32_t decoded_bytes_ = 0
 
double x_scale_ = 1.0
 
double y_scale_ = 1.0
 

Detailed Description

Class to abstract decoding different image formats.

Definition at line 13 of file image_decoder.h.

Constructor & Destructor Documentation

◆ ImageDecoder()

esphome::online_image::ImageDecoder::ImageDecoder ( OnlineImage image)
inline

Construct a new Image Decoder object.

Parameters
imageThe image to decode the stream into.

Definition at line 20 of file image_decoder.h.

◆ ~ImageDecoder()

virtual esphome::online_image::ImageDecoder::~ImageDecoder ( )
virtualdefault

Member Function Documentation

◆ decode()

virtual int esphome::online_image::ImageDecoder::decode ( uint8_t *  buffer,
size_t  size 
)
virtual

Decode a part of the image.

It will try reading from the buffer. There is no guarantee that the whole available buffer will be read/decoded; the method will return the amount of bytes actually decoded, so that the unread content can be moved to the beginning.

Parameters
bufferThe buffer to read from.
sizeThe maximum amount of bytes that can be read from the buffer.
Returns
int The amount of bytes read. It can be 0 if the buffer does not have enough content to meaningfully decode anything, or negative in case of a decoding error.

Reimplemented in esphome::online_image::PngDecoder.

◆ draw()

void esphome::online_image::ImageDecoder::draw ( int  x,
int  y,
int  w,
int  h,
const Color color 
)

Draw a rectangle on the display_buffer using the defined color.

Will check the given coordinates for out-of-bounds, and clip the rectangle accordingly. In case of binary displays, the color will be converted to binary as well. Called by the callback functions, to be able to access the parent Image class.

Parameters
xThe left-most coordinate of the rectangle.
yThe top-most coordinate of the rectangle.
wThe width of the rectangle.
hThe height of the rectangle.
colorThe color to draw the rectangle with.

Definition at line 17 of file image_decoder.cpp.

◆ is_finished()

bool esphome::online_image::ImageDecoder::is_finished ( ) const
inline

Definition at line 66 of file image_decoder.h.

◆ prepare()

virtual void esphome::online_image::ImageDecoder::prepare ( uint32_t  download_size)
inlinevirtual

Initialize the decoder.

Parameters
download_sizeThe total number of bytes that need to be download for the image.

Reimplemented in esphome::online_image::PngDecoder.

Definition at line 28 of file image_decoder.h.

◆ set_size()

void esphome::online_image::ImageDecoder::set_size ( int  width,
int  height 
)

Request the image to be resized once the actual dimensions are known.

Called by the callback functions, to be able to access the parent Image class.

Parameters
widthThe image's width.
heightThe image's height.

Definition at line 11 of file image_decoder.cpp.

Field Documentation

◆ decoded_bytes_

uint32_t esphome::online_image::ImageDecoder::decoded_bytes_ = 0
protected

Definition at line 73 of file image_decoder.h.

◆ download_size_

uint32_t esphome::online_image::ImageDecoder::download_size_ = 1
protected

Definition at line 72 of file image_decoder.h.

◆ image_

OnlineImage* esphome::online_image::ImageDecoder::image_
protected

Definition at line 69 of file image_decoder.h.

◆ x_scale_

double esphome::online_image::ImageDecoder::x_scale_ = 1.0
protected

Definition at line 74 of file image_decoder.h.

◆ y_scale_

double esphome::online_image::ImageDecoder::y_scale_ = 1.0
protected

Definition at line 75 of file image_decoder.h.


The documentation for this class was generated from the following files: