package com.kreative.paint.material;
import java.io.IOException;
import java.io.InputStream;
import com.kreative.paint.material.pattern.Pattern;
import com.kreative.paint.material.pattern.PatternList;
import com.kreative.paint.material.pattern.PatternParser;
public class PatternLoader {
private final MaterialLoader loader;
private final MaterialList<PatternList> lists;
public PatternLoader(MaterialLoader loader) {
this.loader = loader;
this.lists = new MaterialList<PatternList>();
}
public MaterialList<PatternList> getPatternLists() {
if (lists.isEmpty()) loadResources();
if (lists.isEmpty()) createLists();
return lists;
}
private void loadResources() {
for (MaterialResource r : loader.listResources()) {
if (r.isFormat("patx", false)) {
try {
InputStream in = r.getInputStream();
PatternList list = PatternParser.parse(r.getResourceName(), in);
in.close();
String name = (list.name != null) ? list.name : r.getResourceName();
lists.add(name, list);
} catch (IOException e) {
System.err.println("Warning: Failed to compile pattern set " + r.getResourceName() + ".");
e.printStackTrace();
}
}
}
}
private void createLists() {
System.err.println("Notice: No patterns found. Generating generic patterns.");
PatternList list = new PatternList("Simple");
list.add(Pattern.FOREGROUND);
list.add(Pattern.BG_25_FG_75);
list.add(Pattern.BG_50_FG_50);
list.add(Pattern.BG_75_FG_25);
list.add(Pattern.BACKGROUND);
lists.add("Simple", list);
}
}