Opruiming
[sgc.git] / cairo.c.toonew
blob565fe5f26e4486df031430d5fa1d4026672272ab
1 #include "sgc.h"
3 void drawPitchTier(cairo_t *cr, gchar *filename, gint width, gint height, gdouble top) {
4         gchar *contents;
5         GError *error = NULL;
6         gsize length;
7         g_debug("%s welcomes %s!", __func__, filename);
9         if (g_access(path, F_OK) == 0) {
10                         structMelderFile file;
11                         Pitch melderPitchFromFile;
12 #ifdef MINGW
13                         __declspec(dllimport) Pitch_Table classPitch;
14 #endif
15                         Thing_recognizeClassesByName (classPitch, NULL);
16                         Melder_pathToFile(path, & file);
17                         melderPitchFromFile = Data_readFromTextFile (& file);
19                         
20                         
21                         forget(melderPitchFromFile);
22                 }
23                 Melder_clearError ();
26         if (g_file_get_contents(filename, &contents, &length, &error) != TRUE) {
27 //              g_warning("HET PROBLEEM ZIT IN HET INLEZEN VAN HET %s BESTAND!!!!!\n", filename);
28                 g_warning("%s\n", error->message);
29                 g_error_free(error);
30         } else {
31                 gdouble scalex = 0, scaley = 0;
32                 gdouble fromx = 0;
33                 gdouble middlex = 0;
34                 gdouble endx = 0;
35                 gdouble fromy = 0;
36                 gdouble middley = 0;
37                 gsize i = 0;
38                 gsize j = 0;
39                 gsize m = 0;
40                 int pointloc = 0;
41                 while (i < length) {
42                         if (contents[i] == '\n') {
43                                 gchar * this = g_strndup(&contents[m], i-m);
44                                 switch ( j ) {
45                                         case 0:
46                                         case 1:
47                                         case 2:
48                                         case 3:
49                                                 fromx = g_strtod(this, NULL);
50                                                 j++;
51                                                 break;
52                                         case 4:
53                                                 endx  = g_strtod(this, NULL);
54                                                 scalex = width / endx;
55                                                 scaley = height / top;
56                                                 cairo_move_to(cr, fromx*scalex, 0);
57                                         case 5:
58                                                 j++;
59                                                 break;
60                                         default:
61                                                 if (pointloc == 0) {
62                                                         middlex = g_strtod(this, NULL);
64                                                         pointloc = 1;
65                                                 } else {
66                                                         gdouble to;
67                                                         middley = g_strtod(this, NULL);
68                                                         pointloc = 0;
69                                                         to = height - (middley*scaley);
71                                                         if ((middlex - fromx) < 0.015 && fromy != -1 && middley != -1) {
72                                                                 cairo_line_to(cr, middlex*scalex,  to);
73                                                         } else {
74                                                                 cairo_move_to(cr, middlex*scalex,  to);
75                                                         }
76                                                         fromx = middlex;
77                                                         fromy = middley;
78                                                 }
80                                 }
81                                 g_free(this);
82                                 m = i+1;
83                         }
84                         i++;
85                 }
86                 cairo_stroke (cr);
87         }
88         g_debug("%s for %s done!\n", __func__, filename);