about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--README.md6
-rw-r--r--main.c34
3 files changed, 30 insertions, 12 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..de13188
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,2 @@
+shemuvi: main.c
+	gcc $$( pkg-config --cflags gtk4 ) -o shemuvi main.c $$( pkg-config --libs gtk4 ) -lverovio
diff --git a/README.md b/README.md
index c2a6786..e181979 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,7 @@
 # SheMuVi - Sheet Music Viewer
 
-SheMuVi is a [GTK4](https://docs.gtk.org/gtk4/) application.
+SheMuVi is a [GTK4](https://docs.gtk.org/gtk4/) application powered by [Verovio](https://www.verovio.org/index.xhtml).
+
+Dependencies
+* gtk4.0-dev
+* verovio-dev
diff --git a/main.c b/main.c
index 0b31738..8a86f6f 100644
--- a/main.c
+++ b/main.c
@@ -1,8 +1,15 @@
 #include <gtk/gtk.h>
+#include <verovio/c_wrapper.h>
+#include <stdio.h>
+
+// Largest file we want to read
+#define BUF_SIZE 200000
 
 /* Called when a file is chosen by the open menu. */
 static void set_file (GFile *file, gpointer data) {
 	char *name;
+	char buf[BUF_SIZE];
+	const char *output;
 
 	if (!file) {
 		return;
@@ -10,7 +17,21 @@ static void set_file (GFile *file, gpointer data) {
 
 	name = g_file_get_path (file);
 	puts(name);
-	/* TODO: load this into verovio */
+	// Porting Note: By Default verovio installs this to "/usr/local/share/verovio"
+	void *pointer = vrvToolkit_constructorResourcePath("/usr/share/verovio");
+	FILE *cfile = fopen(name, "r");
+	size_t read = fread(buf, 1, BUF_SIZE-1, cfile);
+	// If the file is longer than the buffer, truncate it (which may be okay for some formats...)
+	buf[read] = '\0';
+	fclose(cfile);
+	
+	vrvToolkit_loadData(pointer, buf);
+	output = vrvToolkit_renderToSVG(pointer, 1, FALSE);
+	puts(output);
+
+	// TODO: keep this around
+	free(pointer);
+	
 	g_free (name);
 }
 
@@ -33,16 +54,7 @@ file_opened (GObject *source,
   set_file (file, data);
 }
 
-static gboolean
-abort_mission (gpointer data)
-{
-  GCancellable *cancellable = data;
-
-  g_cancellable_cancel (cancellable);
-
-  return G_SOURCE_REMOVE;
-}
-
+/* Called when the "Open" button is clicked */
 static void open_file (GtkButton *picker, GtkLabel *label) {
   GtkWindow *parent = GTK_WINDOW (gtk_widget_get_root (GTK_WIDGET (picker)));
 	GtkFileDialog *dialog;