Help us shape the future of Go! Take the 2026 Go Developer Survey

render

package
v0.1.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 21, 2026 License: Apache-2.0 Imports: 30 Imported by: 0

Documentation

Overview

Package render 将解析后的 OFD 文档渲染为图形内容。

Index

Constants

View Source
const (
	FontRegular    = drawing.FontRegular
	FontThin       = drawing.FontThin
	FontExtraLight = drawing.FontExtraLight
	FontLight      = drawing.FontLight
	FontMedium     = drawing.FontMedium
	FontSemiBold   = drawing.FontSemiBold
	FontBold       = drawing.FontBold
	FontExtraBold  = drawing.FontExtraBold
	FontBlack      = drawing.FontBlack
	FontItalic     = drawing.FontItalic
)

字重常量转发,便于本包与调用方继续使用 render.FontRegular 等。

View Source
const (
	DestFit = drawing.DestFit
	DestXYZ = drawing.DestXYZ
)

目的地类型别名,供大纲与跳转目标使用。

View Source
const BackendCanvas = drawing.BackendCanvas

BackendCanvas 是内置的 tdewolff/canvas 光栅后端名。canvas 实现位于 internal/render/backends/canvas,需空白导入该包注册后方可使用。

Variables

View Source
var (
	RegisterBackend    = drawing.RegisterBackend
	RegisteredBackends = drawing.RegisteredBackends
)

RegisterBackend / RegisteredBackends 转发到 drawing 包的注册表。插件包在 自己的 init() 里注册,例:

import _ "github.com/zc310/ofd/internal/render/backends/canvas"  // 内置 canvas
import _ "github.com/zc310/ofd/internal/render/backends/gg"      // gogpu/gg

只有显式导入后端的二进制才会包含对应实现。

Functions

func FallbackFontData added in v0.1.2

func FallbackFontData(family string) ([]byte, bool)

FallbackFontData 返回已全局注册回退字体族的首个来源数据。 返回注册表共享的只读字节,调用方不得修改。

func RegisterFallbackFont added in v0.1.2

func RegisterFallbackFont(data []byte, family string, style FontStyle) error

RegisterFallbackFont 在进程内全局注册回退字体;需已导入字体引擎实现。

func RegisterFallbackFontFactory added in v0.1.3

func RegisterFallbackFontFactory(register func(data []byte, family string, style FontStyle) error, data func(family string) ([]byte, bool))

RegisterFallbackFontFactory 注册回退字体的全局注册/查询实现。

func RegisterFallbackFontUnregisterer added in v0.1.5

func RegisterFallbackFontUnregisterer(unregisterer func(family string) error)

RegisterFallbackFontUnregisterer 登记反注册实现。

func RegisterFontEngineFactory added in v0.1.3

func RegisterFontEngineFactory(fn func(doc *parser.Document) FontEngine)

RegisterFontEngineFactory 注册字体引擎工厂,供 canvas 后端注册或测试注入。

func RegisterOffscreenSurfaceFactory added in v0.1.3

func RegisterOffscreenSurfaceFactory(fn func(width, height float64, resolution geom.Resolution) OffscreenSurface)

RegisterOffscreenSurfaceFactory 注册离屏表面工厂,供 canvas 后端注册或测试注入。

func RegisterPDFDocumentFactory added in v0.1.3

func RegisterPDFDocumentFactory(fn func(w io.Writer, options PDFOptions) (PDFDocument, error))

RegisterPDFDocumentFactory 注册 PDF 文档写入器,供 canvas 后端注册或测试注入。

func RegisterSVGSceneFactory added in v0.1.3

func RegisterSVGSceneFactory(fn func(data []byte) (SVGScene, error))

RegisterSVGSceneFactory 注册 SVG 场景解析器,供 canvas 后端注册或测试注入。

func RegisterVectorSurfaceFactory added in v0.1.3

func RegisterVectorSurfaceFactory(fn func(width, height float64, draw func(DrawContext)) VectorSurface)

RegisterVectorSurfaceFactory 注册矢量表面工厂,供 canvas 后端注册或测试注入。

func RegisteredFallbackFamilies added in v0.1.5

func RegisteredFallbackFamilies() []string

RegisteredFallbackFamilies 返回已全局注册的回退字体族名,按注册顺序。

