本文整理汇总了C++中spannerSegments函数的典型用法代码示例。如果您正苦于以下问题:C++ spannerSegments函数的具体用法?C++ spannerSegments怎么用?C++ spannerSegments使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了spannerSegments函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: qDeleteAll
void Volta::read(XmlReader& e)
{
qDeleteAll(spannerSegments());
spannerSegments().clear();
e.addSpanner(e.intAttribute("id", -1), this);
while (e.readNextStartElement()) {
const QStringRef& tag(e.name());
if (tag == "text") // obsolete
setText(e.readElementText());
else if (tag == "endings") {
QString s = e.readElementText();
QStringList sl = s.split(",", QString::SkipEmptyParts);
_endings.clear();
for (const QString& l : sl) {
int i = l.simplified().toInt();
_endings.append(i);
}
}
else if (tag == "lineWidth") {
setLineWidth(Spatium(e.readDouble()));
lineWidthStyle = PropertyStyle::UNSTYLED;
}
else if (tag == "subtype") { // obsolete
int st = e.readInt();
if (st == 1)
setEndHook(true);
}
else if (!TextLineBase::readProperties(e))
e.unknown();
}
}
示例2: foreach
void Hairpin::read(XmlReader& e)
{
foreach(SpannerSegment* seg, spannerSegments())
delete seg;
spannerSegments().clear();
setId(e.intAttribute("id", -1));
while (e.readNextStartElement()) {
const QStringRef& tag(e.name());
if (tag == "subtype")
_hairpinType = HairpinType(e.readInt());
else if (tag == "lineWidth") {
setLineWidth(Spatium(e.readDouble()));
lineWidthStyle = PropertyStyle::UNSTYLED;
}
else if (tag == "hairpinHeight") {
setHairpinHeight(Spatium(e.readDouble()));
hairpinHeightStyle = PropertyStyle::UNSTYLED;
}
else if (tag == "hairpinContHeight") {
setHairpinContHeight(Spatium(e.readDouble()));
hairpinContHeightStyle = PropertyStyle::UNSTYLED;
}
else if (tag == "veloChange")
_veloChange = e.readInt();
else if (tag == "dynType")
_dynRange = DynamicRange(e.readInt());
else if (!SLine::readProperties(e))
e.unknown();
}
}
示例3: qDeleteAll
void Ottava::read(XmlReader& e)
{
qDeleteAll(spannerSegments());
spannerSegments().clear();
e.addSpanner(e.intAttribute("id", -1), this);
while (e.readNextStartElement()) {
const QStringRef& tag(e.name());
if (tag == "subtype") {
QString s = e.readElementText();
bool ok;
int idx = s.toInt(&ok);
if (!ok) {
idx = int(Type::OTTAVA_8VA);
for (unsigned i = 0; i < sizeof(ottavaDefault)/sizeof(*ottavaDefault); ++i) {
if (s == ottavaDefault[i].name) {
idx = i;
break;
}
}
}
else if (score()->mscVersion() <= 114) {
//subtype are now in a different order...
if (idx == 1)
idx = 2;
else if (idx == 2)
idx = 1;
}
setOttavaType(Type(idx));
}
else if (tag == "numbersOnly") {
_numbersOnly = e.readInt();
numbersOnlyStyle = PropertyStyle::UNSTYLED;
}
else if (tag == "lineWidth") {
setLineWidth(Spatium(e.readDouble()));
lineWidthStyle = PropertyStyle::UNSTYLED;
}
else if (tag == "lineStyle") {
setLineStyle(Qt::PenStyle(e.readInt()));
lineStyleStyle = PropertyStyle::UNSTYLED;
}
else if (tag == "beginSymbol") { // obsolete
beginTextStyle = PropertyStyle::UNSTYLED;
QString text(e.readElementText());
setBeginText(QString("<sym>%1</sym>").arg(text[0].isNumber() ? Sym::id2name(SymId(text.toInt())) : text));
}
else if (tag == "continueSymbol") { // obsolete
continueTextStyle = PropertyStyle::UNSTYLED;
QString text(e.readElementText());
setContinueText(QString("<sym>%1</sym>").arg(text[0].isNumber() ? Sym::id2name(SymId(text.toInt())) : text));
}
else if (!TextLine::readProperties(e))
e.unknown();
}
if (beginText() != propertyDefault(P_ID::BEGIN_TEXT))
beginTextStyle = PropertyStyle::UNSTYLED;
if (continueText() != propertyDefault(P_ID::CONTINUE_TEXT))
continueTextStyle = PropertyStyle::UNSTYLED;
}
示例4: qDeleteAll
void Ottava::read(XmlReader& e)
{
qDeleteAll(spannerSegments());
spannerSegments().clear();
e.addSpanner(e.intAttribute("id", -1), this);
while (e.readNextStartElement())
readProperties(e);
updateStyledProperties();
}
示例5: qDeleteAll
void TextLine::read(XmlReader& e)
{
qDeleteAll(spannerSegments());
spannerSegments().clear();
setId(e.intAttribute("id", -1));
while (e.readNextStartElement()) {
if (!readProperties(e))
e.unknown();
}
}
示例6: foreach
void TextLine::read(const QDomElement& de)
{
foreach(SpannerSegment* seg, spannerSegments())
delete seg;
spannerSegments().clear();
setId(de.attribute("id", "-1").toInt());
for (QDomElement e = de.firstChildElement(); !e.isNull(); e = e.nextSiblingElement()) {
if (!readProperties(e))
domError(e);
}
}
示例7: foreach
void SLine::read(XmlReader& e)
{
foreach(SpannerSegment* seg, spannerSegments())
delete seg;
spannerSegments().clear();
setId(e.intAttribute("id", -1));
while (e.readNextStartElement()) {
if (!SLine::readProperties(e))
e.unknown();
}
}
示例8: toTrillSegment
void Trill::layout()
{
SLine::layout();
if (score() == gscore)
return;
if (spannerSegments().empty())
return;
TrillSegment* ls = toTrillSegment(frontSegment());
if (spannerSegments().empty())
qDebug("Trill: no segments");
if (_accidental)
_accidental->setParent(ls);
}
示例9: setEndHook
void Ottava::setOttavaType(OttavaType val)
{
setEndHook(true);
_ottavaType = val;
const OttavaDefault* def = &ottavaDefault[int(val)];
Spatium hook(score()->styleS(ST_ottavaHook));
SymId id = _numbersOnly ? def->numbersOnlyId : def->id;
if (symIsValid(id)) {
if (beginSymbolStyle == PropertyStyle::STYLED)
setBeginSymbol(id);
if (continueSymbolStyle == PropertyStyle::STYLED)
setContinueSymbol(id);
setBeginSymbolOffset(def->offset);
setContinueSymbolOffset(def->offset);
foreach(SpannerSegment* s, spannerSegments()) {
OttavaSegment* os = static_cast<OttavaSegment*>(s);
os->clearText();
}
delete _beginText;
_beginText = 0;
delete _continueText;
_continueText = 0;
}
示例10: bbox
QRectF SLine::bbox() const
{
if (spannerSegments().isEmpty())
return QRectF();
else
return segmentAt(0)->bbox();
}
示例11: setEndHook
void Ottava::setOttavaType(OttavaType val)
{
setEndHook(true);
_ottavaType = val;
Spatium hook(score()->styleS(ST_ottavaHook));
SymId id;
if (_numbersOnly)
id = ottavaDefault[int(val)].numbersOnlyId;
else
id = ottavaDefault[int(val)].id;
if (beginSymbolStyle == PropertyStyle::STYLED)
setBeginSymbol(id);
if (continueSymbolStyle == PropertyStyle::STYLED)
setContinueSymbol(id);
setBeginSymbolOffset(ottavaDefault[int(val)].offset);
setContinueSymbolOffset(ottavaDefault[int(val)].offset);
setEndHookHeight(hook * ottavaDefault[int(val)].hookDirection);
setPlacement(ottavaDefault[int(val)].place);
_pitchShift = ottavaDefault[int(val)].shift;
foreach(SpannerSegment* s, spannerSegments()) {
OttavaSegment* os = static_cast<OttavaSegment*>(s);
os->clearText();
}
示例12: spatium
void Trill::layout()
{
qreal _spatium = spatium();
SLine::layout();
if (score() == gscore)
return;
TrillSegment* ls = static_cast<TrillSegment*>(frontSegment());
//
// special case:
// if end segment is first chord/rest segment in measure,
// shorten trill line so it ends at end of previous measure
//
Segment* seg1 = startSegment();
Segment* seg2 = endSegment();
if (seg2
&& (seg1->system() == seg2->system())
&& (spannerSegments().size() == 1)
&& (seg2->tick() == seg2->measure()->tick())
) {
qreal x1 = seg2->pagePos().x();
Measure* m = seg2->measure()->prevMeasure();
if (m) {
Segment* s2 = m->last();
qreal x2 = s2->pagePos().x();
qreal dx = x1 - x2 + _spatium * .3;
ls->setPos2(ls->ipos2() + QPointF(-dx, 0.0));
ls->layout();
}
}
if (_accidental)
_accidental->setParent(ls);
}
示例13: anchor
void SLine::writeProperties(Xml& xml, const SLine* proto) const
{
Element::writeProperties(xml);
if (_diagonal && (proto == 0 || proto->diagonal() != _diagonal))
xml.tag("diagonal", _diagonal);
if (anchor() != ANCHOR_SEGMENT && (proto == 0 || proto->anchor() != anchor()))
xml.tag("anchor", anchor());
if (score() == gscore) {
// when used as icon
if (!spannerSegments().isEmpty()) {
LineSegment* s = frontSegment();
xml.tag("length", s->pos2().x());
}
else
xml.tag("length", spatium() * 4);
return;
}
//
// check if user has modified the default layout
//
bool modified = false;
int n = spannerSegments().size();
for (int i = 0; i < n; ++i) {
const LineSegment* seg = segmentAt(i);
if (!seg->userOff().isNull()
|| !seg->userOff2().isNull()
|| !seg->visible()) {
modified = true;
break;
}
}
if (!modified)
return;
//
// write user modified layout
//
qreal _spatium = spatium();
for (int i = 0; i < n; ++i) {
const LineSegment* seg = segmentAt(i);
xml.stag("Segment");
xml.tag("subtype", seg->subtype());
xml.tag("off2", seg->userOff2() / _spatium);
seg->Element::writeProperties(xml);
xml.etag();
}
}
示例14: foreach
void Hairpin::read(XmlReader& e)
{
foreach(SpannerSegment* seg, spannerSegments())
delete seg;
spannerSegments().clear();
int id = e.intAttribute("id", -1);
e.addSpanner(id, this);
while (e.readNextStartElement()) {
const QStringRef& tag(e.name());
if (tag == "subtype")
_hairpinType = Type(e.readInt());
else if (tag == "lineWidth") {
setLineWidth(Spatium(e.readDouble()));
lineWidthStyle = PropertyStyle::UNSTYLED;
}
else if (tag == "hairpinHeight") {
setHairpinHeight(Spatium(e.readDouble()));
hairpinHeightStyle = PropertyStyle::UNSTYLED;
}
else if (tag == "hairpinContHeight") {
setHairpinContHeight(Spatium(e.readDouble()));
hairpinContHeightStyle = PropertyStyle::UNSTYLED;
}
else if (tag == "hairpinCircledTip")
_hairpinCircledTip = e.readInt();
else if (tag == "veloChange")
_veloChange = e.readInt();
else if (tag == "dynType")
_dynRange = Dynamic::Range(e.readInt());
else if (tag == "useTextLine")
_useTextLine = e.readInt();
else if (!TextLine::readProperties(e))
e.unknown();
}
// add default text to legacy hairpins
if (score()->mscVersion() <= 206 && !_useTextLine) {
bool cresc = _hairpinType == Hairpin::Type::CRESCENDO;
if (!_beginText)
setBeginText(cresc ? "cresc." : "dim.");
if (!_continueText)
setContinueText(cresc ? "(cresc.)" : "(dim.)");
}
}
示例15: setLen
void SLine::setLen(qreal l)
{
if (spannerSegments().isEmpty())
add(createLineSegment());
LineSegment* s = frontSegment();
s->setPos(QPointF());
s->setPos2(QPointF(l, 0));
}