ESPHome  2024.8.3
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Friends
esphome::online_image::OnlineImage Class Reference

Download an image from a given URL, and decode it using the specified decoder. More...

#include <online_image.h>

Inheritance diagram for esphome::online_image::OnlineImage:
esphome::PollingComponent esphome::image::Image esphome::Parented< esphome::http_request::HttpRequestComponent > esphome::Component esphome::display::BaseImage

Public Member Functions

 OnlineImage (const std::string &url, int width, int height, ImageFormat format, image::ImageType type, uint32_t buffer_size)
 Construct a new OnlineImage object. More...
 
void draw (int x, int y, display::Display *display, Color color_on, Color color_off) override
 
void update () override
 
void loop () override
 
void set_url (const std::string &url)
 Set the URL to download the image from. More...
 
void set_placeholder (image::Image *placeholder)
 Set the image that needs to be shown as long as the downloaded image is not available. More...
 
void release ()
 Release the buffer storing the image. More...
 
void add_on_finished_callback (std::function< void()> &&callback)
 
void add_on_error_callback (std::function< void()> &&callback)
 
- Public Member Functions inherited from esphome::PollingComponent
 PollingComponent ()
 
 PollingComponent (uint32_t update_interval)
 Initialize this polling component with the given update interval in ms. More...
 
virtual void set_update_interval (uint32_t update_interval)
 Manually set the update interval in ms for this polling object. More...
 
void call_setup () override
 
virtual uint32_t get_update_interval () const
 Get the update interval in ms of this sensor. More...
 
void start_poller ()
 
void stop_poller ()
 
- Public Member Functions inherited from esphome::Component
virtual void setup ()
 Where the component's initialization should happen. More...
 
virtual void dump_config ()
 
virtual float get_setup_priority () const
 priority of setup(). More...
 
float get_actual_setup_priority () const
 
void set_setup_priority (float priority)
 
virtual float get_loop_priority () const
 priority of loop(). More...
 
void call ()
 
virtual void on_shutdown ()
 
virtual void on_safe_shutdown ()
 
uint32_t get_component_state () const
 
virtual void mark_failed ()
 Mark this component as failed. More...
 
bool is_failed () const
 
bool is_ready () const
 
virtual bool can_proceed ()
 
bool status_has_warning () const
 
bool status_has_error () const
 
void status_set_warning (const char *message="unspecified")
 
void status_set_error (const char *message="unspecified")
 
void status_clear_warning ()
 
void status_clear_error ()
 
void status_momentary_warning (const std::string &name, uint32_t length=5000)
 
void status_momentary_error (const std::string &name, uint32_t length=5000)
 
bool has_overridden_loop () const
 
void set_component_source (const char *source)
 Set where this component was loaded from for some debug messages. More...
 
const char * get_component_source () const
 Get the integration where this component was declared as a string. More...
 
- Public Member Functions inherited from esphome::image::Image
 Image (const uint8_t *data_start, int width, int height, ImageType type)
 
Color get_pixel (int x, int y, Color color_on=display::COLOR_ON, Color color_off=display::COLOR_OFF) const
 
int get_width () const override
 
int get_height () const override
 
const uint8_t * get_data_start ()
 
ImageType get_type () const
 
void set_transparency (bool transparent)
 
bool has_transparency () const
 
- Public Member Functions inherited from esphome::Parented< esphome::http_request::HttpRequestComponent >
 Parented ()
 
 Parented (esphome::http_request::HttpRequestComponent *parent)
 
esphome::http_request::HttpRequestComponentget_parent () const
 Get the parent of this object. More...
 
void set_parent (esphome::http_request::HttpRequestComponent *parent)
 Set the parent of this object. More...
 

Protected Types

using Allocator = ExternalRAMAllocator< uint8_t >
 

Protected Member Functions

bool validate_url_ (const std::string &url)
 
uint32_t get_buffer_size_ () const
 
int get_buffer_size_ (int width, int height) const
 
int get_position_ (int x, int y) const
 
ESPHOME_ALWAYS_INLINE bool auto_resize_ () const
 
bool resize_ (int width, int height)
 
void draw_pixel_ (int x, int y, Color color)
 Draw a pixel into the buffer. More...
 
void end_connection_ ()
 
- Protected Member Functions inherited from esphome::Component
virtual void call_loop ()
 
virtual void call_dump_config ()
 
void set_interval (const std::string &name, uint32_t interval, std::function< void()> &&f)
 Set an interval function with a unique name. More...
 
void set_interval (uint32_t interval, std::function< void()> &&f)
 
bool cancel_interval (const std::string &name)
 Cancel an interval function. More...
 
void set_retry (const std::string &name, uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult(uint8_t)> &&f, float backoff_increase_factor=1.0f)
 Set an retry function with a unique name. More...
 
void set_retry (uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult(uint8_t)> &&f, float backoff_increase_factor=1.0f)
 
