private void WriteSitemapXmlForLineage(XmlTextWriter writer, ReadOnlyLineage lineage) { var linAddress = new Uri(Request.Url, "Default.aspx?lineageId=" + HttpUtility.UrlEncode(lineage.Id.ToString())); WriteSitemapXmlForPage(writer, linAddress, "1.0"); }
public LineageCoords(int xStart, int yStart, int xEnd, int yEnd, ReadOnlyLineage lin, double thicknessScaleFactor, double fontScaleFactor) { AbsoluteXStart = xStart; AbsoluteYStart = yStart; AbsoluteXEnd = xEnd; AbsoluteYEnd = yEnd; Lineage = lin; ThicknessScaleFactor = thicknessScaleFactor; FontScaleFactor = fontScaleFactor; }
//private void InitAxisMinAndMax(ReadOnlyLineage root) //{ // TreeAxis.Minimum = root.StartYear; // TreeAxis.Maximum = CalcTreeMaxYear(); //} private void InitAxisMinAndMax(ReadOnlyLineage root) { int startYear = root.StartYear; int endYear = CalcTreeMaxYear(); if (CanvasScaleTransform.ScaleY == 1) { TreeAxis.Maximum = endYear; TreeAxis.Minimum = startYear; return; } Rect rect = TreeCanvas.GetBounds(); Rect transBounds = CanvasScaleTransform.TransformBounds(rect); TreeAxis.Minimum = -2500; TreeAxis.Maximum = endYear - ((endYear - startYear) * (Math.Abs(transBounds.Top) / transBounds.Height)); TreeAxis.Minimum = endYear - ((endYear - startYear) * ((rect.Height + Math.Abs(transBounds.Top)) / transBounds.Height)); //double zoomedHeight = TreeCanvas.ActualHeight / scaleY; ////if center takes the zoom area outside of the canvas bounds, adjust the center so that it doesn't //if (centerY + (zoomedHeight / 2d) > TreeCanvas.ActualHeight) // centerY = TreeCanvas.ActualHeight - (zoomedHeight / 2d); //else if (centerY - (zoomedHeight / 2d) < 0) // centerY = zoomedHeight / 2d; ////SA 17.07.10 BUG: Doesn't calculate correct min / max year when zoom is in middle of canvas //TreeAxis.Minimum = ConvertYCoordToYear(centerY + (zoomedHeight / 2d), startYear, endYear); //TreeAxis.Maximum = ConvertYCoordToYear(centerY - (zoomedHeight / 2d), startYear, endYear); }
private void DrawTree(IEnumerable<LineageCoords> treePlot, ReadOnlyLineage root, int? selectedLineageId) { foreach (LineageCoords plot in treePlot) { var linCtrl = new LineageControl(plot); if (selectedLineageId.HasValue && plot.LineageId == selectedLineageId.Value) linCtrl.IsSelected = true; linCtrl.RenderTransform = LineageTransformGroup; Canvas.SetTop(linCtrl, plot.AbsoluteOriginY); Canvas.SetLeft(linCtrl, plot.AbsoluteOriginX); _lineageIdLookup.Add(linCtrl, plot.LineageId); linCtrl.Selected += LinCtrl_Selected; linCtrl.NavigateRequest += linCtrl_NavigateRequest; TreeCanvas.Children.Add(linCtrl); if (plot.LineageId == root.Id && root.ParentLineageId.HasValue) { AddGoToParentButton(plot); AddResetButton(plot); } //TODO: Try to give canvas focus on tree load so that it'll respond to mouse wheel events //if (plot.LineageId == root.Id && selectedLineageId == null) //{ // Dispatcher.BeginInvoke(() => { linCtrl.Focus(); }); //} } }
private int CalcTreeMaxYear(ReadOnlyLineage lin) { double result = ((lin.EffectiveMaxYearOfBranch - lin.StartYear) * MaxEndYearMultipler) + lin.StartYear; return (int)result; }