/*
JWildfire - an image and animation processor written in Java
Copyright (C) 1995-2013 Andreas Maschke
This is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser
General Public License as published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this software;
if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jwildfire.create.tina.io;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
import java.util.List;
import org.jwildfire.create.tina.audio.RecordedFFT;
import org.jwildfire.create.tina.base.Flame;
import org.jwildfire.create.tina.dance.DancingFlameProject;
import org.jwildfire.create.tina.dance.motion.Motion;
public class JWFDanceReader {
public DancingFlameProject readProject(String pFilename) {
try {
ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(new FileInputStream(pFilename)));
try {
// read header
@SuppressWarnings("unused")
JWFDanceFileHeader header = (JWFDanceFileHeader) in.readObject();
// read data
DancingFlameProject project = new DancingFlameProject();
@SuppressWarnings("unchecked")
List<Flame> flames = (List<Flame>) in.readObject();
@SuppressWarnings("unchecked")
List<Motion> motions = (List<Motion>) in.readObject();
String soundFilename = (String) in.readObject();
RecordedFFT fft = (RecordedFFT) in.readObject();
project.getFlames().addAll(flames);
project.getMotions().addAll(motions);
project.setSoundData(soundFilename, fft);
return project;
}
finally {
in.close();
}
}
catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException(ex);
}
}
}