refactor(editor): extract brush element renderer (#11460)
This commit is contained in:
@@ -5,6 +5,7 @@ import {
|
|||||||
} from '@blocksuite/affine-block-frame';
|
} from '@blocksuite/affine-block-frame';
|
||||||
import { ConnectionOverlay } from '@blocksuite/affine-block-surface';
|
import { ConnectionOverlay } from '@blocksuite/affine-block-surface';
|
||||||
import {
|
import {
|
||||||
|
BrushElementRendererExtension,
|
||||||
BrushTool,
|
BrushTool,
|
||||||
EraserTool,
|
EraserTool,
|
||||||
HighlighterTool,
|
HighlighterTool,
|
||||||
@@ -52,6 +53,10 @@ export const EdgelessToolExtension: ExtensionType[] = [
|
|||||||
HighlighterTool,
|
HighlighterTool,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
export const EdgelessElementRendererExtension: ExtensionType[] = [
|
||||||
|
BrushElementRendererExtension,
|
||||||
|
];
|
||||||
|
|
||||||
export const EdgelessEditExtensions: ExtensionType[] = [
|
export const EdgelessEditExtensions: ExtensionType[] = [
|
||||||
ElementTransformManager,
|
ElementTransformManager,
|
||||||
ConnectorFilter,
|
ConnectorFilter,
|
||||||
@@ -74,4 +79,5 @@ export const EdgelessBuiltInSpecs: ExtensionType[] = [
|
|||||||
EdgelessToolExtension,
|
EdgelessToolExtension,
|
||||||
EdgelessBuiltInManager,
|
EdgelessBuiltInManager,
|
||||||
EdgelessEditExtensions,
|
EdgelessEditExtensions,
|
||||||
|
EdgelessElementRendererExtension,
|
||||||
].flat();
|
].flat();
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import type {
|
|||||||
import { ElementRendererExtension } from '../../extensions/element-renderer.js';
|
import { ElementRendererExtension } from '../../extensions/element-renderer.js';
|
||||||
import type { RoughCanvas } from '../../index.js';
|
import type { RoughCanvas } from '../../index.js';
|
||||||
import type { CanvasRenderer } from '../canvas-renderer.js';
|
import type { CanvasRenderer } from '../canvas-renderer.js';
|
||||||
import { brush } from './brush/index.js';
|
|
||||||
import { connector } from './connector/index.js';
|
import { connector } from './connector/index.js';
|
||||||
import { group } from './group/index.js';
|
import { group } from './group/index.js';
|
||||||
import { highlighter } from './highlighter/index.js';
|
import { highlighter } from './highlighter/index.js';
|
||||||
@@ -29,11 +28,6 @@ export type ElementRenderer<
|
|||||||
viewportBound: IBound
|
viewportBound: IBound
|
||||||
) => void;
|
) => void;
|
||||||
|
|
||||||
export const BrushElementRendererExtension = ElementRendererExtension(
|
|
||||||
'brush',
|
|
||||||
brush
|
|
||||||
);
|
|
||||||
|
|
||||||
export const HighlighterElementRendererExtension = ElementRendererExtension(
|
export const HighlighterElementRendererExtension = ElementRendererExtension(
|
||||||
'highlighter',
|
'highlighter',
|
||||||
highlighter
|
highlighter
|
||||||
@@ -65,7 +59,6 @@ export const MindmapElementRendererExtension = ElementRendererExtension(
|
|||||||
);
|
);
|
||||||
|
|
||||||
export const elementRendererExtensions = [
|
export const elementRendererExtensions = [
|
||||||
BrushElementRendererExtension,
|
|
||||||
HighlighterElementRendererExtension,
|
HighlighterElementRendererExtension,
|
||||||
ConnectorElementRendererExtension,
|
ConnectorElementRendererExtension,
|
||||||
GroupElementRendererExtension,
|
GroupElementRendererExtension,
|
||||||
|
|||||||
@@ -1,13 +1,15 @@
|
|||||||
|
import {
|
||||||
|
type ElementRenderer,
|
||||||
|
ElementRendererExtension,
|
||||||
|
} from '@blocksuite/affine-block-surface';
|
||||||
import { type BrushElementModel, DefaultTheme } from '@blocksuite/affine-model';
|
import { type BrushElementModel, DefaultTheme } from '@blocksuite/affine-model';
|
||||||
|
|
||||||
import type { CanvasRenderer } from '../../canvas-renderer.js';
|
export const brush: ElementRenderer<BrushElementModel> = (
|
||||||
|
model,
|
||||||
export function brush(
|
ctx,
|
||||||
model: BrushElementModel,
|
matrix,
|
||||||
ctx: CanvasRenderingContext2D,
|
renderer
|
||||||
matrix: DOMMatrix,
|
) => {
|
||||||
renderer: CanvasRenderer
|
|
||||||
) {
|
|
||||||
const { rotate } = model;
|
const { rotate } = model;
|
||||||
const [, , w, h] = model.deserializedXYWH;
|
const [, , w, h] = model.deserializedXYWH;
|
||||||
const cx = w / 2;
|
const cx = w / 2;
|
||||||
@@ -22,4 +24,9 @@ export function brush(
|
|||||||
ctx.fillStyle = color;
|
ctx.fillStyle = color;
|
||||||
|
|
||||||
ctx.fill(new Path2D(model.commands));
|
ctx.fill(new Path2D(model.commands));
|
||||||
}
|
};
|
||||||
|
|
||||||
|
export const BrushElementRendererExtension = ElementRendererExtension(
|
||||||
|
'brush',
|
||||||
|
brush
|
||||||
|
);
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
export * from './brush-tool';
|
export * from './brush-tool';
|
||||||
|
export * from './element-renderer';
|
||||||
export * from './eraser-tool';
|
export * from './eraser-tool';
|
||||||
export * from './highlighter-tool';
|
export * from './highlighter-tool';
|
||||||
export * from './toolbar/configs';
|
export * from './toolbar/configs';
|
||||||
|
|||||||
Reference in New Issue
Block a user