lilypond-0.0.5
[lilypond.git] / molecule.cc
blob5ab384f87d639d710d59c1bca89b412e7e8aaf10
1 #include "glob.hh"
2 #include "dimen.hh"
3 #include "string.hh"
4 #include "molecule.hh"
5 #include "symbol.hh"
6 #include "debug.hh"
8 void
9 Atom::print() const
11 mtor << "texstring: " <<sym.tex<<"\n";
14 Box
15 Atom::extent() const
17 Box b( sym.dim);
18 b.translate(off);
19 return b;
22 Atom::Atom(Symbol s)
24 sym=s;
28 String
29 Atom::TeXstring() const
31 // whugh.. Hard coded...
32 String s("\\raise");
33 s+= print_dimen(off.y) +"\\hbox to 0pt{\\kern ";
34 s+= print_dimen(off.x);
35 s+= sym.tex + "\\hss}";
36 return s;
40 String
41 Molecule::TeXstring() const
43 String s;
44 for(PCursor<Atom*> c(ats); c.ok(); c++)
45 s+=c->TeXstring();
46 return s;
49 Box
50 Molecule::extent() const
52 Box b;
53 for(PCursor<Atom*> c(ats); c.ok(); c++)
54 b.unite(c->extent());
55 return b;
58 void
59 Molecule::translate(Offset o)
61 for (PCursor<Atom*> c(ats); c.ok(); c++)
62 c->translate(o);
65 void
66 Molecule::add(const Molecule &m)
68 for (PCursor<Atom*> c(m.ats); c.ok(); c++) {
69 add(**c);
73 void
74 Molecule::add_right(const Molecule &m)
76 Real xof=extent().x.max - m.extent().x.min;
77 Molecule toadd(m);
78 toadd.translate(Offset(xof, 0.0));
79 add(toadd);
82 void
83 Molecule::add_left(const Molecule &m)
85 Real xof=extent().x.min - m.extent().x.max;
86 Molecule toadd(m);
87 toadd.translate(Offset(xof, 0.0));
88 add(toadd);
92 void
93 Molecule::add_top(const Molecule &m)
95 Real yof=extent().y.max - m.extent().y.min;
96 Molecule toadd(m);
97 toadd.translate(Offset(0,yof));
98 add(toadd);
101 void
102 Molecule::add_bot(const Molecule &m)
104 Real yof=extent().y.min- m.extent().y.max;
105 Molecule toadd(m);
106 toadd.translate(Offset(0,yof));
107 add(toadd);
110 void
111 Molecule::operator = (const Molecule&)
113 assert(false);
116 Molecule::Molecule(const Molecule&s)
118 add(s);
121 void
122 Molecule::print() const
124 for (PCursor<Atom*> c(ats); c.ok(); c++)
125 c->print();