# HG changeset patch # User Chris Cannam # Date 1582740561 0 # Wed Feb 26 18:09:21 2020 +0000 # Node ID 3309269644e927597294b9807822fb6c0154075f # Parent 0000000000000000000000000000000000000000 First approximation diff --git a/.hgignore b/.hgignore new file mode 100644 --- /dev/null +++ b/.hgignore @@ -0,0 +1,4 @@ +syntax: glob +*~ +cover +*.deps diff --git a/Makefile b/Makefile new file mode 100644 --- /dev/null +++ b/Makefile @@ -0,0 +1,18 @@ + +SCRIPTS := ../sml-buildscripts + +all: cover.svg + +cover.svg: cover + ./$< > $@ + +cover: cover.mlb Makefile + ${SCRIPTS}/polybuild $< + +clean: + rm -f cover + +%.deps: %.mlb + ${SCRIPTS}/mlb-dependencies $< > $@ + +-include cover.deps diff --git a/cover.mlb b/cover.mlb new file mode 100644 --- /dev/null +++ b/cover.mlb @@ -0,0 +1,3 @@ +../sml-svg/svg.mlb +cover.sml +main.sml diff --git a/cover.sml b/cover.sml new file mode 100644 --- /dev/null +++ b/cover.sml @@ -0,0 +1,52 @@ +open Svg +open SvgPathShorthand + +fun main () = + let val lens_radius = 31.6 + val lens_centre_height = 31.9 + val document = + { size = (200.0, 200.0), + content = [ + (GROUP [ + (RECT { origin = (0.0, 0.0), + size = (160.0, 45.0) }, []), + (CIRCLE { centre = (80.0, 22.5), + radius = 15.5 }, []) + ], + [STROKE (COLOUR "black"), + STROKE_WIDTH 0.1, + FILL NO_PAINT, + TRANSFORM [TRANSLATE (20.0, 20.0)] + ]), + (GROUP [ + (CIRCLE { centre = (57.0 + lens_radius, 31.9), + radius = lens_radius }, []), + (RECT { origin = (0.0, 12.0), + size = (57.0 + 2.0 * lens_radius + 43.0, + 43.0) }, []), + (PATH [ M (57.0, lens_centre_height), + L [(57.0 + lens_radius - 26.3, 0.0), + (57.0 + lens_radius + 26.3, 0.0), + (57.0 + 2.0 * lens_radius, lens_centre_height)] ], []), + (CIRCLE { centre = (49.0, 12.0 + 15.0), + radius = 1.25 }, []), + (CIRCLE { centre = (49.0, 12.0 + 43.0 - 13.0), + radius = 2.5 }, []), + (RECT { origin = (57.0 + 2.0 * lens_radius + 43.0 - 3.5, + 12.0 - 4.5), + size = (3.5, 4.5) }, []), + (RECT { origin = (57.0 + 2.0 * lens_radius + 43.0 - 3.5, + 12.0 + 43.0), + size = (3.5, 6.5) }, []) + ], + [STROKE (COLOUR "black"), + STROKE_WIDTH 0.1, + FILL NO_PAINT, + TRANSFORM [TRANSLATE (20.0, 120.0)] + ]) + ] + } + in + print (SvgSerialise.serialiseDocumentAtScale 1.0 document) + end + diff --git a/cover.svg b/cover.svg new file mode 100644 --- /dev/null +++ b/cover.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/main.sml b/main.sml new file mode 100644 --- /dev/null +++ b/main.sml @@ -0,0 +1,1 @@ +val () = main ()