|
|
|
|
@ -219,7 +219,7 @@ namespace esphome
|
|
|
|
|
void EHMTX::blank_screen(int lifetime, int showtime)
|
|
|
|
|
{
|
|
|
|
|
auto scr = this->find_free_queue_element();
|
|
|
|
|
scr->screen_time = showtime;
|
|
|
|
|
scr->screen_time_ = showtime;
|
|
|
|
|
scr->mode = MODE_BLANK;
|
|
|
|
|
scr->endtime = this->clock->now().timestamp + lifetime * 60;
|
|
|
|
|
}
|
|
|
|
|
@ -259,7 +259,7 @@ namespace esphome
|
|
|
|
|
{
|
|
|
|
|
ESP_LOGD(TAG, "force_screen: found position: %d", i);
|
|
|
|
|
this->queue[i]->last_time = 0;
|
|
|
|
|
this->queue[i]->endtime += this->queue[i]->screen_time;
|
|
|
|
|
this->queue[i]->endtime += this->queue[i]->screen_time_;
|
|
|
|
|
this->next_action_time = this->clock->now().timestamp;
|
|
|
|
|
ESP_LOGW(TAG, "force_screen: icon %s in mode %d", icon_name.c_str(), mode);
|
|
|
|
|
}
|
|
|
|
|
@ -322,7 +322,7 @@ namespace esphome
|
|
|
|
|
this->queue[i]->endtime = 0;
|
|
|
|
|
if (this->queue[i]->mode != MODE_EMPTY)
|
|
|
|
|
{
|
|
|
|
|
ESP_LOGD(TAG, "remove expired queue element: removed slot %d: icon_name: %s text: %s", i, this->queue[i]->icon_name.c_str(), this->queue[i]->text.c_str());
|
|
|
|
|
ESP_LOGD(TAG, "remove expired queue element: slot %d: icon_name: %s text: %s", i, this->queue[i]->icon_name.c_str(), this->queue[i]->text.c_str());
|
|
|
|
|
for (auto *t : on_expired_screen_triggers_)
|
|
|
|
|
{
|
|
|
|
|
infotext = "";
|
|
|
|
|
@ -384,7 +384,7 @@ namespace esphome
|
|
|
|
|
if (this->screen_pointer != MAXQUEUE)
|
|
|
|
|
{
|
|
|
|
|
this->queue[this->screen_pointer]->shiftx_ = 0;
|
|
|
|
|
this->queue[this->screen_pointer]->last_time = ts + this->queue[this->screen_pointer]->screen_time;
|
|
|
|
|
this->queue[this->screen_pointer]->last_time = ts + this->queue[this->screen_pointer]->screen_time_;
|
|
|
|
|
if (this->queue[this->screen_pointer]->icon < this->icon_count)
|
|
|
|
|
{
|
|
|
|
|
this->icons[this->queue[this->screen_pointer]->icon]->set_frame(0);
|
|
|
|
|
@ -544,35 +544,14 @@ namespace esphome
|
|
|
|
|
}
|
|
|
|
|
EHMTX_queue *screen = this->find_icon_queue_element(icon);
|
|
|
|
|
|
|
|
|
|
int x, y, pixel, h;
|
|
|
|
|
if (default_font)
|
|
|
|
|
{
|
|
|
|
|
this->display->get_text_bounds(0, 0, text.c_str(), this->default_font, display::TextAlign::LEFT, &x, &y, &pixel, &h);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this->display->get_text_bounds(0, 0, text.c_str(), this->special_font, display::TextAlign::LEFT, &x, &y, &pixel, &h);
|
|
|
|
|
}
|
|
|
|
|
if (pixel < 23)
|
|
|
|
|
{
|
|
|
|
|
screen->centerx_ = ceil((22 - pixel) / 2);
|
|
|
|
|
screen->screen_time = screen_time;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
screen->centerx_ = 0;
|
|
|
|
|
int display_duration = ceil((this->scroll_count * (TEXTSTARTOFFSET + pixel) * this->scroll_interval) / 1000);
|
|
|
|
|
screen->screen_time = (display_duration > screen_time) ? display_duration : screen_time;
|
|
|
|
|
}
|
|
|
|
|
screen->text = text;
|
|
|
|
|
screen->pixels_ = pixel;
|
|
|
|
|
screen->endtime = this->clock->now().timestamp + lifetime * 60;
|
|
|
|
|
screen->shiftx_ = 0;
|
|
|
|
|
screen->text_color = Color(r, g, b);
|
|
|
|
|
screen->default_font = default_font;
|
|
|
|
|
screen->mode = MODE_ICON_SCREEN;
|
|
|
|
|
screen->icon_name = iconname;
|
|
|
|
|
screen->icon = icon;
|
|
|
|
|
screen->calc_scroll_time(text,screen_time);
|
|
|
|
|
for (auto *t : on_add_screen_triggers_)
|
|
|
|
|
{
|
|
|
|
|
t->process(screen->icon_name, (uint8_t)screen->mode);
|
|
|
|
|
@ -595,35 +574,15 @@ namespace esphome
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
EHMTX_queue *screen = this->find_icon_queue_element(icon);
|
|
|
|
|
|
|
|
|
|
int x, y, pixel, h;
|
|
|
|
|
if (default_font)
|
|
|
|
|
{
|
|
|
|
|
this->display->get_text_bounds(0, 0, text.c_str(), this->default_font, display::TextAlign::LEFT, &x, &y, &pixel, &h);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this->display->get_text_bounds(0, 0, text.c_str(), this->special_font, display::TextAlign::LEFT, &x, &y, &pixel, &h);
|
|
|
|
|
}
|
|
|
|
|
if (pixel < 23)
|
|
|
|
|
{
|
|
|
|
|
screen->centerx_ = ceil((22 - pixel) / 2);
|
|
|
|
|
screen->screen_time = screen_time;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
screen->centerx_ = 0;
|
|
|
|
|
int display_duration = ceil((this->scroll_count * (TEXTSTARTOFFSET + pixel) * this->scroll_interval) / 1000);
|
|
|
|
|
screen->screen_time = (display_duration > screen_time) ? display_duration : screen_time;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
screen->text = text;
|
|
|
|
|
screen->pixels_ = pixel;
|
|
|
|
|
|
|
|
|
|
screen->endtime = this->clock->now().timestamp + lifetime * 60;
|
|
|
|
|
screen->shiftx_ = 0;
|
|
|
|
|
screen->default_font = default_font;
|
|
|
|
|
screen->mode = MODE_RAINBOW_ICON;
|
|
|
|
|
screen->icon_name = iconname;
|
|
|
|
|
screen->icon = icon;
|
|
|
|
|
screen->calc_scroll_time(text,screen_time);
|
|
|
|
|
for (auto *t : on_add_screen_triggers_)
|
|
|
|
|
{
|
|
|
|
|
t->process(screen->icon_name, (uint8_t)screen->mode);
|
|
|
|
|
@ -639,7 +598,7 @@ namespace esphome
|
|
|
|
|
ESP_LOGD(TAG, "rainbow_clock_screen lifetime: %d screen_time: %d", lifetime, screen_time);
|
|
|
|
|
screen->mode = MODE_RAINBOW_CLOCK;
|
|
|
|
|
screen->default_font = default_font;
|
|
|
|
|
screen->screen_time = (screen_time > this->clock_interval)?screen_time:this->clock_interval-1;
|
|
|
|
|
screen->screen_time_ = (screen_time > this->clock_interval)?screen_time:this->clock_interval-1;
|
|
|
|
|
screen->endtime = this->clock->now().timestamp + lifetime * 60;
|
|
|
|
|
screen->status();
|
|
|
|
|
}
|
|
|
|
|
@ -651,7 +610,7 @@ namespace esphome
|
|
|
|
|
ESP_LOGD(TAG, "rainbow_date_screen lifetime: %d screen_time: %d", lifetime, screen_time);
|
|
|
|
|
screen->mode = MODE_RAINBOW_DATE;
|
|
|
|
|
screen->default_font = default_font;
|
|
|
|
|
screen->screen_time = screen_time;
|
|
|
|
|
screen->screen_time_ = screen_time;
|
|
|
|
|
screen->endtime = this->clock->now().timestamp + lifetime * 60;
|
|
|
|
|
screen->status();
|
|
|
|
|
}
|
|
|
|
|
@ -662,24 +621,21 @@ namespace esphome
|
|
|
|
|
|
|
|
|
|
screen->text = text;
|
|
|
|
|
screen->endtime = this->clock->now().timestamp + lifetime * 60;
|
|
|
|
|
screen->screen_time = screen_time;
|
|
|
|
|
screen->default_font = default_font;
|
|
|
|
|
screen->text_color = Color(r, g, b);
|
|
|
|
|
screen->mode = MODE_TEXT_SCREEN;
|
|
|
|
|
screen->calc_scroll_time();
|
|
|
|
|
screen->calc_scroll_time(text,screen_time);
|
|
|
|
|
screen->status();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void EHMTX::rainbow_text_screen(std::string text, int lifetime, int screen_time, bool default_font)
|
|
|
|
|
{
|
|
|
|
|
EHMTX_queue *screen = this->find_free_queue_element();
|
|
|
|
|
|
|
|
|
|
screen->text = text;
|
|
|
|
|
screen->endtime = this->clock->now().timestamp + lifetime * 60;
|
|
|
|
|
screen->screen_time = screen_time;
|
|
|
|
|
screen->default_font = default_font;
|
|
|
|
|
screen->mode = MODE_RAINBOW_TEXT;
|
|
|
|
|
screen->calc_scroll_time();
|
|
|
|
|
screen->calc_scroll_time(text,screen_time);
|
|
|
|
|
screen->status();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -701,7 +657,7 @@ namespace esphome
|
|
|
|
|
screen->mode = MODE_FULL_SCREEN;
|
|
|
|
|
screen->icon = icon;
|
|
|
|
|
screen->icon_name = iconname;
|
|
|
|
|
screen->screen_time = screen_time;
|
|
|
|
|
screen->screen_time_ = screen_time;
|
|
|
|
|
screen->endtime = this->clock->now().timestamp + lifetime * 60;
|
|
|
|
|
for (auto *t : on_add_screen_triggers_)
|
|
|
|
|
{
|
|
|
|
|
@ -719,7 +675,7 @@ namespace esphome
|
|
|
|
|
ESP_LOGD(TAG, "clock_screen_color lifetime: %d screen_time: %d red: %d green: %d blue: %d", lifetime, screen_time, r, g, b);
|
|
|
|
|
screen->mode = MODE_CLOCK;
|
|
|
|
|
screen->default_font = default_font;
|
|
|
|
|
screen->screen_time = (screen_time > this->clock_interval)?screen_time:this->clock_interval-1;
|
|
|
|
|
screen->screen_time_ = (this->clock_interval > screen_time )?screen_time:this->clock_interval-1;
|
|
|
|
|
screen->endtime = this->clock->now().timestamp + lifetime * 60;
|
|
|
|
|
screen->status();
|
|
|
|
|
}
|
|
|
|
|
@ -731,7 +687,7 @@ namespace esphome
|
|
|
|
|
screen->text_color = Color(r, g, b);
|
|
|
|
|
ESP_LOGD(TAG, "date_screen lifetime: %d screen_time: %d red: %d green: %d blue: %d", lifetime, screen_time, r, g, b);
|
|
|
|
|
screen->mode = MODE_DATE;
|
|
|
|
|
screen->screen_time = screen_time;
|
|
|
|
|
screen->screen_time_ = screen_time;
|
|
|
|
|
screen->default_font = default_font;
|
|
|
|
|
screen->endtime = this->clock->now().timestamp + lifetime * 60;
|
|
|
|
|
screen->status();
|
|
|
|
|
@ -777,6 +733,15 @@ namespace esphome
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void EHMTX::set_rtl(bool b)
|
|
|
|
|
{
|
|
|
|
|
this->rtl = b;
|
|
|
|
|
if (b)
|
|
|
|
|
{
|
|
|
|
|
ESP_LOGI(TAG, "show text right to left");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void EHMTX::set_show_seconds(bool b)
|
|
|
|
|
{
|
|
|
|
|
this->show_seconds = b;
|
|
|
|
|
|