Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4462055

NPE in ComponentColorModel when try to print images (jpg, gif, png)

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P2 P2
    • None
    • 1.4.0
    • hotspot
    • generic, sparc
    • generic, solaris, solaris_9

      tao.zhang@eng 05/22/01

      JDK Version: java version "1.4.0-beta_refresh" b63a

      When printing image files, it threw execptions. It works fine with Merlin-beta b65

      How to reproduce the bug:
      1.
      %setenv JAVA_HOME /usr/local/java/jdk1.4_beta_refresh/solsparc
      %setenv JTREG_HOME /usr/local/java/sqe-tools2.1.3fcs
      %setenv AWTSQE_HOME /net/sqesvr/export/awt/sqe-robot/awtsqe.jar
      2.
      %cd /net/sqesvr/export/st2/suites/merlin/2D/PrintQL
      3.
      %gnumake all

      4. Test case:

      import java.io.*;
      import java.awt.*;
      import java.awt.geom.*;
      import java.awt.event.*;
      import java.awt.print.*;
      import java.awt.Toolkit;
      import java.awt.image.BufferedImage;

      public class PrintQL_Frame extends Frame implements ActionListener {
      private TextCanvas c;
      public Image imgGIF, imgPNG, imgJPG;
      String strImageFilesPath = "data" + File.separator + "images";

      public static void main(String args[]) {
      PrintQL_Frame f = new PrintQL_Frame();
      f.show();
      }
          
      public PrintQL_Frame() {
      imgGIF = Toolkit.getDefaultToolkit().getImage(strImageFilesPath + File.separator + "java.gif");
      imgPNG = Toolkit.getDefaultToolkit().getImage(strImageFilesPath + File.separator + "RGBPalette.png");
      imgJPG = Toolkit.getDefaultToolkit().getImage(strImageFilesPath + File.separator + "Waterlillies.jpg");

      c = new TextCanvas();
      add("Center", c);

      Button printButton = new Button("Print");
      printButton.addActionListener(this);
      add("South", printButton);
      setBackground(Color.white);
      setTitle("Printing QL with Frame");

      addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
      System.exit(0);
      }
      });
      pack();
      }

      public void actionPerformed(ActionEvent e) {
      PrinterJob pj = PrinterJob.getPrinterJob();

      if (pj != null && pj.printDialog()) {
      pj.setPrintable(c);

      try {
      pj.print();
      }
      catch (PrinterException pe) {
      }
      finally {
      System.err.println("PRINT RETURNED");
      }
      }
      }


      class TextCanvas extends Canvas implements Printable {
      public int print(Graphics g, PageFormat pgFmt, int pgIndex) {
      if (pgIndex > 0)
      return Printable.NO_SUCH_PAGE;

      Graphics2D g2d= (Graphics2D)g;
      g2d.translate(pgFmt.getImageableX(), pgFmt.getImageableY());

      doPaint(g2d);
      return Printable.PAGE_EXISTS;
      }

      public void paint(Graphics g) {
      doPaint(g);
      }

      public void paintComponent(Graphics g) {
      doPaint(g);
      }

      public void doPaint(Graphics g) {
      Graphics2D g2 = (Graphics2D)g;

      g2.setColor(Color.black);
      g2.drawString("drawString", 10, 15);

      Image im = createImage(50,25);
      Graphics ig = im.getGraphics();
      ig.setColor(Color.red);
      ig.fillRect(0,0,50,25);
      g.drawImage(im, 10, 25, this);

      g2.setColor(Color.green);
      g2.fillRect(50, 25, 50, 25);
      g2.setColor(Color.blue);
      g2.fillRect(100, 25, 50, 25);

      bStroke(g2);

      //GradientPaint gp = new GradientPaint(0.0f, 0.0f, Color.blue, 185.0f, 213.0f, Color.white);
      //g2.setPaint(gp);
      //g2.fillRect(20, 80, 185, 213);

      g2.setStroke(new BasicStroke(2.0f));

      g2.setFont(new Font("courier", Font.BOLD, 18));
      g2.drawString("GIF", 2, 90);
      Line2D line = new Line2D.Double(10, 95, 25, 120);
      g2.draw(line);
      g2.drawImage(imgGIF, 35, 75, this);

      g2.drawString("PNG", 185, 30);
      line = new Line2D.Double(200, 35, 225, 65);
      g2.draw(line);
      g2.drawImage(imgPNG, 230, 10, this);

      g2.drawString("JPG", 185, 300);
      line = new Line2D.Double(200, 305, 235, 355);
      g2.draw(line);
      g2.drawImage(imgJPG, 220, 280, this);

      doFonts(g2);
      }

      public void bStroke(Graphics2D g2) {
      g2.setColor(Color.black);

      for (float f = 1; f < 11.0f; f++) {
      g2.setStroke(new BasicStroke(f));
      GeneralPath p = new GeneralPath();
      p.moveTo(10+(f*15), 55);
      p.lineTo(10+(f*15), 70);
      p.closePath();
      g2.draw(p);
      g2.drawString(" "+ (int)f, (int) (10+(f*15)), 73);
      }
      }

      public void doFonts(Graphics2D g2) {
      Font f;
      FontMetrics fm;
      int fH, fW;
      int y = 270;
      g2.setColor(Color.black);
      for (int i = 1; i < 40; i+=3) {
      f = new Font("Dialog", Font.PLAIN, i);
      g2.setFont(f);
      fm = getFontMetrics(f);
      fH = (int) (fm.getMaxAscent()+fm.getMaxDescent());
      y = y+fm.getMaxAscent();

      g2.drawString("Dialog:" + i, 10, y);
      g2.setFont(new Font("Dialog", Font.BOLD, i));
      g2.drawString("Dialog:"+i, 50, y);
      //y += fm.getMaxDescent(); //+fm.getLeading();
      }
      }

      public Dimension getPreferredSize() {
      return new Dimension(500, 550);
      }
      }
      }

      ------------------------------------------------

      Test results:

      -------------------- Java version being used :
      --------------------------------------------------------------------------------
      java version "1.4.0-beta_refresh"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-beta_refresh-b63a)
      Java HotSpot(TM) Client VM (build 1.4.0-beta_refresh-b63a, mixed mode)
      --------------------------------------------------------------------------------
      -------------------- Running PrintQL_Frame
      PRINT RETURNED
      java.lang.NullPointerException
              at java.awt.image.ComponentColorModel.getDataElements(ComponentColorModel.java:1349)
              at sun.awt.image.PixelConverter.rgbToPixel(PixelConverter.java:41)
              at sun.java2d.loops.SurfaceType.pixelFor(SurfaceType.java:359)
              at sun.java2d.SurfaceData.pixelFor(SurfaceData.java:556)
              at sun.java2d.SunGraphics2D.<init>(SunGraphics2D.java:211)
              at sun.java2d.loops.BlitBg$General.BlitBg(BlitBg.java:149)
              at sun.java2d.SunGraphics2D.blitSurfaceData(SunGraphics2D.java:2974)
              at sun.java2d.SunGraphics2D.renderSurfaceData(SunGraphics2D.java:2897)
              at sun.java2d.SunGraphics2D.renderImage(SunGraphics2D.java:2881)
              at sun.java2d.SunGraphics2D.renderingPipeImage(SunGraphics2D.java:2860)
              at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:2214)
              at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:2196)
              at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3244)
              at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3431)
              at sun.awt.image.ImageRepresentation.drawToBufImage(ImageRepresentation.java:780)
              at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3446)
              at sun.print.PSPathGraphics.drawImageToPS(PSPathGraphics.java:984)
              at sun.print.PSPathGraphics.drawImage(PSPathGraphics.java:498)
              at sun.print.PSPathGraphics.drawImage(PSPathGraphics.java:409)
              at sun.print.PSPathGraphics.drawImage(PSPathGraphics.java:348)
              at sun.print.PSPathGraphics.drawImage(PSPathGraphics.java:291)
              at sun.print.PSPathGraphics.drawImage(PSPathGraphics.java:200)
              at PrintQL_Frame$TextCanvas.doPaint(PrintQL_Frame.java:118)
              at PrintQL_Frame$TextCanvas.print(PrintQL_Frame.java:67)
              at sun.print.RasterPrinterJob.printPage(RasterPrinterJob.java:1447)
              at sun.print.RasterPrinterJob.print(RasterPrinterJob.java:1030)
              at sun.print.RasterPrinterJob.print(RasterPrinterJob.java:931)
              at PrintQL_Frame.actionPerformed(PrintQL_Frame.java:48)
              at java.awt.Button.processActionEvent(Button.java:384)
              at java.awt.Button.processEvent(Button.java:353)
              at java.awt.Component.dispatchEventImpl(Component.java:3474)
              at java.awt.Component.dispatchEvent(Component.java:3341)
              at java.awt.EventQueue.dispatchEvent(EventQueue.java:439)
              at java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:150)
              at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:136)
              at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:131)
              at java.awt.EventDispatchThread.run(EventDispatchThread.java:99)

      ////////////////////////////////////////////////////////////////////////
      al.smith@eng 2001-05-30
      Below is the regression test results from bug 4464341.

      Name: as83306 Date: 05/30/2001

      Regression test java/awt/image/BufferedImage/SubBandBug.java fails with Merlin build 63b on
      Solaris, host jetfly. The previous build this test passed with was b63.
       For test hardware config's, see http://sqesvr.eng/st3/jdk1.4/docs/Merlin-hw.html
      #Test Results (version 2)
      #Fri May 25 19:32:20 PDT 2001
      #checksum:6ecb72356084719e
      #-----testdescription-----
      $file=/net/sqesvr/export/st1/regression/merlin/jdk1.4Tests/tests/b63b/java/awt/image/BufferedImage/SubBandBug.java
      $root=/net/sqesvr/export/st1/regression/merlin/jdk1.4Tests/tests/b63b
      keywords=bug4240596
      run=ASSUMED_ACTION main SubBandBug\n
      source=SubBandBug.java
      title=Test construction of BI from a single band child of a multi-band raster

      #-----environment-----

      #-----testresult-----
      description=file:///net/sqesvr/export/st1/regression/merlin/jdk1.4Tests/tests/b63b/java/awt/image/BufferedImage/SubBandBug.
      java
      end=Fri May 25 19:32:20 PDT 2001
      environment=regtest
      execStatus=Failed. Execution failed: `main' threw exception: java.lang.NullPointerException
      javatestOS=SunOS 5.9 (sparc)
      javatestVersion=2.1.5
      script=com.sun.javatest.regtest.RegressionScript
      sections=script_messages build compile main
      start=Fri May 25 19:32:13 PDT 2001
      status=Failed. Execution failed: `main' threw exception: java.lang.NullPointerException
      test=java/awt/image/BufferedImage/SubBandBug.java
      work=/export0/results/regression/merlin/b63b/jetfly5.9-jth13-jdk14b63b.05-25.18.30-ALL/java/awt/image/BufferedImage

      #section:script_messages
      ----------messages:(4/252)----------
      JDK under test: (/net/sqesvr/export/st1/jdk14-beta/b63b/solsparc)
      java version "1.4.0-beta_refresh"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-beta_refresh-b63b)
      Java HotSpot(TM) Client VM (build 1.4.0-beta_refresh-b63b, mixed mode)

      #section:build
      ----------messages:(3/96)----------
      command: build SubBandBug
      reason: Named class compiled on demand
      elapsed time (seconds): 4.141
      result: Passed. Compilation successful

      #section:compile
      ----------messages:(3/207)----------
      command: compile
      /net/sqesvr/export/st1/regression/merlin/jdk1.4Tests/tests/b63b/java/awt/image/BufferedImage/SubBandBug.java
      reason: .class file out of date or does not exist
      elapsed time (seconds): 4.137
      ----------System.out:(0/0)----------
      ----------System.err:(0/0)----------
      result: Passed. Compilation successful

      #section:main
      ----------messages:(3/119)----------
      command: main SubBandBug
      reason: Assumed action based on file name: run main SubBandBug
      elapsed time (seconds): 3.473
      ----------System.out:(0/0)----------
      ----------System.err:(16/850)----------
      java.lang.NullPointerException
      at java.awt.image.ComponentColorModel.getDataElements(ComponentColorModel.java:1349)
      at java.awt.image.BufferedImage.setRGB(BufferedImage.java:885)
      at SubBandBug.<init>(SubBandBug.java:56)
      at SubBandBug.main(SubBandBug.java:93)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:30)
      at sun.reflect.InflatableMethodAccessorImpl.invoke(InflatableMethodAccessorImpl.java:48)
      at java.lang.reflect.Method.invoke(Method.java:306)
      at com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:94)
      at java.lang.Thread.run(Thread.java:579)

      JavaTest Message: Test threw exception: java.lang.NullPointerException
      JavaTest Message: shutting down test

      STATUS:Failed.`main' threw exception: java.lang.NullPointerException
      result: Failed. Execution failed: `main' threw exception: java.lang.NullPointerException


      test result: Failed. Execution failed: `main' threw exception: java.lang.NullPointerException
      ======================================================================

            never Tom Rodriguez
            ttzhang Tao Zhang
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: