/*! * Copyright (c) 2023, 2024, Oracle and/or its affiliates. */ /** * @file * * Contains the view of the diamond element which can display text. */ import ShapeView from './ShapeView.mjs'; const { g, V } = joint; export default class DiamondElementView extends ShapeView { // Override. Because our rounded diamond is not EXACTLY sitting at the very edge of the element, // the very small decimal numbers are sometimes throwing the orthogonal routing off. We could // either use the model-size by returning getBBox({ useModelGeometry: true }) our round the values // in getNodeBBox(). getNodeBBox(magnet) { const r = Math.round; const { x, y, width, height } = this.getNodeBoundingRect(magnet); const rect = new g.Rect(r(x), r(y), r(width), r(height)); const transformMatrix = this.getRootTranslateMatrix().multiply(this.getNodeRotateMatrix(magnet)); const magnetMatrix = this.getNodeMatrix(magnet); return V.transformRect(rect, transformMatrix.multiply(magnetMatrix)); } }