package com.kreative.paint.material.sprite;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SpriteIntent {
public static final int UNKNOWN = 0x00;
public static final int COLLECTION = 0x01;
public static final int OBJECT = 0x02;
public static final int CHARACTER = 0x03;
public static final int CURSOR = 0x40;
public static final int ICON = 0x41;
public static final int FONT = 0x42;
public static final int PATTERN = 0x43;
public static final int STATIC_BRUSH = 0x80;
public static final int ACCELERATED_BRUSH = 0x81;
public static final int SPRAYED_BRUSH = 0x82;
public static final int STAMPED_BRUSH = 0x83;
public static final int RUBBER_STAMPS = 0xC0;
public static final int ANIMATED_STAMPS = 0xC1;
public static String toString(int intent) {
switch (intent) {
case UNKNOWN : return "unknown" ;
case COLLECTION : return "collection" ;
case OBJECT : return "object" ;
case CHARACTER : return "character" ;
case CURSOR : return "cursor" ;
case ICON : return "icon" ;
case FONT : return "font" ;
case PATTERN : return "pattern" ;
case STATIC_BRUSH : return "static-brush" ;
case ACCELERATED_BRUSH: return "accelerated-brush";
case SPRAYED_BRUSH : return "sprayed-brush" ;
case STAMPED_BRUSH : return "stamped-brush" ;
case RUBBER_STAMPS : return "rubber-stamps" ;
case ANIMATED_STAMPS : return "animated-stamps" ;
default: return Integer.toString(intent);
}
}
private static final Pattern DECIMAL_PATTERN = Pattern.compile("([0-9]+)");
private static final Pattern HEXADECIMAL_PATTERN = Pattern.compile("0[Xx]([0-9A-Fa-f]+)");
private static final String SPP = "(\\s|[!-~&&[^0-9A-Za-z]])?";
private static final Pattern COLLECTION_PATTERN = Pattern.compile("[Cc]oll(ection)?");
private static final Pattern OBJECT_PATTERN = Pattern.compile("[Oo]bj(ect)?" );
private static final Pattern CHARACTER_PATTERN = Pattern.compile("[Cc]har(acter)?" );
private static final Pattern CURSOR_PATTERN = Pattern.compile("[Cc]ursor" );
private static final Pattern ICON_PATTERN = Pattern.compile("[Ii]con" );
private static final Pattern FONT_PATTERN = Pattern.compile("[Ff]ont" );
private static final Pattern PATTERN_PATTERN = Pattern.compile("[Pp]at(t(ern)?)?");
private static final Pattern STATIC_BRUSH_PATTERN = Pattern.compile("[Ss]tatic" + SPP + "[Bb]rush" );
private static final Pattern ACCELERATED_BRUSH_PATTERN = Pattern.compile("[Aa]ccel(erated)?" + SPP + "[Bb]rush" );
private static final Pattern SPRAYED_BRUSH_PATTERN = Pattern.compile("[Ss]prayed" + SPP + "[Bb]rush" );
private static final Pattern STAMPED_BRUSH_PATTERN = Pattern.compile("[Ss]tamped" + SPP + "[Bb]rush" );
private static final Pattern RUBBER_STAMPS_PATTERN = Pattern.compile("[Rr]ubber" + SPP + "[Ss]tamps?");
private static final Pattern ANIMATED_STAMPS_PATTERN = Pattern.compile("[Aa]nim(ated)?" + SPP + "[Ss]tamps?");
public static int fromString(String s) {
Matcher m;
s = s.trim().toLowerCase();
m = DECIMAL_PATTERN.matcher(s);
if (m.matches()) {
try { return Integer.parseInt(m.group(1), 10); }
catch (NumberFormatException e) { return 0; }
}
m = HEXADECIMAL_PATTERN.matcher(s);
if (m.matches()) {
try { return Integer.parseInt(m.group(1), 16); }
catch (NumberFormatException e) { return 0; }
}
if (COLLECTION_PATTERN .matcher(s).matches()) return COLLECTION ;
if (OBJECT_PATTERN .matcher(s).matches()) return OBJECT ;
if (CHARACTER_PATTERN .matcher(s).matches()) return CHARACTER ;
if (CURSOR_PATTERN .matcher(s).matches()) return CURSOR ;
if (ICON_PATTERN .matcher(s).matches()) return ICON ;
if (FONT_PATTERN .matcher(s).matches()) return FONT ;
if (PATTERN_PATTERN .matcher(s).matches()) return PATTERN ;
if (STATIC_BRUSH_PATTERN .matcher(s).matches()) return STATIC_BRUSH ;
if (ACCELERATED_BRUSH_PATTERN.matcher(s).matches()) return ACCELERATED_BRUSH;
if (SPRAYED_BRUSH_PATTERN .matcher(s).matches()) return SPRAYED_BRUSH ;
if (STAMPED_BRUSH_PATTERN .matcher(s).matches()) return STAMPED_BRUSH ;
if (RUBBER_STAMPS_PATTERN .matcher(s).matches()) return RUBBER_STAMPS ;
if (ANIMATED_STAMPS_PATTERN .matcher(s).matches()) return ANIMATED_STAMPS ;
return UNKNOWN;
}
private SpriteIntent() {}
}