- Implemented feather brush tool in the brushRaster module, allowing for feathered edges in brush strokes. - Added new FeatherControls component for UI adjustments of feather settings including size, radius, strength, and smoothing. - Updated brush preview logic to accommodate feather tool alongside existing brush and eraser tools. - Enhanced layer rendering to support feather mask previews and interactions. - Introduced blending logic for feathered strokes to mix blurred mask values with original pixels. - Added unit tests for feather blending functionality and tool keybindings. - Updated cursor handling to reflect feather tool usage.
166 lines
8.8 KiB
TypeScript
166 lines
8.8 KiB
TypeScript
import type { commandIds } from "./ids";
|
|
import type {
|
|
DocumentAddArtboardPayload,
|
|
DocumentAddAssetPayload,
|
|
DocumentAddGroupLayerPayload,
|
|
DocumentAddAdjustmentLayerPayload,
|
|
DocumentSetAdjustmentPayload,
|
|
DocumentAddImageLayerPayload,
|
|
DocumentAddLayerMaskPayload,
|
|
DocumentAddRasterLayerPayload,
|
|
DocumentApplyLayerMaskOperationPayload,
|
|
DocumentGroupLayersPayload,
|
|
DocumentDuplicateLayerPayload,
|
|
DocumentMoveLayerPayload,
|
|
DocumentRemoveArtboardPayload,
|
|
DocumentRemoveLayerPayload,
|
|
DocumentRemoveLayerMaskPayload,
|
|
DocumentRenameArtboardPayload,
|
|
DocumentRenameLayerPayload,
|
|
DocumentSetArtboardBoundsPayload,
|
|
DocumentResizeArtboardPayload,
|
|
DocumentSetArtboardLockedPayload,
|
|
DocumentSetArtboardVisiblePayload,
|
|
DocumentSetLayerClippingMaskPayload,
|
|
DocumentSetLayerLockedPayload,
|
|
DocumentSetLayerOpacityPayload,
|
|
DocumentSetLayerSourceRectPayload,
|
|
DocumentSetLayerVisiblePayload,
|
|
DocumentUpdateAssetSourcePayload,
|
|
DocumentUngroupLayerPayload,
|
|
DocumentAddTextLayerPayload,
|
|
DocumentSetTextLayerPayload,
|
|
} from "./document";
|
|
import type {
|
|
GenerationAddCandidatePayload,
|
|
GenerationApplyCandidateAsLayerPayload,
|
|
GenerationRemoveCandidatePayload,
|
|
GenerationToggleCandidateFavoritePayload,
|
|
GenerationReuseCandidateSettingsPayload,
|
|
GenerationReplaceCandidatePixelsPayload,
|
|
GenerationSelectCandidatePayload,
|
|
GenerationSetCompareModePayload,
|
|
GenerationStartJobPayload,
|
|
GenerationUpdateJobPayload,
|
|
GenerationSucceedJobPayload,
|
|
GenerationFailJobPayload,
|
|
GenerationCancelJobPayload,
|
|
GenerationSetResourcesPayload,
|
|
GenerationFailResourcesPayload,
|
|
} from "./generation";
|
|
import type {
|
|
CommandPaletteOpenPayload,
|
|
CommandPaletteSetQueryPayload,
|
|
CommandPaletteSetSelectedIndexPayload,
|
|
} from "./palette";
|
|
import type { SelectionAddLayerPayload, SelectionSetPayload } from "./selection";
|
|
import type { ToolAppendMaskShapePayload, ToolBeginMaskShapePayload, ToolChooseGenerateIntentPayload, ToolEnterInpaintRegionEditPayload, ToolEnterMaskEditPayload, ToolSetActivePayload, ToolSetBrushPreviewPayload, ToolSetBrushSettingsPayload, ToolSetBrushStrokePreviewPayload, ToolSetChromaKeySettingsPayload, ToolSetFeatherSettingsPayload, ToolSetGenerateSettingsPayload, ToolSetMagicWandSettingsPayload, ToolSetMaskViewModePayload } from "./tool";
|
|
import type { TransformBeginPayload, TransformSetBoundsPayload, TransformSetRotationPayload, TransformUpdatePayload } from "./transform";
|
|
import type { WorkspaceSetPanelPayload } from "./workspace";
|
|
import type { EditorSetPointerSessionPayload } from "./editor";
|
|
import type { ProjectOpenPayload } from "./project";
|
|
import type { DocumentAddInpaintRegionPayload, DocumentApplyInpaintRegionMaskOperationPayload, DocumentRemoveInpaintRegionPayload } from "./inpaint-region";
|
|
import type {
|
|
ViewportFitArtboardPayload,
|
|
ViewportPanPayload,
|
|
ViewportSetSizePayload,
|
|
ViewportSetZoomPayload,
|
|
ViewportZoomAroundPointPayload,
|
|
} from "./viewport";
|
|
|
|
export type CommandPayloads = {
|
|
[commandIds.projectOpen]: ProjectOpenPayload;
|
|
[commandIds.documentAddArtboard]: DocumentAddArtboardPayload;
|
|
[commandIds.documentSetArtboardBounds]: DocumentSetArtboardBoundsPayload;
|
|
[commandIds.documentResizeArtboard]: DocumentResizeArtboardPayload;
|
|
[commandIds.documentRemoveArtboard]: DocumentRemoveArtboardPayload;
|
|
[commandIds.documentSetArtboardVisible]: DocumentSetArtboardVisiblePayload;
|
|
[commandIds.documentSetArtboardLocked]: DocumentSetArtboardLockedPayload;
|
|
[commandIds.documentRenameArtboard]: DocumentRenameArtboardPayload;
|
|
[commandIds.documentAddAsset]: DocumentAddAssetPayload;
|
|
[commandIds.documentUpdateAssetSource]: DocumentUpdateAssetSourcePayload;
|
|
[commandIds.documentAddImageLayer]: DocumentAddImageLayerPayload;
|
|
[commandIds.documentAddRasterLayer]: DocumentAddRasterLayerPayload;
|
|
[commandIds.documentAddGroupLayer]: DocumentAddGroupLayerPayload;
|
|
[commandIds.documentAddAdjustmentLayer]: DocumentAddAdjustmentLayerPayload;
|
|
[commandIds.documentSetAdjustment]: DocumentSetAdjustmentPayload;
|
|
[commandIds.documentAddTextLayer]: DocumentAddTextLayerPayload;
|
|
[commandIds.documentSetTextLayer]: DocumentSetTextLayerPayload;
|
|
[commandIds.documentAddLayerMask]: DocumentAddLayerMaskPayload;
|
|
[commandIds.documentApplyLayerMaskOperation]: DocumentApplyLayerMaskOperationPayload;
|
|
[commandIds.documentRemoveLayerMask]: DocumentRemoveLayerMaskPayload;
|
|
[commandIds.documentAddInpaintRegion]: DocumentAddInpaintRegionPayload;
|
|
[commandIds.documentApplyInpaintRegionMaskOperation]: DocumentApplyInpaintRegionMaskOperationPayload;
|
|
[commandIds.documentRemoveInpaintRegion]: DocumentRemoveInpaintRegionPayload;
|
|
[commandIds.documentMoveLayer]: DocumentMoveLayerPayload;
|
|
[commandIds.documentGroupLayers]: DocumentGroupLayersPayload;
|
|
[commandIds.documentUngroupLayer]: DocumentUngroupLayerPayload;
|
|
[commandIds.documentRemoveLayer]: DocumentRemoveLayerPayload;
|
|
[commandIds.documentSetLayerVisible]: DocumentSetLayerVisiblePayload;
|
|
[commandIds.documentSetLayerLocked]: DocumentSetLayerLockedPayload;
|
|
[commandIds.documentSetLayerOpacity]: DocumentSetLayerOpacityPayload;
|
|
[commandIds.documentSetLayerSourceRect]: DocumentSetLayerSourceRectPayload;
|
|
[commandIds.documentDuplicateLayer]: DocumentDuplicateLayerPayload;
|
|
[commandIds.documentRenameLayer]: DocumentRenameLayerPayload;
|
|
[commandIds.documentSetLayerClippingMask]: DocumentSetLayerClippingMaskPayload;
|
|
[commandIds.selectionSet]: SelectionSetPayload;
|
|
[commandIds.selectionClear]: void;
|
|
[commandIds.selectionAddLayer]: SelectionAddLayerPayload;
|
|
[commandIds.toolSetActive]: ToolSetActivePayload;
|
|
[commandIds.toolSetGenerateSettings]: ToolSetGenerateSettingsPayload;
|
|
[commandIds.toolChooseGenerateIntent]: ToolChooseGenerateIntentPayload;
|
|
[commandIds.toolSetBrushSettings]: ToolSetBrushSettingsPayload;
|
|
[commandIds.toolSetFeatherSettings]: ToolSetFeatherSettingsPayload;
|
|
[commandIds.toolSetChromaKeySettings]: ToolSetChromaKeySettingsPayload;
|
|
[commandIds.toolSetMagicWandSettings]: ToolSetMagicWandSettingsPayload;
|
|
[commandIds.toolSetBrushPreview]: ToolSetBrushPreviewPayload;
|
|
[commandIds.toolSetBrushStrokePreview]: ToolSetBrushStrokePreviewPayload;
|
|
[commandIds.toolBeginMaskShape]: ToolBeginMaskShapePayload;
|
|
[commandIds.toolAppendMaskShape]: ToolAppendMaskShapePayload;
|
|
[commandIds.toolClearMaskShape]: void;
|
|
[commandIds.toolSetMaskViewMode]: ToolSetMaskViewModePayload;
|
|
[commandIds.toolEnterMaskEdit]: ToolEnterMaskEditPayload;
|
|
[commandIds.toolEnterInpaintRegionEdit]: ToolEnterInpaintRegionEditPayload;
|
|
[commandIds.toolExitMaskEdit]: void;
|
|
[commandIds.toolEnterTemporaryPan]: void;
|
|
[commandIds.toolExitTemporaryPan]: void;
|
|
[commandIds.generationAddCandidate]: GenerationAddCandidatePayload;
|
|
[commandIds.generationSelectCandidate]: GenerationSelectCandidatePayload;
|
|
[commandIds.generationSetCompareMode]: GenerationSetCompareModePayload;
|
|
[commandIds.generationRemoveCandidate]: GenerationRemoveCandidatePayload;
|
|
[commandIds.generationToggleCandidateFavorite]: GenerationToggleCandidateFavoritePayload;
|
|
[commandIds.generationClearCandidates]: void;
|
|
[commandIds.generationReuseCandidateSettings]: GenerationReuseCandidateSettingsPayload;
|
|
[commandIds.generationApplyCandidateAsLayer]: GenerationApplyCandidateAsLayerPayload;
|
|
[commandIds.generationReplaceCandidatePixels]: GenerationReplaceCandidatePixelsPayload;
|
|
[commandIds.generationStartJob]: GenerationStartJobPayload;
|
|
[commandIds.generationUpdateJob]: GenerationUpdateJobPayload;
|
|
[commandIds.generationSucceedJob]: GenerationSucceedJobPayload;
|
|
[commandIds.generationFailJob]: GenerationFailJobPayload;
|
|
[commandIds.generationCancelJob]: GenerationCancelJobPayload;
|
|
[commandIds.generationLoadResources]: void;
|
|
[commandIds.generationSetResources]: GenerationSetResourcesPayload;
|
|
[commandIds.generationFailResources]: GenerationFailResourcesPayload;
|
|
[commandIds.transformBegin]: TransformBeginPayload;
|
|
[commandIds.transformUpdate]: TransformUpdatePayload;
|
|
[commandIds.transformSetBounds]: TransformSetBoundsPayload;
|
|
[commandIds.transformSetRotation]: TransformSetRotationPayload;
|
|
[commandIds.transformEnd]: void;
|
|
[commandIds.viewportPan]: ViewportPanPayload;
|
|
[commandIds.viewportSetZoom]: ViewportSetZoomPayload;
|
|
[commandIds.viewportZoomAroundPoint]: ViewportZoomAroundPointPayload;
|
|
[commandIds.viewportSetSize]: ViewportSetSizePayload;
|
|
[commandIds.viewportReset]: void;
|
|
[commandIds.viewportFitArtboard]: ViewportFitArtboardPayload | undefined;
|
|
[commandIds.historyUndo]: void;
|
|
[commandIds.historyRedo]: void;
|
|
[commandIds.commandPaletteOpen]: CommandPaletteOpenPayload;
|
|
[commandIds.commandPaletteClose]: void;
|
|
[commandIds.commandPaletteSetQuery]: CommandPaletteSetQueryPayload;
|
|
[commandIds.commandPaletteSetSelectedIndex]: CommandPaletteSetSelectedIndexPayload;
|
|
[commandIds.workspaceSetPanel]: WorkspaceSetPanelPayload;
|
|
[commandIds.editorSetPointerSession]: EditorSetPointerSessionPayload;
|
|
};
|
|
|
|
export type CommandId = keyof CommandPayloads;
|