public DiagramLayout getBpmnProcessDiagramLayout(Document bpmnModel, InputStream imageStream) {
    if (imageStream == null) {
      return null;
    }
    DiagramNode diagramBoundsXml = getDiagramBoundsFromBpmnDi(bpmnModel);
    DiagramNode diagramBoundsImage;
    if (isExportedFromAdonis50(bpmnModel)) {
      int offsetTop = 29; // Adonis header
      int offsetBottom = 61; // Adonis footer
      diagramBoundsImage = getDiagramBoundsFromImage(imageStream, offsetTop, offsetBottom);
    } else {
      diagramBoundsImage = getDiagramBoundsFromImage(imageStream);
    }
        
    Map<String, DiagramNode> listOfBounds = new HashMap<String, DiagramNode>();
    listOfBounds.put(diagramBoundsXml.getId(), diagramBoundsXml);
//    listOfBounds.putAll(getElementBoundsFromBpmnDi(bpmnModel));
    listOfBounds.putAll(fixFlowNodePositionsIfModelFromAdonis(bpmnModel, getElementBoundsFromBpmnDi(bpmnModel)));

    Map<String, DiagramElement> listOfBoundsForImage = transformBoundsForImage(diagramBoundsImage, diagramBoundsXml, listOfBounds);
    return new DiagramLayout(listOfBoundsForImage);
  }
public DiagramLayout getBpmnProcessDiagramLayout ( Document bpmnModel , InputStream imageStream ) { if ( imageStream == null ) { return null ; } DiagramNode diagramBoundsXml = getDiagramBoundsFromBpmnDi ( bpmnModel ) ; DiagramNode diagramBoundsImage ; if ( isExportedFromAdonis50 ( bpmnModel ) ) { int offsetTop = 29 ; int offsetBottom = 61 ; diagramBoundsImage = getDiagramBoundsFromImage ( imageStream , offsetTop , offsetBottom ) ; } else { diagramBoundsImage = getDiagramBoundsFromImage ( imageStream ) ; } Map < String , DiagramNode > listOfBounds = new HashMap < String , DiagramNode > ( ) ; listOfBounds . put ( diagramBoundsXml . getId ( ) , diagramBoundsXml ) ; listOfBounds . putAll ( fixFlowNodePositionsIfModelFromAdonis ( bpmnModel , getElementBoundsFromBpmnDi ( bpmnModel ) ) ) ; Map < String , DiagramElement > listOfBoundsForImage = transformBoundsForImage ( diagramBoundsImage , diagramBoundsXml , listOfBounds ) ; return new DiagramLayout ( listOfBoundsForImage ) ; }
Provides positions and dimensions of elements in a BPMN process diagram as
provided by {@link RepositoryService#getProcessDiagram(String)}.

@param bpmnModel
BPMN 2.0 XML document
@param imageStream
BPMN 2.0 diagram in PNG format (JPEG and other formats supported
by {@link ImageIO} may also work)
@return Layout of the process diagram
@return null when parameter imageStream is null