本文整理汇总了C++中StaffType::genDurations方法的典型用法代码示例。如果您正苦于以下问题:C++ StaffType::genDurations方法的具体用法?C++ StaffType::genDurations怎么用?C++ StaffType::genDurations使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StaffType
的用法示例。
在下文中一共展示了StaffType::genDurations方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: layout
void Rest::layout()
{
_space.setLw(0.0);
if (parent() && measure() && measure()->isMMRest()) {
_space.setRw(point(score()->styleS(StyleIdx::minMMRestWidth)));
static const qreal verticalLineWidth = .2;
qreal _spatium = spatium();
qreal h = _spatium * (2 + verticalLineWidth);
qreal w = _mmWidth + _spatium * verticalLineWidth*.5;
bbox().setRect(-_spatium * verticalLineWidth*.5, -h * .5, w, h);
// text
qreal y = -_spatium * 2.5 - staff()->height() *.5;
addbbox(QRectF(0, y, w, _spatium * 2)); // approximation
return;
}
rxpos() = 0.0;
if (staff() && staff()->isTabStaff()) {
StaffType* tab = staff()->staffType();
// if rests are shown and note values are shown as duration symbols
if (tab->showRests() && tab->genDurations()) {
TDuration::DurationType type = durationType().type();
int dots = durationType().dots();
// if rest is whole measure, convert into actual type and dot values
if (type == TDuration::DurationType::V_MEASURE) {
int ticks = measure()->ticks();
TDuration dur = TDuration(Fraction::fromTicks(ticks)).type();
type = dur.type();
dots = dur.dots();
}
// symbol needed; if not exist, create, if exists, update duration
if (!_tabDur)
_tabDur = new TabDurationSymbol(score(), tab, type, dots);
else
_tabDur->setDuration(type, dots, tab);
_tabDur->setParent(this);
// needed? _tabDur->setTrack(track());
_tabDur->layout();
setbbox(_tabDur->bbox());
setPos(0.0, 0.0); // no rest is drawn: reset any position might be set for it
_space.setLw(0.0);
_space.setRw(width());
return;
}
// if no rests or no duration symbols, delete any dur. symbol and chain into standard staff mngmt
// this is to ensure horiz space is reserved for rest, even if they are not diplayed
// Rest::draw() will skip their drawing, if not needed
if(_tabDur) {
delete _tabDur;
_tabDur = 0;
}
}
switch(durationType().type()) {
case TDuration::DurationType::V_64TH:
case TDuration::DurationType::V_32ND:
dotline = -3;
break;
case TDuration::DurationType::V_1024TH:
case TDuration::DurationType::V_512TH:
case TDuration::DurationType::V_256TH:
case TDuration::DurationType::V_128TH:
dotline = -5;
break;
default:
dotline = -1;
break;
}
qreal _spatium = spatium();
int stepOffset = 0;
if (staff())
stepOffset = staff()->staffType()->stepOffset();
int line = lrint(userOff().y() / _spatium); // + ((staff()->lines()-1) * 2);
qreal lineDist = staff() ? staff()->staffType()->lineDistance().val() : 1.0;
int lines = staff() ? staff()->lines() : 5;
int lineOffset = computeLineOffset();
int yo;
_sym = getSymbol(durationType().type(), line + lineOffset/2, lines, &yo);
layoutArticulations();
rypos() = (qreal(yo) + qreal(lineOffset + stepOffset) * .5) * lineDist * _spatium;
Spatium rs;
if (dots()) {
rs = Spatium(score()->styleS(StyleIdx::dotNoteDistance)
+ dots() * score()->styleS(StyleIdx::dotDotDistance));
}
if (dots()) {
rs = Spatium(score()->styleS(StyleIdx::dotNoteDistance)
+ dots() * score()->styleS(StyleIdx::dotDotDistance));
}
setbbox(symBbox(_sym));
_space.setRw(width() + point(rs));
}