供那些不走 Reader、直接拿 *Document 编码的调用方使用:字体注册进引擎 只是一半,另一半是把族名 UseFallbackFont 到具体文档上,否则文档渲染时 仍按缺字体处理,页面上一个字都没有。

func UnregisterFallbackFont added in v0.1.5

func UnregisterFallbackFont(family string) error

UnregisterFallbackFont 声明某个字体族不再需要,释放其字节。

仍被打开的文档引用着它时不会立即删除,而是等最后一个文档放手——那些文档 还要用它渲染,提前释放会出问题。因此界面上的"删除"对已打开的文档是延迟 生效的,这是有意的。

Types

type Backend added in v0.1.3

type Backend = drawing.Backend

Backend 是后端契约的别名:契约定义在与绘制库无关的 drawing 包,插件后端 (gg/ftgg/tinyskia/draw2d)直接依赖 drawing,不必依赖 render/canvas。

func NewBackend added in v0.1.3

func NewBackend(name string, width, height float64, resolution geom.Resolution) (Backend, error)

NewBackend 创建页面栅格化后端。

name 为后端标识;各后端(含内置的 BackendCanvas)都需先空白导入对应插件 包来注册(见 RegisterBackend)。width/height 是页面物理尺寸(mm), resolution 是输出分辨率(geom.DPI / geom.DPMM)。

type BackendFactory added in v0.1.3

type BackendFactory = drawing.BackendFactory

BackendFactory 是 drawing.BackendFactory 的别名:创建后端实例,由各后端 插件包通过 RegisterBackend 注册。width/height 为页面物理尺寸(mm), resolution 为输出分辨率(geom.Resolution,与绘制库无关)。

type CTColor

type CTColor = drawing.CTColor

CTColor 定义在 drawing 包;这里用别名保持本包既有调用点(updateCtColor 等)可用。

type DestType added in v0.1.5

type DestType = drawing.DestType

矢量输出契约定义在 drawing 包,render 通过别名保持既有调用点可用。

type Document

type Document struct {
	*parser.Document
	// contains filtered or unexported fields
}

func NewDocument

func NewDocument(background color.Color, doc *parser.Document) *Document

func NewDocumentWithDPI added in v0.1.1

func NewDocumentWithDPI(background color.Color, doc *parser.Document, dpi geom.Resolution) *Document

NewDocumentWithDPI 创建带有输出分辨率的渲染文档。 dpi 用于复合图元等内部离屏栅格化,不改变页面的物理尺寸。

func (*Document) Annot

func (p *Document) Annot(ctx DrawContext, annot *models.Annot, pb models.StBox)

func (*Document) Background added in v0.1.4

func (p *Document) Background() color.Color

Background 返回文档渲染时使用的背景色。调用方可以据此判断能否复用已有的 渲染文档,避免为不同背景重复构建字体和图片缓存。

func (*Document) Close added in v0.1.4

func (p *Document) Close()

Close 释放文档持有的渲染期资源,最重要的是字体。

字体是这里最重的资源:一个 CJK 字体的轮廓约 50 MB,远大于文档本身。不显式 释放时,包级字体缓存会一直持有它,浏览多个文档的会话里这些内存会累积。

幂等,且关闭后不应再使用该文档。

func (*Document) Composite added in v0.0.5

func (p *Document) Composite(ctx DrawContext, object models.CompositeObject, dp *models.DrawParam, pb models.StBox)

Composite 绘制复合图元(CompositeObject)。

CompositeGraphicUnit 的内容位于自身的 [0,Width]x[0,Height] 坐标系中, 先渲染完整单元,再使用 CompositeObject 的 Boundary 和 CTM 映射到页面, 保留单元内部坐标,不根据透明像素重新裁剪内容。

func (*Document) Draw

func (p *Document) Draw(ctx DrawContext, page *parser.Page) error

func (*Document) FallbackFontFamily added in v0.0.9

func (p *Document) FallbackFontFamily(id models.StRefID) string

FallbackFontFamily 返回为文档字体选择的外部字体族。

func (*Document) HasLoadedEmbeddedFont added in v0.0.9

func (p *Document) HasLoadedEmbeddedFont(id models.StRefID) bool

HasLoadedEmbeddedFont 判断文档字体是否可以作为内嵌字体族提供给浏览器。

func (*Document) Image

func (p *Document) Image(ctx DrawContext, object models.ImageObject, dp *models.DrawParam, pb models.StBox)

func (*Document) Layer

