private void DrawSwitch(SvgDrawing drawing, bool t1, bool t2, bool swapped) { // Wires drawing.Path(b => b.MoveTo(-8, 0).LineTo(-6, 0) .MoveTo(6, 4).LineTo(8, 4) .MoveTo(6, -4).LineTo(8, -4), new("wire")); // Terminals drawing.Circle(new(-5, 0), 1); drawing.Circle(new(5, 4), 1); drawing.Circle(new(5, -4), 1); // Switch position if (!t1 && !t2) { drawing.Line(new(-4, 0), new(5, 0)); } else if (t1) { drawing.Line(new(-4, 0), new(4, swapped ? -4 : 4)); } else { drawing.Line(new(-4, 0), new(4, swapped ? 4 : -4)); } // Label if (!string.IsNullOrWhiteSpace(Label)) { drawing.Text(Label, new(-6, 6), new(-1, 1)); } }
private void DrawPackaged(SvgDrawing drawing) { // Wires if (Pins[0].Connections == 0) { drawing.Line(new(-5, 0), new(-8, 0), new("wire")); } if (Pins[1].Connections == 0) { drawing.Line(new(0, 6), new(0, 8), new("wire")); } if (Pins[3].Connections == 0) { drawing.Line(new(5, 0), new(8, 0), new("wire")); } // Gate drawing.Path(b => b.MoveTo(-6, 6).LineTo(6, 6) .MoveTo(-7, 4).LineTo(-4, 4) .MoveTo(-2, 4).LineTo(2, 4) .MoveTo(4, 4).LineTo(7, 4), new("gate")); // Drain, source and gate drawing.Line(new(-5, 0), new(-5, 4), new("source")); drawing.Line(new(5, 0), new(5, 4), new("drain")); drawing.Polyline(new Vector2[] { new(-5, 0), new(0, 0), new(0, 4) }, new("bulk") { EndMarker = Drawing.PathOptions.MarkerTypes.Arrow });
private void Draw(SvgDrawing drawing, bool straight) { drawing.Line(new(-Crossings - 2, 0), new(Crossings + 2, 0), new("wire")); if (Crossings > 0) { drawing.Path(b => { for (int i = 0; i < Crossings; i++) { double x = i * 2 - Crossings + 1; if (straight) { b.MoveTo(x, 3).Line(0, -6); } else { b.MoveTo(x - 1.5, 3).Line(3, -6); } } }); } // The label if (!string.IsNullOrWhiteSpace(Label)) { drawing.Text(Label, new(0, -4), new(0, -1)); } }
private void DrawSource(SvgDrawing drawing) { // Wires drawing.Path(b => b.MoveTo(-8, 0).LineTo(-6, 0).MoveTo(6, 0).LineTo(8, 0), new("wire")); // The circle with the arrow drawing.Circle(new(0, 0), 6); drawing.Line(new(-3, 0), new(3, 0), new("arrow") { EndMarker = Drawing.PathOptions.MarkerTypes.Arrow });
private void DrawGround(SvgDrawing drawing) { // Wire drawing.Line(new(0, 0), new(0, 3), new("wire")); // Ground drawing.Path(b => b.MoveTo(-5, 3).LineTo(5, 3).MoveTo(-3, 5).LineTo(3, 5).MoveTo(-1, 7).LineTo(1, 7)); }
/// <inheritdoc/> private void DrawSource(SvgDrawing drawing) { // Wires drawing.Path(b => b.MoveTo(-8, 0).LineTo(-6, 0).MoveTo(6, 0).LineTo(8, 0), new("wire")); // Diamond drawing.Polygon(new Vector2[] { new(-6, 0), new(0, 6), new(6, 0), new(0, -6) });
private void DrawEarth(SvgDrawing drawing) { // Wire drawing.Line(new(0, 0), new(0, 3), new("wire")); // Ground segments drawing.Path(b => b.MoveTo(-5, 3).LineTo(5, 3) .MoveTo(-5, 3).Line(-2, 4) .MoveTo(0, 3).Line(-2, 4) .MoveTo(5, 3).Line(-2, 4)); }
private void DrawJack(SvgDrawing drawing) { drawing.Path(b => b.MoveTo(0, 2).LineTo(0, 6).MoveTo(4, 0).LineTo(6, 0), new("wire")); drawing.Circle(new(), 1.5); drawing.Circle(new(), 4); drawing.Circle(new(4, 0), 1, new("dot")); if (!string.IsNullOrWhiteSpace(Label)) { drawing.Text(Label, new(-6, 0), new(-1, 0)); } }
private void DrawCrystal(SvgDrawing drawing) { // Wires if (Pins[0].Connections == 0) { drawing.Line(new(-4.5, 0), new(-6, 0), new("wire")); } if (Pins[1].Connections == 0) { drawing.Line(new(4.5, 0), new(6, 0), new("wire")); } // The crystal drawing.Rectangle(5, 10, options: new("body")); drawing.Path(b => b.MoveTo(-4.5, -3.5).Line(0, 7).MoveTo(4.5, -3.5).Line(0, 7)); // Label if (!string.IsNullOrWhiteSpace(Label)) { drawing.Text(Label, new(0, -6), new(0, -1)); } }
private void DrawRegular(SvgDrawing drawing) { // Wires if (Pins[0].Connections == 0) { drawing.Line(new(-4, 0), new(-8, 0), new("wire")); } if (Pins[1].Connections == 0) { drawing.Line(new(0, 6), new(0, 8), new("wire")); } if (Pins[3].Connections == 0) { drawing.Line(new(4, 0), new(8, 0), new("wire")); } // Gate drawing.Path(b => b.MoveTo(-6, 4).LineTo(6, 4).MoveTo(-6, 6).LineTo(6, 6), new("gate")); // Source and drain drawing.Line(new(-4, 0), new(-4, 4), new("source")); drawing.Line(new(4, 0), new(4, 4), new("drain")); // Label if (!string.IsNullOrWhiteSpace(Label)) { if (Pins["b"].Connections > 0) { drawing.Text(Label, new(-3, -3), new(-1, -1)); } else { drawing.Text(Label, new(0, -3), new(0, -1)); } } }
private void DrawChildProtection(SvgDrawing drawing) { drawing.Path(b => b.MoveTo(4, -6).LineTo(4, -4).MoveTo(4, 4).LineTo(4, 6), new("child")); }
private void DrawConnector(SvgDrawing drawing) { drawing.Path(b => b.MoveTo(-6, 0).LineTo(-4, 0).MoveTo(2, 0).LineTo(6, 0), new("wire")); drawing.Circle(new(), 1.5); drawing.Arc(new(), Math.PI / 4, -Math.PI / 4, 4, null, 3); }
private static void DrawUnderground(SvgDrawing drawing) { drawing.Path(b => b.MoveTo(-4, -5).Line(8, 0).MoveTo(-2.5, -3.5).Line(5, 0).MoveTo(-1, -2).Line(2, 0)); }
private void DrawSigns(SvgDrawing drawing) { drawing.Path(b => b.MoveTo(-7, -4).LineTo(-5, -4).MoveTo(-6, -3).LineTo(-6, -5), new("plus")); drawing.Line(new(5, -4), new(7, -4), new("minus")); }