Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 1999-2101 Alibaba Group.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package com.alibaba.simpleimage.codec.jpeg.ext;
 
 
TODO Comment of ICCProfileReader

Author(s):
wendell
 
 public class ICCProfileReader implements ExtendImageHeaderReader {
 
     private int      numOfRed     = 0;
     private int      numOfChunks  = 0;
     private int      totalLength  = 0;
     private boolean  errorOnParse = false;
 
     private byte[][] rawProfileData;
     private byte[]   profileData;
 
     /*
      * (non-Javadoc)
      * @see
      * com.alibaba.simpleimage.jpeg.ExtendImageHeaderReader#readProperties(com.alibaba.simpleimage.jpeg.ImageInputStream
      * , com.alibaba.simpleimage.jpeg.ExtendImageHeader)
      */
     public void readProperties(ImageInputStream inint lenExtendImageHeader imageHeaderthrows IOException {
         try {
             if (len < ..) {
                 // this APP2 marker is not used by ICC profile just ignore
                 return;
             }
 
             if () {
                 return;
             }
 
             byte[] label = new byte[..];
             in.read(label);
             len -= label.length;
 
             if (!isICCProfileLabel(label)) {
                 // just ignore this marker
                 return;
             }
 
             int seq = in.read();
             int nums = in.read();
             len -= 2;
 
             // verify seq
             if ( == 0) {
                  = nums;
             } else {
                 if (nums != ) {
                      = true;
 
                     return;
                 }
             }
 
             if (seq > ) {
                  = true;
 
                 return;
             }
             // end verify
 
             byte[] data = new byte[len];
             in.read(data);
             len = 0;
 
             if ( == null) {
                  = new byte[ + 1][];
             }
 
             [seq] = data;
              += data.length;
             ++;
 
             if ( == ) {
                imageHeader.setExistProfile(true);
                imageHeader.setProfileData(getProfileData());
            }
        } finally {
            if (len > 0) {
                in.skipBytes(len);
            }
        }
    }
    protected boolean isICCProfileLabel(byte[] labelthrows IOException {
        if (label.length != ..) {
            return false;
        }
        for (int i = 0; i < label.lengthi++) {
            if (label[i] != .[i]) {
                // just ignore, this marker data is not ICC Profile data
                return false;
            }
        }
        return true;
    }
    public byte[] getProfileData() {
        if () {
            return null;
        }
        if ( == null) {
             = new byte[];
            int destPos = 0;
            for (int i = 0; i <= i++) {
                if ([i] != null) {
                    System.arraycopy([i], 0, destPos[i].length);
                    destPos += [i].length;
                }
            }
        }
        return ;
    }
New to GrepCode? Check out our FAQ X