]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-0.0.9
authorfred <fred>
Fri, 1 Nov 1996 13:48:20 +0000 (13:48 +0000)
committerfred <fred>
Fri, 1 Nov 1996 13:48:20 +0000 (13:48 +0000)
hdr/molecule.hh [new file with mode: 0644]

diff --git a/hdr/molecule.hh b/hdr/molecule.hh
new file mode 100644 (file)
index 0000000..0c69f74
--- /dev/null
@@ -0,0 +1,52 @@
+#ifndef MOLECULE_HH
+#define MOLECULE_HH
+
+#include "plist.hh"
+#include "boxes.hh"
+#include "item.hh"
+#include "symbol.hh"
+/// a symbol which can be translated, and freely copied
+struct Atom {
+    Offset off;
+    Symbol sym;
+
+    void translate(Offset o) {
+       off += o;
+    }
+    
+    /// how big is #this#?
+    Box extent() const;
+    Atom(Symbol s);
+
+  void print() const;
+
+    String TeXstring() const;
+};
+
+/// a group of #Atom#s
+struct Molecule {
+    PointerList<Atom*> ats;
+
+    Molecule() { }
+    Molecule(Atom a) { add(a) ; }
+
+    void add_right(const Molecule &m);
+    void add_left(const Molecule &m);
+    void add_top(const Molecule &m);
+    void add_bot(const Molecule &m);
+    void add(Molecule const &m);
+    void translate(Offset);
+    void add(Atom a) { ats.bottom().add(new Atom(a)); }
+    /// how big is #this#? 
+    Box extent() const;
+
+    String TeXstring() const;
+
+    Molecule(const Molecule&s);
+    void print() const;
+private:
+    void operator=(const Molecule&);
+};
+/** a group of individually translated symbols. You can add molecules
+    to the top, to the right, etc.  */
+#endif