显示接口规范 0.1.0
本包仅用于有可见显示面的宿主。CF Worker 无显示面时不得宣称实现本包;它仍可用普通豫言库在 CPU 上生成图像字节。应用依赖本包即要求宿主实现它,具体显示面还须由宿主授予。
取得已授显示面按本次运行授予的名称取得显示面。名称未获授权返回未获授权,已授权但暂时无显示面返回资源暂不可用。- 尺寸以物理像素数返回,先宽后高;暂时无法提供正尺寸时,
读取显示面尺寸返回资源暂不可用,不得成功返回零尺寸。尺寸可在两次调用间变化。提交宽高必须为正,字节数必须精确等于宽×高×4;乘法溢出、零尺寸或字节长度不合返回输入无效。提交时的宽高若与显示面当时的尺寸不同,返回资源暂不可用,调用者应重新读取尺寸并绘制;宿主不得暗中缩放或裁切后报告成功。 - 画面像素按行优先、左上起点、每像素 RGBA8 四字节排列,通道范围零至二百五十五;RGB 使用 sRGB 编码,透明度为直通未预乘值。宿主可转换到自身显示格式,但不得改变应用提交的逻辑画面。物理显示与周围窗口背景的合成方式不属此包的可移植结果;需要一致外观的应用应提交透明度 255 的不透明像素。
画面已提交表示宿主已接收画面,不保证扫描输出或刷新完成。 - 输入坐标以同一显示面的左上角为原点,整数像素,向右为 x 正、向下为 y 正。指针事件的第三个整数为按钮编号:零主键、一辅助键、二次要键;其他编号由以后版本定义。按键名使用语义键名,首版固定
左、右、上、下、回车、退格、空格,并允许单个 Unicode 标量值;应用不得靠按键事件拼接中文输入法的文字。已提交的文本以文字输入事件交付,字符串可含多个 Unicode 标量值;按键事件和文字输入事件可以针对同一次用户操作分别出现,应用应只以文字输入更新文本内容。预编辑组合态与修饰键细节留待独立能力或以后版本。 等待输入事件可以挂起。同一显示面的事件按宿主观察顺序交付;不同显示面之间不承诺全局顺序。显示面关闭后先返回一次显示面已关闭,再调用返回资源已失效。首版同一显示面只允许一个等候者;第二个并发等候调用返回输入无效,不夺走第一个等候者的事件。
规范样例须覆盖:错误尺寸、嵌零像素、透明通道、坐标方向、按键事件、关闭后使用及未授权显示面。GPU 加速不属于本包的先决条件。