/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package feuille.drawing.ornament; import java.util.regex.Matcher; import java.util.regex.Pattern; import feuille.karaoke.lib.Time; /** * * @author The Wingate 2940 */ public class AssLine { String head = null; String body = null; public AssLine(){ } public AssLine(String assline){ Pattern p = Pattern.compile("([^:]+:\\s[a-zA-Z=]*\\d+," + "\\d+:\\d+:\\d+.\\d+," + "\\d+:\\d+:\\d+.\\d+," + "[^,]+,[^,]*," + "\\d+,\\d+,\\d+,[^,]*),(.*)"); Matcher m = p.matcher(assline); m.find(); head = m.group(1); body = m.group(2); } public AssLine(String head, String body){ this.head = head; this.body = body; } @Override public String toString(){ if(head!=null && body!=null){ return head + "," + body; } return ""; } public String getHead(){ return head; } public String getBody(){ return body; } public String try_addToBody(String param){ if(param.startsWith("{")==false){ param = "{"+param; } if(param.endsWith("}")==false){ param = param+"}"; } if(body.contains(param)==false){ return param + body; } return body; } public String changeLayer(String head, String firstLayer){ String[] hdata = head.split(","); if(hdata.length==9){ return "Dialogue: "+ firstLayer + "," + hdata[1] + "," + hdata[2] + "," + hdata[3] + "," + hdata[4] + "," + hdata[5] + "," + hdata[6] + "," + hdata[7] + "," + hdata[8]; }else{ return "Dialogue: "+ firstLayer + "," + hdata[1] + "," + hdata[2] + "," + hdata[3] + "," + hdata[4] + "," + hdata[5] + "," + hdata[6] + "," + hdata[7] + ","; } } /** <p>Change the style name of the given head.<br /> * Change le nom du style de l'entĂȘte.</p> */ public String changeStyle(String head, String styleName){ String[] hdata = head.split(","); if(hdata.length==9){ return hdata[0] + "," + hdata[1] + "," + hdata[2] + "," + styleName + "," + hdata[4] + "," + hdata[5] + "," + hdata[6] + "," + hdata[7] + "," + hdata[8]; }else{ return hdata[0] + "," + hdata[1] + "," + hdata[2] + "," + styleName + "," + hdata[4] + "," + hdata[5] + "," + hdata[6] + "," + hdata[7] + ","; } } public String getMillisecondsStart(){ //regex en vb.net "(?<hh>\d+):(?<mm>\d+):(?<ss>\d+).(?<cc>\d+)" //regex en java "(\\d+):(\\d+):(\\d+).(\\d+)" Pattern p = Pattern.compile("(\\d+):(\\d+):(\\d+).(\\d+)"); Matcher m = p.matcher(head); Time start = new Time(); Time end = new Time(); boolean endTime = false; while(m.find()){ if (endTime == false){ start.setHours(Integer.parseInt(m.group(1))); start.setMinutes(Integer.parseInt(m.group(2))); start.setSeconds(Integer.parseInt(m.group(3))); start.setMilliseconds(Integer.parseInt(m.group(4))*10); }else{ end.setHours(Integer.parseInt(m.group(1))); end.setMinutes(Integer.parseInt(m.group(2))); end.setSeconds(Integer.parseInt(m.group(3))); end.setMilliseconds(Integer.parseInt(m.group(4))*10); } endTime = true; } return Long.toString(start.toMillisecondsTime(start)); } public String getMillisecondsEnd(){ //regex en vb.net "(?<hh>\d+):(?<mm>\d+):(?<ss>\d+).(?<cc>\d+)" //regex en java "(\\d+):(\\d+):(\\d+).(\\d+)" Pattern p = Pattern.compile("(\\d+):(\\d+):(\\d+).(\\d+)"); Matcher m = p.matcher(head); Time start = new Time(); Time end = new Time(); boolean endTime = false; while(m.find()){ if (endTime == false){ start.setHours(Integer.parseInt(m.group(1))); start.setMinutes(Integer.parseInt(m.group(2))); start.setSeconds(Integer.parseInt(m.group(3))); start.setMilliseconds(Integer.parseInt(m.group(4))*10); }else{ end.setHours(Integer.parseInt(m.group(1))); end.setMinutes(Integer.parseInt(m.group(2))); end.setSeconds(Integer.parseInt(m.group(3))); end.setMilliseconds(Integer.parseInt(m.group(4))*10); } endTime = true; } return Long.toString(end.toMillisecondsTime(end)); } public String getMillisecondsDur(){ //regex en vb.net "(?<hh>\d+):(?<mm>\d+):(?<ss>\d+).(?<cc>\d+)" //regex en java "(\\d+):(\\d+):(\\d+).(\\d+)" Pattern p = Pattern.compile("(\\d+):(\\d+):(\\d+).(\\d+)"); Matcher m = p.matcher(head); Time start = new Time(); Time end = new Time(); boolean endTime = false; while(m.find()){ if (endTime == false){ start.setHours(Integer.parseInt(m.group(1))); start.setMinutes(Integer.parseInt(m.group(2))); start.setSeconds(Integer.parseInt(m.group(3))); start.setMilliseconds(Integer.parseInt(m.group(4))*10); }else{ end.setHours(Integer.parseInt(m.group(1))); end.setMinutes(Integer.parseInt(m.group(2))); end.setSeconds(Integer.parseInt(m.group(3))); end.setMilliseconds(Integer.parseInt(m.group(4))*10); } endTime = true; } return Long.toString(end.toMillisecondsTime(end)-start.toMillisecondsTime(start)); } }