diff options
Diffstat (limited to 'attic/muse2-oom/muse2/muse/marker/marker.cpp')
-rw-r--r-- | attic/muse2-oom/muse2/muse/marker/marker.cpp | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/attic/muse2-oom/muse2/muse/marker/marker.cpp b/attic/muse2-oom/muse2/muse/marker/marker.cpp new file mode 100644 index 00000000..e34e03dd --- /dev/null +++ b/attic/muse2-oom/muse2/muse/marker/marker.cpp @@ -0,0 +1,90 @@ +//========================================================= +// MusE +// Linux Music Editor +// $Id: marker.cpp,v 1.2 2003/12/10 18:34:22 wschweer Exp $ +// (C) Copyright 2000 Werner Schweer (ws@seh.de) +//========================================================= + +#include "marker.h" +#include "xml.h" + +Marker* MarkerList::add(const Marker& marker) + { + iMarker i = insert(std::pair<const int, Marker> (marker.tick(), Marker(marker))); + return &i->second; + } + +Marker* MarkerList::add(const QString& s, int t, bool lck) + { + Marker marker(s); + marker.setType(lck ? Pos::FRAMES : Pos::TICKS); + marker.setTick(t); + iMarker i = insert(std::pair<const int, Marker> (t, marker)); + return &i->second; + } + +//--------------------------------------------------------- +// read +//--------------------------------------------------------- + +void Marker::read(Xml& xml) + { + for (;;) { + Xml::Token token = xml.parse(); + const QString& tag = xml.s1(); + switch (token) { + case Xml::Error: + case Xml::End: + return; + case Xml::TagStart: + xml.unknown("Marker"); + break; + case Xml::Attribut: + if (tag == "tick") + setTick(xml.s2().toInt()); + else if (tag == "lock") + setType(xml.s2().toInt() ? FRAMES:TICKS); + else if (tag == "name") + { + _name = xml.s2(); + } + break; + case Xml::TagEnd: + if (xml.s1() == "marker") + return; + default: + break; + } + } + } + +//--------------------------------------------------------- +// write +//--------------------------------------------------------- + +void MarkerList::write(int level, Xml& xml) const + { + for (ciMarker i = begin(); i != end(); ++i) { + const Marker& m = i->second; + xml.put(level, "<marker tick=\"%d\" lock=\"%d\" name=\"%s\" />", + //m.tick(), m.type()==Pos::FRAMES, m.name().toLatin1().constData()); + m.tick(), m.type()==Pos::FRAMES, Xml::xmlString(m.name()).toLatin1().constData()); + } + } + +//--------------------------------------------------------- +// remove +//--------------------------------------------------------- + +void MarkerList::remove(Marker* m) + { + for (iMarker i = begin(); i != end(); ++i) { + Marker* mm = &i->second; + if (mm == m) { + erase(i); + return; + } + } + printf("MarkerList::remove(): marker not found\n"); + } + |