编辑器上下文(EditorContext)
在 FileFormat 视图编辑时提供的上下文。它返回的所有内容要么是不可变的,要么是私有实例;不会回写到打开文件的实时状态。
方法(Methods)
image
image(name: string) -> Image?
按名称查找图像资源,找不到时返回 nil。
blob
blob(name: string) -> Blob?
按名称查找 blob 资源,找不到时返回 nil。
artboard
artboard(name: string) -> Artboard<ViewModel?>?
一个命名画板的新实例,专属于此视图。画板的默认视图模型实例会被绑定,并可通过 data 访问;若画板没有视图模型,则为 nil。
名称会在该脚本所属的文件中解析,因此库中自带的格式会访问到对应库的画板。你可以在名称前加上库的命名空间(如 markdown@0/Document)来显式指定,而要编辑宿主文件的画板请使用 hostArtboard。
hostArtboard
hostArtboard(name: string) -> Artboard<ViewModel?>?
与 artboard 类似,但始终解析当前正在被编辑的文件。当脚本就写在该文件中时,两者行为一致,因此本地开发的库在发布后的行为也保持一致。
theme
theme() -> EditorTheme
编辑器当前的主题。
openUrl
openUrl(url: string)
在用户的浏览器中打开一个 URL。
themeFont
themeFont() -> Font?
代码编辑器渲染使用的字体,可赋值给视图模型的字体属性以保持字体一致。
defaultFont
defaultFont() -> Font?
编辑器的默认 UI 字体,用于预览中的普通文本。可赋值给视图模型的字体属性。
codeFont
codeFont() -> Font?
编辑器内置的代码字体,用于预览中的代码区域。可赋值给视图模型的字体属性。
editorScroll
editorScroll() -> EditorScroll?
文本编辑器的滚动位置,在用户滚动期间每帧刷新;在没有关联编辑器的表面(如检查器、viewer 标签页)上为 nil。可与 scrollTo 配合使用以保持预览同步。
scrollTo
scrollTo(x: number, y: number) -> ()
将承载此视图的面板滚动到指定内容偏移,会被限制在已测量的内容范围内。仅对具有 measure 的面板视图有意义;其他情况下会被忽略。
scrollEditorTo
scrollEditorTo(line: number) -> ()
将关联的文本编辑器滚动到指定的小数行(与 editorScroll 报告的单位相同),会被限制在编辑器范围内。没有关联编辑器时会被忽略。与 editorScroll 驱动的同步配合使用时,注意避免回弹。
requestDraw
requestDraw() -> ()
请求宿主在 advance 循环之外重绘视图,例如异步解码完成时。
shader
shader(name: string) -> Shader?
按名称查找已编译的着色器,找不到时返回 nil。
canvas
canvas(desc: {width: number?, height: number?}?) -> Canvas
创建一个 CPU 画布。宽高为 0 或省略时会延迟创建后备纹理。
gpuCanvas
gpuCanvas(desc: {width: number?, height: number?}?) -> GPUCanvas
创建一个用于渲染通道绘制的 GPU 画布。宽高为 0 或省略时会延迟创建后备纹理。
features
features() -> GPUFeatures
当前活动 GPU 设备的能力。
decodeImage
decodeImage(data: buffer) -> Promise<DecodedImage>
将编码后的图像(png、jpeg、webp)解码为可绘制图像。