/**************************************************************************
* Copyright 2013 by Trixt0r
* (https://github.com/Trixt0r, Heinrich Reich, e-mail: trixter16@web.de)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
***************************************************************************/
package com.brashmonkey.spriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import com.brashmonkey.spriter.file.FileLoader;
import com.brashmonkey.spriter.file.Reference;
import com.brashmonkey.spriter.xml.SCMLReader;
import com.discobeard.spriter.dom.SpriterData;
/**
* This class reads an scml file and loads all necessary resources.
*
* @author Discobeard.com, Trixt0r
*
*/
public class Spriter {
/**
* Creates a spriter object.
*
* @param path Path to the scml file
* @param loader
* a loader extended from the AbstractLoader
* @return a Spriter Object
*/
public static Spriter getSpriter(String path, FileLoader<?> loader) {
return new Spriter(path, loader);
}
public static Spriter getSpriter(File scmlFile, FileLoader<?> loader) throws FileNotFoundException {
return new Spriter(scmlFile, loader);
}
public final FileLoader<?> loader;
public final File scmlFile;
public final SpriterData spriterData;
public Spriter(File scmlfile, FileLoader<?> loader) throws FileNotFoundException {
this.scmlFile = scmlfile;
this.spriterData = SCMLReader.load(new FileInputStream(scmlFile));
this.loader = loader;
loadResources();
}
public Spriter(String scmlPath, FileLoader<?> loader) {
this.scmlFile = new File(scmlPath);
this.spriterData = SCMLReader.load(scmlPath);
this.loader = loader;
loadResources();
}
public Spriter(SpriterData spriterData, FileLoader<?> loader, File scmlFile){
this.scmlFile = scmlFile;
this.spriterData = spriterData;
this.loader = loader;
this.loadResources();
}
private void loadResources() {
for (int folder = 0; folder < spriterData.getFolder().size(); folder++) {
for (int file = 0; file < spriterData.getFolder().get(folder).getFile().size(); file++) {
String folderName = spriterData.getFolder().get(folder).getName();
String fileName = spriterData.getFolder().get(folder).getFile().get(file).getName();
Reference ref = new Reference(folder, file,folderName, fileName);
ref.dimensions = new SpriterRectangle(0,spriterData.getFolder().get(folder).getFile().get(file).getHeight() ,spriterData.getFolder().get(folder).getFile().get(file).getWidth(),0);
ref.pivotX = spriterData.getFolder().get(folder).getFile().get(file).getPivotX();
ref.pivotY = spriterData.getFolder().get(folder).getFile().get(file).getPivotY();
loader.load(ref,
scmlFile.getParent() + "/"
+ fileName);
}
}
this.loader.finishLoading();
}
/**
* @return Spriter data which has been read from the scml file before.
*/
public SpriterData getSpriterData(){
return this.spriterData;
}
}