package railo.runtime.video; import railo.runtime.exp.PageException; import railo.runtime.op.Caster; import railo.runtime.op.Decision; public class Range { public static final Range TRUE=new Range(0,-1); public static final Range FALSE=new Range(0,0); private double from; private double to; public Range(double from, double to) { this.from=from; this.to=to; } public static Range toRange(String def) throws PageException { def=def.trim(); // boolean if(Decision.isBoolean(def)) { return Caster.toBooleanValue(def)?TRUE:FALSE; } int index = def.indexOf(','); // single value if(index==-1) { return new Range(toSeconds(def),-1); } // double value if(def.startsWith(","))def="0"+def; if(def.endsWith(","))def+="-1"; return new Range(toSeconds(def.substring(0,index)),toSeconds(def.substring(index+1))); } private static double toSeconds(String str) throws PageException { str=str.trim().toLowerCase(); if(str.endsWith("ms")) return Caster.toDoubleValue(str.substring(0,str.length()-2))/1000D; else if(str.endsWith("s")) return Caster.toDoubleValue(str.substring(0,str.length()-1)); else return Caster.toDoubleValue(str)/1000D; // TODO if(str.endsWith("f")) this.startFrame=VideoConfig.toLong(str.substring(0,str.length()-1)); } /** * @return the from */ public double getFrom() { return from; } public String getFromAsString() { return Caster.toString(from); } /** * @return the to */ public double getTo() { return to; } public String getToAsString() { return Caster.toString(to); } /** * * @see java.lang.Object#equals(java.lang.Object) */ public boolean equals(Object obj) { if(obj==this) return true; if(!(obj instanceof Range)) return false; Range other=(Range) obj; return other.from==from && other.to==to; } /** * * @see java.lang.Object#toString() */ public String toString() { return ""+from+":"+to+""; } public boolean show() { return !equals(Range.FALSE); } }