All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.brashmonkey.spriter.Spriter Maven / Gradle / Ivy

There is a newer version: 1.1
Show newest version
/**************************************************************************
 * Copyright 2013 by Trixt0r
 * (https://github.com/Trixt0r, Heinrich Reich, e-mail: [email protected])
 *
 * 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;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy