private void ScrollAnnotation(DiagramScrollBar scrollBar) { Point delta = Delta; var annotationData = m_annotationEditors[scrollBar.Item.Cast<IAnnotation>()]; float lineHeight = annotationData.TextLayout.Height /annotationData.TextLayout.LineCount; float lines = delta.Y / lineHeight; int newTopLine = m_startTopLine + (int)lines; float visibleLines = annotationData.TextLayout.LayoutHeight / lineHeight; if (newTopLine < 0) newTopLine = 0; if (newTopLine + visibleLines - 1 > annotationData.TextLayout.LineCount) newTopLine = annotationData.TopLine; annotationData.TopLine = newTopLine >=0? newTopLine:0; }
/// <summary> /// Constructor, annotation hit</summary> /// <param name="annotation">Annotation item</param> /// <param name="scrollBar">Specifies a hit on an item's scroll bar part</param> public AnnotationHitEventArgs(IAnnotation annotation, DiagramScrollBar scrollBar) { Item = annotation; Part = scrollBar; }
private void ScrollAnnotation(DiagramScrollBar scrollBar) { if (scrollBar == null) return; var annotation = scrollBar.Item.Cast<IAnnotation>(); Point delta = Delta; var annotationData = m_annotationEditors[annotation]; float lineHeight = annotationData.TextLayout.Height /annotationData.TextLayout.LineCount; float lines = delta.Y / lineHeight; int newTopLine = m_startTopLine + (int)Math.Ceiling(lines); float visibleLines = annotationData.TextLayout.LayoutHeight / lineHeight; if (newTopLine < 0) newTopLine = 0; if ((int)(newTopLine + visibleLines - 1) > annotationData.TextLayout.LineCount) newTopLine = annotationData.TopLine; annotationData.TopLine = newTopLine >=0 ? newTopLine:0; annotationData.ResetText(annotation.Text); }