package com.xenoage.zong.desktop.io.png.out;
import static com.xenoage.utils.collections.CollectionUtils.alist;
import static com.xenoage.utils.io.FilenameUtils.numberFiles;
import java.io.IOException;
import java.util.List;
import com.xenoage.utils.document.io.FileOutput;
import com.xenoage.utils.io.FilenameUtils;
import com.xenoage.utils.io.OutputStream;
import com.xenoage.utils.jse.io.JseOutputStream;
import com.xenoage.zong.desktop.io.print.PngPrinter;
import com.xenoage.zong.documents.ScoreDoc;
import com.xenoage.zong.layout.Layout;
/**
* This class writes one or more PNG files from a given {@link ScoreDoc}.
*
* If the document has multiple pages, multiple files are created and
* named according to {@link FilenameUtils#numberFiles(String, int)}.
*
* @author Andreas Wenger
*/
public class PngScoreDocFileOutput
extends FileOutput<ScoreDoc> {
@Override public void write(ScoreDoc document, int fileIndex, OutputStream stream)
throws IOException {
Layout layout = document.getLayout();
PngPrinter.print(layout, fileIndex, new JseOutputStream(stream));
}
@Override public List<String> getFileNames(ScoreDoc document, String fileName) {
Layout layout = document.getLayout();
if (layout.getPages().size() == 1) {
//simple case: just one page
return alist(fileName);
}
else {
//more pages and file path is given: one PNG file for each page
return numberFiles(fileName, layout.getPages().size());
}
}
}