package de.gaalop.visualizer.engines.lwjgl.recording;
import de.gaalop.visualizer.engines.lwjgl.LwJglRenderingEngine;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;
/**
* Implements a recorder that outputs a GIF file
* @author Christian Steinmetz
*/
public class GIFRecorder extends Recorder {
private AnimatedGifEncoder encoder;
@Override
public void _addFrame(BufferedImage image, long delay) {
encoder.setDelay((int) delay);
encoder.addFrame(image);
}
@Override
public void _finish() {
encoder.finish();
System.out.println("Written recording");
}
@Override
protected void _startRecording() {
try {
encoder = new AnimatedGifEncoder();
JFileChooser chooser = new JFileChooser();
chooser.setFileFilter(new FileFilter() {
@Override
public boolean accept(File f) {
if (f.getName().toLowerCase().endsWith(".gif"))
return true;
if (f.isDirectory()) return true;
return false;
}
@Override
public String getDescription() {
return "GIF files";
}
});
if (chooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
encoder.start(new FileOutputStream(chooser.getSelectedFile()));
encoder.setDelay(40);
System.out.println("Started recording");
}
} catch (FileNotFoundException ex) {
Logger.getLogger(LwJglRenderingEngine.class.getName()).log(Level.SEVERE, null, ex);
}
}
}