bool cancel_retry (const std::string &name)
 Cancel a retry function. More...
 
void set_timeout (const std::string &name, uint32_t timeout, std::function< void()> &&f)
 Set a timeout function with a unique name. More...
 
void set_timeout (uint32_t timeout, std::function< void()> &&f)
 
bool cancel_timeout (const std::string &name)
 Cancel a timeout function. More...
 
void defer (const std::string &name, std::function< void()> &&f)
 Defer a callback to the next loop() call. More...
 
void defer (std::function< void()> &&f)
 Defer a callback to the next loop() call. More...
 
bool cancel_defer (const std::string &name)
 Cancel a defer callback using the specified name, name must not be empty. More...
 
- Protected Member Functions inherited from esphome::image::Image
bool get_binary_pixel_ (int x, int y) const
 
Color get_rgb24_pixel_ (int x, int y) const
 
Color get_rgba_pixel_ (int x, int y) const
 
Color get_rgb565_pixel_ (int x, int y) const
 
Color get_grayscale_pixel_ (int x, int y) const
 

Protected Attributes

Allocator allocator_ {Allocator::Flags::ALLOW_FAILURE}
 
CallbackManager< void()> download_finished_callback_ {}
 
CallbackManager< void()> download_error_callback_ {}
 
std::shared_ptr< http_request::HttpContainerdownloader_ {nullptr}
 
std::unique_ptr< ImageDecoderdecoder_ {nullptr}
 
uint8_t * buffer_
 
DownloadBuffer download_buffer_
 
const ImageFormat format_
 
image::Imageplaceholder_ {nullptr}
 
std::string url_ {""}
 
const int fixed_width_
 width requested on configuration, or 0 if non specified. More...
 
const int fixed_height_
 height requested on configuration, or 0 if non specified. More...
 
int buffer_width_
 Actual width of the current image. More...
 
int buffer_height_
 Actual height of the current image. More...
 
- Protected Attributes inherited from esphome::PollingComponent
uint32_t update_interval_
 
- Protected Attributes inherited from esphome::Component
uint32_t component_state_ {0x0000}
 State of this component. More...
 
float setup_priority_override_ {NAN}
 
const char * component_source_ {nullptr}
 
- Protected Attributes inherited from esphome::image::Image
int width_
 
int height_
 
ImageType type_
 
const uint8_t * data_start_
 
bool transparent_
 
- Protected Attributes inherited from esphome::Parented< esphome::http_request::HttpRequestComponent >
esphome::http_request::HttpRequestComponentparent_
 

Friends

void ImageDecoder::set_size (int width, int height)
 
void ImageDecoder::draw (int x, int y, int w, int h, const Color &color)
 

Detailed Description

Download an image from a given URL, and decode it using the specified decoder.

The image will then be stored in a buffer, so that it can be re-displayed without the need to re-download or re-decode.

Definition at line 37 of file online_image.h.

Member Typedef Documentation

◆ Allocator

Definition at line 85 of file online_image.h.

Constructor & Destructor Documentation

◆ OnlineImage()

esphome::online_image::OnlineImage::OnlineImage ( const std::string &  url,
int  width,
int  height,
ImageFormat  format,
image::ImageType  type,
uint32_t  buffer_size 
)

Construct a new OnlineImage object.

Parameters
urlURL to download the image from.
widthDesired width of the target image area.
heightDesired height of the target image area.
formatFormat that the image is encoded in (
See also
ImageFormat).
Parameters
buffer_sizeSize of the buffer used to download the image.

Definition at line 27 of file online_image.cpp.

Member Function Documentation

◆ add_on_error_callback()

void esphome::online_image::OnlineImage::add_on_error_callback ( std::function< void()> &&  callback)

Definition at line 278 of file online_image.cpp.

◆ add_on_finished_callback()

void esphome::online_image::OnlineImage::add_on_finished_callback ( std::function< void()> &&  callback)

Definition at line 274 of file online_image.cpp.

◆ auto_resize_()

ESPHOME_ALWAYS_INLINE bool esphome::online_image::OnlineImage::auto_resize_ ( ) const
inlineprotected

Definition at line 97 of file online_image.h.

◆ draw()

void esphome::online_image::OnlineImage::draw ( int  x,
int  y,
display::Display display,
Color  color_on,
Color  color_off 
)
overridevirtual

Reimplemented from esphome::image::Image.

Definition at line 38 of file online_image.cpp.

◆ draw_pixel_()

void esphome::online_image::OnlineImage::draw_pixel_ ( int  x,
int  y,
Color  color 
)
protected

Draw a pixel into the buffer.

This is used by the decoder to fill the buffer that will later be displayed by the draw method. This will internally convert the supplied 32 bit RGBA color into the requested image storage format.

Parameters
xHorizontal pixel position.
yVertical pixel position.
color32 bit color to put into the pixel.

Definition at line 182 of file online_image.cpp.

◆ end_connection_()

