internal PdfPattern(PdfPatternPainter painter, int compressionLevel)
: base()
{
PdfNumber one = new PdfNumber(1);
PdfArray matrix = painter.Matrix;
if ( matrix != null ) {
Put(PdfName.MATRIX, matrix);
}
Put(PdfName.TYPE, PdfName.PATTERN);
Put(PdfName.BBOX, new PdfRectangle(painter.BoundingBox));
Put(PdfName.RESOURCES, painter.Resources);
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.XStep));
Put(PdfName.YSTEP, new PdfNumber(painter.YStep));
bytes = painter.ToPdf(null);
Put(PdfName.LENGTH, new PdfNumber(bytes.Length));
FlateCompress(compressionLevel);
}