Eulergraph
    Preparing search index...

    Тот же BaseCell, но с добавленными контролами для трансформации элемента

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    Accessors

    Methods

    Constructors

    Properties

    _angle: number = 0

    угол в градусах

    _batchedDrawPaths: DrawPath[] = []
    _centerOfRotation: CenterOfRotation
    _controls: Control[] = []
    _drawCommands: CellPaths[] = []
    _drawPaths: DrawPath[] = []
    _drawRules: Record<string, () => DrawCommand> = ...
    _height: number = 100

    Высота

    _isBlocked: boolean = false
    _isPrintable: boolean = true
    _isVisible: boolean = true
    _magnetPoints: Point[] = []
    _parent: string | null = null

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

    _position: Point = ...

    Позиция всегда верхний левый угол

    _unitedPaths2D: Path2D | null = null
    _width: number = 100

    Ширина

    angleRad: number = 0

    угол в радианах

    annotatedText: AnnotatedText[] = []
    bbox: Rect = ...
    bboxEdges: BboxEdges = ...
    calculatedSnaps: CalculatedElementSnaps = ...
    cashCanvas: OffscreenCanvas | null = null
    children: GraphicElement[] = []

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

    compassPoints: CompassPoints | null = null
    cornerPoints: Point[] = []

    Угловые точки от левого нижнего угла по часовой стрелке, с учетом поворота, в глобальных координатах

    cursorName: string = "DRAG_CELL_SVG"

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

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

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

    customAttrs: CustomAttrs = ...

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

    customRender: ((ctx: CanvasRenderingContext2D, zoom: number) => void) | null = null

    Выполняется после основного рендера ячейки в её координатах

    CanvasRenderingContext2D

    number

    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))
    }
    effectCanvas: OffscreenCanvas | null = null
    forceUpdateRenderCash: boolean = false
    foreign?: any = null
    id: string

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

    isCell: boolean = true
    isMultiTextMode: boolean = false

    Булеан флаг - включён ли режим мультитекста

    isTextBlock: boolean = false

    Булеан флаг - является ли ячейка текстовым блоком (TextShape)

    isTextEditable: boolean = true

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

    labels: Label[] = []
    libName: string | null = null

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

    links: Link[] = []

    Линии, которые связаны с ячейкой

    magnetPointsPath: Path2D = ...
    margins: TextMargins = ...
    name: string = "Fugure"

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

    needUpdateSnaps: boolean = true
    prevZoom: number | null = null
    realCellSize: { height: number; offset: Point; width: number } | null = null

    сейчас никак не рассчитывается

    relativeSnapPoints: RelativePosition[] = []

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

    relativeTextPosition: RelativeTextPosition = ...
    rotatedBboxEdges: BboxEdges = ...
    scale: PointLike = ...

    Скейл по оси x и по оси y

    scene: Scene2D | null = null

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

    shapeGhost: OffscreenCanvas | null = null
    shapeType:
        | "line"
        | "arc"
        | "path"
        | "polygon"
        | "polyline"
        | "ellipse"
        | "circle"
        | "arcTo"
        | "bezierCurveTo"
        | "quadraticCurveTo"
        | "rect"
        | "roundRect"
        | "resetClip"
        | "clipPath"
        | "text"
        | "drawImage" = "rect"
    standardCursor: CursorStandard = "none"

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

    startHeight: number

    Высота, которая была изначально до определения реальной высоты

    startWidth: number

    Ширина, которая была изначально до определения реальной ширины

    supportedSnaps: SupportedElementSnaps = ...
    testBboxStyle: TestBboxStyle

    Стиль текстового поля

    textBbox: Rect | null = null
    textPosition: Point | null = null
    textTransform: DOMMatrix = ...
    transform: DOMMatrix = ...
    txtHeight: number = 0
    txtWidth: number = 0
    userData: UserData = []

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

    withBbox: boolean = false

    Для рендера с обрамляющим прямоугольником

    withCellSizes: boolean = true
    zIndex: number = 0
    typeName: string = "Battery"

    Стабильный ID типа для сериализации (className в JSON) и ключа в elementsLib. Не зависит от минификации. При наследовании обязательно переопределите — иначе assertCellTypeName выбросит ошибку при регистрации.

    Accessors

    • get angle(): number

      Returns number

    • set angle(angle: number): void

      Повернет фигуру относительно центра

      Parameters

      • angle: number

      Returns void

    • get center(): Point

      центр bbox в абсолютных координатах

      Returns Point

    • get centerOfRotation(): Point

      Returns Point

    • set centerOfRotation(point: CenterOfRotation): void

      Parameters

      Returns void

    • 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 drawPaths(): DrawPath[]

      Returns DrawPath[]

    • get engine(): EulerGraph | null | undefined

      Returns EulerGraph | null | undefined

    • get geometricCenter(): Point

      Геометрический центр ячейки . В отличие от bbox.center, не смещается метками мультитекста.

      Returns Point

    • get globalCenterOfRotation(): Point

      Returns Point

    • get height(): number

      Высота ячейки в пойнтах (ед измерения отрисовки)

      Returns number

    • set height(newHeight: number): void

      Устанавливает высоту ячейки в пойнтах (ед измерения отрисовки) и пересчитывает bbox и трансформации

      Parameters

      • newHeight: number

      Returns void

    • get heightMM(): number

      Значение высоты в мм

      Returns number

    • set heightMM(height: number): void

      Значение высоты в мм

      Parameters

      • height: number

      Returns void

    • 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 parent(): GraphicElement | null

      Returns GraphicElement | null

    • set parent(elem: GraphicElement | null): void

      Parameters

      Returns void

    • get position(): Point

      Returns Point

    • set position(point: Point): void

      Parameters

      Returns void

    • get positionMM(): Point

      get Позиция в мм

      Returns Point

    • set positionMM(position: Point): void

      set Переводит введённое значение положения из мм в пойнты

      Parameters

      Returns void

    • get skia(): SkiaWasmService | undefined

      Returns SkiaWasmService | undefined

    • get startSize(): { height: number; width: number }

      Returns { height: number; width: number }

    • get textLabel(): Label | null

      Returns Label | null

    • set textLabel(label: Label | null): void

      Parameters

      Returns void

    • get visibleInRender(): boolean

      Returns boolean

    • get width(): number

      Ширина ячейки в пойнтах (ед измерения отрисовки)

      Returns number

    • set width(newWidth: number): void

      Устанавливает ширину ячейки в пойнтах (ед измерения отрисовки) и пересчитывает bbox и трансформации

      Parameters

      • newWidth: number

      Returns void

    • get widthMM(): number

      Значение ширины в мм

      Returns number

    • set widthMM(width: number): void

      Значение ширины в мм

      Parameters

      • width: number

      Returns void

    • get yPos(): number

      Returns number

    Methods

    • Parameters

      • save: boolean = false

      Returns void

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

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

      Parameters

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

      Returns boolean

    • Parameters

      • ctx: CanvasRenderingContext2D

      Returns void

    • Parameters

      • ctx: CanvasRenderingContext2D

      Returns void

    • Parameters

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

      Returns void

    • Parameters

      • ctx: CanvasRenderingContext2D

      Returns void

    • Parameters

      • Optional_drawingScale: number

      Returns void

      Ищет крайние точки на фигуре по восьми направлениям от центра: к центрам сторон bbox и к углам. Сработает только один раз. Если нужно пересчитывать при изменении скейла элемента, нужна убрать проверку. На больших элементах работает медленно. если элемент очень большой надо уменьшать

    • Parameters

      • ctx: CanvasRenderingContext2D

      Returns void

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

      Returns Point[] | null

    • Returns string

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

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

      Returns ParamData[]

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

      Parameters

      • name: string

      Returns string | number | boolean

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

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

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

      Returns Point[] | null

    • Parameters

      • point: PointLike
      • 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

      • deltaX: number
      • deltaY: number
      • update: boolean = true

      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
      • Optionaloptions: RenderOptions

      Returns void

    • Parameters

      • size: Size
      • update: boolean = true

      Returns void

    • Parameters

      • angle: number

        угол в градусах

      • Optionalsnap: number

        угловая привязка в градусах

      Returns void

    • Parameters

      • point: Point | PointLike
      • angle: number

        угол в градусах

      • Optionalsnap: number

        угловая привязка в градусах

      • update: boolean = true

      Returns void

    • Parameters

      • x: number
      • y: number
      • update: boolean = true

      Returns void

    • Parameters

      • text: string

      Returns void

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

      Parameters

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

      Returns void

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

      Returns CellJSON

    • Parameters

      • deep: boolean = true

      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