Beispiel #1
0
  public void saveFrametoPNG(String filename) {
    final int frameWidth = _canvas.getWidth();
    final int frameHeight = _canvas.getHeight();
    final ByteBuffer pixelsRGB = Direct.newByteBuffer(frameWidth * frameHeight * 3);
    _canvas.runWithContext(
        new Runnable() {
          public void run() {
            // glPushAttrib(GL_PIXEL_MODE_BIT);
            glReadBuffer(GL_BACK);
            glPixelStorei(GL_PACK_ALIGNMENT, 1);
            glReadPixels(0, 0, frameWidth, frameHeight, GL_RGB, GL_UNSIGNED_BYTE, pixelsRGB);
            // glPopAttrib();
          }
        });
    int[] pixelInts = new int[frameWidth * frameHeight];
    int p = frameWidth * frameHeight * 3;
    int q; // Index into ByteBuffer
    int i = 0; // Index into target int[]
    int w3 = frameWidth * 3; // Number of bytes in each row
    for (int row = 0; row < frameHeight; row++) {
      p -= w3;
      q = p;
      for (int col = 0; col < frameWidth; col++) {
        int iR = pixelsRGB.get(q++);
        int iG = pixelsRGB.get(q++);
        int iB = pixelsRGB.get(q++);
        pixelInts[i++] =
            0xFF000000 | ((iR & 0x000000FF) << 16) | ((iG & 0x000000FF) << 8) | (iB & 0x000000FF);
      }
    }

    // Create a new BufferedImage from the pixeldata.
    BufferedImage bufferedImage =
        new BufferedImage(frameWidth, frameHeight, BufferedImage.TYPE_INT_ARGB);
    bufferedImage.setRGB(0, 0, frameWidth, frameHeight, pixelInts, 0, frameWidth);

    try {
      javax.imageio.ImageIO.write(bufferedImage, "PNG", new File(filename));
    } catch (IOException e) {
      System.out.println("Error: ImageIO.write.");
      e.printStackTrace();
    }

    /* End code taken from: http://www.felixgers.de/teaching/jogl/imagingProg.html */

    /*
     final BufferedImage image = new BufferedImage(
     this.getWidth(), this.getHeight(), BufferedImage.TYPE_INT_ARGB);
     Graphics gr = image.getGraphics();
     this.printAll(gr);
     gr.dispose();
    try {
    	ImageIO.write(image, "PNG", new File(filename));
      } catch (IOException e) {
           System.out.println( "Error: ImageIO.write." );
           e.printStackTrace();
      }
    */
  }
Beispiel #2
0
  @Override
  public boolean finished() {
    if (setupFailed) return true;
    if (!directBuilder.finished()) return false;

    try {
      sdcc.endFileCapture();
      Base.logger.info("Finished writing to file!");
    } catch (IOException e) {
      Base.logger.log(Level.WARNING, "Could not finish writing to file");
    }

    return true;
  }
Beispiel #3
0
 @Override
 public int getLinesProcessed() {
   if (directBuilder == null) return -1;
   return directBuilder.getLinesProcessed();
 }
Beispiel #4
0
 @Override
 public int getLinesTotal() {
   if (directBuilder == null) return -1;
   return directBuilder.getLinesTotal();
 }
Beispiel #5
0
 @Override
 public void runNext() {
   if (directBuilder != null) directBuilder.runNext();
 }
 /**
  * Returns <code>true</code> if the template matches this format instance, <code>false</code>
  * otherwise.
  *
  * @param temp the template to check
  * @return <code>true</code> if the template matches this format instance, <code>false</code>
  *     otherwise
  */
 boolean match(Template temp) {
   return (((temp.field_mask & Template.TYPE_MASK) != 0) && temp.type == type)
       && (((temp.field_mask & Template.DEPTH_MASK) != 0) && temp.depth == depth)
       && (((temp.field_mask & Template.DIRECT_MASK) != 0) && direct.match(temp));
 }