public TreeChartBox() { SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw, true); UpdateStyles(); BorderStyle = BorderStyle.Fixed3D; DoubleBuffered = true; TabStop = true; BackColor = Color.White; fModel = new TreeChartModel(); fRenderer = null; fSelected = null; fToolTip = new ToolTip(); fTraceSelected = true; fTreeControls = new TreeControlsList <ITreeControl>(); fTreeControls.Add(new TCScaleControl(this)); fTreeControls.Add(new TCGenerationsControl(this, TreeChartKind.ckDescendants)); //fPersonControl = new PersonControl(this); InitTimer(); fTween = new TweenLibrary(); SetLayout(new NativeTreeLayout()); }
public TreeChartPerson(TreeChartModel model) { fModel = model; fFlags = EnumSet <PersonFlag> .Create(); fPortrait = null; fSpouses = null; fChilds = null; }
private MouseAction GetMouseAction(MouseEventArgs e, MouseEvent mouseEvent, out TreeChartPerson person) { var result = MouseAction.maNone; person = null; Point mpt = GetImageRelativeLocation(e.Location); int aX = mpt.X; int aY = mpt.Y; int num = fModel.Persons.Count; for (int i = 0; i < num; i++) { TreeChartPerson p = fModel.Persons[i]; ExtRect persRt = p.Rect; if (persRt.Contains(aX, aY)) { person = p; if (e.Buttons == MouseButtons.Primary && mouseEvent == MouseEvent.meDown) { result = MouseAction.maSelect; break; } else if (e.Buttons == MouseButtons.Alternate && mouseEvent == MouseEvent.meUp) { result = MouseAction.maProperties; break; } else if (mouseEvent == MouseEvent.meMove) { result = MouseAction.maHighlight; break; } } ExtRect expRt = TreeChartModel.GetExpanderRect(persRt); if ((e.Buttons == MouseButtons.Primary && mouseEvent == MouseEvent.meUp) && expRt.Contains(aX, aY)) { person = p; result = MouseAction.maExpand; break; } } if (result == MouseAction.maNone && person == null) { if (e.Buttons == MouseButtons.Alternate && mouseEvent == MouseEvent.meDown) { result = MouseAction.maDrag; } } return(result); }
private MouseActionRet GetMouseAction(MouseEventArgs e, MouseEvent mouseEvent) { MouseAction action = MouseAction.maNone; TreeChartPerson person = null; ExtPoint offsets = fModel.GetOffsets(); int aX = e.X - offsets.X; int aY = e.Y - offsets.Y; int num = fModel.Persons.Count; for (int i = 0; i < num; i++) { TreeChartPerson p = fModel.Persons[i]; ExtRect persRt = p.Rect; if (persRt.Contains(aX, aY)) { person = p; if (e.Button == MouseButtons.Left && mouseEvent == MouseEvent.meDown) { action = MouseAction.maSelect; break; } else if (e.Button == MouseButtons.Right && mouseEvent == MouseEvent.meUp) { action = MouseAction.maProperties; break; } else if (mouseEvent == MouseEvent.meMove) { action = MouseAction.maHighlight; break; } } ExtRect expRt = TreeChartModel.GetExpanderRect(persRt); if ((e.Button == MouseButtons.Left && mouseEvent == MouseEvent.meUp) && expRt.Contains(aX, aY)) { person = p; action = MouseAction.maExpand; break; } } if (action == MouseAction.maNone && person == null) { if (e.Button == MouseButtons.Right && mouseEvent == MouseEvent.meDown) { action = MouseAction.maDrag; } } return(new MouseActionRet(action, person)); }
public TreeChartBox() : base() { BackgroundColor = Colors.White; fModel = new TreeChartModel(); fRenderer = null; fSelected = null; fTraceSelected = true; fTreeControls = new TreeControlsList <ITreeControl>(); fTreeControls.Add(new TCScaleControl(this)); fTreeControls.Add(new TCGenerationsControl(this)); //fPersonControl = new PersonControl(this); InitTimer(); fTween = new TweenLibrary(); }
private void DrawDeep(DeepMode mode, int spx, int spy) { try { using (var deepModel = new TreeChartModel()) { deepModel.Assign(fModel); deepModel.SetRenderer(fRenderer); deepModel.DepthLimitAncestors = 2; deepModel.DepthLimitDescendants = 2; deepModel.GenChart(fSelected.Rec, TreeChartKind.ckBoth, true); deepModel.RecalcChart(true); var pers = deepModel.FindPersonByRec(fSelected.Rec); if (pers == null) { Logger.WriteError("TreeChartBox.DrawDeep(): unexpected failure"); return; } int dmX = (spx + (fSelected.PtX - pers.PtX)); int dmY = (spy + (fSelected.PtY - pers.PtY)); deepModel.SetOffsets(dmX, dmY); deepModel.VisibleArea = ExtRect.CreateBounds(0, 0, deepModel.ImageWidth, deepModel.ImageHeight); switch (mode) { case DeepMode.Background: fRenderer.SetTranslucent(0.75f); break; case DeepMode.Foreground: fRenderer.SetTranslucent(0.25f); IPen xpen = fRenderer.CreatePen(ChartRenderer.GetColor(BSDColors.Black), 2.0f); IColor bColor = ChartRenderer.GetColor(BSDColors.White); fRenderer.DrawRoundedRectangle(xpen, bColor, dmX, dmY, deepModel.ImageWidth, deepModel.ImageHeight, 6); fRenderer.SetTranslucent(0.00f); break; } deepModel.Draw(ChartDrawMode.dmStatic); } } catch (Exception ex) { Logger.WriteError("TreeChartBox.DrawDeep()", ex); } }
public TreeChartBox() { BackgroundColor = Colors.White; fModel = new TreeChartModel(); fRenderer = null; fSelected = null; fTraceSelected = true; fTreeControls = new TreeControlsList <ITreeControl>(); fTreeControls.Add(new TCScaleControl(this)); fTreeControls.Add(new TCGenerationsControl(this, TreeChartKind.ckDescendants)); //fPersonControl = new PersonControl(this); InitTimer(); fTween = new TweenLibrary(); SetLayout(new NativeTreeLayout()); }
public void ShowTreeChart(TreeChartKind chartKind) { var selPerson = GetSelectedPerson(); if (selPerson == null) { return; } if (BaseController.DetectCycle(selPerson)) { return; } if (TreeChartModel.CheckTreeChartSize(fContext.Tree, selPerson, chartKind)) { var fmChart = AppHost.Container.Resolve <ITreeChartWin>(fView, selPerson); fmChart.GenChart(chartKind); AppHost.Instance.ShowWindow(fmChart); } }
public void Test_TreeChartModel() { using (var model = new TreeChartModel()) { Assert.IsNotNull(model); model.Base = fBase; Assert.AreEqual(fBase, model.Base); model.BranchDistance = TreeChartModel.DEF_BRANCH_DISTANCE; Assert.AreEqual(TreeChartModel.DEF_BRANCH_DISTANCE, model.BranchDistance); model.CertaintyIndex = true; Assert.AreEqual(true, model.CertaintyIndex); model.DepthLimit = 8; Assert.AreEqual(8, model.DepthLimit); model.DepthLimit = 8; Assert.AreEqual(8, model.DepthLimit); Assert.IsNotNull(model.Filter); model.HighlightedPerson = null; Assert.AreEqual(null, model.HighlightedPerson); Assert.AreEqual(0, model.ImageHeight); Assert.AreEqual(0, model.ImageWidth); model.KinRoot = null; Assert.AreEqual(null, model.KinRoot); model.Kind = TreeChartKind.ckAncestors; Assert.AreEqual(TreeChartKind.ckAncestors, model.Kind); model.Margins = 15; Assert.AreEqual(15, model.Margins); Assert.IsNull(model.Options); model.PathDebug = true; Assert.AreEqual(true, model.PathDebug); Assert.IsNotNull(model.Persons); Assert.IsNotNull(model.PreparedIndividuals); Assert.IsNull(model.Root); model.Scale = 1.3f; Assert.AreEqual(1.3f, model.Scale); model.Scale = 0.1f; Assert.AreEqual(0.5f, model.Scale); model.Scale = 1.7f; Assert.AreEqual(1.5f, model.Scale); Assert.Throws(typeof(ArgumentNullException), () => { model.DoFilter(null); }); Assert.IsNull(model.FindPersonByCoords(0, 0)); Assert.AreEqual(ExtRect.Create(0, -18, 15, -2), TreeChartModel.GetExpanderRect(ExtRect.Create(0, 0, 0, 0))); Assert.AreEqual(ExtRect.Create(-8, -18, 7, -2), TreeChartModel.GetPersonExpandRect(ExtRect.Create(0, 0, 0, 0))); ExtRect rt = model.VisibleArea; Assert.IsTrue(rt.IsEmpty()); } }
private MouseAction GetMouseAction(MouseEventArgs e, MouseEvent mouseEvent, out TreeChartPerson person) { var result = MouseAction.None; person = null; ExtPoint offsets = fModel.GetOffsets(); int aX = e.X - offsets.X; int aY = e.Y - offsets.Y; int num = fModel.Persons.Count; for (int i = 0; i < num; i++) { TreeChartPerson p = fModel.Persons[i]; ExtRect persRt = p.Rect; if (persRt.Contains(aX, aY)) { person = p; if (e.Button == MouseButtons.Left && mouseEvent == MouseEvent.meDown) { result = MouseAction.Select; break; } else if (e.Button == MouseButtons.Right && mouseEvent == MouseEvent.meUp) { result = MouseAction.Properties; break; } else if (mouseEvent == MouseEvent.meMove) { result = MouseAction.Highlight; break; } } ExtRect expRt = TreeChartModel.GetExpanderRect(persRt); if ((e.Button == MouseButtons.Left && mouseEvent == MouseEvent.meUp) && expRt.Contains(aX, aY)) { person = p; result = MouseAction.Expand; break; } expRt = TreeChartModel.GetPersonExpandRect(persRt); if ((e.Button == MouseButtons.Left && mouseEvent == MouseEvent.meUp) && expRt.Contains(aX, aY)) { person = p; result = MouseAction.PersonExpand; break; } ExtRect infoRt = TreeChartModel.GetInfoRect(persRt); if ((e.Button == MouseButtons.Left && mouseEvent == MouseEvent.meUp) && infoRt.Contains(aX, aY)) { person = p; result = MouseAction.Info; break; } } if (result == MouseAction.None && person == null) { if (e.Button == MouseButtons.Right && mouseEvent == MouseEvent.meDown) { result = MouseAction.Drag; } } return(result); }