/// <summary> /// given the bounds of cba, return the offset of the first character of the first segment break. /// If none was found, we return the EndOffset of the given cba. /// </summary> /// <param name="cba"></param> /// <param name="ichMinSegBreaksInPara"></param> /// <returns> the ichMin of the segment break marker falling within the offsets of cba. /// -1 if cba is null, but will return cba.EndOffset if it couldn't find a segment break in the cba range.</returns> private static int GetSegmentBreakInCbaRange(TsStringSegment cba, List<int> ichMinSegBreaksInPara) { if (cba == null) return -1; int ichMin = cba.BeginOffset; int ichLim = cba.EndOffset; return GetSegmentBreakInRange(ichMin, ichLim, ichMinSegBreaksInPara); }
private static void AdjustSegmentToNewSegmentBounds(ICmBaseAnnotation cbaToAdjust, TsStringSegment newSeg) { if (newSeg == null) return; // or Assert.Fail? should not happen, but be defensive. if (cbaToAdjust.BeginOffset != newSeg.BeginOffset) cbaToAdjust.BeginOffset = newSeg.BeginOffset; if (cbaToAdjust.EndOffset != newSeg.EndOffset) cbaToAdjust.EndOffset = newSeg.EndOffset; }
/// <summary> /// /// </summary> /// <param name="cba"></param> /// <param name="segBreakBeginOffsetsAfterEdit"></param> /// <param name="segmentsAfterEdit"></param> /// <param name="closestSegAfterEdit">the dummy segment corresponding to cba in a list of dummy segments marking the bounds after the edit.</param> /// <param name="ichMinSegBreakAfterEdit">the ichMin of the segment break marker falling within the offsets of cba. /// -1 if cba is null, but will return cba.EndOffset if it couldn't find a segment break in the cba range.</param> private static void GetClosestSegmentInfoAfterEdit(ICmBaseAnnotation cba, List<int> segBreakBeginOffsetsAfterEdit, List<TsStringSegment> segmentsAfterEdit, out TsStringSegment closestSegAfterEdit, out int ichMinSegBreakAfterEdit) { closestSegAfterEdit = GetClosestSegment(cba, segmentsAfterEdit); ichMinSegBreakAfterEdit = GetSegmentBreakInCbaRange(closestSegAfterEdit, segBreakBeginOffsetsAfterEdit); }