func (p *Document) Layer(ctx DrawContext, layer *models.Layer, pb models.StBox)

func (*Document) NewView added in v0.1.5

func (p *Document) NewView(background color.Color, dpi geom.Resolution) (*Document, error)

NewView 创建独立的 DPI/背景视图,复用同一文档的字体解析、映射和整形缓存。 每个视图都需 Close;最后一个视图关闭时才释放共享字体。 任一视图调用 UseFallbackFont/RemoveFallbackFont 都会更新共享字体引擎,影响所有 视图;各 Document 的 fallbacks 列表从创建时复制,之后仅由本视图的方法更新, 不随其他视图同步,不能将其当作共享字体引擎的实时快照。

func (*Document) Outlines added in v0.1.5

func (p *Document) Outlines(resolve PageLinkResolver) []drawing.PageOutline

Outlines 返回文档大纲的扁平条目序列,按文档顺序排列。

resolve 与 PageLinks 用的是同一套解析器:目标页必须在输出里才能建立跳转。

func (*Document) Page

func (p *Document) Page(page *parser.Page) (VectorSurface, error)

func (*Document) PageContent

func (p *Document) PageContent(ctx DrawContext, page *parser.Page, seal bool)
func (p *Document) PageExternalLinks(page *parser.Page) []drawing.PageLink

PageExternalLinks 只返回外部链接热区,供不处理内部跳转的调用方使用。

func (p *Document) PageLinks(page *parser.Page, resolve PageLinkResolver) []drawing.PageLink

PageLinks 返回页面上所有链接热区,按出现顺序排列。

resolve 为 nil 时只导出外部链接,内部跳转一律丢弃——调用方不知道最终会输出 哪些页时,宁可不导出也不能写出指向不存在页面的链接。

page 为 nil,或页面内容读取失败时返回 nil:链接是附加信息,读不到内容就没有 热区可言,不应让整个转换失败。

func (*Document) PageLinksWithVisibility added in v0.1.5

func (p *Document) PageLinksWithVisibility(page *parser.Page, resolve PageLinkResolver, visibility PageVisibility) []drawing.PageLink

PageLinksWithVisibility 排除隐藏正文图层和模板中的链接,保留注解链接。

func (*Document) PageWithVisibility added in v0.1.5

func (p *Document) PageWithVisibility(page *parser.Page, visibility PageVisibility) (VectorSurface, error)

PageWithVisibility 过滤目标页正文图层及模板引用,保留注解和签章。 过滤状态属于本次绘制,不修改共享页面或文档渲染上下文。

func (*Document) Path

func (p *Document) Path(ctx DrawContext, object models.PathObject, dp *models.DrawParam, pb models.StBox)

func (*Document) RasterizePage added in v0.1.3

func (p *Document) RasterizePage(page *parser.Page, backendName string, resolution geom.Resolution) (*image.RGBA, error)

RasterizePage 把指定页面栅格化为 RGBA 图像。backendName 选用渲染后端 (BackendCanvas 需空白导入 internal/render/backends/canvas;其它后端见 drawing.Backend*,需导入对应插件包);resolution 决定输出图片的像素密度。

func (*Document) RemoveFallbackFont added in v0.1.3

func (p *Document) RemoveFallbackFont(family string)

RemoveFallbackFont 取消先前通过 UseFallbackFont 登记的回退字体族,使缺失字体 恢复为内嵌或默认字体。

func (*Document) Seal

func (p *Document) Seal(ctx DrawContext, info *parser.SealInfo, pb models.StBox) error

func (*Document) Template

func (p *Document) Template(ctx DrawContext, template models.Template, pb models.StBox)

func (*Document) TemplateForeground added in v0.1.5

func (p *Document) TemplateForeground(template models.Template) bool

TemplateForeground 按页面引用、模板声明、默认 Background 的顺序确定叠放位置。

func (*Document) Text

func (p *Document) Text(ctx DrawContext, object models.TextObject, dp *models.DrawParam, pb models.StBox)

func (*Document) TextLayouts added in v0.0.9

func (p *Document) TextLayouts(page *parser.Page) []TextLayout

TextLayouts 返回页面文字的字符级布局。字符步进使用渲染器的字体度量、 DeltaX/DeltaY、ReadDirection 和 CTM 基础计算,避免网页字体度量造成高亮偏移。

func (*Document) TextLayoutsForRuns added in v0.1.4

