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>
153 lines
6.1 KiB
Plaintext
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
|