efficient program to spit out SVG for guitar/uke chord frett diagram
C Rewrite: Create simple grid with title
| -rw-r--r-- | ccharter.c | 62 |
1 files changed, 24 insertions, 38 deletions
@@ -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>"); +} |