func (p *Document) TextLayoutsForRuns(page *parser.Page, runIndices []int) []TextLayout

TextLayoutsForRuns 返回指定 run 的字符级布局,结果按页面绘制顺序排列。 run 索引与 TextValues 返回的顺序一致。

func (*Document) TextLayoutsForRunsWithVisibility added in v0.1.5

func (p *Document) TextLayoutsForRunsWithVisibility(page *parser.Page, runIndices []int, visibility PageVisibility) []TextLayout

TextLayoutsForRunsWithVisibility 的 run 索引与过滤后的 TextValues 保持一致。

func (*Document) TextLayoutsWithVisibility added in v0.1.5

func (p *Document) TextLayoutsWithVisibility(page *parser.Page, visibility PageVisibility) []TextLayout

TextLayoutsWithVisibility 返回过滤正文图层和模板后的布局。

func (*Document) TextValues added in v0.1.4

func (p *Document) TextValues(page *parser.Page) []string

TextValues 返回页面中可见的非空 TextCode 文本,顺序与 TextLayouts 一致。 搜索等只需读取文字内容的调用方可避免构建字符级几何信息。

func (*Document) TextValuesWithVisibility added in v0.1.5

func (p *Document) TextValuesWithVisibility(page *parser.Page, visibility PageVisibility) []string

TextValuesWithVisibility 返回过滤正文图层和模板后的文字,供搜索索引使用。

func (*Document) UseFallbackFont added in v0.1.2

func (p *Document) UseFallbackFont(family string) error

UseFallbackFont 使当前文档缺失字体时使用已全局注册的回退字体族。

type DrawContext added in v0.1.3

type DrawContext = drawing.DrawContext

DrawContext 是 drawing.DrawContext 的别名,保持本包既有调用点可用。契约 定义在 drawing 包,使后端插件只依赖 drawing/geom,不依赖 render/canvas。

type EncodedImage added in v0.1.3

type EncodedImage struct {
	Format string // "jpeg" 或 "png"
	Data   []byte
	// contains filtered or unexported fields
}

EncodedImage 是保留原始编码字节的懒解码图片:以标准 image.Image 暴露, 首次访问时才解码;同时保留编码数据,供 canvas PDF 写入器等按原字节内嵌。 它与绘制库无关;canvas 适配层可把编码数据再包装成 canvas/image.Image。

func NewEncodedImage added in v0.1.3

func NewEncodedImage(format string, data []byte) *EncodedImage

NewEncodedImage 返回保留编码数据的懒解码图片(导出供 canvas 等后端或测试使用)。

func (*EncodedImage) At added in v0.1.3

func (e *EncodedImage) At(x, y int) color.Color

At 返回像素颜色(会触发解码)。

func (*EncodedImage) Bounds added in v0.1.3

func (e *EncodedImage) Bounds() image.Rectangle

Bounds 返回图片边界。只读取图片头(DecodeConfig)获取尺寸,不触发完整解码。

func (*EncodedImage) CanvasImageOnce added in v0.1.4

func (e *EncodedImage) CanvasImageOnce(build func() image.Image) image.Image

CanvasImageOnce 返回 canvas 适配层构造的对象,首次调用时用 build 构造并缓存, 之后直接返回同一对象。并发调用只会构造一次,因此可以安全地在多个页面同时 渲染时使用。build 返回 nil 表示该图片不走原字节内嵌快路径(例如灰度图或 编码无法识别),此时结果同样被缓存,避免每次访问都重新解码。

func (*EncodedImage) ColorModel added in v0.1.3

func (e *EncodedImage) ColorModel() color.Model

ColorModel 返回颜色模型。只读取图片头,不触发完整解码。

func (*EncodedImage) Image added in v0.1.3

func (e *EncodedImage) Image() (image.Image, error)

Image 解码并返回底层原生图像,结果会缓存。它同时满足各后端用于“延迟解码 包装器”的最小接口(Image() (image.Image, error))。

func (*EncodedImage) Weight added in v0.1.3

func (e *EncodedImage) Weight() int64

Weight 估算该图片在缓存中的内存占用:编码字节 + 解码后的像素。只读取 图片头(DecodeConfig)获取尺寸与颜色模型,不触发完整解码。

type FontEngine added in v0.1.3

type FontEngine = drawing.FontEngine

字体相关契约定义在 drawing 包,render 通过别名保持既有调用点可用。

func NewFontEngine added in v0.1.3

