Tasmota/lib/libesp32_eink/epdiy/src/epd_internals.h
Theo Arends 2deb34e856 Update epdiy library
- ESP32 Platform from 2025.07.31 to 2025.08.30, Framework (Arduino Core) from v3.1.3.250712 to v3.1.3.250808 and IDF from v5.3.3.250707 to v5.3.3.250801 (#23778)
- Epdiy library from v1.0.0 to v2.0.0
2025-08-12 16:15:58 +02:00

90 lines
3.0 KiB
C

/**
* @file epd_internals.h
* @brief Internal definitions and auxiliary data types.
*
* Unless you want to extend the library itself (Which you are very welcome to do),
* you will most likely not need to know about this file.
*/
#ifndef EPD_INTERNALS_H
#define EPD_INTERNALS_H
#include <stdbool.h>
#include <stdint.h>
/// minimal draw time in ms for a frame layer,
/// which will allow all particles to set properly.
#define MINIMUM_FRAME_TIME 12
/// Frame draw time for monochrome mode in 1/10 us.
#define MONOCHROME_FRAME_TIME 120
typedef struct {
int phases;
const uint8_t* luts;
/// If we have timing information for the individual
/// phases, this is an array of the on-times for each phase.
/// Otherwise, this is NULL.
const int* phase_times;
} EpdWaveformPhases;
typedef struct {
uint8_t type;
uint8_t temp_ranges;
EpdWaveformPhases const** range_data;
} EpdWaveformMode;
typedef struct {
int min;
int max;
} EpdWaveformTempInterval;
typedef struct {
uint8_t num_modes;
uint8_t num_temp_ranges;
EpdWaveformMode const** mode_data;
EpdWaveformTempInterval const* temp_intervals;
} EpdWaveform;
extern const EpdWaveform epdiy_ED060SC4;
extern const EpdWaveform epdiy_ED097OC4;
extern const EpdWaveform epdiy_ED047TC1;
extern const EpdWaveform epdiy_ED047TC2;
extern const EpdWaveform epdiy_ED097TC2;
extern const EpdWaveform epdiy_ED060XC3;
extern const EpdWaveform epdiy_ED060SCT;
extern const EpdWaveform epdiy_ED133UT2;
extern const EpdWaveform epdiy_NULL;
/// Font data stored PER GLYPH
typedef struct {
uint16_t width; ///< Bitmap dimensions in pixels
uint16_t height; ///< Bitmap dimensions in pixels
uint16_t advance_x; ///< Distance to advance cursor (x axis)
int16_t left; ///< X dist from cursor pos to UL corner
int16_t top; ///< Y dist from cursor pos to UL corner
uint32_t compressed_size; ///< Size of the zlib-compressed font data.
uint32_t data_offset; ///< Pointer into EpdFont->bitmap
} EpdGlyph;
/// Glyph interval structure
typedef struct {
uint32_t first; ///< The first unicode code point of the interval
uint32_t last; ///< The last unicode code point of the interval
uint32_t offset; ///< Index of the first code point into the glyph array
} EpdUnicodeInterval;
/// Data stored for FONT AS A WHOLE
typedef struct {
const uint8_t* bitmap; ///< Glyph bitmaps, concatenated
const EpdGlyph* glyph; ///< Glyph array
const EpdUnicodeInterval* intervals; ///< Valid unicode intervals for this font
uint32_t interval_count; ///< Number of unicode intervals.
bool compressed; ///< Does this font use compressed glyph bitmaps?
uint16_t advance_y; ///< Newline distance (y axis)
int ascender; ///< Maximal height of a glyph above the base line
int descender; ///< Maximal height of a glyph below the base line
} EpdFont;
#endif // EPD_INTERNALS_H