public static PdfFunction Type3(PdfWriter writer, float[] domain, float[] range, PdfFunction[] functions, float[] bounds, float[] encode) {
PdfFunction func = new PdfFunction(writer);
func.dictionary = new PdfDictionary();
func.dictionary.Put(PdfName.FUNCTIONTYPE, new PdfNumber(3));
func.dictionary.Put(PdfName.DOMAIN, new PdfArray(domain));
if (range != null)
func.dictionary.Put(PdfName.RANGE, new PdfArray(range));
PdfArray array = new PdfArray();
for (int k = 0; k < functions.Length; ++k)
array.Add(functions[k].Reference);
func.dictionary.Put(PdfName.FUNCTIONS, array);
func.dictionary.Put(PdfName.BOUNDS, new PdfArray(bounds));
func.dictionary.Put(PdfName.ENCODE, new PdfArray(encode));
return func;
}