Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2014 Aritz Lopez
   *
   *    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 io.github.aritzhack.aritzh.awt.render;
 
 
 import java.awt.*;
 import java.io.*;
 import java.util.Map;

Author(s):
Aritz Lopez
 
 public class SpriteSheetLoader {
 
 	private static final Pattern spritePattern = Pattern.compile("(\\w+).png (\\d+) (\\d+) (\\d+) (\\d+)");
 
 	public static SpriteSheet load(String shtFile) {
 		Preconditions.checkArgument(shtFile != null"File name cannot be null!");
 		Preconditions.checkArgument(shtFile.length() != 0, "You must specify a valid path");
 
 		Preconditions.checkArgument(is != null"Could not find file %s"shtFile);
 		try {
 			return load(is);
 		} catch (FileNotFoundException e) {
 			throw new IllegalArgumentException("Error loading sprite sheet from: " + shtFilee);
 		}
 	}
 
 	public static SpriteSheet load(File filethrows FileNotFoundException {
 		Preconditions.checkArgument(file != null"File name cannot be null!");
 		InputStream is = new FileInputStream(file);
 
 		InputStream imageStream;
 		try (BufferedReader reader = new BufferedReader(new InputStreamReader(is))) {
 			imageStream = new FileInputStream(new File(file.getParentFile(), reader.readLine()));
 		} catch (IOException e) {
 			throw new IllegalArgumentException("Error loading sprite sheet from: " + filee);
 		}
 		return load(new FileInputStream(file), imageStream);
 	}
 
 	public static SpriteSheet load(InputStream shtStreamInputStream imageStreamthrows FileNotFoundException {
 
 		try (BufferedReader reader = new BufferedReader(new InputStreamReader(shtStream))) {
 
 			BufferedImage sheet = ImageIO.read(imageStream);
 			SpriteSheet sprites = new SpriteSheet();
 			String line;
 
 			while ((line = reader.readLine()) != null) {
 				Matcher matcher = .matcher(line);
 				if(line.matches("\\w+\\.png")) continue;
 				if (!matcher.matches())
 					throw new IllegalArgumentException("Line \"" + line + "\" does not match regex \"" + .pattern() + "\"");
 				String name = matcher.group(1);
 				int x = Integer.parseInt(matcher.group(2));
 				int y = Integer.parseInt(matcher.group(3));
 				int w = Integer.parseInt(matcher.group(4));
 				int h = Integer.parseInt(matcher.group(5));
 				sprites.put(name, SpriteSheetLoader.getSprite(sheetxywh));
 			}
 
 			return sprites;
 		} catch (IOException e) {
 			throw new IllegalArgumentException("Error loading sprite sheet"e);
 		}
 	}
 
 	public static SpriteSheet load(InputStream isthrows FileNotFoundException {
 		Preconditions.checkArgument(is != null"InputStream must not be null!");
 
 		try (BufferedReader reader = new BufferedReader(new InputStreamReader(is))) {
 			String line = reader.readLine();
 			if (line == nullthrow new IllegalArgumentException("First line of the file could not be read");
			if (imageStream == null) {
				File image = new File(line.trim());
				if (!image.exists()) {
					throw new FileNotFoundException("Spritesheet image file \"" + line.trim() + "\" could not be found");
else {
					imageStream = new FileInputStream(image);
				}
			}
			return load(isimageStream);
catch (IOException e) {
			throw new IllegalArgumentException("Error loading sprite sheet"e);
		}
	}
	public static Sprite getSprite(BufferedImage imageint xint yint wint h) {
		int[] pixels = image.getRGB(xywhnull, 0, w);
		return new Sprite(whpixels);
	}
	public static void writeSheet(Map<SpriteStringspritesFile shtFilethrows IOException {
		Set2<SpriteMap<StringRectangle>> sheetData = SpriteUtil.packSprites(sprites);
		Sprite sheet = sheetData.getT();
		String fileName = Files.getNameWithoutExtension(shtFile.getAbsolutePath());
		String shtFileContents = fileName + ".png\n" + SpriteUtil.sheetMapToString(sheetData.getU());
		ImageIO.write(SpriteUtil.toImage(sheet), "png"new File(shtFile.getParentFile(), fileName + ".png"));
		Files.write(shtFileContentsshtFile.);
	}
	public static class SpriteSheet extends HashMap<StringSprite> {
	}
New to GrepCode? Check out our FAQ X