37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
"""预览渲染辅助模块 - 只为超级用户预览命令按插件配置提供渲染器实例。
|
||
|
||
放在独立模块里,避免 test_command 反向依赖尚未完成初始化的插件包 __init__;
|
||
渲染逻辑仍然复用 image_render.ImageRenderer,不在此处重复实现。
|
||
"""
|
||
from typing import Optional
|
||
|
||
from .config import Config
|
||
from .image_render import ImageRenderer
|
||
|
||
# 渲染器实例缓存:按插件配置构建一次后复用(字体只加载一次)
|
||
_preview_renderer: Optional[ImageRenderer] = None
|
||
|
||
|
||
def get_preview_renderer(config: Config) -> ImageRenderer:
|
||
"""
|
||
获取通知卡片渲染器
|
||
|
||
Args:
|
||
config: 插件配置对象
|
||
|
||
Returns:
|
||
缓存的 ImageRenderer 实例
|
||
"""
|
||
global _preview_renderer
|
||
if _preview_renderer is None:
|
||
_preview_renderer = ImageRenderer(
|
||
width=config.ImageWidth,
|
||
font_size=config.ImageFontSize,
|
||
padding=config.ImagePadding,
|
||
line_spacing=config.ImageLineSpacing,
|
||
bg_color=config.ImageBgColor,
|
||
text_color=config.ImageTextColor,
|
||
font_paths=config.FontPaths,
|
||
)
|
||
return _preview_renderer
|