Drawing Custom RenderedImage types fails when scaling transform is applied

XMLWordPrintable

    • Type: Bug
    • Resolution: Duplicate
    • Priority: P4
    • None
    • Affects Version/s: 1.2.1, 1.4.2
    • Component/s: client-libs
    • 2d
    • generic, x86
    • generic, windows_xp



      Name: rmT116609 Date: 06/19/2003


      FULL PRODUCT VERSION :
      java version "1.4.2-beta"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2-beta-b19)
      Java HotSpot(TM) Client VM (build 1.4.2-beta-b19, mixed mode)


      FULL OS VERSION :
      Microsoft Windows XP [Version 5.1.2600]


      A DESCRIPTION OF THE PROBLEM :
      Drawing Custom RenderedImage types fails when scaling transform is applied. After setting up a RenderedImage using a PixelInterleavedSampleModel, any drawRenderedImage using an AffineTransform scale transform other than 1.0 results in java.awt.image.ImagingOpException: Unable to transform src image
      that seems to be comming from ImagingLib.

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
        To draw the RenderedImage
      ACTUAL -
      Exception occured and no renderedImage drawn

      see source code test case.

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
         Exception
      Paint being called
      java.awt.image.ImagingOpException: Unable to transform src image
              at java.awt.image.AffineTransformOp.filter(AffineTransformOp.java:262)
              at sun.java2d.pipe.DrawImage.transformImage(DrawImage.java:273)
              at sun.java2d.pipe.DrawImage.transformImage(DrawImage.java:784)
              at sun.java2d.pipe.ValidatePipe.transformImage(ValidatePipe.java:179)
              at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:2899)
              at other.JavaBug$1.paint(JavaBug.java:49)
              at javax.swing.JComponent.paintChildren(JComponent.java:643)
              at javax.swing.JComponent.paint(JComponent.java:813)
              at javax.swing.JComponent.paintChildren(JComponent.java:643)
              at javax.swing.JComponent.paint(JComponent.java:813)
              at javax.swing.JLayeredPane.paint(JLayeredPane.java:552)
              at javax.swing.JComponent.paintChildren(JComponent.java:643)
              at javax.swing.JComponent.paintWithOffscreenBuffer
      (JComponent.java:4742)
              at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4688)
              at javax.swing.JComponent.paint(JComponent.java:794)
              at java.awt.GraphicsCallback$PaintCallback.run
      (GraphicsCallback.java:21)
              at sun.awt.SunGraphicsCallback.runOneComponent
      (SunGraphicsCallback.java:60)
              at sun.awt.SunGraphicsCallback.runComponents
      (SunGraphicsCallback.java:97)
              at java.awt.Container.paint(Container.java:1268)
              at sun.awt.RepaintArea.paint(RepaintArea.java:180)
              at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:260)
              at java.awt.Component.dispatchEventImpl(Component.java:3586)
              at java.awt.Container.dispatchEventImpl(Container.java:1582)
              at java.awt.Window.dispatchEventImpl(Window.java:1581)
              at java.awt.Component.dispatchEvent(Component.java:3367)
              at java.awt.EventQueue.dispatchEvent(EventQueue.java:445)
              at java.awt.EventDispatchThread.pumpOneEventForHierarchy
      (EventDispatchThread.java:191)
              at java.awt.EventDispatchThread.pumpEventsForHierarchy
      (EventDispatchThread.java:144)
              at java.awt.EventDispatchThread.pumpEvents
      (EventDispatchThread.java:138)
              at java.awt.EventDispatchThread.pumpEvents
      (EventDispatchThread.java:130)
              at java.awt.EventDispatchThread.run(EventDispatchThread.java:98)



      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      ---------- BEGIN SOURCE ----------
      /*
       * JavaBug.java
       *
       * Created on July 30, 2002, 10:33 AM
       */

      package other;

      import java.awt.image.*;
      import java.awt.geom.AffineTransform;
      import java.awt.color.ColorSpace;
      import javax.swing.JFrame;
      import java.awt.Graphics2D;
      import java.awt.Graphics;

      /**
       *
       * @author Shawn Bisgrove
       */
      public class JavaBug extends JFrame {
          final BufferedImage bi;
          final javax.swing.JPanel jp;
          /** Creates a new instance of JavaBug */
          public JavaBug() {

                  short[] s = new short[30 * 30 * 30]; // 30 height, 30
      width, 30 bands
                  for (int i = 0; i < 30*30*30; ++i) {
                      s[i] = (short)(5000 * Math.random());
                  }
                  DataBufferShort db = new DataBufferShort(s, s.length);
                  ComponentSampleModel pism = new PixelInterleavedSampleModel
      (DataBuffer.TYPE_SHORT,30,30, 30,30 * 30, new int[]{ 5, 8, 9} );
                  WritableRaster wr = Raster.createWritableRaster(pism, db, null);

                  ComponentColorModel ccm = new ComponentColorModel(
                  ColorSpace.getInstance(ColorSpace.CS_sRGB),
                      (int[])null,false, false, ColorModel.OPAQUE,
                      DataBuffer.TYPE_SHORT);

               bi = new BufferedImage( ccm, wr, false, null);
               jp = new javax.swing.JPanel() {
                  public void paint(Graphics g) {
                      System.out.println("Paint being called");
                      AffineTransform at = AffineTransform.getScaleInstance((double)
      0.5, (double)0.5);
                      ((Graphics2D)g).drawImage(bi, at, null);
                  }
               };


               getContentPane().add(jp);

          }


          public static void main(final String[] args) {
              JavaBug jb = new JavaBug();
              jb.setSize(500,500);
              jb.setDefaultCloseOperation(jb.DISPOSE_ON_CLOSE);
              jb.show();

          }

      }
      ---------- END SOURCE ----------

      (Review ID: 187215)
      ======================================================================

            Assignee:
            Andrew Brygin
            Reporter:
            Ranjith Mandala (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: