feat: add inpaint region functionality and related tools
- Enhanced cursor behavior for new tools: semantic select, mask lasso, and mask rectangle. - Updated mask edit state to include mask asset ID and kind. - Implemented inpaint region commands for adding, applying, and removing inpaint regions. - Introduced new operations for lasso and semantic selection tools. - Created UI components for candidate review and inpaint region management. - Added tests for inpaint region commands to ensure functionality. - Updated various components to support new inpaint features and improve user experience.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import type { Rect, Size } from "./geometry";
|
||||
import type { AssetId, GenerationCandidateId, LayerId } from "./id";
|
||||
import type { AssetId, GenerationCandidateId, InpaintRegionId, LayerId } from "./id";
|
||||
|
||||
export type GeneratedAssetMode = "text-to-image" | "image-to-image" | "inpaint" | "outpaint";
|
||||
|
||||
@@ -26,10 +26,13 @@ export type AssetGenerationProvenance = {
|
||||
scheduler: string;
|
||||
width: number;
|
||||
height: number;
|
||||
batchSize: number;
|
||||
refinePass: boolean;
|
||||
refineStrength: number;
|
||||
};
|
||||
inpaint?: {
|
||||
targetLayerId: LayerId;
|
||||
maskLayerId: LayerId;
|
||||
regionId: InpaintRegionId;
|
||||
sourceAssetId: AssetId;
|
||||
maskAssetId: AssetId;
|
||||
crop: {
|
||||
@@ -49,6 +52,11 @@ export type AssetGenerationProvenance = {
|
||||
maskFeather: number;
|
||||
maskExpand: number;
|
||||
cropPadding: number;
|
||||
profile: string;
|
||||
structureControl: string;
|
||||
controlStrength: number;
|
||||
controlModel: string;
|
||||
colorMatch: boolean;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import type { Artboard } from "./artboard";
|
||||
import type { Asset } from "./asset";
|
||||
import type { DocumentId } from "./id";
|
||||
import type { InpaintRegion } from "./inpaint-region";
|
||||
|
||||
export type ImageDocument = {
|
||||
id: DocumentId;
|
||||
@@ -8,4 +9,5 @@ export type ImageDocument = {
|
||||
version: number;
|
||||
artboards: Artboard[];
|
||||
assets: Asset[];
|
||||
inpaintRegions: InpaintRegion[];
|
||||
};
|
||||
|
||||
@@ -5,5 +5,6 @@ export type DocumentId = OpaqueId<"DocumentId">;
|
||||
export type ArtboardId = OpaqueId<"ArtboardId">;
|
||||
export type LayerId = OpaqueId<"LayerId">;
|
||||
export type AssetId = OpaqueId<"AssetId">;
|
||||
export type InpaintRegionId = OpaqueId<"InpaintRegionId">;
|
||||
export type GenerationCandidateId = OpaqueId<"GenerationCandidateId">;
|
||||
export type GenerationJobId = OpaqueId<"GenerationJobId">;
|
||||
|
||||
@@ -13,7 +13,8 @@ export type {
|
||||
Transform,
|
||||
Vec2D,
|
||||
} from "./geometry";
|
||||
export type { ArtboardId, AssetId, DocumentId, GenerationCandidateId, GenerationJobId, LayerId } from "./id";
|
||||
export type { ArtboardId, AssetId, DocumentId, GenerationCandidateId, GenerationJobId, InpaintRegionId, LayerId } from "./id";
|
||||
export type { InpaintRegion } from "./inpaint-region";
|
||||
export type { ImageLayer } from "./image-layer";
|
||||
export type { AdjustmentLayer, ColorAdjustment } from "./adjustment-layer";
|
||||
export { neutralColorAdjustment } from "./adjustment-layer";
|
||||
|
||||
9
core/inpaint-region.ts
Normal file
9
core/inpaint-region.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import type { AssetId, InpaintRegionId, LayerId } from "./id";
|
||||
|
||||
export type InpaintRegion = {
|
||||
id: InpaintRegionId;
|
||||
name: string;
|
||||
targetLayerId: LayerId;
|
||||
maskAssetId: AssetId;
|
||||
enabled: boolean;
|
||||
};
|
||||
Reference in New Issue
Block a user