1 31 package org.pdfbox.pdmodel.graphics.color; 32 33 import org.pdfbox.cos.COSArray; 34 import org.pdfbox.cos.COSBase; 35 import org.pdfbox.cos.COSDictionary; 36 import org.pdfbox.cos.COSFloat; 37 import org.pdfbox.cos.COSName; 38 39 import org.pdfbox.pdmodel.common.PDRange; 40 41 import java.awt.color.ColorSpace ; 42 import java.awt.image.ColorModel ; 43 44 import java.io.IOException ; 45 46 52 public class PDLab extends PDColorSpace 53 { 54 57 public static final String NAME = "Lab"; 58 59 private COSArray array; 60 private COSDictionary dictionary; 61 62 65 public PDLab() 66 { 67 array = new COSArray(); 68 dictionary = new COSDictionary(); 69 array.add( COSName.getPDFName( NAME ) ); 70 array.add( dictionary ); 71 } 72 73 78 public PDLab( COSArray lab ) 79 { 80 array = lab; 81 dictionary = (COSDictionary)array.getObject( 1 ); 82 } 83 84 89 public String getName() 90 { 91 return NAME; 92 } 93 94 99 public COSBase getCOSObject() 100 { 101 return array; 102 } 103 104 111 public ColorSpace createColorSpace() throws IOException 112 { 113 throw new IOException ( "Not implemented" ); 114 } 115 116 125 public ColorModel createColorModel( int bpc ) throws IOException 126 { 127 throw new IOException ( "Not implemented" ); 128 } 129 130 137 public int getNumberOfComponents() throws IOException 138 { 139 return 3; 142 } 143 144 151 public PDTristimulus getWhitepoint() 152 { 153 COSArray wp = (COSArray)dictionary.getDictionaryObject( COSName.getPDFName( "WhitePoint" ) ); 154 if( wp == null ) 155 { 156 wp = new COSArray(); 157 wp.add( new COSFloat( 1.0f ) ); 158 wp.add( new COSFloat( 1.0f ) ); 159 wp.add( new COSFloat( 1.0f ) ); 160 dictionary.setItem( COSName.getPDFName( "WhitePoint" ), wp ); 161 } 162 return new PDTristimulus( wp ); 163 } 164 165 171 public void setWhitepoint( PDTristimulus wp ) 172 { 173 COSBase wpArray = wp.getCOSObject(); 174 if( wpArray != null ) 175 { 176 dictionary.setItem( COSName.getPDFName( "WhitePoint" ), wpArray ); 177 } 178 } 179 180 187 public PDTristimulus getBlackPoint() 188 { 189 COSArray bp = (COSArray)dictionary.getDictionaryObject( COSName.getPDFName( "BlackPoint" ) ); 190 if( bp == null ) 191 { 192 bp = new COSArray(); 193 bp.add( new COSFloat( 0.0f ) ); 194 bp.add( new COSFloat( 0.0f ) ); 195 bp.add( new COSFloat( 0.0f ) ); 196 dictionary.setItem( COSName.getPDFName( "BlackPoint" ), bp ); 197 } 198 return new PDTristimulus( bp ); 199 } 200 201 207 public void setBlackPoint( PDTristimulus bp ) 208 { 209 210 COSBase bpArray = null; 211 if( bp != null ) 212 { 213 bpArray = bp.getCOSObject(); 214 } 215 dictionary.setItem( COSName.getPDFName( "BlackPoint" ), bpArray ); 216 } 217 218 private COSArray getRangeArray() 219 { 220 COSArray range = (COSArray)dictionary.getDictionaryObject( COSName.getPDFName( "Range" ) ); 221 if( range == null ) 222 { 223 range = new COSArray(); 224 dictionary.setItem( COSName.getPDFName( "Range" ), array ); 225 range.add( new COSFloat( -100 ) ); 226 range.add( new COSFloat( 100 ) ); 227 range.add( new COSFloat( -100 ) ); 228 range.add( new COSFloat( 100 ) ); 229 } 230 return range; 231 } 232 233 239 public PDRange getARange() 240 { 241 COSArray range = getRangeArray(); 242 return new PDRange( range, 0 ); 243 } 244 245 250 public void setARange( PDRange range ) 251 { 252 COSArray rangeArray = null; 253 if( range == null ) 255 { 256 rangeArray = getRangeArray(); 257 rangeArray.set( 0, new COSFloat( -100 ) ); 258 rangeArray.set( 1, new COSFloat( 100 ) ); 259 } 260 else 261 { 262 rangeArray = range.getCOSArray(); 263 } 264 dictionary.setItem( COSName.getPDFName( "Range" ), rangeArray ); 265 } 266 267 273 public PDRange getBRange() 274 { 275 COSArray range = getRangeArray(); 276 return new PDRange( range, 1 ); 277 } 278 279 284 public void setBRange( PDRange range ) 285 { 286 COSArray rangeArray = null; 287 if( range == null ) 289 { 290 rangeArray = getRangeArray(); 291 rangeArray.set( 2, new COSFloat( -100 ) ); 292 rangeArray.set( 3, new COSFloat( 100 ) ); 293 } 294 else 295 { 296 rangeArray = range.getCOSArray(); 297 } 298 dictionary.setItem( COSName.getPDFName( "Range" ), rangeArray ); 299 } 300 } | Popular Tags |