func NewFontEngine(doc *parser.Document) FontEngine

NewFontEngine 按已注册工厂创建字体引擎;未注册时返回 nil。

type FontFace added in v0.1.3

type FontFace = drawing.FontFace

字体相关契约定义在 drawing 包,render 通过别名保持既有调用点可用。

type FontFamily added in v0.1.3

type FontFamily = drawing.FontFamily

字体相关契约定义在 drawing 包,render 通过别名保持既有调用点可用。

type FontStyle added in v0.1.3

type FontStyle = drawing.FontStyle

字体相关契约定义在 drawing 包,render 通过别名保持既有调用点可用。

type GlyphLayout added in v0.0.9

type GlyphLayout struct {
	Text   string
	X      float64
	Y      float64
	Width  float64
	Height float64
	Angle  float64
}

GlyphLayout 描述一个文字字符在页面上的近似区域。坐标单位为毫米, 使用页面左上角作为原点。

type LinkTarget added in v0.1.5

type LinkTarget = drawing.LinkTarget

矢量输出契约定义在 drawing 包,render 通过别名保持既有调用点可用。

type LinkTargetRef added in v0.1.5

type LinkTargetRef struct {
	// Index 是目标页在输出中的页序号(从 0 起)。
	Index int
	// Height 是目标页高度(mm)。
	Height float64
}

LinkTargetRef 是内部跳转目标的定位信息。

type OffscreenSurface added in v0.1.3

type OffscreenSurface interface {
	DrawContext
	// Raster 返回离屏内容对应的 RGBA 图像。
	Raster() *image.RGBA
}

OffscreenSurface 是离屏栅格表面:绘制完成后取回 RGBA。用于网格渐变、复合 单元、图片掩码等需要先在独立画布上绘制再贴回的场景。

type PDFDocument added in v0.1.3

type PDFDocument = drawing.PDFDocument

矢量输出契约定义在 drawing 包,render 通过别名保持既有调用点可用。

func NewPDFDocument added in v0.1.3

func NewPDFDocument(w io.Writer, options PDFOptions) (PDFDocument, error)

NewPDFDocument 创建 PDF 文档;未注册写入器时返回错误。

type PDFOptions added in v0.1.3

type PDFOptions = drawing.PDFOptions

矢量输出契约定义在 drawing 包,render 通过别名保持既有调用点可用。

type PageLink = drawing.PageLink

矢量输出契约定义在 drawing 包,render 通过别名保持既有调用点可用。

type PageLinkResolver added in v0.1.5

type PageLinkResolver func(pageID models.StID) (LinkTargetRef, bool)

PageLinkResolver 把 OFD 页面的 StID 解析为目标页在输出中的位置。ok 为 false 表示目标页不会出现在输出里(例如被页码范围裁掉),此时对应链接必须丢弃。

type PageOutline added in v0.1.5

type PageOutline = drawing.PageOutline

矢量输出契约定义在 drawing 包,render 通过别名保持既有调用点可用。

type PageVisibility added in v0.1.5

type PageVisibility struct {
	HiddenLayers    map[models.StID]bool
	HiddenTemplates map[models.StID]bool
}

PageVisibility 是一次页面输出的过滤设置;正文层与模板引用分别标识,避免 ID 混淆。 同一模板在其他页面的引用不受影响。

type SVGScene added in v0.1.3

type SVGScene = drawing.SVGScene

SVGScene 定义在 drawing 包,render 通过别名保持既有调用点可用。

type TextLayout added in v0.0.9

type TextLayout struct {
	Text  string
	X     float64
	Y     float64
	Width float64
	// Height 是字体上伸与下延之和,用于覆盖层行高;无字体度量时按 EM 高度兜底。
	Height        float64
	Font          uint64
	Size          float64
	Weight        int
	ReadDirection int
	CharDirection int
	Bold          bool
	Italic        bool
	Glyphs        []GlyphLayout
}

TextLayout 描述一个 TextCode 及其字符级几何信息。

type TextRun added in v0.1.3

type TextRun = drawing.TextRun

字体相关契约定义在 drawing 包,render 通过别名保持既有调用点可用。

type VectorSurface added in v0.1.3

type VectorSurface = drawing.VectorSurface

矢量输出契约定义在 drawing 包,render 通过别名保持既有调用点可用。

func NewVectorSurface added in v0.1.5

func NewVectorSurface(width, height float64, draw func(DrawContext)) (VectorSurface, error)

