diff --git a/esphome/components/display/display_buffer.cpp b/esphome/components/display/display_buffer.cpp index d00fdd52..ca866a43 100644 --- a/esphome/components/display/display_buffer.cpp +++ b/esphome/components/display/display_buffer.cpp @@ -584,6 +584,12 @@ void Animation::next_frame() { this->current_frame_ = 0; } } +void Animation::prev_frame() { + this->current_frame_--; + if (this->current_frame_ < 0) { + this->current_frame_ = this->animation_frame_count_ - 1; + } +} DisplayPage::DisplayPage(display_writer_t writer) : writer_(std::move(writer)) {} void DisplayPage::show() { this->parent_->show_page(this); } diff --git a/esphome/components/display/display_buffer.h b/esphome/components/display/display_buffer.h index 86221c5f..33f55aa3 100644 --- a/esphome/components/display/display_buffer.h +++ b/esphome/components/display/display_buffer.h @@ -478,6 +478,7 @@ class Animation : public Image { int get_animation_frame_count() const; int get_current_frame() const; void next_frame(); + void prev_frame(); protected: int current_frame_;