public IEnumerable <Conditional <IRenderCommand> > Flatten(FlattenContext context) { double width = context.AutoRotate.Mirror ? Height : Width; double height = context.AutoRotate.Mirror ? Width : Height; foreach (var locationConditional in Location.Flatten(context)) { var location = locationConditional.Value; if ((context.AutoRotate.FlipType & Circuit.FlipType.Horizontal) != 0) { location.Offset = new CircuitDiagram.Primitives.Vector(location.Offset.X - width, location.Offset.Y); } if ((context.AutoRotate.FlipType & Circuit.FlipType.Vertical) != 0) { location.Offset = new CircuitDiagram.Primitives.Vector(location.Offset.X, location.Offset.Y - height); } var command = new Rectangle( location, width, height, StrokeThickness, Fill); yield return(new Conditional <IRenderCommand>(command, locationConditional.Conditions)); } }
public override IEnumerable <Conditional <IRenderCommand> > Flatten(FlattenContext context) { foreach (var location in Location.Flatten(context)) { foreach (var alignment in Alignment) { foreach (var rotation in Rotation) { var command = new RenderText( location.Value, alignment.Value, TextRuns) { Rotation = rotation.Value, }; var conditions = ConditionTreeBuilder.And(new[] { location.Conditions, alignment.Conditions, rotation.Conditions, }); yield return(new Conditional <IRenderCommand>(command, conditions)); } } } }
public IEnumerable <Conditional <IRenderCommand> > Flatten(FlattenContext context) { var commands = Commands.Select(x => { if (context.AutoRotate.Mirror) { x = x.Reflect(); } if ((context.AutoRotate.FlipType & Circuit.FlipType.Horizontal) == Circuit.FlipType.Horizontal) { x = x.Flip(true); } if ((context.AutoRotate.FlipType & Circuit.FlipType.Vertical) == Circuit.FlipType.Vertical) { x = x.Flip(false); } return(x); }).ToList(); foreach (var start in Start.Flatten(context)) { var command = new RenderPath( start.Value, Thickness, Fill, commands); yield return(new Conditional <IRenderCommand>(command, start.Conditions)); } }
public IEnumerable <Conditional <ComponentPointOffset> > Flatten(FlattenContext context) { var offset = new ComponentPointOffset { Axis = Axis, Offset = Offset, }; yield return(new Conditional <ComponentPointOffset>(offset, ConditionTree.Empty)); }
public IEnumerable <Conditional <ComponentPointOffset> > Flatten(FlattenContext context) { foreach (var value in Values) { var offset = new ComponentPointOffset { Axis = Axis, Offset = value.Value * (Negative ? -1 : 1), }; yield return(new Conditional <ComponentPointOffset>(offset, value.Conditions)); } }
public IEnumerable <RenderDescription> Flatten(FlattenContext context) { // TODO: Group by/simplify conditions var flatConditions = new ConditionTree(ConditionTree.ConditionOperator.AND, context.AncestorConditions, Conditions); foreach (var command in Value.SelectMany(x => x.Flatten(context))) { var conditions = new ConditionTree(ConditionTree.ConditionOperator.AND, flatConditions, command.Conditions); yield return(new RenderDescription(conditions, new[] { command.Value })); } }
public IEnumerable <Conditional <IRenderCommand> > Flatten(FlattenContext context) { foreach (var centre in Centre.Flatten(context)) { var command = new Ellipse( centre.Value, RadiusX, RadiusY, StrokeThickness, Fill); yield return(new Conditional <IRenderCommand>(command, centre.Conditions)); } }
public virtual IEnumerable <Conditional <IRenderCommand> > Flatten(FlattenContext context) { foreach (var location in Location.Flatten(context)) { var command = new RenderText( location.Value, Alignment, TextRuns) { Rotation = Rotation, }; yield return(new Conditional <IRenderCommand>(command, location.Conditions)); } }
public IEnumerable <Conditional <ComponentPoint> > Flatten(FlattenContext context) { var allOffsets = Offsets.Select(x => x.Flatten(context)); foreach (var offsets in allOffsets.CartesianProduct()) { double xOffset = offsets.Where(x => x.Value.Axis == OffsetAxis.X != context.AutoRotate.Mirror).Sum(x => x.Value.Offset); double yOffset = offsets.Where(x => x.Value.Axis == OffsetAxis.Y != context.AutoRotate.Mirror).Sum(x => x.Value.Offset); var point = new ComponentPoint(RelativeToX, RelativeToX, new Vector(xOffset, yOffset)).Flip(context.AutoRotate.FlipType, context.AutoRotate.FlipState); var conditions = ConditionTreeBuilder.And(offsets.Select(x => x.Conditions)); yield return(new Conditional <ComponentPoint>(point, conditions)); } }
public IEnumerable<Conditional<IRenderCommand>> Flatten(FlattenContext context) { foreach (var start in Start.Flatten(context)) { foreach(var end in End.Flatten(context)) { var command = new Line(start.Value, end.Value, Thickness); var conditions = new ConditionTree( ConditionTree.ConditionOperator.AND, start.Conditions, end.Conditions); yield return new Conditional<IRenderCommand>(command, conditions); } } }
public override IEnumerable <Conditional <IRenderCommand> > Flatten(FlattenContext context) { foreach (var location in Location.Flatten(context)) { foreach (var width in Width) { var conditions = ConditionTreeBuilder.And(new[] { location.Conditions, width.Conditions, }); var command = new Rectangle( location.Value, width.Value, Height, StrokeThickness, Fill); yield return(new Conditional <IRenderCommand>(command, conditions)); } } }
public IEnumerable <Conditional <ConnectionDescription> > Flatten(FlattenContext context) { foreach (var start in Start.Flatten(context)) { foreach (var end in End.Flatten(context)) { foreach (var edge in Edge) { var conditions = ConditionTreeBuilder.And( start.Conditions, end.Conditions, edge.Conditions); var connection = new ConnectionDescription( start.Value, end.Value, edge.Value, Name); yield return(new Conditional <ConnectionDescription>(connection, conditions)); } } } }