public AddChar ( MyConnectedComponentsAnalysisFast char_blob ) : void | ||
char_blob | MyConnectedComponentsAnalysisFast | |
return | void |
private void Convert2FinalStringList() { TextString ts = new TextString(); for (int i = 0; i < _char_list.Count; i++) { ts.AddChar(_char_list[i]); } _final_string_list.Add(ts); }
private void MergeOne(List <int> tmp_list4one) { if (_debug) { Console.WriteLine("*******Merge One******"); } for (int i = 0; i < tmp_list4one.Count; i++) { // for small cc only since small cc still has neighbors int idx1 = tmp_list4one[i]; MyConnectedComponentsAnalysisFast.MyBlob char1 = _char_list[idx1]; for (int ni = 0; ni < char1.neighbors.Count; ni++) { int idx = char1.neighbors[ni]; for (int j = 0; j < _final_string_list.Count; j++) { TextString ts = _final_string_list[j]; if (ts._char_list.Contains(_char_list[idx])) { _char_list[idx1].included = true; ts.AddChar(_char_list[idx1]); if (_debug) { Console.WriteLine(" Add TS: " + idx1 + " to TS: " + j); } } } } if (_debug) { Console.WriteLine(idx1 + " is not a small cc"); } if (!_char_list[idx1].included) { _char_list[idx1].included = true; List <int> tmp_list = new List <int>(); tmp_list.Add(idx1); AddSubstring(tmp_list); } } }
private void AddSubstring(List <int> substring_list) { if (_debug) { Console.Write("Final ST#: " + _final_string_list.Count + " Add TS: "); } TextString ts = new TextString(); for (int i = 0; i < substring_list.Count; i++) { ts.AddChar(_char_list[substring_list[i]]); _char_list[substring_list[i]].included = true; if (_debug) { Console.Write(substring_list[i] + " "); } } _final_string_list.Add(ts); if (_debug) { Console.WriteLine(); } }
private void Convert2FinalStringList() { TextString ts = new TextString(); for (int i = 0; i < _char_list.Count; i++) ts.AddChar(_char_list[i]); _final_string_list.Add(ts); }
private void AddSubstring(List<int> substring_list) { if (_debug) Console.Write("Final ST#: " + _final_string_list.Count + " Add TS: "); TextString ts = new TextString(); for (int i = 0; i < substring_list.Count; i++) { ts.AddChar(_char_list[substring_list[i]]); _char_list[substring_list[i]].included = true; if (_debug) Console.Write(substring_list[i] + " "); } _final_string_list.Add(ts); if (_debug) Console.WriteLine(); }
private void MergeTwo(List <List <int> > tmp_list4two) { if (_debug) { Console.WriteLine("identify non-connected two CC, add them to TS"); } for (int i = 0; i < tmp_list4two.Count; i++) { int idx1 = tmp_list4two[i][0]; int idx2 = tmp_list4two[i][1]; if (!_char_list[idx1].included && !_char_list[idx2].included) { _char_list[idx1].included = true; _char_list[idx2].included = true; AddSubstring(tmp_list4two[i]); } } if (_debug) { Console.WriteLine("assign other two cc substring to each connected substring"); } for (int i = 0; i < tmp_list4two.Count; i++) { int idx1 = tmp_list4two[i][0]; int idx2 = tmp_list4two[i][1]; if (!_char_list[idx1].included || !_char_list[idx2].included) { int idx = 0; int idx3 = 0; bool addtwo = false; if (_char_list[idx1].included && _char_list[idx3].sizefilter_included == false) { idx = idx1; idx3 = idx2; } else if (_char_list[idx3].included && _char_list[idx1].sizefilter_included == false) { idx = idx2; idx3 = idx1; } else { addtwo = true; } if (addtwo) { _char_list[idx1].included = true; _char_list[idx2].included = true; AddSubstring(tmp_list4two[i]); } else { for (int j = 0; j < _final_string_list.Count; j++) { TextString ts = _final_string_list[j]; if (ts._char_list.Contains(_char_list[idx])) { ts.AddChar(_char_list[idx3]); _char_list[idx3].included = true; if (_debug) { Console.WriteLine("Add: " + idx3 + " to " + idx + "\'ts"); } } } } } else { if (_debug) { Console.WriteLine(idx1 + " " + idx2 + " added already!"); } } } }