import { BasePaintObject } from './BasePaintObject'; import { PaintObjectParameters } from '../../../ImageViewer/Layers'; import { PointLocation } from '../../../ImageViewer/Models/SelectionBoxTypes'; import { Color } from '@dt/core-ui'; import { BracketDirection, BracketShape } from './ObjectTypes'; export declare class BracketsPaintObject extends BasePaintObject<'brackets'> { /** Whether to show the left bracket */ showLeftBracket: boolean; /** Whether to show the right bracket */ showRightBracket: boolean; /** Curve intensity (0–2) */ curveIntensity: number; /** Arrow bend intensity (0–1.5) */ arrowIntensity: number; /** Bracket width percentage (0–50) */ bracketWidth: number; /** * Bracket direction: * - 'inward': Both curve inward (default) * - 'outward': Both curve outward (mirrored) * - 'left-in-right-out': Left inward, right outward * - 'left-out-right-in': Left outward, right inward */ arrowDirection: BracketDirection; /** * Visual shape of brackets: * - 'curly': Curved bracket like { } * - 'round': Parenthesis ( ) * - 'angle': Angular < > * - 'square': Straight brackets [ ] * - 'custom': User-defined shape */ bracketsShape: BracketShape; constructor(position: PointLocation, lineColor: Color, lineWidth: number, fillColor: Color, opacity: number); private drawBracket; draw(destCtx: CanvasRenderingContext2D, mainCtx: CanvasRenderingContext2D, backCtx: CanvasRenderingContext2D, params?: PaintObjectParameters): Promise; /** * Updates curve and arrow intensities based on the given bracket shape preset. * Also sets the arrow direction based on the shape. * @param shape - The bracket shape to apply. Has no effect if "custom". */ updateCurvesForShape(shape: BracketShape): void; /** * Updates `bracketsShape` based on the current curve and arrow intensities. * If they match a known preset (within tolerance), that shape is used. * Otherwise, shape becomes `'custom'`. */ updateShapeForCurves(curveIntensity: number, arrowIntensity: number): void; /** * Sets a property by name with proper type checking and updates dependent properties. * @param propertyName - Name of the property to set * @param value - New value to assign * @returns true if the property was handled, false to delegate to base class */ setProperty(propertyName: any, value: any): boolean; }