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.io.File;

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");
 
         InputStream is = SpriteSheetLoader.class.getClassLoader().getResourceAsStream(shtFile);
         Preconditions.checkArgument(is != null"Could not find file %s"shtFile);
         try {
             return load(is);
         } catch (IllegalArgumentException 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);
 
         try {
             return load(is);
         } catch (IllegalArgumentException e) {
             throw new IllegalArgumentException("Error loading sprite sheet from file: " + filee);
         }
     }
 
     public static SpriteSheet load(InputStream is) {
         Preconditions.checkArgument(is != null"InputStream must not be null!");
         BufferedReader reader = new BufferedReader(new InputStreamReader(is));
         try {
             String line = reader.readLine();
             if (line == nullthrow new IllegalArgumentException("First line of the file could not be read");
             InputStream imageStream = SpriteSheetLoader.class.getClassLoader().getResourceAsStream(line.trim());
 
 
             BufferedImage sheet = ImageIO.read(imageStream);
 
             SpriteSheet sprites = new SpriteSheet();
 
             while ((line = reader.readLine()) != null) {
                 Matcher matcher = .matcher(line);
                 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 Sprite getSprite(BufferedImage imageint xint yint wint h) {
         int[] pixels = image.getRGB(xywhnull, 0, w);
         return new Sprite(whpixels);
     }
    public static class SpriteSheet extends HashMap<StringSprite> {}
New to GrepCode? Check out our FAQ X