efficient program to spit out SVG for guitar/uke chord frett diagram
C Rewrite: Create simple grid with title
Zach DeCook 2020-12-26
parent 536ee95 · commit eca943d
-rw-r--r--ccharter.c62
1 files changed, 24 insertions, 38 deletions
diff --git a/ccharter.c b/ccharter.c
index fdd895e..7887447 100644
--- a/ccharter.c
+++ b/ccharter.c
@@ -1,52 +1,38 @@
-var ChordCharter = {
-
- drawChord: function (canvasId, originX, originY, chordName, chordFrets) {
-
- var chord = {
- name: chordName,
- frets: chordFrets
- };
-
- fretsCount = chord.frets.length;
-
- var c=document.getElementById(canvasId);
- var ctx=c.getContext("2d");
- ctx.fillStyle="#000";
-
- var origin = { x: originX, y: originY };
- var props = { width: 50, height: 60 };
+#include <stdio.h>
+#include <string.h>
+int main(int argc, char **argv) {
+ printf("<svg width=\"50px\" height=\"60px\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" overflow=\"visible\" style=\"stroke-width:2; stroke:black;\">");
+ int fretsCount = strlen(argv[1]);
- // Reset previous path that may have been created.
- ctx.beginPath();
+ //var origin = { x: 0, y: 0};
+ //var props = { width: 50, height: 60 };
// horizontals
-
- for (counter in new Array(0, 1, 2, 3, 4)) {
- ctx.moveTo(origin.x - 1, origin.y + (counter * props.height / 4));
- ctx.lineTo(origin.x + props.width + 1, origin.y + (counter * props.height / 4));
- ctx.stroke();
+ int i;
+ for (i = 0; i <= 4; i++) {
+ printf("<line x1=\"%d\" y1=\"%d\" x2=\"%d\" y2=\"%d\" />",
+ 0 - 1, (i * 60/4),
+ 0+50+1, (i * 60/4)
+ );
}
// verts
for ( i = 0; i < fretsCount; i++ ) {
- ctx.moveTo(origin.x + (i * props.width / (fretsCount - 1)), origin.y);
- ctx.lineTo(origin.x + (i * props.width / (fretsCount - 1)), origin.y + props.height);
- ctx.stroke();
+ printf("<line x1=\"%d\" y1=\"%d\" x2=\"%d\" y2=\"%d\" />",
+ 0 + (i * 50 / (fretsCount - 1)), 0,
+ 0 + (i * 50 / (fretsCount - 1)), 0 + 60
+ );
}
- ctx.stroke();
-
// label
-
- ctx.font = "bold 10pt Verdana";
- ctx.textAlign = "center";
- ctx.fillText(chord.name, origin.x + props.width / 2, origin.y - 5);
- ctx.font = "7pt Verdana";
+ printf("<text x=\"%d\" y=\"%d\">%s</text>",
+ 0 + 50/2, 0 - 5, argv[2]
+ );
// If any dots are after 4, adjust the root to be the lowest non-zero fret
// If the root is zero , thicken the top fret
- var baseFret = 0;
+ /*var baseFret = 0;
var adjBaseFret = false;
var lowestFret = 0;
@@ -98,6 +84,6 @@ var ChordCharter = {
} else {
ctx.alignText = "left";
ctx.fillText("3", origin.x - 10, origin.y + 41);
- }
- }
-};
+ }*/
+ printf("</svg>");
+}