X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fmidi_scene_change.cc;h=75fcf32d9199f4cf28a22f0603f753cffc6e973c;hb=4250940ad83200e065b966d0646c75a48bb0f73d;hp=c10ca74904391d1a6db965663ff1dab867304e84;hpb=854ff8d8861c16f35bcde96f1cfd7cb3ffedd7f8;p=ardour.git diff --git a/libs/ardour/midi_scene_change.cc b/libs/ardour/midi_scene_change.cc index c10ca74904..75fcf32d91 100644 --- a/libs/ardour/midi_scene_change.cc +++ b/libs/ardour/midi_scene_change.cc @@ -19,11 +19,12 @@ #include "pbd/error.h" #include "pbd/compose.h" +#include "pbd/types_convert.h" #include "ardour/midi_port.h" #include "ardour/midi_scene_change.h" -#include "i18n.h" +#include "pbd/i18n.h" using namespace PBD; using namespace ARDOUR; @@ -77,7 +78,7 @@ MIDISceneChange::get_bank_lsb_message (uint8_t* buf, size_t size) const buf[0] = 0xB0 | (_channel & 0xf); buf[1] = 0x20; - buf[2] = _bank & 0x7f; + buf[2] = _bank & 0x7f; return 3; } @@ -98,20 +99,14 @@ MIDISceneChange::get_program_message (uint8_t* buf, size_t size) const XMLNode& MIDISceneChange::get_state () { - char buf[32]; XMLNode* node = new XMLNode (SceneChange::xml_node_name); - node->add_property (X_("type"), X_("MIDI")); - snprintf (buf, sizeof (buf), "%d", (int) _program); - node->add_property (X_("id"), id().to_s()); - snprintf (buf, sizeof (buf), "%d", (int) _program); - node->add_property (X_("program"), buf); - snprintf (buf, sizeof (buf), "%d", (int) _bank); - node->add_property (X_("bank"), buf); - snprintf (buf, sizeof (buf), "%d", (int) _channel); - node->add_property (X_("channel"), buf); - snprintf (buf, sizeof (buf), "%u", _color); - node->add_property (X_("color"), buf); + node->set_property (X_("type"), X_("MIDI")); + node->set_property (X_("id"), id()); + node->set_property (X_("program"), _program); + node->set_property (X_("bank"), _bank); + node->set_property (X_("channel"), _channel); + node->set_property (X_("color"), _color); return *node; } @@ -123,26 +118,12 @@ MIDISceneChange::set_state (const XMLNode& node, int /* version-ignored */) return -1; } - const XMLProperty* prop; - - if ((prop = node.property (X_("program"))) == 0) { - return -1; - } - _program = atoi (prop->value()); - - if ((prop = node.property (X_("bank"))) == 0) { + if (!node.get_property (X_("program"), _program) || !node.get_property (X_("bank"), _bank) || + !node.get_property (X_("channel"), _channel)) { return -1; } - _bank = atoi (prop->value()); - if ((prop = node.property (X_("channel"))) == 0) { - return -1; - } - _channel = atoi (prop->value()); - - if ((prop = node.property (X_("color"))) != 0) { - _color = atoi (prop->value()); - } else { + if (!node.get_property (X_("color"), _color)) { _color = out_of_bound_color; } @@ -174,5 +155,5 @@ MIDISceneChange::set_bank (int bank) { _bank = bank; } - +