/// <summary> /// Returns a value between 0 and 1 how good the matching is. /// </summary> public double RateBiMatchedLines(SubtitleMatcher.BiMatchedLines biMatchedLines) { // [shared times between lines from list1 and list2] divided by [whole time] // ...because this value is between 0 and 0.5 we have to multiply it with 2 // calculate "all time" double sharedTime = 0; double allTimeSpanTime = 0; for (int listIndex = 0; listIndex < 2; listIndex++) { foreach (var currentLine in biMatchedLines.listlines[listIndex]) { allTimeSpanTime += UtilsCommon.GetTimeSpanLength(currentLine); } } // calculate "shared time" foreach (var lineInfoA in biMatchedLines.listlines[0]) { foreach (var lineInfoB in biMatchedLines.listlines[1]) { sharedTime += UtilsCommon.OverlappingTimeSpan(lineInfoA, lineInfoB); } } return((sharedTime * 2) / allTimeSpanTime); }