bool LineSegment::isEdited(SpannerSegment* ss) const { LineSegment* ls = static_cast<LineSegment*>(ss); if (pos() != ls->pos() || pos2() != ls->pos2()) return true; return false; }
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(); } }