src/share/classes/sun/java2d/cmm/lcms/LCMSImageLayout.java

Print this page


   1 /*
   2  * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any


 359     }
 360 
 361     static int safeAdd(int a, int b) throws ImageLayoutException {
 362         long res = a;
 363         res += b;
 364         if (res < Integer.MIN_VALUE || res > Integer.MAX_VALUE) {
 365             throw new ImageLayoutException("Invalid image layout");
 366         }
 367         return (int)res;
 368     }
 369 
 370     static int safeMult(int a, int b) throws ImageLayoutException {
 371         long res = a;
 372         res *= b;
 373         if (res < Integer.MIN_VALUE || res > Integer.MAX_VALUE) {
 374             throw new ImageLayoutException("Invalid image layout");
 375         }
 376         return (int)res;
 377     }
 378 

 379     public static class ImageLayoutException extends Exception {
 380         public ImageLayoutException(String message) {
 381             super(message);
 382         }
 383     }
 384     public static LCMSImageLayout createImageLayout(Raster r) {
 385         LCMSImageLayout l = new LCMSImageLayout();
 386         if (r instanceof ByteComponentRaster) {
 387             ByteComponentRaster br = (ByteComponentRaster)r;
 388 
 389             ComponentSampleModel csm = (ComponentSampleModel)r.getSampleModel();
 390 
 391             l.pixelType = CHANNELS_SH(br.getNumBands()) | BYTES_SH(1);
 392 
 393             int[] bandOffsets = csm.getBandOffsets();
 394             BandOrder order = BandOrder.getBandOrder(bandOffsets);
 395 
 396             int firstBand = 0;
 397             switch (order) {
 398                 case INVERTED:


   1 /*
   2  * Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any


 359     }
 360 
 361     static int safeAdd(int a, int b) throws ImageLayoutException {
 362         long res = a;
 363         res += b;
 364         if (res < Integer.MIN_VALUE || res > Integer.MAX_VALUE) {
 365             throw new ImageLayoutException("Invalid image layout");
 366         }
 367         return (int)res;
 368     }
 369 
 370     static int safeMult(int a, int b) throws ImageLayoutException {
 371         long res = a;
 372         res *= b;
 373         if (res < Integer.MIN_VALUE || res > Integer.MAX_VALUE) {
 374             throw new ImageLayoutException("Invalid image layout");
 375         }
 376         return (int)res;
 377     }
 378 
 379     @SuppressWarnings("serial") // JDK-implementation class
 380     public static class ImageLayoutException extends Exception {
 381         public ImageLayoutException(String message) {
 382             super(message);
 383         }
 384     }
 385     public static LCMSImageLayout createImageLayout(Raster r) {
 386         LCMSImageLayout l = new LCMSImageLayout();
 387         if (r instanceof ByteComponentRaster) {
 388             ByteComponentRaster br = (ByteComponentRaster)r;
 389 
 390             ComponentSampleModel csm = (ComponentSampleModel)r.getSampleModel();
 391 
 392             l.pixelType = CHANNELS_SH(br.getNumBands()) | BYTES_SH(1);
 393 
 394             int[] bandOffsets = csm.getBandOffsets();
 395             BandOrder order = BandOrder.getBandOrder(bandOffsets);
 396 
 397             int firstBand = 0;
 398             switch (order) {
 399                 case INVERTED: