]> git.donarmstrong.com Git - lilypond.git/blob - lily/tweak-registration-scheme.cc
7770d9b13cbea451bffd1f54a8d1779099a21e13
[lilypond.git] / lily / tweak-registration-scheme.cc
1 /*
2   tweak-registration-scheme.cc -- implement Tweak_registry bindings
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 2004--2005 Han-Wen Nienhuys <hanwen@xs4all.nl>
7 */
8
9 #include "tweak-registration.hh"
10 #include "grob.hh"
11 #include "object-key-undumper.hh"
12
13 LY_DEFINE (ly_clear_tweak_registry, "ly:tweak-clear-registry",
14            0, 0, 0, (),
15            "Clear global tweak registry")
16 {
17   global_registry_->clear ();
18   return SCM_UNSPECIFIED;
19 }
20
21 LY_DEFINE (ly_grob_insert_tweak, "ly:grob-insert-tweak",
22            2, 0, 0,
23            (SCM grob, SCM tweak),
24            "add new tweak for grob.")
25 {
26   Grob *gr = unsmob_grob (grob);
27   SCM_ASSERT_TYPE (gr, grob, SCM_ARG1, __FUNCTION__, "Grob");
28   SCM_ASSERT_TYPE (scm_list_p (tweak) == SCM_BOOL_T
29                    && ly_is_procedure (scm_car (tweak)),
30                    tweak, SCM_ARG2, __FUNCTION__, "Tweak");
31
32   global_registry_->insert_grob_tweak (gr, tweak);
33   return SCM_UNSPECIFIED;
34 }
35
36 LY_DEFINE (ly_grob_replace_tweak, "ly:grob-replace-tweak",
37            2, 0, 0,
38            (SCM grob, SCM tweak),
39            "Replace tweak for grob.")
40 {
41   Grob *gr = unsmob_grob (grob);
42   SCM_ASSERT_TYPE (gr, grob, SCM_ARG1, __FUNCTION__, "Grob");
43   SCM_ASSERT_TYPE (scm_list_p (tweak) == SCM_BOOL_T
44                    && ly_is_procedure (scm_car (tweak)),
45                    tweak, SCM_ARG2, __FUNCTION__, "Tweak");
46
47   global_registry_->replace_grob_tweak (gr, tweak);
48   return SCM_UNSPECIFIED;
49 }
50
51 LY_DEFINE (ly_tweak_read_keys, "ly:tweak-define-keys",
52            1, 0, 0, (SCM keys),
53            "Read keys")
54 {
55   global_registry_->undumper ()->parse_contents (keys);
56   return SCM_UNSPECIFIED;
57 }
58
59 LY_DEFINE (ly_all_tweaks, "ly:all-tweaks",
60            0, 0, 0, (),
61            "all tweaks")
62 {
63   return global_registry_->list_tweaks ();
64 }
65
66 LY_DEFINE (ly_tweak_read_tweaks, "ly:tweak-define-tweaks",
67            1, 0, 0, (SCM tweaks),
68            "Read tweaks")
69 {
70   for (SCM s = tweaks; scm_is_pair (s); s = scm_cdr (s))
71     global_registry_->insert_tweak_from_file (scm_car (s));
72   return SCM_UNSPECIFIED;
73 }