void esphome::online_image::OnlineImage::end_connection_ ( )
protected

Definition at line 257 of file online_image.cpp.

◆ get_buffer_size_() [1/2]

uint32_t esphome::online_image::OnlineImage::get_buffer_size_ ( ) const
inlineprotected

Definition at line 88 of file online_image.h.

◆ get_buffer_size_() [2/2]

int esphome::online_image::OnlineImage::get_buffer_size_ ( int  width,
int  height 
) const
inlineprotected

Definition at line 89 of file online_image.h.

◆ get_position_()

int esphome::online_image::OnlineImage::get_position_ ( int  x,
int  y 
) const
inlineprotected

Definition at line 93 of file online_image.h.

◆ loop()

void esphome::online_image::OnlineImage::loop ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 147 of file online_image.cpp.

◆ release()

void esphome::online_image::OnlineImage::release ( )

Release the buffer storing the image.

The image will need to be downloaded again to be able to be displayed.

Definition at line 46 of file online_image.cpp.

◆ resize_()

bool esphome::online_image::OnlineImage::resize_ ( int  width,
int  height 
)
protected

Definition at line 60 of file online_image.cpp.

◆ set_placeholder()

void esphome::online_image::OnlineImage::set_placeholder ( image::Image placeholder)
inline

Set the image that needs to be shown as long as the downloaded image is not available.

Parameters
placeholderPointer to the (to show as placeholder.

Definition at line 71 of file online_image.h.

◆ set_url()

void esphome::online_image::OnlineImage::set_url ( const std::string &  url)
inline

Set the URL to download the image from.

Definition at line 59 of file online_image.h.

◆ update()

void esphome::online_image::OnlineImage::update ( )
overridevirtual

Implements esphome::PollingComponent.

Definition at line 98 of file online_image.cpp.

◆ validate_url_()

bool esphome::online_image::OnlineImage::validate_url_ ( const std::string &  url)
protected

Definition at line 266 of file online_image.cpp.

Friends And Related Function Documentation

◆ ImageDecoder::draw

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

◆ ImageDecoder::set_size

void ImageDecoder::set_size ( int  width,
int  height 
)
friend

Field Documentation

◆ allocator_

Allocator esphome::online_image::OnlineImage::allocator_ {Allocator::Flags::ALLOW_FAILURE}
protected

Definition at line 86 of file online_image.h.

◆ buffer_

uint8_t* esphome::online_image::OnlineImage::buffer_
protected

Definition at line 122 of file online_image.h.

◆ buffer_height_

int esphome::online_image::OnlineImage::buffer_height_
protected

Actual height of the current image.

If fixed_height_ is specified, this will be equal to it; otherwise it will be set once the decoding starts and the original size is known. This needs to be separate from "BaseImage::get_height()" because the latter must return 0 until the image has been decoded (to avoid showing partially decoded images).

Definition at line 151 of file online_image.h.

◆ buffer_width_

int esphome::online_image::OnlineImage::buffer_width_
protected

Actual width of the current image.

If fixed_width_ is specified, this will be equal to it; otherwise it will be set once the decoding starts and the original size is known. This needs to be separate from "BaseImage::get_width()" because the latter must return 0 until the image has been decoded (to avoid showing partially decoded images).

Definition at line 142 of file online_image.h.

◆ decoder_

std::unique_ptr<ImageDecoder> esphome::online_image::OnlineImage::decoder_ {nullptr}
protected

Definition at line 120 of file online_image.h.

◆ download_buffer_

DownloadBuffer esphome::online_image::OnlineImage::download_buffer_
protected

Definition at line 123 of file online_image.h.

◆ download_error_callback_

CallbackManager<void()> esphome::online_image::OnlineImage::download_error_callback_ {}
protected

Definition at line 117 of file online_image.h.

◆ download_finished_callback_

CallbackManager<void()> esphome::online_image::OnlineImage::download_finished_callback_ {}
protected

Definition at line 116 of file online_image.h.

◆ downloader_

std::shared_ptr<http_request::HttpContainer> esphome::online_image::OnlineImage::downloader_ {nullptr}
protected

Definition at line 119 of file online_image.h.

◆ fixed_height_

const int esphome::online_image::OnlineImage::fixed_height_
protected

height requested on configuration, or 0 if non specified.

Definition at line 133 of file online_image.h.

◆ fixed_width_

const int esphome::online_image::OnlineImage::fixed_width_
protected

width requested on configuration, or 0 if non specified.

Definition at line 131 of file online_image.h.

◆ format_

const ImageFormat esphome::online_image::OnlineImage::format_
protected

Definition at line 125 of file online_image.h.

◆ placeholder_

image::Image* esphome::online_image::OnlineImage::placeholder_ {nullptr}
protected

Definition at line 126 of file online_image.h.

◆ url_

std::string esphome::online_image::OnlineImage::url_ {""}
protected

Definition at line 128 of file online_image.h.


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