ComposeCanvas

class ComposeCanvas(drawScope: DrawScope, textMeasurer: TextMeasurer, hairlineWidthPx: Float = 1.0f)

PdfCanvas backed by a Compose Multiplatform DrawScope.

Three rendering paths:

  • Embedded outlines — when PdfFont.hasEmbeddedOutlines is true, each byte/CID becomes a Compose Path filled at the right position.

  • System-font fallback — when no outlines available, decode to text and hand to Compose's TextMeasurer.

  • Transparency groups — open a saveLayer on the underlying Canvas when the renderer requests one; later restore composites the layer back with the requested blend mode + alpha.

Clipping uses Compose's clipPath inside a recursive scope; transparency groups use the lower-level Canvas.saveLayer so they can span multiple DrawScope operations.

Constructors

Link copied to clipboard
constructor(drawScope: DrawScope, textMeasurer: TextMeasurer, hairlineWidthPx: Float = 1.0f)

Functions

Link copied to clipboard
open fun applySoftMask(kind: <Error class: unknown class>, maskBBox: <Error class: unknown class>, maskCtm: <Error class: unknown class>, render: () -> Unit, renderMask: (<Error class: unknown class>) -> Unit)

Soft-mask compositing (ISO 32000-1 §11.6.5). We open a saveLayer for the content, render it, then over-paint the mask group with ComposeBlendMode.DstIn so the mask's alpha clips the content.

Link copied to clipboard
open fun beginPage(widthPt: Double, heightPt: Double, deviceCtm: <Error class: unknown class>)
Link copied to clipboard
open fun beginTransparencyGroup(bbox: <Error class: unknown class>, ctm: <Error class: unknown class>, isolated: Boolean, knockout: Boolean, alpha: Double, blendMode: <Error class: unknown class>)

Transparency groups: open a Compose saveLayer on the active Canvas with a Paint that carries the requested alpha + blend mode. Subsequent draws accumulate into the offscreen layer; matching endTransparencyGroup calls restore, which composites the layer onto the parent.

Link copied to clipboard
open fun drawImage(image: <Error class: unknown class>, ctm: <Error class: unknown class>, alpha: Double)
Link copied to clipboard
open fun drawText(bytes: ByteArray, font: <Error class: unknown class>, fontSize: Double, textMatrix: <Error class: unknown class>, fillColor: <Error class: unknown class>, alpha: Double, blendMode: <Error class: unknown class>)
Link copied to clipboard
open fun endPage()
Link copied to clipboard
Link copied to clipboard
open fun fillPath(path: <Error class: unknown class>, ctm: <Error class: unknown class>, color: <Error class: unknown class>, evenOdd: Boolean, alpha: Double, blendMode: <Error class: unknown class>)
Link copied to clipboard
open fun fillShading(shading: <Error class: unknown class>, ctm: <Error class: unknown class>, clipPath: <Error class: unknown class>?, alpha: Double, blendMode: <Error class: unknown class>)
Link copied to clipboard
open fun popClip()
Link copied to clipboard
open fun pushClip(path: <Error class: unknown class>, ctm: <Error class: unknown class>, evenOdd: Boolean)
Link copied to clipboard
open fun strokePath(path: <Error class: unknown class>, ctm: <Error class: unknown class>, color: <Error class: unknown class>, lineWidth: Double, alpha: Double, blendMode: <Error class: unknown class>, dashArray: List<Double>?, dashPhase: Double)