bckfnn      2004/10/12 23:56:49

  Modified:    src/java/org/apache/fop/image BatikImage.java
  Log:
  Fix a ArrayIndexOutOfBoundsException when loading indexed PNGs.
  
  PR: 31675
  Submitted by: Thomas Deweese
  
  Revision  Changes    Path
  1.2       +11 -12    xml-fop/src/java/org/apache/fop/image/BatikImage.java
  
  Index: BatikImage.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/image/BatikImage.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- BatikImage.java   11 Oct 2004 21:43:13 -0000      1.1
  +++ BatikImage.java   13 Oct 2004 06:56:49 -0000      1.2
  @@ -118,14 +118,15 @@
   
               this.height = cr.getHeight();
               this.width  = cr.getWidth();
  -
  -            cr = new Any2sRGBRed(cr);
  -
               this.isTransparent = false;
               this.softMask = null;
  +            this.bitmapsSize = this.width * this.height * 3;
  +            this.bitmaps = new byte[this.bitmapsSize];
  +            this.bitsPerPixel = 8;
  +
               int transparencyType = cm.getTransparency();
  -            if ((transparencyType == Transparency.BITMASK) 
  -                    && (cm instanceof IndexColorModel)) {
  +            if (cm instanceof IndexColorModel)  {
  +                if (transparencyType == Transparency.BITMASK) {
                   // Use 'transparent color'.
                   IndexColorModel icm = (IndexColorModel)cm;
                   int numColor = icm.getMapSize();
  @@ -142,20 +143,18 @@
                       }
                   }
               }
  +            } else {
  +                cr = new Any2sRGBRed(cr);
  +            }
   
               // Get our current ColorModel
               cm = cr.getColorModel();
   
               // It has an alpha channel so generate a soft mask.
  -            if ((!this.isTransparent) && cm.hasAlpha()) {
  +            if (!this.isTransparent && cm.hasAlpha())
                   this.softMask = new byte[this.width * this.height];
  -            }
   
  -            this.bitsPerPixel = 8;
  -            this.bitmapsSize = this.width * this.height * 3;
  -            this.bitmaps = new byte[this.bitmapsSize];
               this.colorSpace = cm.getColorSpace();
  -
               WritableRaster wr = (WritableRaster)cr.getData();
               BufferedImage bi = new BufferedImage
                   (cm, wr.createWritableTranslatedChild(0, 0), 
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to