public static double KeyRenderYc(this StageVm vm, int keyDex, double stageRenderHeight) { var vmHeight = vm.StageVmStyle.VPadding + (vm.Order - keyDex) * vm.StageVmStyle.KeyLineHeight; return(vm.RenderHeight(vmHeight, stageRenderHeight)); }
public static void DrawSortableValue(this StageVm stageVm, DrawingContext dc, SortableItemVm sortableVm, double stageRenderWidth, double stageRenderHeight) { if ((stageRenderHeight <= 0) || (stageRenderHeight <= 0)) { return; } if (sortableVm.StagePos == StagePos.Missing) { return; } var radius = stageVm.RenderHeight(stageVm.StageVmStyle.KeyLineThickness * 1.5, stageRenderHeight); var center = stageVm.GetSortableItemPosition(sortableVm, stageRenderWidth, stageRenderHeight); dc.DrawEllipse(sortableVm.BackgroundBrush, null, center, radius, radius); if (sortableVm.ShowLabel) { var txt = new FormattedText(sortableVm.Label.ToString(), CultureInfo.CurrentCulture, FlowDirection.LeftToRight, SortableItemVm.Typeface, radius, sortableVm.ForegroundBrush, 1.0); var upLeft = new Point(center.X - txt.Width / 2, center.Y - txt.Height / 2); dc.DrawText(txt, upLeft); } }
public static Point GetSortableItemPosition(this StageVm stageVm, SortableItemVm sortableItemVm, double stageRenderWidth, double stageRenderHeight) { if ((stageRenderHeight <= 0) || (stageRenderHeight <= 0)) { return(new Point(0, 0)); } if (sortableItemVm.StagePos == StagePos.Missing) { return(new Point(0, 0)); } var renderY = stageVm.KeyRenderYc(sortableItemVm.KeyLinePos, stageRenderHeight); var radius = stageVm.RenderHeight(stageVm.StageVmStyle.KeyLineThickness * 1.5, stageRenderHeight); var renderX = 0.0; switch (sortableItemVm.StagePos) { case StagePos.Left: renderX = radius * -1.2; break; case StagePos.Center: renderX = stageVm.SectionRenderX(sortableItemVm.StageSection, stageRenderWidth); break; case StagePos.Right: renderX = stageRenderWidth - radius * 1.2; break; default: break; } return(new Point(renderX, renderY)); }
public static Pen KeyLinePen(this StageVm stageVm, double stageRenderHeight) { var brushHeight = stageVm.RenderHeight(stageVm.StageVmStyle.KeyLineThickness, stageRenderHeight); return(new Pen(stageVm.StageVmStyle.KeyLineBrush, brushHeight)); }