]> git.donarmstrong.com Git - lilypond.git/blob - lily/tweak-registration-scheme.cc
29de348eb9bf9b32a5a9ff3bef7ba082677e0cc5
[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
10
11 #include "tweak-registration.hh"
12 #include "grob.hh"
13 #include "object-key-undumper.hh"
14
15 LY_DEFINE (ly_clear_tweak_registry, "ly:tweak-clear-registry",
16            0, 0, 0, (),
17            "Clear global tweak registry"
18            )
19 {
20   global_registry_->clear ();
21   return SCM_UNSPECIFIED;
22 }
23
24 LY_DEFINE (ly_grob_insert_tweak, "ly:grob-insert-tweak",
25            2, 0, 0,
26            (SCM grob, SCM tweak),
27            "add new tweak for grob."
28            )
29 {
30   Grob *gr = unsmob_grob (grob);
31   SCM_ASSERT_TYPE (gr, grob, SCM_ARG1, __FUNCTION__, "Grob");
32   SCM_ASSERT_TYPE (scm_list_p (tweak) == SCM_BOOL_T
33                    && ly_c_procedure_p (scm_car (tweak)),
34                    tweak, SCM_ARG2, __FUNCTION__, "Tweak");
35   
36   global_registry_->insert_grob_tweak (gr, tweak);
37   return SCM_UNSPECIFIED;
38 }
39
40 LY_DEFINE (ly_grob_replace_tweak, "ly:grob-replace-tweak",
41            2, 0, 0,
42            (SCM grob, SCM tweak),
43            "Replace tweak for grob."
44            )
45 {
46   Grob *gr = unsmob_grob (grob);
47   SCM_ASSERT_TYPE (gr, grob, SCM_ARG1, __FUNCTION__, "Grob");
48   SCM_ASSERT_TYPE (scm_list_p (tweak) == SCM_BOOL_T
49                    && ly_c_procedure_p (scm_car (tweak)),
50                    tweak, SCM_ARG2, __FUNCTION__, "Tweak");
51   
52   global_registry_->replace_grob_tweak (gr, tweak);
53   return SCM_UNSPECIFIED;
54 }
55
56
57 LY_DEFINE (ly_tweak_read_keys, "ly:tweak-define-keys",
58            1, 0, 0, (SCM keys),
59            "Read keys"
60            )
61 {
62   global_registry_->undumper ()->parse_contents (keys); 
63   return SCM_UNSPECIFIED;
64 }
65
66
67 LY_DEFINE (ly_all_tweaks, "ly:all-tweaks",
68            0, 0, 0, (),
69            "all tweaks"
70            )
71 {
72   return global_registry_->list_tweaks ();
73 }
74
75
76 LY_DEFINE (ly_tweak_read_tweaks, "ly:tweak-define-tweaks",
77            1, 0, 0, (SCM tweaks),
78            "Read  tweaks"
79            )
80 {
81   for (SCM s = tweaks; scm_is_pair (s); s = scm_cdr (s))
82     global_registry_->insert_tweak_from_file (scm_car (s));
83   return SCM_UNSPECIFIED;
84 }