package com.xenoage.zong.android;
import static com.xenoage.utils.PlatformUtils.platformUtils;
import static com.xenoage.utils.android.AndroidPlatformUtils.io;
import static com.xenoage.utils.jse.promise.Sync.sync;
import static com.xenoage.zong.util.ZongPlatformUtils.zongPlatformUtils;
import java.io.IOException;
import android.content.Context;
import android.graphics.Bitmap;
import com.xenoage.utils.android.AndroidPlatformUtils;
import com.xenoage.utils.android.log.AndroidLogProcessing;
import com.xenoage.utils.io.InputStream;
import com.xenoage.utils.jse.async.Sync;
import com.xenoage.utils.log.Log;
import com.xenoage.zong.Zong;
import com.xenoage.zong.android.util.AndroidZongPlatformUtils;
import com.xenoage.zong.core.Score;
import com.xenoage.zong.documents.ScoreDoc;
import com.xenoage.zong.io.musicxml.in.MusicXmlScoreDocFileReader;
import com.xenoage.zong.io.musicxml.in.MusicXmlScoreFileInput;
import com.xenoage.zong.symbols.SymbolPool;
import com.xenoage.zong.util.ZongPlatformUtils;
/**
* General information about the app and
* main functions.
*
* @author Andreas Wenger
*/
public class App {
//naming "... for Android" according to http://developer.android.com/distribute/googleplay/promote/brand.html
//notice: use "Androidâ„¢" when it appears the first time, and add "Android is a trademark of Google Inc." on the about screen
public static final String projectFirstName = "Viewer for Androidâ„¢";
private static SymbolPool symbolPool;
private static Bitmap symbolsBitmap;
private static MidiPlayer midiPlayer;
public static void init(Context context)
throws IOException {
//init platform utils and logging
AndroidZongPlatformUtils.init(context.getResources());
Log.init(new AndroidLogProcessing(Zong.getNameAndVersion(projectFirstName)));
//load symbol pool
symbolPool = zongPlatformUtils().getSymbolPool();
//midi player
midiPlayer = new MidiPlayer();
}
public static SymbolPool getSymbolPool() {
return symbolPool;
}
public static Bitmap getSymbolsBitmap() {
return symbolsBitmap;
}
public static MidiPlayer getMidiPlayer() {
return midiPlayer;
}
/**
* Loads the {@link ScoreDoc} with the given filename.
*/
public static ScoreDoc load(String filename)
throws IOException {
String filepath = "files/" + filename;
InputStream in = io().openFile(filepath);
try {
return sync(new MusicXmlScoreDocFileReader(in, filepath).read());
} catch (Exception ex) {
throw new IOException(ex);
}
}
}