public void RemoveLine(int lineNum)
        {
            LineMaskPair res = lines.FirstOrDefault((p) => (p.lineNum == lineNum));

            if (res != null)
            {
                lines.Remove(res);
                RaiseTagChangedEvent(lineNum);
            }
        }
        public void RaiseTagChangedEvent(int lineNum, uint newLineStatus)
        {
            LineMaskPair res = lines.FirstOrDefault((p) => (p.lineNum == lineNum));

            if (res != null)
            {
                res.lineMask = newLineStatus;
                RaiseTagChangedEvent(lineNum);
            }
        }
 IEnumerable <ITagSpan <ChartPointTag> > ITagger <ChartPointTag> .GetTags(NormalizedSnapshotSpanCollection spans)
 {
     foreach (SnapshotSpan span in spans)
     {
         ITextSnapshotLine line = span.Start.GetContainingLine();
         int firstLineNum       = line.LineNumber;
         int lastLineNum        = span.End.GetContainingLine().LineNumber;
         for (int i = firstLineNum; i <= lastLineNum; ++i)
         {
             LineMaskPair res = lines.FirstOrDefault((p) => (p.lineNum - 1 == firstLineNum));
             if (res != null)
             {
                 yield return(new TagSpan <ChartPointTag>(new SnapshotSpan(line.Start, 0), new ChartPointTag(res.lineMask)));
             }
         }
     }
 }