1 /* scherzo - Music notation training
3 * score - Utilities for drawing (simple) musical scores
5 * Copyright © 2010 Carl Worth
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see http://www.gnu.org/licenses/ .
25 /* Height of a single staff */
28 /* Height of one space within a staff */
31 /* Full width of staff */
36 score_init (score_t *score)
38 score_set_staff_height (score, 24);
42 score_set_staff_height (score_t *score, int height)
44 score->space_height = (int) height / 4;
45 score->staff_height = score->space_height * 4;
46 return score->staff_height;
50 score_set_width (score_t *score, int width)
56 _draw_staff (score_t *score, cairo_t *cr)
64 score->width - 1.0, score->space_height * 4);
66 for (i = 1; i < 4; i++) {
67 cairo_move_to (cr, 0, i * score->space_height + 0.5);
68 cairo_rel_line_to (cr, score->width, 0);
71 cairo_set_line_width (cr, 1.0);
73 cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); /* black */
80 _draw_grand_staff (score_t *score, cairo_t *cr)
84 /* Vertical lines at each end */
88 score->staff_height * 3);
89 cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
90 cairo_set_line_width (cr, 1.0);
94 _draw_staff (score, cr);
97 cairo_translate (cr, 0, score->staff_height * 2);
98 _draw_staff (score, cr);
104 score_draw (score_t *score, cairo_t *cr)
106 _draw_grand_staff (score, cr);