/**
  * Creates a PdfPattern object.
  *
  * @param painter a pattern painter instance
  * @param compressionLevel the compressionLevel for the stream
  * @since 2.1.3
  */
 PdfPattern(PdfPatternPainter painter, int compressionLevel) {
   super();
   PdfNumber one = new PdfNumber(1);
   PdfArray matrix = painter.getMatrix();
   if (matrix != null) {
     put(PdfName.MATRIX, matrix);
   }
   put(PdfName.TYPE, PdfName.PATTERN);
   put(PdfName.BBOX, new PdfRectangle(painter.getBoundingBox()));
   put(PdfName.RESOURCES, painter.getResources());
   put(PdfName.TILINGTYPE, one);
   put(PdfName.PATTERNTYPE, one);
   if (painter.isStencil()) put(PdfName.PAINTTYPE, new PdfNumber(2));
   else put(PdfName.PAINTTYPE, one);
   put(PdfName.XSTEP, new PdfNumber(painter.getXStep()));
   put(PdfName.YSTEP, new PdfNumber(painter.getYStep()));
   bytes = painter.toPdf(null);
   put(PdfName.LENGTH, new PdfNumber(bytes.length));
   try {
     flateCompress(compressionLevel);
   } catch (Exception e) {
     throw new ExceptionConverter(e);
   }
 }