feat: enhance layer masking functionality and brush controls
- Refactor LayersSheet component to support mask editing state and improve layer visibility handling. - Introduce functions to collect mask layer IDs and count display layers excluding masks. - Update BrushControls to include mask view mode options and a Done button for exiting mask editing. - Modify brush session handling to support brush previews when editing masks. - Implement a new BrushPreviewRenderer for rendering brush strokes with visual feedback. - Add document geometry utilities for transforming points and resolving layer bounds. - Ensure proper cleanup of brush preview on pointer leave and other interactions.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import type { ImageDocument } from "@core/document";
|
||||
import type { Angle, Size, Vec2D } from "@core/geometry";
|
||||
import type { ArtboardId, LayerId } from "@core/id";
|
||||
import type { ArtboardId, AssetId, LayerId } from "@core/id";
|
||||
import type { ToolState } from "./tools";
|
||||
import type { TransformSession } from "./transform";
|
||||
|
||||
@@ -16,12 +16,32 @@ export type SelectionState = {
|
||||
layerIds: LayerId[];
|
||||
};
|
||||
|
||||
export type MaskViewMode = "composite" | "blackWhite" | "alpha" | "overlay";
|
||||
|
||||
export type MaskEditState = {
|
||||
targetLayerId: LayerId;
|
||||
maskLayerId: LayerId;
|
||||
viewMode?: MaskViewMode;
|
||||
};
|
||||
|
||||
export type BrushPreviewState = {
|
||||
position: Vec2D;
|
||||
};
|
||||
|
||||
export type BrushStrokePreviewState = {
|
||||
layerId: LayerId;
|
||||
assetId: AssetId;
|
||||
source: string;
|
||||
};
|
||||
|
||||
export type EditorState = {
|
||||
viewport: ViewportState;
|
||||
selection: SelectionState;
|
||||
tools: ToolState;
|
||||
transformSession?: TransformSession;
|
||||
maskEditLayerId?: LayerId;
|
||||
maskEdit?: MaskEditState;
|
||||
brushPreview?: BrushPreviewState;
|
||||
brushStrokePreview?: BrushStrokePreviewState;
|
||||
};
|
||||
|
||||
export type HistorySnapshot = {
|
||||
|
||||
Reference in New Issue
Block a user