Skip to content

Commit

Permalink
add basic export of harp pedals
Browse files Browse the repository at this point in the history
  • Loading branch information
rettinghaus committed Dec 13, 2024
1 parent 22510c3 commit 7815553
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 0 deletions.
19 changes: 19 additions & 0 deletions src/importexport/mei/internal/meiconverter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
#include "engraving/dom/fingering.h"
#include "engraving/dom/hairpin.h"
#include "engraving/dom/harmony.h"
#include "engraving/dom/harppedaldiagram.h"
#include "engraving/dom/jump.h"
#include "engraving/dom/laissezvib.h"
#include "engraving/dom/lyrics.h"
Expand Down Expand Up @@ -1743,6 +1744,24 @@ libmei::Harm Convert::harmToMEI(const engraving::Harmony* harmony, StringList& m
return meiHarm;
}

libmei::HarpPedal Convert::harpPedalToMEI(const engraving::HarpPedalDiagram* harpPedalDiagram)
{
libmei::HarpPedal meiHarpPedal;

// @place
if (harpPedalDiagram->getProperty(engraving::Pid::DIRECTION) != harpPedalDiagram->propertyDefault(engraving::Pid::DIRECTION)) {
meiHarpPedal.SetPlace(Convert::directionToMEI(harpPedalDiagram->direction()));
}

// @color
Convert::colorToMEI(harpPedalDiagram, meiHarpPedal);

// @staff
Convert::staffIdentToMEI(harpPedalDiagram, meiHarpPedal);

return meiHarpPedal;
}

void Convert::lvFromMEI(engraving::LaissezVib* lv, const libmei::Lv& meiLv, bool& warning)
{
warning = false;
Expand Down
2 changes: 2 additions & 0 deletions src/importexport/mei/internal/meiconverter.h
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,8 @@ class Convert
static void harmFromMEI(engraving::Harmony* harmony, const muse::StringList& meiLines, const libmei::Harm& meiHarm, bool& warning);
static libmei::Harm harmToMEI(const engraving::Harmony* harmony, muse::StringList& meiLines);

static libmei::HarpPedal harpPedalToMEI(const engraving::HarpPedalDiagram* harpPedalDiagram);

static void layerIdentFromMEI(engraving::EngravingItem* item, const libmei::Element& meiElement);
static void layerIdentToMEI(const engraving::EngravingItem* item, libmei::Element& meiElement);

Expand Down
21 changes: 21 additions & 0 deletions src/importexport/mei/internal/meiexporter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
#include "engraving/dom/fingering.h"
#include "engraving/dom/hairpin.h"
#include "engraving/dom/harmony.h"
#include "engraving/dom/harppedaldiagram.h"
#include "engraving/dom/jump.h"
#include "engraving/dom/keysig.h"
#include "engraving/dom/laissezvib.h"
Expand Down Expand Up @@ -824,6 +825,8 @@ bool MeiExporter::writeMeasure(const Measure* measure, int& measureN, bool& isFi
success = success && this->writeHairpin(dynamic_cast<const Hairpin*>(controlEvent.first), controlEvent.second);
} else if (controlEvent.first->isHarmony()) {
success = success && this->writeHarm(dynamic_cast<const Harmony*>(controlEvent.first), controlEvent.second);
} else if (controlEvent.first->isHarpPedalDiagram()) {
success = success && this->writeHarpPedal(dynamic_cast<const HarpPedalDiagram*>(controlEvent.first), controlEvent.second);
} else if (controlEvent.first->isOrnament()) {
success = success && this->writeOrnament(dynamic_cast<const Ornament*>(controlEvent.first), controlEvent.second);
} else if (controlEvent.first->isOttava()) {
Expand Down Expand Up @@ -1799,6 +1802,24 @@ bool MeiExporter::writeHarm(const Harmony* harmony, const std::string& startid)
return true;
}

/**
* Write a harpPedal.
*/

bool MeiExporter::writeHarpPedal(const HarpPedalDiagram* harpPedalDiagram, const std::string& startid)
{
IF_ASSERT_FAILED(harpPedalDiagram) {
return false;
}

pugi::xml_node harpPedalNode = m_currentNode.append_child();
libmei::HarpPedal meiHarpPedal = Convert::harpPedalToMEI(harpPedalDiagram);
meiHarpPedal.SetStartid(startid);
meiHarpPedal.Write(harpPedalNode, this->getXmlIdFor(harpPedalDiagram, 'h'));

return true;
}

/**
* Write a octave (ottava).
*/
Expand Down
1 change: 1 addition & 0 deletions src/importexport/mei/internal/meiexporter.h
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,7 @@ class MeiExporter
bool writeFing(const engraving::Fingering* fing, const std::string& startid);
bool writeHairpin(const engraving::Hairpin* hairpin, const std::string& startid);
bool writeHarm(const engraving::Harmony* harmony, const std::string& startid);
bool writeHarpPedal(const engraving::HarpPedalDiagram* harpPedalDiagram, const std::string& startid);
bool writeOctave(const engraving::Ottava* ottava, const std::string& startid);
bool writeOrnament(const engraving::Ornament* ornament, const std::string& startid);
bool writePedal(const engraving::Pedal* pedal, const std::string& startid);
Expand Down

0 comments on commit 7815553

Please sign in to comment.