public void Scribble(int x, int y, ConstraintType constraintType, int brushWidth) { if (CurrentNeuralProcess != null) { Interop.ConvergenceGap = Constants.Parameters.GetFloat("MAX_CONVERGENCE_GAP"); Interop.ConvergenceGapDelta = Constants.Parameters.GetFloat("MAX_CONVERGENCE_GAP_DELTA"); switch (constraintType) { case ConstraintType.Foreground: Interop.AddForegroundHardConstraint( new Vector3(x, y, CurrentSlice), new Vector3(mMousePreviousX, mMousePreviousY, CurrentSlice), brushWidth, HardConstraintMode.Scribble); break; case ConstraintType.Background: Interop.AddBackgroundHardConstraint( new Vector3(x, y, CurrentSlice), new Vector3(mMousePreviousX, mMousePreviousY, CurrentSlice), brushWidth, HardConstraintMode.Scribble); break; default: Release.Assert(false); break; } mMousePreviousX = x; mMousePreviousY = y; } }
public void InitializeConstraintMapAndSegmentationFromBreadcrumbs() { if (DatasetDescription.NeuralProcessDescriptions.Count > 0) { Release.Assert(CurrentNeuralProcess != null); var backgroundBreadcrumbs = from neuralProcessDescription in DatasetDescription.NeuralProcessDescriptions.Values from breadcrumb in neuralProcessDescription.BreadcrumbDescriptions where !neuralProcessDescription.Color.Equals(CurrentNeuralProcess.Color) select breadcrumb; backgroundBreadcrumbs.ToList().ForEach( breadcrumb => Interop.AddBackgroundHardConstraint(breadcrumb.Position, Constants.MIN_BRUSH_WIDTH, HardConstraintMode.Breadcrumb)); CurrentNeuralProcess.BreadcrumbDescriptions.ToList().ForEach( breadcrumb => Interop.AddForegroundHardConstraint(breadcrumb.Position, Constants.MIN_BRUSH_WIDTH, HardConstraintMode.Breadcrumb)); } }