mirror of
https://github.com/esphome/esphome.git
synced 2024-12-22 05:24:53 +01:00
[font] Make display an auto-load, not a dependency (#7366)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
This commit is contained in:
parent
ca2f25e73b
commit
61223a3cc9
6 changed files with 55 additions and 31 deletions
|
@ -1,15 +1,15 @@
|
|||
from esphome import automation, core
|
||||
from esphome.automation import maybe_simple_id
|
||||
import esphome.codegen as cg
|
||||
import esphome.config_validation as cv
|
||||
from esphome import core, automation
|
||||
from esphome.automation import maybe_simple_id
|
||||
from esphome.const import (
|
||||
CONF_AUTO_CLEAR_ENABLED,
|
||||
CONF_FROM,
|
||||
CONF_ID,
|
||||
CONF_LAMBDA,
|
||||
CONF_PAGES,
|
||||
CONF_PAGE_ID,
|
||||
CONF_PAGES,
|
||||
CONF_ROTATION,
|
||||
CONF_FROM,
|
||||
CONF_TO,
|
||||
CONF_TRIGGER_ID,
|
||||
)
|
||||
|
@ -195,3 +195,4 @@ async def display_is_displaying_page_to_code(config, condition_id, template_arg,
|
|||
@coroutine_with_priority(100.0)
|
||||
async def to_code(config):
|
||||
cg.add_global(display_ns.using)
|
||||
cg.add_define("USE_DISPLAY")
|
||||
|
|
|
@ -1,43 +1,35 @@
|
|||
import functools
|
||||
import hashlib
|
||||
import logging
|
||||
|
||||
import functools
|
||||
from pathlib import Path
|
||||
import os
|
||||
from pathlib import Path
|
||||
import re
|
||||
|
||||
from packaging import version
|
||||
import requests
|
||||
|
||||
from esphome import core
|
||||
from esphome import external_files
|
||||
import esphome.config_validation as cv
|
||||
from esphome import core, external_files
|
||||
import esphome.codegen as cg
|
||||
from esphome.helpers import (
|
||||
copy_file_if_changed,
|
||||
cpp_string_escape,
|
||||
)
|
||||
import esphome.config_validation as cv
|
||||
from esphome.const import (
|
||||
CONF_FAMILY,
|
||||
CONF_FILE,
|
||||
CONF_GLYPHS,
|
||||
CONF_ID,
|
||||
CONF_PATH,
|
||||
CONF_RAW_DATA_ID,
|
||||
CONF_TYPE,
|
||||
CONF_REFRESH,
|
||||
CONF_SIZE,
|
||||
CONF_PATH,
|
||||
CONF_WEIGHT,
|
||||
CONF_TYPE,
|
||||
CONF_URL,
|
||||
CONF_WEIGHT,
|
||||
)
|
||||
from esphome.core import (
|
||||
CORE,
|
||||
HexInt,
|
||||
)
|
||||
from esphome.core import CORE, HexInt
|
||||
from esphome.helpers import copy_file_if_changed, cpp_string_escape
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
DOMAIN = "font"
|
||||
DEPENDENCIES = ["display"]
|
||||
MULTI_CONF = True
|
||||
|
||||
CODEOWNERS = ["@esphome/core", "@clydebarrow"]
|
||||
|
@ -400,10 +392,7 @@ class EFont:
|
|||
|
||||
|
||||
def convert_bitmap_to_pillow_font(filepath):
|
||||
from PIL import (
|
||||
PcfFontFile,
|
||||
BdfFontFile,
|
||||
)
|
||||
from PIL import BdfFontFile, PcfFontFile
|
||||
|
||||
local_bitmap_font_file = external_files.compute_local_file_dir(
|
||||
DOMAIN,
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
#include "font.h"
|
||||
|
||||
#include "esphome/core/color.h"
|
||||
#include "esphome/core/hal.h"
|
||||
#include "esphome/core/log.h"
|
||||
#include "esphome/core/color.h"
|
||||
#include "esphome/components/display/display_buffer.h"
|
||||
|
||||
namespace esphome {
|
||||
namespace font {
|
||||
|
@ -68,6 +67,7 @@ int Font::match_next_glyph(const uint8_t *str, int *match_length) {
|
|||
return -1;
|
||||
return lo;
|
||||
}
|
||||
#ifdef USE_DISPLAY
|
||||
void Font::measure(const char *str, int *width, int *x_offset, int *baseline, int *height) {
|
||||
*baseline = this->baseline_;
|
||||
*height = this->height_;
|
||||
|
@ -164,6 +164,7 @@ void Font::print(int x_start, int y_start, display::Display *display, Color colo
|
|||
i += match_length;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
} // namespace font
|
||||
} // namespace esphome
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
#pragma once
|
||||
|
||||
#include "esphome/core/datatypes.h"
|
||||
#include "esphome/core/color.h"
|
||||
#include "esphome/components/display/display_buffer.h"
|
||||
#include "esphome/core/datatypes.h"
|
||||
#include "esphome/core/defines.h"
|
||||
#ifdef USE_DISPLAY
|
||||
#include "esphome/components/display/display.h"
|
||||
#endif
|
||||
|
||||
namespace esphome {
|
||||
namespace font {
|
||||
|
@ -38,7 +41,11 @@ class Glyph {
|
|||
const GlyphData *glyph_data_;
|
||||
};
|
||||
|
||||
class Font : public display::BaseFont {
|
||||
class Font
|
||||
#ifdef USE_DISPLAY
|
||||
: public display::BaseFont
|
||||
#endif
|
||||
{
|
||||
public:
|
||||
/** Construct the font with the given glyphs.
|
||||
*
|
||||
|
@ -50,9 +57,11 @@ class Font : public display::BaseFont {
|
|||
|
||||
int match_next_glyph(const uint8_t *str, int *match_length);
|
||||
|
||||
#ifdef USE_DISPLAY
|
||||
void print(int x_start, int y_start, display::Display *display, Color color, const char *text,
|
||||
Color background) override;
|
||||
void measure(const char *str, int *width, int *x_offset, int *baseline, int *height) override;
|
||||
#endif
|
||||
inline int get_baseline() { return this->baseline_; }
|
||||
inline int get_height() { return this->height_; }
|
||||
inline int get_bpp() { return this->bpp_; }
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#define USE_DATETIME_DATETIME
|
||||
#define USE_DATETIME_TIME
|
||||
#define USE_DEEP_SLEEP
|
||||
#define USE_DISPLAY
|
||||
#define USE_EVENT
|
||||
#define USE_FAN
|
||||
#define USE_GRAPH
|
||||
|
|
23
tests/components/font/test.host.yaml
Normal file
23
tests/components/font/test.host.yaml
Normal file
|
@ -0,0 +1,23 @@
|
|||
font:
|
||||
- file: "gfonts://Roboto"
|
||||
id: roboto
|
||||
size: 20
|
||||
glyphs: "0123456789."
|
||||
extras:
|
||||
- file: "gfonts://Roboto"
|
||||
glyphs: ["\u00C4", "\u00C5", "\U000000C7"]
|
||||
- file: "gfonts://Roboto"
|
||||
id: roboto_web
|
||||
size: 20
|
||||
- file: "https://github.com/IdreesInc/Monocraft/releases/download/v3.0/Monocraft.ttf"
|
||||
id: monocraft
|
||||
size: 20
|
||||
- file:
|
||||
type: web
|
||||
url: "https://github.com/IdreesInc/Monocraft/releases/download/v3.0/Monocraft.ttf"
|
||||
id: monocraft2
|
||||
size: 24
|
||||
- file: $component_dir/Monocraft.ttf
|
||||
id: monocraft3
|
||||
size: 28
|
||||
|
Loading…
Reference in a new issue