From 73da1156a24ca9fc86b29a32dbaf8400c8da3f79 Mon Sep 17 00:00:00 2001 From: = Date: Wed, 7 Jan 2015 17:26:21 +0000 Subject: [PATCH] Various improvements; options, version, info Adds options to PNG importing so that any valid DMI file can be entirely built from PNG files and DMITool. Adds version string and "version" command Adds info command to get a list of states easily (the only way previously was to print the descriptor with "dmitool -vvvv verify $file" and parse with e.g. grep/sed) --- tools/dmitool/dmitool.jar | Bin 196131 -> 200868 bytes tools/dmitool/src/main/java/dmitool/DMI.java | 6 + .../src/main/java/dmitool/IconState.java | 26 ++- tools/dmitool/src/main/java/dmitool/Main.java | 186 ++++++++++++++---- 4 files changed, 170 insertions(+), 48 deletions(-) diff --git a/tools/dmitool/dmitool.jar b/tools/dmitool/dmitool.jar index 4c2fef9f873adf8666332cad4f304663da9de7ab..e42320873fab817001cb2783a3dd8b9e5ccf2400 100644 GIT binary patch delta 37894 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 delta 33061 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 diff --git a/tools/dmitool/src/main/java/dmitool/DMI.java b/tools/dmitool/src/main/java/dmitool/DMI.java index 7fbe9912f1..bb560107ae 100644 --- a/tools/dmitool/src/main/java/dmitool/DMI.java +++ b/tools/dmitool/src/main/java/dmitool/DMI.java @@ -419,6 +419,12 @@ public class DMI implements Comparator { public void printInfo() { System.out.println(totalImages + " images, " + images.size() + " states, size "+w+"x"+h); } + + public void printStateList() { + for(IconState s: images) { + System.out.println(s.getInfoLine()); + } + } @Override public boolean equals(Object obj) { if(obj == this) return true; diff --git a/tools/dmitool/src/main/java/dmitool/IconState.java b/tools/dmitool/src/main/java/dmitool/IconState.java index 82fdc86369..c3eb2cff21 100644 --- a/tools/dmitool/src/main/java/dmitool/IconState.java +++ b/tools/dmitool/src/main/java/dmitool/IconState.java @@ -19,6 +19,21 @@ public class IconState { int loop; String hotspot; boolean movement; + + public String getInfoLine() { + String extraInfo = ""; + if(rewind) extraInfo += " rewind"; + if(frames != 1) { + extraInfo += " loop(" + (loop==-1 ? "infinite" : loop) + ")"; + } + if(hotspot != null) extraInfo += " hotspot('" + hotspot + "')"; + if(movement) extraInfo += " movement"; + if(extraInfo.equals("")) { + return String.format("state \"%s\", %d dir(s), %d frame(s)", name, dirs, frames); + } else { + return String.format("state \"%s\", %d dir(s), %d frame(s),%s", name, dirs, frames, extraInfo); + } + } @Override public IconState clone() { IconState is = new IconState(name, dirs, frames, images.clone(), delays==null ? null : delays.clone(), rewind, loop, hotspot, movement); @@ -148,7 +163,7 @@ public class IconState { out.end(); } - public static IconState importFromPNG(DMI dmi, InputStream inS, String name) throws DMIException { + public static IconState importFromPNG(DMI dmi, InputStream inS, String name, float[] delays, boolean rewind, int loop, String hotspot, boolean movement) throws DMIException { int w = dmi.w; int h = dmi.h; @@ -192,15 +207,8 @@ public class IconState { } } - float[] delays = null; - if(frames != 1) { - delays = new float[frames]; - for(int i=0; i argq = new ArrayDeque<>(); for(String s: args) { @@ -66,7 +82,7 @@ public class Main { argq.pollFirst(); } String op = argq.pollFirst(); - + switch(op) { case "diff": { if(argq.size() < 2) { @@ -76,7 +92,7 @@ public class Main { } String a = argq.pollFirst(); String b = argq.pollFirst(); - + if(VERBOSITY >= 0) System.out.println("Loading " + a); DMI dmi = doDMILoad(a); if(VERBOSITY >= 0) dmi.printInfo(); @@ -96,11 +112,11 @@ public class Main { return; } String f = argq.pollFirst(); - + if(VERBOSITY >= 0) System.out.println("Loading " + f); DMI dmi = doDMILoad(f); if(VERBOSITY >= 0) dmi.printInfo(); - + if(VERBOSITY >= 0) System.out.println("Saving " + f); dmi.writeDMI(new FileOutputStream(f), true); break; @@ -118,26 +134,26 @@ public class Main { if(VERBOSITY >= 0) System.out.println("Loading " + baseF); DMI base = doDMILoad(baseF); if(VERBOSITY >= 0) base.printInfo(); - + if(VERBOSITY >= 0) System.out.println("Loading " + aF); DMI aDMI = doDMILoad(aF); if(VERBOSITY >= 0) aDMI.printInfo(); - + if(VERBOSITY >= 0) System.out.println("Loading " + bF); DMI bDMI = doDMILoad(bF); if(VERBOSITY >= 0) bDMI.printInfo(); - + DMIDiff aDiff = new DMIDiff(base, aDMI); DMIDiff bDiff = new DMIDiff(base, bDMI); DMIDiff mergedDiff = new DMIDiff(); DMI conflictDMI = new DMI(32, 32); - + Set cf = aDiff.mergeDiff(bDiff, conflictDMI, mergedDiff, aF, bF); - + mergedDiff.applyToDMI(base); - + base.writeDMI(new FileOutputStream(mergedF)); - + if(!cf.isEmpty()) { if(VERBOSITY >= 0) for(String s: cf) { System.out.println(s); @@ -160,10 +176,10 @@ public class Main { String file = argq.pollFirst(), state = argq.pollFirst(), outFile = argq.pollFirst(); - + DMI dmi = doDMILoad(file); if(VERBOSITY >= 0) dmi.printInfo(); - + IconState is = dmi.getIconState(state); if(is == null) { System.out.println("icon_state '"+state+"' does not exist!"); @@ -172,10 +188,10 @@ public class Main { // minDir, Maxdir, minFrame, Maxframe int mDir=0, Mdir=is.dirs-1; int mFrame=0, Mframe=is.frames-1; - + while(argq.size() > 1) { String arg = argq.pollFirst(); - + switch(arg) { case "d": case "dir": @@ -247,29 +263,105 @@ public class Main { String dmiFile = argq.pollFirst(), stateName = argq.pollFirst(), pngFile = argq.pollFirst(); - + boolean noDup = false; - if(!argq.isEmpty()) { - switch(argq.pollFirst().toLowerCase()) { + boolean rewind = false; + int loop = 0; + boolean movement = false; + String hotspot = null; + float[] delays = null; + while(!argq.isEmpty()) { + String s = argq.pollFirst(); + switch(s.toLowerCase()) { case "nodup": + case "nd": + case "n": noDup = true; break; + case "rewind": + case "rw": + case "r": + rewind = true; + break; + case "loop": + case "lp": + case "l": + loop = -1; + break; + case "loopn": + case "lpn": + case "ln": + if(!argq.isEmpty()) { + String loopTimes = argq.pollFirst(); + try { + loop = Integer.parseInt(loopTimes); + } catch(NumberFormatException nfe) { + System.out.println("Illegal number '" + loopTimes + "' as argument to '" + s + "'!"); + return; + } + } else { + System.out.println("Argument '" + s + "' requires a numeric argument following it!"); + return; + } + break; + case "movement": + case "move": + case "mov": + case "m": + movement = true; + break; + case "delays": + case "delay": + case "del": + case "d": + if(!argq.isEmpty()) { + String delaysString = argq.pollFirst(); + String[] delaysSplit = delaysString.split(","); + delays = new float[delaysSplit.length]; + for(int i=0; i= 0) System.out.println("Loading " + dmiFile); DMI toImportTo = doDMILoad(dmiFile); if(VERBOSITY >= 0) toImportTo.printInfo(); - //public static IconState importFromPNG(DMI dmi, InputStream inS, String name) throws DMIException { - IconState is = IconState.importFromPNG(toImportTo, new FileInputStream(pngFile), stateName); - - - if(!(noDup && toImportTo.setIconState(is))) { + IconState is = IconState.importFromPNG(toImportTo, new FileInputStream(pngFile), stateName, delays, rewind, loop, hotspot, movement); + + if(noDup) { + if(!toImportTo.setIconState(is)) { + toImportTo.addIconState(null, is); + } + } else { toImportTo.addIconState(null, is); } - + if(VERBOSITY >= 0) toImportTo.printInfo(); - + if(VERBOSITY >= 0) System.out.println("Saving " + dmiFile); toImportTo.writeDMI(new FileOutputStream(dmiFile)); break; @@ -286,6 +378,22 @@ public class Main { if(VERBOSITY >= 0) v.printInfo(); break; } + case "info": { + if(argq.size() < 1) { + System.out.println("Insufficient arguments for command!"); + System.out.println(helpStr); + return; + } + String infoFile = argq.pollFirst(); + if(VERBOSITY >= 0) System.out.println("Loading " + infoFile); + DMI info = doDMILoad(infoFile); + info.printInfo(); + info.printStateList(); + break; + } + case "version": + System.out.println(VERSION); + return; default: System.out.println("Command '" + op + "' not found!"); case "help": @@ -293,7 +401,7 @@ public class Main { break; } } - + static int parseDir(String s, IconState is) { try { int i = Integer.parseInt(s); @@ -319,7 +427,7 @@ public class Main { return -1; } } - + static int parseFrame(String s, IconState is) { try { int i = Integer.parseInt(s); @@ -334,7 +442,7 @@ public class Main { return -1; } } - + static DMI doDMILoad(String file) { try { DMI dmi = new DMI(file);