Compare commits
	
		
			2 Commits
		
	
	
		
			8ec245f36e
			...
			047c3b8893
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 047c3b8893 | |||
| 64a6146f32 | 
| @@ -74,3 +74,43 @@ wire.stub("p", "east", name: "east", vertical: true) | |||||||
| wire.stub("p", "south", name: "south", length: 15pt) | wire.stub("p", "south", name: "south", length: 15pt) | ||||||
| wire.stub("p", "west", name: "west", length: 3em) | wire.stub("p", "west", name: "west", length: 3em) | ||||||
| ```) | ```) | ||||||
|  |  | ||||||
|  | #let gate-and = example(``` | ||||||
|  | gates.gate-and(x: 0, y: 0, w: 1.5, h: 1.5) | ||||||
|  | gates.gate-and(x: 3, y: 0, w: 1.5, h: 1.5, inverted: "all") | ||||||
|  | ```, vertical: true) | ||||||
|  |  | ||||||
|  | #let gate-nand = example(``` | ||||||
|  | gates.gate-nand(x: 0, y: 0, w: 1.5, h: 1.5) | ||||||
|  | gates.gate-nand(x: 3, y: 0, w: 1.5, h: 1.5, inverted: "all") | ||||||
|  | ```, vertical: true) | ||||||
|  |  | ||||||
|  | #let gate-buf = example(``` | ||||||
|  | gates.gate-buf(x: 0, y: 0, w: 1.5, h: 1.5) | ||||||
|  | gates.gate-buf(x: 3, y: 0, w: 1.5, h: 1.5, inverted: "all") | ||||||
|  | ```, vertical: true) | ||||||
|  |  | ||||||
|  | #let gate-not = example(``` | ||||||
|  | gates.gate-not(x: 0, y: 0, w: 1.5, h: 1.5) | ||||||
|  | gates.gate-not(x: 3, y: 0, w: 1.5, h: 1.5, inverted: "all") | ||||||
|  | ```, vertical: true) | ||||||
|  |  | ||||||
|  | #let gate-or = example(``` | ||||||
|  | gates.gate-or(x: 0, y: 0, w: 1.5, h: 1.5) | ||||||
|  | gates.gate-or(x: 3, y: 0, w: 1.5, h: 1.5, inverted: "all") | ||||||
|  | ```, vertical: true) | ||||||
|  |  | ||||||
|  | #let gate-nor = example(``` | ||||||
|  | gates.gate-nor(x: 0, y: 0, w: 1.5, h: 1.5) | ||||||
|  | gates.gate-nor(x: 3, y: 0, w: 1.5, h: 1.5, inverted: "all") | ||||||
|  | ```, vertical: true) | ||||||
|  |  | ||||||
|  | #let gate-xor = example(``` | ||||||
|  | gates.gate-xor(x: 0, y: 0, w: 1.5, h: 1.5) | ||||||
|  | gates.gate-xor(x: 3, y: 0, w: 1.5, h: 1.5, inverted: "all") | ||||||
|  | ```, vertical: true) | ||||||
|  |  | ||||||
|  | #let gate-xnor = example(``` | ||||||
|  | gates.gate-xnor(x: 0, y: 0, w: 1.5, h: 1.5) | ||||||
|  | gates.gate-xnor(x: 3, y: 0, w: 1.5, h: 1.5, inverted: "all") | ||||||
|  | ```, vertical: true) | ||||||
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								manual.pdf
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								manual.pdf
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										65
									
								
								manual.typ
									
									
									
									
									
								
							
							
						
						
									
										65
									
								
								manual.typ
									
									
									
									
									
								
							| @@ -4,6 +4,7 @@ | |||||||
| #import "doc/examples.typ" | #import "doc/examples.typ" | ||||||
| #import "src/circuit.typ": circuit | #import "src/circuit.typ": circuit | ||||||
| #import "src/element.typ" | #import "src/element.typ" | ||||||
|  | #import "src/gates.typ" | ||||||
| #import "src/util.typ" | #import "src/util.typ" | ||||||
| #import "src/wire.typ" | #import "src/wire.typ" | ||||||
|  |  | ||||||
| @@ -13,7 +14,7 @@ | |||||||
| #{ | #{ | ||||||
|   outline(indent: true, depth: 3) |   outline(indent: true, depth: 3) | ||||||
| } | } | ||||||
| #set page(numbering: "1/1", header: align(right)[circuiteria #sym.dash.em v#lib.version]) |  | ||||||
| #show link: set text(blue) | #show link: set text(blue) | ||||||
| #show heading.where(level: 3): it => context { | #show heading.where(level: 3): it => context { | ||||||
|   let cnt = counter(heading) |   let cnt = counter(heading) | ||||||
| @@ -44,6 +45,44 @@ | |||||||
|   ] |   ] | ||||||
| } | } | ||||||
|  |  | ||||||
|  | #set page(numbering: "1/1", header: align(right)[circuiteria #sym.dash.em v#lib.version]) | ||||||
|  | #set page( | ||||||
|  |   header: locate(loc => { | ||||||
|  |     let txt = [circuiteria #sym.dash.em v#lib.version] | ||||||
|  |     let cnt = counter(heading) | ||||||
|  |     let cnt-val = cnt.get() | ||||||
|  |     if cnt-val.len() < 2 { | ||||||
|  |       align(left, txt) | ||||||
|  |       return | ||||||
|  |     } | ||||||
|  |     let i = cnt-val.at(1) - 1 | ||||||
|  |     grid( | ||||||
|  |       columns: (auto, 1fr), | ||||||
|  |       column-gutter: 1em, | ||||||
|  |       align: horizon, | ||||||
|  |       txt, | ||||||
|  |       place(horizon + left)[ | ||||||
|  |         #rect(width: 100%, height: .5em, radius: .25em, stroke: none, fill: util.colors.values().at(i)) | ||||||
|  |       ] | ||||||
|  |     ) | ||||||
|  |   }), | ||||||
|  |   footer: locate(loc => { | ||||||
|  |     let cnt = counter(heading) | ||||||
|  |     let cnt-val = cnt.get() | ||||||
|  |     if cnt-val.len() < 2 { return } | ||||||
|  |     let i = cnt-val.at(1) - 1 | ||||||
|  |     grid( | ||||||
|  |       columns: (1fr, auto), | ||||||
|  |       column-gutter: 1em, | ||||||
|  |       align: horizon, | ||||||
|  |       place(horizon + left)[ | ||||||
|  |         #rect(width: 100%, height: .5em, radius: .25em, stroke: none, fill: util.colors.values().at(i)) | ||||||
|  |       ], | ||||||
|  |       counter(page).display("1/1", both: true) | ||||||
|  |     ) | ||||||
|  |   }) | ||||||
|  | ) | ||||||
|  |  | ||||||
| #let doc-ref(target, full: false, var: false) = { | #let doc-ref(target, full: false, var: false) = { | ||||||
|   let (module, func) = target.split(".") |   let (module, func) = target.split(".") | ||||||
|   let label-name = module + func |   let label-name = module + func | ||||||
| @@ -121,7 +160,6 @@ Simply import #link("src/lib.typ") and call the `circuit` function: | |||||||
|   read("src/elements/extender.typ") + "\n" + |   read("src/elements/extender.typ") + "\n" + | ||||||
|   read("src/elements/multiplexer.typ"), |   read("src/elements/multiplexer.typ"), | ||||||
|   name: "element", |   name: "element", | ||||||
|   require-all-parameters: true, |  | ||||||
|   scope: ( |   scope: ( | ||||||
|     element: element, |     element: element, | ||||||
|     circuit: circuit, |     circuit: circuit, | ||||||
| @@ -135,4 +173,25 @@ Simply import #link("src/lib.typ") and call the `circuit` function: | |||||||
|  |  | ||||||
| #tidy.show-module(element-docs, sort-functions: false) | #tidy.show-module(element-docs, sort-functions: false) | ||||||
|  |  | ||||||
| #(tidy.utilities.get-style-functions(tidy.styles.default).show-reference)(label("wirewire()"), "test") | #pagebreak() | ||||||
|  |  | ||||||
|  | #let gates-docs = tidy.parse-module( | ||||||
|  |   read("src/elements/logic/gate.typ") + "\n" + | ||||||
|  |   read("src/elements/logic/and.typ") + "\n" + | ||||||
|  |   read("src/elements/logic/buf.typ") + "\n" + | ||||||
|  |   read("src/elements/logic/or.typ") + "\n" + | ||||||
|  |   read("src/elements/logic/xor.typ"), | ||||||
|  |   name: "gates", | ||||||
|  |   scope: ( | ||||||
|  |     element: element, | ||||||
|  |     circuit: circuit, | ||||||
|  |     gates: gates, | ||||||
|  |     draw: draw, | ||||||
|  |     wire: wire, | ||||||
|  |     tidy: tidy, | ||||||
|  |     examples: examples, | ||||||
|  |     doc-ref: doc-ref | ||||||
|  |   ) | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | #tidy.show-module(gates-docs, sort-functions: false) | ||||||
| @@ -11,5 +11,3 @@ | |||||||
| #import "elements/logic/or.typ": gate-or, gate-nor | #import "elements/logic/or.typ": gate-or, gate-nor | ||||||
| #import "elements/logic/xor.typ": gate-xor, gate-xnor | #import "elements/logic/xor.typ": gate-xor, gate-xnor | ||||||
| #import "elements/logic/buf.typ": gate-buf, gate-not | #import "elements/logic/buf.typ": gate-buf, gate-not | ||||||
| /* |  | ||||||
| */ |  | ||||||
| @@ -40,16 +40,7 @@ | |||||||
| /// Draws an ALU with two inputs | /// Draws an ALU with two inputs | ||||||
| /// | /// | ||||||
| /// #examples.alu | /// #examples.alu | ||||||
| /// - x (number, dictionary): see #doc-ref("element.elmt") | /// For parameters description, see #doc-ref("element.elmt") | ||||||
| /// - y (number, dictionary): see #doc-ref("element.elmt") |  | ||||||
| /// - w (number): see #doc-ref("element.elmt") |  | ||||||
| /// - h (number): see #doc-ref("element.elmt") |  | ||||||
| /// - name (none, str): see #doc-ref("element.elmt") |  | ||||||
| /// - name-anchor (str): see #doc-ref("element.elmt") |  | ||||||
| /// - fill (none, color): see #doc-ref("element.elmt") |  | ||||||
| /// - stroke (stroke): see #doc-ref("element.elmt") |  | ||||||
| /// - id (str): see #doc-ref("element.elmt") |  | ||||||
| /// - debug (dictionary): see #doc-ref("element.elmt") |  | ||||||
| #let alu( | #let alu( | ||||||
|   x: none, |   x: none, | ||||||
|   y: none, |   y: none, | ||||||
|   | |||||||
| @@ -16,18 +16,7 @@ | |||||||
| /// Draws a block element | /// Draws a block element | ||||||
| /// | /// | ||||||
| /// #examples.block | /// #examples.block | ||||||
| /// - x (number, dictionary): see #doc-ref("element.elmt") | /// For parameters description, see #doc-ref("element.elmt") | ||||||
| /// - y (number, dictionary): see #doc-ref("element.elmt") |  | ||||||
| /// - w (number): see #doc-ref("element.elmt") |  | ||||||
| /// - h (number): see #doc-ref("element.elmt") |  | ||||||
| /// - name (none, str): see #doc-ref("element.elmt") |  | ||||||
| /// - name-anchor (str): see #doc-ref("element.elmt") |  | ||||||
| /// - ports (dictionary): see #doc-ref("element.elmt") |  | ||||||
| /// - ports-margins (dictionary): see #doc-ref("element.elmt") |  | ||||||
| /// - fill (none, color): see #doc-ref("element.elmt") |  | ||||||
| /// - stroke (stroke): see #doc-ref("element.elmt") |  | ||||||
| /// - id (str): see #doc-ref("element.elmt") |  | ||||||
| /// - debug (dictionary): see #doc-ref("element.elmt") |  | ||||||
| #let block( | #let block( | ||||||
|   x: none, |   x: none, | ||||||
|   y: none, |   y: none, | ||||||
|   | |||||||
| @@ -28,16 +28,7 @@ | |||||||
| /// Draws a bit extender | /// Draws a bit extender | ||||||
| /// | /// | ||||||
| /// #examples.extender | /// #examples.extender | ||||||
| /// - x (number, dictionary): see #doc-ref("element.elmt") | /// For parameters description, see #doc-ref("element.elmt") | ||||||
| /// - y (number, dictionary): see #doc-ref("element.elmt") |  | ||||||
| /// - w (number): see #doc-ref("element.elmt") |  | ||||||
| /// - h (number): see #doc-ref("element.elmt") |  | ||||||
| /// - name (none, str): see #doc-ref("element.elmt") |  | ||||||
| /// - name-anchor (str): see #doc-ref("element.elmt") |  | ||||||
| /// - fill (none, color): see #doc-ref("element.elmt") |  | ||||||
| /// - stroke (stroke): see #doc-ref("element.elmt") |  | ||||||
| /// - id (str): see #doc-ref("element.elmt") |  | ||||||
| /// - debug (dictionary): see #doc-ref("element.elmt") |  | ||||||
| #let extender( | #let extender( | ||||||
|   x: none, |   x: none, | ||||||
|   y: none, |   y: none, | ||||||
|   | |||||||
| @@ -27,6 +27,10 @@ | |||||||
|   return (f, tl, tr, br, bl) |   return (f, tl, tr, br, bl) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /// Draws an AND gate. This function is also available as `element.gate-and()` | ||||||
|  | ///  | ||||||
|  | /// For parameters, see #doc-ref("gates.gate") | ||||||
|  | /// #examples.gate-and | ||||||
| #let gate-and( | #let gate-and( | ||||||
|   x: none, |   x: none, | ||||||
|   y: none, |   y: none, | ||||||
| @@ -56,6 +60,10 @@ | |||||||
|   ) |   ) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /// Draws an NAND gate. This function is also available as `element.gate-nand()` | ||||||
|  | ///  | ||||||
|  | /// For parameters, see #doc-ref("gates.gate") | ||||||
|  | /// #examples.gate-nand | ||||||
| #let gate-nand( | #let gate-nand( | ||||||
|   x: none, |   x: none, | ||||||
|   y: none, |   y: none, | ||||||
| @@ -79,7 +87,7 @@ | |||||||
|     fill: fill, |     fill: fill, | ||||||
|     stroke: stroke, |     stroke: stroke, | ||||||
|     id: id, |     id: id, | ||||||
|     inverted: inverted + ("out",), |     inverted: if inverted != "all" {inverted + ("out",)} else {inverted}, | ||||||
|     debug: debug |     debug: debug | ||||||
|   ) |   ) | ||||||
| } | } | ||||||
| @@ -24,6 +24,10 @@ | |||||||
|   return (f, tl, tr, br, bl) |   return (f, tl, tr, br, bl) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /// Draws a buffer gate. This function is also available as `element.gate-buf()` | ||||||
|  | ///  | ||||||
|  | /// For parameters, see #doc-ref("gates.gate") | ||||||
|  | /// #examples.gate-buf | ||||||
| #let gate-buf( | #let gate-buf( | ||||||
|   x: none, |   x: none, | ||||||
|   y: none, |   y: none, | ||||||
| @@ -53,6 +57,10 @@ | |||||||
|   ) |   ) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /// Draws a NOT gate. This function is also available as `element.gate-not()` | ||||||
|  | ///  | ||||||
|  | /// For parameters, see #doc-ref("gates.gate") | ||||||
|  | /// #examples.gate-not | ||||||
| #let gate-not(x: none, | #let gate-not(x: none, | ||||||
|   y: none, |   y: none, | ||||||
|   w: none, |   w: none, | ||||||
| @@ -75,7 +83,7 @@ | |||||||
|     fill: fill, |     fill: fill, | ||||||
|     stroke: stroke, |     stroke: stroke, | ||||||
|     id: id, |     id: id, | ||||||
|     inverted: inverted + ("out",), |     inverted: if inverted != "all" {inverted + ("out",)} else {inverted}, | ||||||
|     debug: debug |     debug: debug | ||||||
|   ) |   ) | ||||||
| } | } | ||||||
| @@ -7,6 +7,21 @@ | |||||||
|   return (f, tl, tr, br, bl) |   return (f, tl, tr, br, bl) | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /// Draws a logic gate. This function is also available as `element.gate()` | ||||||
|  | /// | ||||||
|  | /// - draw-shape (function): see #doc-ref("element.elmt") | ||||||
|  | /// - x (number, dictionary): see #doc-ref("element.elmt") | ||||||
|  | /// - y (number, dictionary): see #doc-ref("element.elmt") | ||||||
|  | /// - w (number): see #doc-ref("element.elmt") | ||||||
|  | /// - h (number): see #doc-ref("element.elmt") | ||||||
|  | /// - inputs (int): The number of inputs | ||||||
|  | /// - fill (none, color): see #doc-ref("element.elmt") | ||||||
|  | /// - stroke (stroke): see #doc-ref("element.elmt") | ||||||
|  | /// - id (str): see #doc-ref("element.elmt") | ||||||
|  | /// - inverted (str, array): Either "all" or an array of port ids to display as inverted | ||||||
|  | /// - inverted-radius (number): The radius of inverted ports dot | ||||||
|  | /// - debug (dictionary): see #doc-ref("element.elmt") | ||||||
| #let gate( | #let gate( | ||||||
|   draw-shape: default-draw-shape, |   draw-shape: default-draw-shape, | ||||||
|   x: none, |   x: none, | ||||||
| @@ -18,6 +33,7 @@ | |||||||
|   stroke: black + 1pt, |   stroke: black + 1pt, | ||||||
|   id: "", |   id: "", | ||||||
|   inverted: (), |   inverted: (), | ||||||
|  |   inverted-radius: 0.2, | ||||||
|   debug: ( |   debug: ( | ||||||
|     ports: false |     ports: false | ||||||
|   ) |   ) | ||||||
| @@ -65,14 +81,11 @@ | |||||||
|   // Workaround because CeTZ needs to have all draw functions in the body |   // Workaround because CeTZ needs to have all draw functions in the body | ||||||
|   let func = {} |   let func = {} | ||||||
|   (func, tl, tr, br, bl) = draw-shape(id, tl, tr, br, bl, fill, stroke) |   (func, tl, tr, br, bl) = draw-shape(id, tl, tr, br, bl, fill, stroke) | ||||||
|   { |   func | ||||||
|     //draw.rect(tl, br) |  | ||||||
|     func |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   let space = 100% / (inputs + 1) |   let space = 100% / inputs | ||||||
|   for i in range(inputs) { |   for i in range(inputs) { | ||||||
|     let pct = (i + 1) * space |     let pct = (i + 0.5) * space | ||||||
|     let a = (tl, pct, bl) |     let a = (tl, pct, bl) | ||||||
|     let b = (tr, pct, br) |     let b = (tr, pct, br) | ||||||
|     let int-name = id + "i" + str(i) |     let int-name = id + "i" + str(i) | ||||||
| @@ -84,8 +97,8 @@ | |||||||
|     let port-name = "in" + str(i) |     let port-name = "in" + str(i) | ||||||
|     let port-pos = int-name + ".0" |     let port-pos = int-name + ".0" | ||||||
|     if inverted == "all" or port-name in inverted { |     if inverted == "all" or port-name in inverted { | ||||||
|       draw.circle(port-pos, radius: .2, anchor: "east", stroke: stroke) |       draw.circle(port-pos, radius: inverted-radius, anchor: "east", stroke: stroke) | ||||||
|       port-pos = (rel: (-.4, 0), to: port-pos) |       port-pos = (rel: (-2 * inverted-radius, 0), to: port-pos) | ||||||
|     } |     } | ||||||
|     add-port( |     add-port( | ||||||
|       id, "west", |       id, "west", | ||||||
| @@ -96,8 +109,8 @@ | |||||||
|  |  | ||||||
|   let out-pos = id + ".east" |   let out-pos = id + ".east" | ||||||
|   if inverted == "all" or "out" in inverted { |   if inverted == "all" or "out" in inverted { | ||||||
|     draw.circle(out-pos, radius: .2, anchor: "west", stroke: stroke) |     draw.circle(out-pos, radius: inverted-radius, anchor: "west", stroke: stroke) | ||||||
|     out-pos = (rel: (.4, 0), to: out-pos) |     out-pos = (rel: (2 * inverted-radius, 0), to: out-pos) | ||||||
|   } |   } | ||||||
|   add-port( |   add-port( | ||||||
|     id, "east", |     id, "east", | ||||||
| @@ -105,23 +118,3 @@ | |||||||
|     debug: debug.ports |     debug: debug.ports | ||||||
|   ) |   ) | ||||||
| }) | }) | ||||||
| /* { |  | ||||||
|   let ports = (west: (), east: ((id: "out"),)) |  | ||||||
|   for i in range(inputs) { |  | ||||||
|     ports.west.push((id: "in"+str(i))) |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   element.elmt( |  | ||||||
|     draw-shape: draw-shape, |  | ||||||
|     x: x, |  | ||||||
|     y: y, |  | ||||||
|     w: w, |  | ||||||
|     h: h, |  | ||||||
|     ports: ports, |  | ||||||
|     fill: fill, |  | ||||||
|     stroke: stroke, |  | ||||||
|     id: id, |  | ||||||
|     auto-ports: true, |  | ||||||
|     debug: debug |  | ||||||
|   ) |  | ||||||
| } |  | ||||||
| @@ -38,6 +38,10 @@ | |||||||
|   return (f, tl, tr, br, bl) |   return (f, tl, tr, br, bl) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /// Draws an OR gate. This function is also available as `element.gate-or()` | ||||||
|  | ///  | ||||||
|  | /// For parameters, see #doc-ref("gates.gate") | ||||||
|  | /// #examples.gate-or | ||||||
| #let gate-or( | #let gate-or( | ||||||
|   x: none, |   x: none, | ||||||
|   y: none, |   y: none, | ||||||
| @@ -67,6 +71,10 @@ | |||||||
|   ) |   ) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /// Draws a NOR gate. This function is also available as `element.gate-nor()` | ||||||
|  | ///  | ||||||
|  | /// For parameters, see #doc-ref("gates.gate") | ||||||
|  | /// #examples.gate-nor | ||||||
| #let gate-nor( | #let gate-nor( | ||||||
|   x: none, |   x: none, | ||||||
|   y: none, |   y: none, | ||||||
| @@ -90,7 +98,7 @@ | |||||||
|     fill: fill, |     fill: fill, | ||||||
|     stroke: stroke, |     stroke: stroke, | ||||||
|     id: id, |     id: id, | ||||||
|     inverted: inverted + ("out",), |     inverted: if inverted != "all" {inverted + ("out",)} else {inverted}, | ||||||
|     debug: debug |     debug: debug | ||||||
|   ) |   ) | ||||||
| } | } | ||||||
| @@ -45,6 +45,10 @@ | |||||||
|   return (f, tl, tr, br, bl) |   return (f, tl, tr, br, bl) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /// Draws a XOR gate. This function is also available as `element.gate-xor()` | ||||||
|  | ///  | ||||||
|  | /// For parameters, see #doc-ref("gates.gate") | ||||||
|  | /// #examples.gate-xor | ||||||
| #let gate-xor( | #let gate-xor( | ||||||
|   x: none, |   x: none, | ||||||
|   y: none, |   y: none, | ||||||
| @@ -74,6 +78,10 @@ | |||||||
|   ) |   ) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /// Draws a XNOR gate. This function is also available as `element.gate-xnor()` | ||||||
|  | ///  | ||||||
|  | /// For parameters, see #doc-ref("gates.gate") | ||||||
|  | /// #examples.gate-xnor | ||||||
| #let gate-xnor( | #let gate-xnor( | ||||||
|   x: none, |   x: none, | ||||||
|   y: none, |   y: none, | ||||||
| @@ -97,7 +105,7 @@ | |||||||
|     fill: fill, |     fill: fill, | ||||||
|     stroke: stroke, |     stroke: stroke, | ||||||
|     id: id, |     id: id, | ||||||
|     inverted: inverted + ("out",), |     inverted: if inverted != "all" {inverted + ("out",)} else {inverted}, | ||||||
|     debug: debug |     debug: debug | ||||||
|   ) |   ) | ||||||
| } | } | ||||||
| @@ -24,17 +24,8 @@ | |||||||
| /// Draws a multiplexer | /// Draws a multiplexer | ||||||
| /// | /// | ||||||
| /// #examples.multiplexer | /// #examples.multiplexer | ||||||
| /// - x (number, dictionary): see #doc-ref("element.elmt") | /// For other parameters description, see #doc-ref("element.elmt") | ||||||
| /// - y (number, dictionary): see #doc-ref("element.elmt") |  | ||||||
| /// - w (number): see #doc-ref("element.elmt") |  | ||||||
| /// - h (number): see #doc-ref("element.elmt") |  | ||||||
| /// - name (none, str): see #doc-ref("element.elmt") |  | ||||||
| /// - name-anchor (str): see #doc-ref("element.elmt") |  | ||||||
| /// - entries (int, array): If it is an integer, it defines the number of input ports (automatically named with their binary index). If it is an array of strings, it defines the name of each input. | /// - entries (int, array): If it is an integer, it defines the number of input ports (automatically named with their binary index). If it is an array of strings, it defines the name of each input. | ||||||
| /// - fill (none, color): see #doc-ref("element.elmt") |  | ||||||
| /// - stroke (stroke): see #doc-ref("element.elmt") |  | ||||||
| /// - id (str): see #doc-ref("element.elmt") |  | ||||||
| /// - debug (dictionary): see #doc-ref("element.elmt") |  | ||||||
| #let multiplexer( | #let multiplexer( | ||||||
|   x: none, |   x: none, | ||||||
|   y: none, |   y: none, | ||||||
|   | |||||||
							
								
								
									
										5
									
								
								src/gates.typ
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								src/gates.typ
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | #import "elements/logic/gate.typ": gate | ||||||
|  | #import "elements/logic/and.typ": gate-and, gate-nand | ||||||
|  | #import "elements/logic/or.typ": gate-or, gate-nor | ||||||
|  | #import "elements/logic/xor.typ": gate-xor, gate-xnor | ||||||
|  | #import "elements/logic/buf.typ": gate-buf, gate-not | ||||||
| @@ -2,5 +2,6 @@ | |||||||
|  |  | ||||||
| #import "circuit.typ": circuit | #import "circuit.typ": circuit | ||||||
| #import "element.typ" | #import "element.typ" | ||||||
|  | #import "gates.typ" | ||||||
| #import "util.typ" | #import "util.typ" | ||||||
| #import "wire.typ" | #import "wire.typ" | ||||||
		Reference in New Issue
	
	Block a user