# Canvas2DLike

Import it from `@grafloria/renderer`.

The subset of `CanvasRenderingContext2D` the painter uses. A real 2D context
satisfies this structurally — no adapter needed.

```ts
interface Canvas2DLike
```

**Properties**

| Name | Type | Default | Description |
| --- | --- | --- | --- |
| `fillStyle` | `unknown` |  |  |
| `strokeStyle` | `unknown` |  |  |
| `lineWidth` | `number` |  |  |
| `lineJoin` | `CanvasLineJoin` |  |  |
| `lineCap` | `CanvasLineCap` |  |  |
| `globalAlpha` | `number` |  |  |
| `font` | `string` |  |  |
| `textAlign` | `CanvasTextAlign` |  |  |
| `textBaseline` | `CanvasTextBaseline` |  |  |
| `filter?` | `string` |  |  |

**Members**

- `save(): void`
- `restore(): void`
- `setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void`
- `beginPath(): void`
- `moveTo(x: number, y: number): void`
- `lineTo(x: number, y: number): void`
- `bezierCurveTo(x1: number, y1: number, x2: number, y2: number, x: number, y: number): void`
- `quadraticCurveTo(x1: number, y1: number, x: number, y: number): void`
- `closePath(): void`
- `fill(): void`
- `stroke(): void`
- `clip(): void`
- `clearRect(x: number, y: number, w: number, h: number): void`
- `fillRect(x: number, y: number, w: number, h: number): void`
- `setLineDash(segments: number[]): void`
- `fillText(text: string, x: number, y: number): void`
- `measureText(text: string): { width: number }`
- `createLinearGradient?(x0: number, y0: number, x1: number, y1: number): unknown`
- `createRadialGradient?( x0: number, y0: number, r0: number, x1: number, y1: number, r1: number ): unknown`
