Eulergraph
    Preparing search index...

    Class GraphicElementAbstract

    Базовый класс, от которого все наследуются.

    Стабильный ID типа для сериализации (className в JSON) и ключа в elementsLibstatic readonly typeName. Не зависит от минификации. Объявляйте на каждом конкретном cell-классе; на GraphicElement значение не задаётся. При наследовании обязательно переопределите — иначе assertCellTypeName выбросит ошибку. См. ../../guide/typeName и сериализация cell-классов.md.

    Hierarchy (View Summary)

    Implements

    Index

    Constructors

    Properties

    _batchedDrawPaths: DrawPath[] = []
    _controls: Control[] = []
    _drawCommands: CellPaths[] = []
    _drawPaths: DrawPath[] = []
    _isBlocked: boolean = false
    _isPrintable: boolean = true
    _isVisible: boolean = true
    _magnetPoints: Point[] = []
    _parent: string | null = null

    Родительская ячейка. Может быть только одна. Наличие его означает, что элемент в группе

    _unitedPaths2D: Path2D | null = null
    bbox: Rect = ...
    calculatedSnaps: CalculatedElementSnaps = ...
    children: GraphicElement[] = []

    Дочерние ячейки. Если массив не пуст, значит ячейка является группой

    cursorName: string = "DRAG_CELL_SVG"

    Название курсора, который задан в cursorCollection, который будет показываться при наведении на фигуру. Если пустая строка, будет показан станадартный, указанный в cursorName, если задан, standardCursor нужно выставить 'none'

    cursorTrasform: string = "translate(-50%, -50%) "

    Смещение кастомного курсора

    customAttrs: CustomAttrs = ...

    Предназначен для расширения атрибутами

    dragFantomPosition: Point | null = null

    Применяется при драге с привязкой. Сначала изменяется это значение, и если выполняется условие привязки - меняется положение ячейки

    drawingScale: number = 1

    Масштаб чертежа

    dynamicParams: GraphicElementParams = ...

    Параметры элемента.

    Значения нельзя мутировать. Для изменения значения используйте switchParam

    Для получения значения getParamValue

    Если имя параметра совпадает с именем поля элемента, то параметр будет автоматически обновляться из поля элемента. Если такое поведение нежелательно, то полностью переопределяйте updateParamValues

    Для избежания конфликтов между именами можно использовать префикс для имени параметра, например "PAR_".

    Если есть вероятность того, что параметр меняется извне, например контролом, и значение берется не из внутреннего поля элемента или его нужно вычислить, обновление параметра нужно прописать в updateParamValues

    protected override updateParamValues(): void {
    super.updateParamValues()
    this.updateParamVal("angle", round(this.angle, true, 2))
    }
    forceUpdateRenderCash: boolean = false
    id: string

    Уникальный идентификатор

    isCell: boolean = true
    isTextEditable: boolean = false

    Фигура с таким флагом будет редактироваться в TextEditor

    libName: string | null = null

    Имя библиотеки, которая породила этот элемент.

    magnetPointsPath: Path2D = ...
    name: string = "Graphic Element"

    Имя. Отображается пользователю

    needUpdateSnaps: boolean = true
    relativeSnapPoints: RelativePosition[] = []

    Точки привязки, задаются как доли от ширины и высоты

    scene: Scene2D | null = null

    Сцена, которой принадлежит

    standardCursor: CursorStandard = "none"

    Стандартный курсор, который будет показываться при наведении на фигуру. Если задан cursorName, то нужно выставить в 'none'

    supportedSnaps: SupportedElementSnaps = ...
    transform: DOMMatrix = ...
    userData: UserData = []

    Для любых данных пользователя

    withCellSizes: boolean = true
    zIndex: number = 0

    Accessors

    • get angle(): number

      Returns number

    • get controls(): Control[]

      Returns Control[]

    • set controls(controls: Control[]): void

      Parameters

      Returns void

    • get drawCommands(): CellPaths[]

      Returns CellPaths[]

    • set drawCommands(drawCommands: CellPaths[]): void

      setter

      Необходимо присваивать новый массив, а не мутировать старый, тогда пути рисования обновятся

      Parameters

      Returns void

    • get engine(): EulerGraph | null | undefined

      Returns EulerGraph | null | undefined

    • get height(): number

      Returns number

    • get isBlocked(): boolean

      Returns boolean

    • set isBlocked(isBlocked: boolean): void

      Parameters

      • isBlocked: boolean

      Returns void

    • get isBlockedInRender(): boolean

      Returns boolean

    • get isPrintable(): boolean

      Returns boolean

    • set isPrintable(isPrintable: boolean): void

      Parameters

      • isPrintable: boolean

      Returns void

    • get isVisible(): boolean

      Returns boolean

    • set isVisible(visible: boolean): void

      Parameters

      • visible: boolean

      Returns void

    • get lib(): Library<typeof BaseLinear | typeof BaseCell> | null

      Возвращает библиотеку, которая породила этот элемент. Для этого у элемента должен быть задан libName, элемент должен быть в сцене и подключен сервис Stencil

      Returns Library<typeof BaseLinear | typeof BaseCell> | null

    • get magnetPoints(): Point[]

      Returns Point[]

    • get paramData(): ParamData[]

      Returns ParamData[]

    • get position(): Point

      Returns Point

    • set position(_point: Point): void

      Parameters

      Returns void

    • get visibleInRender(): boolean

      Returns boolean

    • get width(): number

      Returns number

    Methods

    • Returns void

    • Parameters

      • save: boolean = false

      Returns void

    • Попадает ли точка в фигуру.

      Если accurately = false то будет найдено пересечение с повернутым bbox

      Parameters

      • point: PointLike
      • ctx: CanvasRenderingContext2D
      • drawingScale: number
      • accurately: boolean

      Returns boolean

    • Returns void

    • Parameters

      • ctx: CanvasRenderingContext2D

      Returns void

    • Parameters

      • ctx: CanvasRenderingContext2D
      • zoom: number
      • OptionalwithCellSizes: boolean

      Returns void

    • Функция для расчета привязки к центру элемента. в глобальных координатах Может быть переопределена

      Returns Point[] | null

    • Parameters

      • Optional_options: Record<string, boolean>

      Returns Control[]

    • Returns Control[]

    • Returns string

    • Добавляет кастомные параметры

      Добавлять параметры так же можно через dynamicParams и описывать поведение в onParamChange

      Returns ParamData[]

    • Получает текущее значение параметра

      Parameters

      • name: string

      Returns string | number | boolean

    • Результат используется в calculatedSnaps для расчета абсолютных точек привязки.

      По умолчанию возвращает Null. Можно переопределить и выдавать кастомные точки привязки, заданные в локальных координатах элемента

      Точки привязки также могут быть заданы через relativeSnapPoints

      Returns Point[] | null

    • Возвращает посчитанные точки для привязок в абсолютных координатах

      Returns CalculatedElementSnaps

    • Parameters

      • point: Point
      • ctx: CanvasRenderingContext2D
      • drawingScale: number

      Returns boolean

    • Записывает this.dynamicParams.paramData в this._paramData, обогащая переданные в dynamicParams paramData методом onChange, который вызывает:

      onChange: (val: string | number | boolean) => {
      this.updateParamVal(customParam.name, val)

      this.onParamChange(customParam.name, val)
      this.update()
      }

      Returns void

    • Parameters

      Returns void

    • Parameters

      Returns void

    • Parameters

      • _deltaX: number
      • _deltaY: number
      • Optional_update: boolean

      Returns void

    • Parameters

      • ctx: CanvasRenderingContext2D
      • zoom: number

      Returns void

    • Вызывается в моммент изменения параметра методом onChange() перед this.update(). Предназначен для переопределения в наследнике

      Parameters

      • _paramName: string
      • _value: string | number | boolean

      Returns void

    • Parameters

      • evt: {
            canvasPosition: { x: number; y: number };
            clickPoint: Point | { x: number; y: number };
            x: number;
            y: number;
        }
      • _args: unknown

      Returns void

    • Parameters

      • evt: {
            canvasPosition: { x: number; y: number };
            isCtrl: boolean;
            isOutside: boolean;
            x: number;
            y: number;
        }
      • _args: unknown

      Returns void

    • Parameters

      • ctx: CanvasRenderingContext2D
      • _zoom: number
      • Optional_options: RenderOptions

      Returns void

    • Returns void

    • Меняет значение параметра, вызывая его метод onChange()

      Parameters

      • name: string
      • val: string | number | boolean

      Returns void

    • При добавлении нового поля если хотите, чтобы оно сохранялось, нужно добавить его в GRAPHIC_ELEMENT_SAVE_FIELDS

      Returns GraphicElementJSON

    • Parameters

      • deep: boolean = true

      Returns void

    • Returns void

    • Returns void

    • Returns void

    • Returns void

    • Вспомогательный метод, обновляет значение в параметрах dynamicParams и _paramData

      Parameters

      • name: string
      • val: string | number | boolean

      Returns void

    • Если в параметрах используется поле из самого объекта, то его нужно обновить в параметрах, так как оно могло измениться другим способом, например контролами. Пример:

      protected override updateParamValues(): void {
      this.updateParamVal("widthMM", this.widthMM)
      })
      }

      Если имя параметра совпадает с именем поля объекта, то можно не переопределять, он обновит автоматически, или если переопределяете, то вызывайте super.updateParamValues()

      Returns void

    • Returns void