/** @throws IOException */
  protected void exportReportElement(JRPrintElement element) throws IOException {
    xmlWriter.startElement(JRXmlConstants.ELEMENT_reportElement);
    xmlWriter.addEncodedAttribute(JRXmlConstants.ATTRIBUTE_key, element.getKey());
    JRStyle style = element.getStyle();
    if (style != null) {
      xmlWriter.addEncodedAttribute(JRXmlConstants.ATTRIBUTE_style, style.getName());
    }
    xmlWriter.addAttribute(JRXmlConstants.ATTRIBUTE_mode, element.getOwnModeValue());
    xmlWriter.addAttribute(JRXmlConstants.ATTRIBUTE_x, element.getX() + getOffsetX());
    xmlWriter.addAttribute(JRXmlConstants.ATTRIBUTE_y, element.getY() + getOffsetY());
    xmlWriter.addAttribute(JRXmlConstants.ATTRIBUTE_width, element.getWidth());
    xmlWriter.addAttribute(JRXmlConstants.ATTRIBUTE_height, element.getHeight());
    xmlWriter.addAttribute(JRXmlConstants.ATTRIBUTE_forecolor, element.getOwnForecolor());
    xmlWriter.addAttribute(JRXmlConstants.ATTRIBUTE_backcolor, element.getOwnBackcolor());
    JROrigin origin = element.getOrigin();
    if (origin != null) {
      xmlWriter.addAttribute(
          JRXmlConstants.ATTRIBUTE_origin, jasperPrint.getOriginsMap().get(origin));
    }

    int elementId = element.getSourceElementId();
    if (elementId != JRPrintElement.UNSET_SOURCE_ELEMENT_ID) {
      xmlWriter.addAttribute(JRXmlConstants.ATTRIBUTE_srcId, elementId);
    }

    exportProperties(element);

    xmlWriter.closeElement();
  }