You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
140 lines
3.9 KiB
140 lines
3.9 KiB
15 years ago
|
// -*- c-basic-offset: 4 -*-
|
||
|
|
||
|
/*
|
||
|
Rosegarden
|
||
|
A sequencer and musical notation editor.
|
||
|
|
||
|
This program is Copyright 2000-2008
|
||
|
Guillaume Laurent <glaurent@telegraph-road.org>,
|
||
|
Chris Cannam <cannam@all-day-breakfast.com>,
|
||
|
Richard Bown <bownie@bownie.com>
|
||
|
|
||
|
The moral right of the authors to claim authorship of this work
|
||
|
has been asserted.
|
||
|
|
||
|
This program is free software; you can redistribute it and/or
|
||
|
modify it under the terms of the GNU General Public License as
|
||
|
published by the Free Software Foundation; either version 2 of the
|
||
|
License, or (at your option) any later version. See the file
|
||
|
COPYING included with this distribution for more information.
|
||
|
*/
|
||
|
|
||
|
#include <sstream>
|
||
|
|
||
|
#include "ControlParameter.h"
|
||
|
#include "MidiTypes.h"
|
||
|
|
||
|
namespace Rosegarden
|
||
|
{
|
||
|
|
||
|
ControlParameter::ControlParameter():
|
||
|
m_name("<unnamed>"),
|
||
|
m_type(Rosegarden::Controller::EventType),
|
||
|
m_description("<none>"),
|
||
|
m_min(0),
|
||
|
m_max(127),
|
||
|
m_default(0),
|
||
|
m_controllerValue(0),
|
||
|
m_colourIndex(0),
|
||
|
m_ipbPosition(-1) // doesn't appear on IPB by default
|
||
|
{
|
||
|
}
|
||
|
|
||
|
|
||
|
ControlParameter::ControlParameter(const std::string &name,
|
||
|
const std::string &type,
|
||
|
const std::string &description,
|
||
|
int min,
|
||
|
int max,
|
||
|
int def,
|
||
|
MidiByte controllerValue,
|
||
|
unsigned int colour,
|
||
|
int ipbPosition):
|
||
|
m_name(name),
|
||
|
m_type(type),
|
||
|
m_description(description),
|
||
|
m_min(min),
|
||
|
m_max(max),
|
||
|
m_default(def),
|
||
|
m_controllerValue(controllerValue),
|
||
|
m_colourIndex(colour),
|
||
|
m_ipbPosition(ipbPosition)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
|
||
|
ControlParameter::ControlParameter(const ControlParameter &control):
|
||
|
XmlExportable(),
|
||
|
m_name(control.getName()),
|
||
|
m_type(control.getType()),
|
||
|
m_description(control.getDescription()),
|
||
|
m_min(control.getMin()),
|
||
|
m_max(control.getMax()),
|
||
|
m_default(control.getDefault()),
|
||
|
m_controllerValue(control.getControllerValue()),
|
||
|
m_colourIndex(control.getColourIndex()),
|
||
|
m_ipbPosition(control.getIPBPosition())
|
||
|
{
|
||
|
}
|
||
|
|
||
|
ControlParameter&
|
||
|
ControlParameter::operator=(const ControlParameter &control)
|
||
|
{
|
||
|
m_name = control.getName();
|
||
|
m_type = control.getType();
|
||
|
m_description = control.getDescription();
|
||
|
m_min = control.getMin();
|
||
|
m_max = control.getMax();
|
||
|
m_default = control.getDefault();
|
||
|
m_controllerValue = control.getControllerValue();
|
||
|
m_colourIndex = control.getColourIndex();
|
||
|
m_ipbPosition = control.getIPBPosition();
|
||
|
|
||
|
return *this;
|
||
|
}
|
||
|
|
||
|
bool ControlParameter::operator==(const ControlParameter &control)
|
||
|
{
|
||
|
return m_type == control.getType() &&
|
||
|
m_controllerValue == control.getControllerValue() &&
|
||
|
m_min == control.getMin() &&
|
||
|
m_max == control.getMax();
|
||
|
}
|
||
|
|
||
|
bool operator<(const ControlParameter &a, const ControlParameter &b)
|
||
|
{
|
||
|
if (a.m_type != b.m_type)
|
||
|
return a.m_type < b.m_type;
|
||
|
else if (a.m_controllerValue != b.m_controllerValue)
|
||
|
return a.m_controllerValue < b.m_controllerValue;
|
||
|
else
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
|
||
|
std::string
|
||
|
ControlParameter::toXmlString()
|
||
|
{
|
||
|
std::stringstream control;
|
||
|
|
||
|
control << " <control name=\"" << encode(m_name)
|
||
|
<< "\" type=\"" << encode(m_type)
|
||
|
<< "\" description=\"" << encode(m_description)
|
||
|
<< "\" min=\"" << m_min
|
||
|
<< "\" max=\"" << m_max
|
||
|
<< "\" default=\"" << m_default
|
||
|
<< "\" controllervalue=\"" << int(m_controllerValue)
|
||
|
<< "\" colourindex=\"" << m_colourIndex
|
||
|
<< "\" ipbposition=\"" << m_ipbPosition;
|
||
|
|
||
|
#if (__GNUC__ < 3)
|
||
|
control << "\"/>" << endl << std::ends;
|
||
|
#else
|
||
|
control << "\"/>" << std::endl;
|
||
|
#endif
|
||
|
|
||
|
return control.str();
|
||
|
}
|
||
|
|
||
|
}
|