/** * Returns the anchor (the bounding box rectangle) of this shape group. All coordinates are * expressed in points (72 dpi). * * @return the anchor of this shape group */ public Rectangle2D getAnchor2D() { EscherContainerRecord spContainer = (EscherContainerRecord) _escherContainer.getChildRecords().get(0); EscherClientAnchorRecord clientAnchor = (EscherClientAnchorRecord) getEscherChild(spContainer, EscherClientAnchorRecord.RECORD_ID); Rectangle2D.Float anchor = new Rectangle2D.Float(); if (clientAnchor == null) { logger.log( POILogger.INFO, "EscherClientAnchorRecord was not found for shape group. Searching for EscherChildAnchorRecord."); EscherChildAnchorRecord rec = (EscherChildAnchorRecord) getEscherChild(spContainer, EscherChildAnchorRecord.RECORD_ID); anchor = new Rectangle2D.Float( (float) rec.getDx1() * POINT_DPI / MASTER_DPI, (float) rec.getDy1() * POINT_DPI / MASTER_DPI, (float) (rec.getDx2() - rec.getDx1()) * POINT_DPI / MASTER_DPI, (float) (rec.getDy2() - rec.getDy1()) * POINT_DPI / MASTER_DPI); } else { anchor.x = (float) clientAnchor.getCol1() * POINT_DPI / MASTER_DPI; anchor.y = (float) clientAnchor.getFlag() * POINT_DPI / MASTER_DPI; anchor.width = (float) (clientAnchor.getDx1() - clientAnchor.getCol1()) * POINT_DPI / MASTER_DPI; anchor.height = (float) (clientAnchor.getRow1() - clientAnchor.getFlag()) * POINT_DPI / MASTER_DPI; } return anchor; }