1 31 package org.pdfbox.pdmodel.common.function; 32 33 import java.io.IOException ; 34 35 import org.pdfbox.cos.COSBase; 36 import org.pdfbox.cos.COSDictionary; 37 import org.pdfbox.cos.COSObject; 38 import org.pdfbox.cos.COSStream; 39 import org.pdfbox.pdmodel.common.COSObjectable; 40 import org.pdfbox.pdmodel.common.PDRange; 41 import org.pdfbox.pdmodel.common.PDStream; 42 43 49 public abstract class PDFunction implements COSObjectable 50 { 51 60 public static PDFunction create( COSBase function ) throws IOException 61 { 62 PDFunction retval = null; 63 if( function instanceof COSObject ) 64 { 65 function = ((COSObject)function).getCOSObject(); 66 } 67 if( function instanceof COSDictionary ) 68 { 69 COSDictionary funcDic = (COSDictionary)function; 70 int functionType = funcDic.getInt( "FunctionType" ); 71 if( function instanceof COSStream ) 72 { 73 if( functionType == 0 ) 74 { 75 retval = new PDFunctionType0(new PDStream((COSStream)function)); 76 } 77 else if( functionType == 4 ) 78 { 79 retval = new PDFunctionType4(new PDStream((COSStream)function)); 80 } 81 else 82 { 83 throw new IOException ( "Error: Unknown stream function type " + functionType ); 84 } 85 } 86 else 87 { 88 if( functionType == 2 ) 89 { 90 retval = new PDFunctionType2(funcDic); 91 } 92 else if( functionType == 3 ) 93 { 94 retval = new PDFunctionType3(funcDic); 95 } 96 else 97 { 98 throw new IOException ( "Error: Unknown dictionary function type " + functionType ); 99 } 100 } 101 102 } 103 else 104 { 105 throw new IOException ( "Error: Unknown COS type for function " + function ); 106 } 107 return retval; 108 } 109 110 120 public abstract int getNumberOfOutputParameters(); 121 122 131 public abstract PDRange getRangeForOutput(int n); 132 133 139 public abstract void setRangeForOutput(PDRange range, int n); 140 141 148 public abstract int getNumberOfInputParameters(); 149 150 159 public abstract PDRange getDomainForInput(int n); 160 161 167 public abstract void setDomainForInput(PDRange range, int n); 168 169 } | Popular Tags |