Rdzleo 86200f5e3a chore(deps): 添加 esp_emote_gfx + esp_mmap_assets 组件(Phase 10 依赖)
Phase 10 数字人模式 LVGL → EAF 切换所需的两个新组件:
- espressif2022/esp_emote_gfx v3.0.5
  轻量软件渲染 UI 框架(gfx_emote_init/gfx_disp_add/gfx_anim/gfx_label)
- espressif/esp_mmap_assets v2.0.0
  资源打包加载(虽然 use_fs 模式 buggy,我们绕过它直接 fopen,
  但保留组件以便后续 mmap partition 模式启用)

gfx_touch.c 含我们的 local shim 兼容 esp_lcd_touch v1.1.2 旧 API
(已在前一个 commit 31982ba 中说明)。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 15:56:32 +08:00

153 lines
6.1 KiB
Plaintext

menu "ESP Emote Graphics Framework"
config GFX_FONT_FREETYPE_SUPPORT
bool "Enable FreeType font support"
default n
help
Enable support for FreeType fonts (TTF/OTF).
This requires the FreeType library to be enabled.
When enabled, you can use TrueType and OpenType fonts.
When disabled, only LVGL C format fonts are supported.
config GFX_EAF_JPEG_DECODE_SUPPORT
bool "Enable JPEG decoding support in EAF"
default y
help
Enable support for JPEG decoding in EAF (Emote Animation Format).
This requires the ESP JPEG decoder component to be enabled.
When enabled, EAF files can use JPEG encoding for image blocks.
When disabled, JPEG encoding will not be available, reducing code size.
config GFX_EAF_HEATSHRINK_SUPPORT
bool "Enable Heatshrink support in EAF"
default y
depends on HEATSHRINK_DYNAMIC_ALLOC || (HEATSHRINK_STATIC_WINDOW_BITS = 8 && HEATSHRINK_STATIC_LOOKAHEAD_BITS = 4)
help
Enable support for Heatshrink decoding in EAF (Emote Animation Format).
Note: Only supports 8-bit window and 4-bit lookahead if dynamic allocation is disabled.
comment "Heatshrink support is unavailable due to static bit mismatch"
depends on !HEATSHRINK_DYNAMIC_ALLOC && (HEATSHRINK_STATIC_WINDOW_BITS != 8 || HEATSHRINK_STATIC_LOOKAHEAD_BITS != 4)
menu "Software Blend"
config GFX_BLEND_TRI_EDGE_AA_RANGE
int "Triangle edge AA range"
range 0 4096
default 0
help
Edge anti-aliasing distance threshold for the software
triangle rasterizer, in mesh sub-pixel units. 0 means one
logical pixel in the mesh fixed-point format (256 for Q8).
config GFX_MESH_IMG_SCANLINE_MAX_VERTS
int "Mesh image scanline fill max vertices"
range 16 2048
default 512
help
Maximum polygon vertices accepted by mesh_img scanline fill.
Higher values support more complex filled motion paths, but
increase per-object scratch memory when scanline fill is used.
config GFX_BLEND_POLYGON_MAX_INTERSECTIONS
int "Polygon fill max scanline intersections"
range 16 256
default 64
help
Maximum number of edge intersections stored per polygon scanline
sample. 32 is faster and enough for simple convex-ish shapes.
Increase to 64/128 for complex filled Bezier loops to avoid
clipped or broken scanline spans.
config GFX_BLEND_POLYGON_SUB_SAMPLES
int "Polygon fill vertical AA sub-samples"
range 1 16
default 8
help
Number of vertical sub-samples used by software polygon fill.
Higher values produce smoother coverage but cost more CPU.
config GFX_BLEND_POLYGON_COVERAGE_MAX_WIDTH
int "Polygon fill coverage buffer max width"
range 64 2048
default 512
help
Maximum pixel width of a polygon fill coverage row. Larger
values support wider dirty chunks at the cost of stack memory.
config GFX_BLEND_POLYGON_INWARD_AA
bool "Keep polygon AA inside filled shapes"
default y
help
Do not blend partially covered pixels whose centre is outside
the polygon. This avoids bright/dark halos when solid filled
Bezier parts are drawn over changing framebuffer contents.
config GFX_BLEND_POLYGON_SOLID_HARD_EDGE
bool "Use hard edge for fully opaque polygon fills"
default y
depends on GFX_BLEND_POLYGON_INWARD_AA
help
For opacity=255 polygon fills, write the fill colour directly
for inward edge pixels instead of blending coverage with the
destination framebuffer. This is faster and prevents colour
contamination, but the edge is less smooth.
endmenu
menu "Motion Widget"
config GFX_MOTION_BEZIER_STROKE_SEGS_PER_SEG
int "Bezier stroke samples per cubic segment"
range 2 24
default 6
help
Tessellation samples per cubic Bezier segment for motion
BEZIER_LOOP and BEZIER_STRIP strokes.
config GFX_MOTION_BEZIER_FILL_LOOP_SEGS_PER_SEG
int "Generic Bezier fill samples per cubic segment"
range 2 24
default 12
help
Tessellation samples per cubic Bezier segment for generic
filled closed loops. Higher values produce smoother fill
outlines but increase setup and raster cost.
config GFX_MOTION_BEZIER_FILL_SEGS
int "Preset Bezier fill segments"
range 4 64
default 24
help
Segment count for special 7/13-point eye/ellipse fills.
config GFX_MOTION_HUB_FILL_MAX_POINTS
int "Generic Bezier fill max hub mesh points"
range 64 1024
default 512
help
Scratch point budget for generic filled Bezier loops.
choice GFX_MOTION_BEZIER_FILL_RASTERIZER
prompt "Bezier fill rasterizer"
default GFX_MOTION_BEZIER_FILL_RASTERIZER_SCANLINE
help
Select how BEZIER_FILL mesh objects are rasterized.
Scanline is stable for arbitrary filled paths and avoids
triangle fan artifacts. Mesh triangles use the regular mesh
triangle rasterizer and can produce smoother AA on some simple
cartoon shapes, but may show artifacts on concave paths.
config GFX_MOTION_BEZIER_FILL_RASTERIZER_SCANLINE
bool "Scanline polygon fill"
config GFX_MOTION_BEZIER_FILL_RASTERIZER_TRIANGLE
bool "Mesh triangle fill"
endchoice
endmenu
endmenu