public RockMargin( IWpfTextView view, MarksEnumerator marks, ChangeEnumerator changes, HighlightedWordsEnumerator highlights, HighlightWordTagger tagger) { _view = view; _marks = marks; _changes = changes; _highlights = highlights; _tagger = tagger; _track = new Track(view, this); _render = new TrackRender(_view, _track, _marks, _changes, _highlights); this.Width = _view.Options.GetOptionValue(OptionsKeys.Width); this.ClipToBounds = true; this.Background = Utils.CreateBrush(_view.Options.GetOptionValue(OptionsKeys.BackgroundColor)); view.Options.OptionChanged += OnOptionChanged; view.LayoutChanged += OnTextViewLayoutChanged; view.ZoomLevelChanged += OnViewStateChanged; highlights.WordsChanged += OnWordHighlightsChanged; marks.MarksChanged += OnMarksChanged; changes.ChangesChanged += OnChangesChanged; this.SizeChanged += OnViewStateChanged; this.MouseRightButtonDown += this.OnMouseRightButtonDown; this.MouseLeftButtonDown += this.OnMouseLeftButtonDown; this.MouseLeftButtonUp += this.OnMouseLeftButtonUp; this.MouseMove += this.OnMouseMove; _render.Visuals.ForEach(delegate(Visual v) { AddVisualChild(v); }); }
public TrackRender(IWpfTextView view, Track track, MarksEnumerator marks, ChangeEnumerator changes, HighlightedWordsEnumerator highlights) { _view = view; _track = track; _marks = marks; _changes = changes; _highlights = highlights; _timer = new DispatcherTimer(); _timer.Tick += OnInvalidateTextTimer; _timer.Interval = TimeSpan.FromMilliseconds(500); ReloadOptions(); InitDrawingObjects(); }