1 31 package org.pdfbox.pdmodel.common.function; 32 33 import java.util.List ; 34 35 import org.pdfbox.cos.COSArray; 36 import org.pdfbox.cos.COSFloat; 37 import org.pdfbox.cos.COSNull; 38 import org.pdfbox.pdmodel.PDDocument; 39 import org.pdfbox.pdmodel.common.COSArrayList; 40 import org.pdfbox.pdmodel.common.PDRange; 41 import org.pdfbox.pdmodel.common.PDStream; 42 43 49 public class PDFunctionType0 extends PDStreamFunction 50 { 51 52 57 protected PDFunctionType0( PDDocument doc ) 58 { 59 super( doc, 0 ); 60 } 61 62 67 public PDFunctionType0( PDStream functionDictionary ) 68 { 69 super( functionDictionary ); 70 } 71 72 78 public List getNumberOfSamples() 79 { 80 List retval = null; 81 COSArray size = (COSArray)getCOSStream().getDictionaryObject( "Size" ); 82 if( size != null ) 83 { 84 retval = COSArrayList.convertIntegerCOSArrayToList( size ); 85 } 86 return retval; 87 } 88 89 94 public void setNumberOfSamples( List samples ) 95 { 96 getCOSStream().setItem( "Size", COSArrayList.converterToCOSArray( samples )); 97 } 98 99 105 public int getBitsPerSample() 106 { 107 return getCOSStream().getInt( "BitsPerSample" ); 108 } 109 110 116 public void setBitsPerSample( int bps ) 117 { 118 getCOSStream().setInt( "BitsPerSample", bps ); 119 } 120 121 128 public PDRange getEncodeForParameter( int paramNum ) 129 { 130 PDRange retval = null; 131 COSArray encode = (COSArray)getCOSStream().getDictionaryObject( "Encode" ); 132 if( encode != null && encode.size() >= paramNum*2+1 ) 133 { 134 retval = new PDRange(encode, paramNum ); 135 } 136 return retval; 137 } 138 139 146 public void setEncodeForParameter( int paramNum, PDRange range ) 147 { 148 COSArray encode = (COSArray)getCOSStream().getDictionaryObject( "Encode" ); 149 if( encode == null ) 150 { 151 encode = new COSArray(); 152 } 153 for( int i=encode.size(); i<paramNum*2+1; i++) 154 { 155 encode.add( COSNull.NULL ); 156 } 157 encode.set( paramNum*2, new COSFloat( range.getMin() ) ); 158 encode.set( paramNum*2+1, new COSFloat( range.getMax() ) ); 159 } 160 161 168 public PDRange getDecodeForParameter( int paramNum ) 169 { 170 PDRange retval = null; 171 COSArray encode = (COSArray)getCOSStream().getDictionaryObject( "Decode" ); 172 if( encode != null && encode.size() >= paramNum*2+1 ) 173 { 174 retval = new PDRange(encode, paramNum ); 175 } 176 return retval; 177 } 178 179 186 public void setDecodeForParameter( int paramNum, PDRange range ) 187 { 188 COSArray encode = (COSArray)getCOSStream().getDictionaryObject( "Decode" ); 189 if( encode == null ) 190 { 191 encode = new COSArray(); 192 } 193 for( int i=encode.size(); i<paramNum*2+1; i++) 194 { 195 encode.add( COSNull.NULL ); 196 } 197 encode.set( paramNum*2, new COSFloat( range.getMin() ) ); 198 encode.set( paramNum*2+1, new COSFloat( range.getMax() ) ); 199 } 200 } | Popular Tags |