ESPHome 2025.6.3
Loading...
Searching...
No Matches
sdl_esphome.h
Go to the documentation of this file.
1#pragma once
2
3#ifdef USE_HOST
5#include "esphome/core/log.h"
8#define SDL_MAIN_HANDLED
9#include "SDL.h"
10#include <map>
11
12namespace esphome {
13namespace sdl {
14
15constexpr static const char *const TAG = "sdl";
16
17class Sdl : public display::Display {
18 public:
20 void update() override;
21 void loop() override;
22 void setup() override;
23 void draw_pixels_at(int x_start, int y_start, int w, int h, const uint8_t *ptr, display::ColorOrder order,
24 display::ColorBitness bitness, bool big_endian, int x_offset, int y_offset, int x_pad) override;
25 void draw_pixel_at(int x, int y, Color color) override;
26 void process_key(uint32_t keycode, bool down);
27 void set_dimensions(uint16_t width, uint16_t height) {
28 this->width_ = width;
29 this->height_ = height;
30 }
31 void set_window_options(uint32_t window_options) { this->window_options_ = window_options; }
32 void set_position(uint16_t pos_x, uint16_t pos_y) {
33 this->pos_x_ = pos_x;
34 this->pos_y_ = pos_y;
35 }
36 int get_width() override { return this->width_; }
37 int get_height() override { return this->height_; }
38 float get_setup_priority() const override { return setup_priority::HARDWARE; }
39 void dump_config() override { LOG_DISPLAY("", "SDL", this); }
40 void add_key_listener(int32_t keycode, std::function<void(bool)> &&callback) {
41 if (!this->key_callbacks_.count(keycode)) {
43 }
44 this->key_callbacks_[keycode].add(std::move(callback));
45 }
46
47 int mouse_x{};
48 int mouse_y{};
49 bool mouse_down{};
50
51 protected:
52 int get_width_internal() override { return this->width_; }
53 int get_height_internal() override { return this->height_; }
54 void redraw_(SDL_Rect &rect);
55 int width_{};
56 int height_{};
57 uint32_t window_options_{0};
58 int pos_x_{SDL_WINDOWPOS_UNDEFINED};
59 int pos_y_{SDL_WINDOWPOS_UNDEFINED};
60 SDL_Renderer *renderer_{};
61 SDL_Window *window_{};
62 SDL_Texture *texture_{};
63 uint16_t x_low_{0};
64 uint16_t y_low_{0};
65 uint16_t x_high_{0};
66 uint16_t y_high_{0};
67 std::map<int32_t, CallbackManager<void(bool)>> key_callbacks_{};
68};
69} // namespace sdl
70} // namespace esphome
71
72#endif
uint8_t h
Definition bl0906.h:2
uint32_t window_options_
Definition sdl_esphome.h:57
void setup() override
void set_window_options(uint32_t window_options)
Definition sdl_esphome.h:31
int get_width() override
Definition sdl_esphome.h:36
void add_key_listener(int32_t keycode, std::function< void(bool)> &&callback)
Definition sdl_esphome.h:40
int get_height() override
Definition sdl_esphome.h:37
SDL_Renderer * renderer_
Definition sdl_esphome.h:60
void draw_pixels_at(int x_start, int y_start, int w, int h, const uint8_t *ptr, display::ColorOrder order, display::ColorBitness bitness, bool big_endian, int x_offset, int y_offset, int x_pad) override
int get_height_internal() override
Definition sdl_esphome.h:53
void process_key(uint32_t keycode, bool down)
SDL_Texture * texture_
Definition sdl_esphome.h:62
void set_dimensions(uint16_t width, uint16_t height)
Definition sdl_esphome.h:27
void redraw_(SDL_Rect &rect)
void loop() override
void dump_config() override
Definition sdl_esphome.h:39
void set_position(uint16_t pos_x, uint16_t pos_y)
Definition sdl_esphome.h:32
void draw_pixel_at(int x, int y, Color color) override
int get_width_internal() override
Definition sdl_esphome.h:52
void update() override
float get_setup_priority() const override
Definition sdl_esphome.h:38
display::DisplayType get_display_type() override
Definition sdl_esphome.h:19
SDL_Window * window_
Definition sdl_esphome.h:61
std::map< int32_t, CallbackManager< void(bool)> > key_callbacks_
Definition sdl_esphome.h:67
const float HARDWARE
For components that deal with hardware and are very important like GPIO switch.
Definition component.cpp:19
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7
uint16_t x
Definition tt21100.cpp:5
uint16_t y
Definition tt21100.cpp:6