本文整理汇总了C++中CurvePtr::getKeyFrames_mt_safe方法的典型用法代码示例。如果您正苦于以下问题:C++ CurvePtr::getKeyFrames_mt_safe方法的具体用法?C++ CurvePtr::getKeyFrames_mt_safe怎么用?C++ CurvePtr::getKeyFrames_mt_safe使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CurvePtr
的用法示例。
在下文中一共展示了CurvePtr::getKeyFrames_mt_safe方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DimIdx
void
TrackMarker::getCenterKeyframes(std::set<double>* keyframes) const
{
CurvePtr curve = _imp->center.lock()->getAnimationCurve(ViewIdx(0), DimIdx(0));
assert(curve);
KeyFrameSet keys = curve->getKeyFrames_mt_safe();
for (KeyFrameSet::iterator it = keys.begin(); it != keys.end(); ++it) {
keyframes->insert( it->getTime() );
}
}
示例2: fm
std::pair<MoveTangentCommand::SelectedTangentEnum, AnimItemDimViewKeyFrame >
AnimationModuleViewPrivate::isNearbySelectedTangentText(const QPoint & pt) const
{
QFontMetrics fm( _publicInterface->font() );
int yOffset = TO_DPIY(4);
std::pair<MoveTangentCommand::SelectedTangentEnum, AnimItemDimViewKeyFrame > ret;
AnimationModuleBasePtr model = _model.lock();
const AnimItemDimViewKeyFramesMap& selectedKeys = model->getSelectionModel()->getCurrentKeyFramesSelection();
if (selectedKeys.empty() || selectedKeys.size() > 1) {
return ret;
}
AnimItemDimViewKeyFramesMap::const_iterator curveIT = selectedKeys.begin();
const KeyFrameWithStringSet& keys = curveIT->second;
if (keys.empty() || keys.size() > 1) {
return ret;
}
const KeyFrameWithString& key = *keys.begin();
CurvePtr curve = curveIT->first.item->getCurve(curveIT->first.dim, curveIT->first.view);
if (!curve) {
return ret;
}
KeyFrameSet curveKeys = curve->getKeyFrames_mt_safe();
KeyFrameSet::iterator foundKey = Curve::findWithTime(curveKeys, curveKeys.begin(), key.key.getTime());
assert(foundKey != curveKeys.end());
if (foundKey == curveKeys.end()) {
return ret;
}
for (KeyFrameWithStringSet::const_iterator it = keys.begin(); it != keys.end(); ++it) {
QPointF leftTanPos, rightTanPos;
_publicInterface->getKeyTangentPoints(foundKey, curveKeys, &leftTanPos, &rightTanPos);
double rounding = std::pow(10., CURVEWIDGET_DERIVATIVE_ROUND_PRECISION);
QPointF topLeft_LeftTanWidget = curveEditorZoomContext.toWidgetCoordinates( leftTanPos.x(), leftTanPos.y() );
QPointF topLeft_RightTanWidget = curveEditorZoomContext.toWidgetCoordinates( rightTanPos.x(), rightTanPos.y() );
topLeft_LeftTanWidget.ry() += yOffset;
topLeft_RightTanWidget.ry() += yOffset;
QString leftCoordStr = QString( tr("l: %1") ).arg(std::floor( ( key.key.getLeftDerivative() * rounding ) + 0.5 ) / rounding);
QString rightCoordStr = QString( tr("r: %1") ).arg(std::floor( ( key.key.getRightDerivative() * rounding ) + 0.5 ) / rounding);
QPointF btmRight_LeftTanWidget( topLeft_LeftTanWidget.x() + fm.width(leftCoordStr), topLeft_LeftTanWidget.y() + fm.height() );
QPointF btmRight_RightTanWidget( topLeft_RightTanWidget.x() + fm.width(rightCoordStr), topLeft_RightTanWidget.y() + fm.height() );
if ( (pt.x() >= topLeft_LeftTanWidget.x() - TO_DPIX(CLICK_DISTANCE_TOLERANCE)) && (pt.x() <= btmRight_LeftTanWidget.x() + TO_DPIX(CLICK_DISTANCE_TOLERANCE)) &&
( pt.y() >= topLeft_LeftTanWidget.y() - TO_DPIX(CLICK_DISTANCE_TOLERANCE)) && ( pt.y() <= btmRight_LeftTanWidget.y() + TO_DPIX(CLICK_DISTANCE_TOLERANCE)) ) {
ret.second.key.key = key.key;
StringAnimationManagerPtr stringAnim = curveIT->first.item->getInternalAnimItem()->getStringAnimation();
if (stringAnim) {
stringAnim->stringFromInterpolatedIndex(key.key.getValue(), curveIT->first.view, &ret.second.key.string);
}
ret.second.id = curveIT->first;
ret.first = MoveTangentCommand::eSelectedTangentLeft;
} else if ( (pt.x() >= topLeft_RightTanWidget.x() - TO_DPIX(CLICK_DISTANCE_TOLERANCE)) && (pt.x() <= btmRight_RightTanWidget.x() + TO_DPIX(CLICK_DISTANCE_TOLERANCE)) &&
( pt.y() >= topLeft_RightTanWidget.y() - TO_DPIX(CLICK_DISTANCE_TOLERANCE)) && ( pt.y() <= btmRight_RightTanWidget.y() + TO_DPIX(CLICK_DISTANCE_TOLERANCE)) ) {
ret.second.key.key = key.key;
StringAnimationManagerPtr stringAnim = curveIT->first.item->getInternalAnimItem()->getStringAnimation();
if (stringAnim) {
stringAnim->stringFromInterpolatedIndex(key.key.getValue(), curveIT->first.view, &ret.second.key.string);
}
ret.second.id = curveIT->first;
ret.first = MoveTangentCommand::eSelectedTangentRight;
}
} // for all curves
return ret;
} // isNearbySelectedTangentText