Add basic logical symbols (NOT, AND, OR).

This commit is contained in:
Přemysl Eric Janouch 2011-01-07 16:25:15 +01:00
parent fda123249a
commit 0b3f6503bb
3 changed files with 137 additions and 0 deletions

View File

@ -0,0 +1,41 @@
-- Symbol name
names =
{
en = "AND",
cs = "AND"
}
-- Render area in base units (X1, Y1, X2, Y2)
area = {-4, -2, 5, 2}
-- Terminals
terminals = {{-4, -1}, {-4, 1}, {5, 0}}
-- Rendering
render = function (cr)
-- The main shape
cr.move_to (-2, -2)
cr.line_to (1, -2)
cr.arc (1, 0, 2, math.pi * 1.5, math.pi * 0.5)
cr.line_to (-2, 2)
cr.close_path ()
cr.stroke ()
-- The contacts
cr.move_to (-4, -1)
cr.line_to (-2, -1)
cr.stroke ()
cr.move_to (-4, 1)
cr.line_to (-2, 1)
cr.stroke ()
cr.move_to (3, 0)
cr.line_to (5, 0)
cr.stroke ()
end
-- Register the symbol
logdiag.register ("AND", names, area, terminals, render)

View File

@ -0,0 +1,41 @@
-- Symbol name
names =
{
en = "NOT",
cs = "NOT"
}
-- Render area in base units (X1, Y1, X2, Y2)
area = {-4, -2, 4, 2}
-- Terminals
terminals = {{-4, 0}, {4, 0}}
-- Rendering
render = function (cr)
-- The triangle
cr.move_to (-2, -2)
cr.line_to (2, 0)
cr.line_to (-2, 2)
cr.close_path ()
cr.stroke ()
-- The circle
cr.new_sub_path ()
cr.arc (2.25, 0, 0.25, 0, 2 * math.pi)
cr.stroke ()
-- The contacts
cr.move_to (-4, 0)
cr.line_to (-2, 0)
cr.stroke ()
cr.move_to (2.5, 0)
cr.line_to (4, 0)
cr.stroke ()
end
-- Register the symbol
logdiag.register ("NOT", names, area, terminals, render)

View File

@ -0,0 +1,55 @@
-- Symbol name
names =
{
en = "OR",
cs = "OR"
}
-- Render area in base units (X1, Y1, X2, Y2)
area = {-4, -2, 5, 2}
-- Terminals
terminals = {{-4, -1}, {-4, 1}, {5, 0}}
-- Rendering
render = function (cr)
-- The main shape
cr.move_to (-2, -2)
cr.line_to (0, -2)
cr.curve_to (2, -2, 3, 0, 3, 0)
cr.curve_to (3, 0, 2, 2, 0, 2)
cr.line_to (-2, 2)
cr.curve_to (-1, 1, -1, -1, -2, -2)
cr.stroke ()
-- The contacts
cr.save ()
-- Crop the contacts according to
-- the left side of the main shape
cr.move_to (-4, 2)
cr.line_to (-2, 2)
cr.curve_to (-1, 1, -1, -1, -2, -2)
cr.line_to (-4, -2)
cr.close_path ()
cr.clip ()
cr.move_to (-4, -1)
cr.line_to (-1, -1)
cr.stroke ()
cr.move_to (-4, 1)
cr.line_to (-1, 1)
cr.stroke ()
cr.restore ()
cr.move_to (3, 0)
cr.line_to (5, 0)
cr.stroke ()
end
-- Register the symbol
logdiag.register ("OR", names, area, terminals, render)