NewVectorSurface 创建一张宽高(毫米)给定的矢量表面,并在创建时回调一次绘制。

与 Document.Page 的区别是尺寸自定:拼版(N-up)需要的是一张比源页大的纸, 再把若干源页按变换画进去。draw 为空时只得到一张空白纸。

Directories

Path Synopsis
backends
canvas
Package canvas 提供 tdewolff/canvas 的 render 后端实现:DrawContext (canvasBackend)、矢量表面与 PDF 写入器(VectorSurface/PDFDocument)、 SVG 场景、离屏栅格表面、内置栅格后端(BackendCanvas),以及默认字体引擎 (Fonts)。
Package canvas 提供 tdewolff/canvas 的 render 后端实现:DrawContext (canvasBackend)、矢量表面与 PDF 写入器(VectorSurface/PDFDocument)、 SVG 场景、离屏栅格表面、内置栅格后端(BackendCanvas),以及默认字体引擎 (Fonts)。
canvas/canvasconv
Package canvasconv 提供 internal/render/geom 的中性几何类型与 tdewolff/canvas 类型之间的转换,供 canvas 后端(把 geom 绘制指令转成 canvas.Canvas 用于 Page()/PDF/SVG 矢量输出)以及迁移期的适配层使用。
Package canvasconv 提供 internal/render/geom 的中性几何类型与 tdewolff/canvas 类型之间的转换,供 canvas 后端(把 geom 绘制指令转成 canvas.Canvas 用于 Page()/PDF/SVG 矢量输出)以及迁移期的适配层使用。
draw2d
Package draw2d 提供基于 github.com/llgcode/draw2d 的页面栅格化后端,通过 空白导入注册到 internal/render 的注册表:
Package draw2d 提供基于 github.com/llgcode/draw2d 的页面栅格化后端,通过 空白导入注册到 internal/render 的注册表:
ftgg
Package ftgg 提供基于 FloatTech/gg 的页面栅格化后端(fogleman API + freetype/raster),通过空白导入注册到 internal/render 的注册表(Go image 包风格):
Package ftgg 提供基于 FloatTech/gg 的页面栅格化后端(fogleman API + freetype/raster),通过空白导入注册到 internal/render 的注册表(Go image 包风格):
gg
Package gg 提供基于 gogpu/gg 的页面栅格化后端,通过空白导入注册到 internal/render 的注册表:
Package gg 提供基于 gogpu/gg 的页面栅格化后端,通过空白导入注册到 internal/render 的注册表:
rastercore
Package rastercore 提供可切换栅格后端共用的渲染上下文状态机。
Package rastercore 提供可切换栅格后端共用的渲染上下文状态机。
rasterstate
Package rasterstate 提供栅格后端 Push/Pop 时需要镜像保存/恢复的样式 状态容器。
Package rasterstate 提供栅格后端 Push/Pop 时需要镜像保存/恢复的样式 状态容器。
tinyskia
Package tinyskia 提供基于 tiny-skia 纯 Go 移植(Canvas 2D API)的页面 栅格化后端,通过空白导入注册到 internal/render 的注册表:
Package tinyskia 提供基于 tiny-skia 纯 Go 移植(Canvas 2D API)的页面 栅格化后端,通过空白导入注册到 internal/render 的注册表:
Package drawing 定义与具体绘制库无关的绘制后端契约、注册表,以及 render 核心与各实现包共享的公共契约类型(字体、矢量输出、SVG 场景等)。
Package drawing 定义与具体绘制库无关的绘制后端契约、注册表,以及 render 核心与各实现包共享的公共契约类型(字体、矢量输出、SVG 场景等)。
Package geom 是与具体绘制库无关的二维几何与渐变引擎,供 internal/render 及其各绘制后端(canvas/gg/ftgg/tinyskia)共用。
Package geom 是与具体绘制库无关的二维几何与渐变引擎,供 internal/render 及其各绘制后端(canvas/gg/ftgg/tinyskia)共用。
Package testscene 提供后端一致性测试共用的“页面场景”与配套图元/度量: 同一段 DrawContext 绘制命令可依次作用到不同光栅后端,用于逐像素对照 与速度测试。
Package testscene 提供后端一致性测试共用的“页面场景”与配套图元/度量: 同一段 DrawContext 绘制命令可依次作用到不同光栅后端,用于逐像素对照 与速度测试。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL