本文整理汇总了C++中KnobBoolPtr类的典型用法代码示例。如果您正苦于以下问题:C++ KnobBoolPtr类的具体用法?C++ KnobBoolPtr怎么用?C++ KnobBoolPtr使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了KnobBoolPtr类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
void
KnobGuiBool::onLabelChanged()
{
KnobBoolPtr knob = _knob.lock();
if (!knob) {
return;
}
const std::string& label = knob->getLabel();
if ( (label == "R") || (label == "r") || (label == "red") ) {
QColor color;
color.setRgbF(0.851643, 0.196936, 0.196936);
_checkBox->setCustomColor(color, true);
} else if ( (label == "G") || (label == "g") || (label == "green") ) {
QColor color;
color.setRgbF(0, 0.654707, 0);
_checkBox->setCustomColor(color, true);
} else if ( (label == "B") || (label == "b") || (label == "blue") ) {
QColor color;
color.setRgbF(0.345293, 0.345293, 1);
_checkBox->setCustomColor(color, true);
} else if ( (label == "A") || (label == "a") || (label == "alpha") ) {
QColor color;
color.setRgbF(0.398979, 0.398979, 0.398979);
_checkBox->setCustomColor(color, true);
} else {
_checkBox->setCustomColor(Qt::black, false);
}
}
示例2: getKnobGui
void
KnobGuiBool::onCheckBoxStateChanged(bool b)
{
KnobBoolPtr knob = _knob.lock();
if (!knob) {
return;
}
getKnobGui()->pushUndoCommand( new KnobUndoCommand<bool>(knob, knob->getValue(DimIdx(0), getView()), b, DimIdx(0), getView()) );
}
示例3: getInteractive
bool getInteractive() const
{
KnobBoolPtr inter = interactive.lock();
if (inter) {
return inter->getValue();
} else {
return !appPTR->getCurrentSettings()->getRenderOnEditingFinishedOnly();
}
}
示例4: getInverted
bool getInverted(TimeValue time) const
{
KnobBoolPtr knob = invert.lock();
if (!knob) {
return false;
}
return knob->getValueAtTime(time);
}
示例5: getEnabled
bool getEnabled(TimeValue time,
int index) const
{
KnobBoolPtr knob = enable[index].lock();
if (!knob) {
return true;
}
return knob->getValueAtTime(time);
}
示例6: getKnobGui
void
KnobGuiBool::onLabelClicked(bool b)
{
if ( _checkBox->getReadOnly() ) {
return;
}
_checkBox->setChecked(b);
KnobBoolPtr knob = _knob.lock();
getKnobGui()->pushUndoCommand( new KnobUndoCommand<bool>(knob, knob->getValue(DimIdx(0), getView()), b, DimIdx(0), getView()) );
}
示例7: DimIdx
void
TrackMarker::setEnabledAtTime(TimeValue time,
bool enabled)
{
KnobBoolPtr knob = _imp->enabled.lock();
if (!knob) {
return;
}
knob->setValueAtTime(time, enabled, ViewSetSpec::all(), DimIdx(0));
}
示例8: getView
void
KnobGuiBool::updateGUI()
{
KnobBoolPtr knob = _knob.lock();
if (!knob) {
return;
}
bool checked = knob->getValue(DimIdx(0), getView());
if (_checkBox->isChecked() == checked) {
return;
}
_checkBox->setChecked(checked);
}
示例9:
void
KnobGuiBool::reflectAnimationLevel(DimIdx /*dimension*/,
AnimationLevelEnum level)
{
int value = (int)level;
if ( value != _checkBox->getAnimation() ) {
KnobBoolPtr knob = _knob.lock();
if (!knob) {
return;
}
bool isEnabled = knob->isEnabled();
_checkBox->setReadOnly(level == eAnimationLevelExpression || !isEnabled);
_checkBox->setAnimation(value);
}
}
示例10: getContext
void
TrackMarker::setEnabledFromGui(double /*time*/,
bool enabled)
{
KnobBoolPtr knob = _imp->enabled.lock();
if (!knob) {
return;
}
KeyFrame k;
std::pair<int, KnobIPtr> master = knob->getMaster(0);
if (master.second) {
knob->unSlave(0, true);
}
knob->onValueChanged(enabled, ViewSpec::all(), 0, eValueChangedReasonNatronGuiEdited, &k);
if (master.second) {
master.second->cloneAndUpdateGui(knob);
knob->slaveTo(0, master.second, master.first);
}
getContext()->solveTransformParamsIfAutomatic();
}
示例11: getModel
void
TrackMarkerPM::initializeKnobs()
{
TrackMarker::initializeKnobs();
NodePtr thisNode = getModel()->getNode();
NodePtr node;
{
CreateNodeArgsPtr args(CreateNodeArgs::create( PLUGINID_OFX_TRACKERPM, NodeCollectionPtr() ));
args->setProperty<bool>(kCreateNodeArgsPropVolatile, true);
args->setProperty<bool>(kCreateNodeArgsPropNoNodeGUI, true);
args->setProperty<std::string>(kCreateNodeArgsPropNodeInitialName, "TrackerPMNode");
node = getApp()->createNode(args);
if (!node) {
throw std::runtime_error("Couldn't create plug-in " PLUGINID_OFX_TRACKERPM);
}
if (thisNode) {
NodePtr inputNode = thisNode->getInput(0);
if (inputNode) {
node->connectInput(inputNode, 0);
}
}
trackerNode = node;
}
KnobItemsTablePtr model = getModel();
EffectInstancePtr effect;
if (model) {
effect = model->getNode()->getEffectInstance();
}
trackPrevButton = getNodeKnob<KnobButton>(node, kTrackerPMParamTrackingPrevious);
trackNextButton = getNodeKnob<KnobButton>(node, kTrackerPMParamTrackingNext);
KnobDoublePtr center = getNodeKnob<KnobDouble>(node, kTrackerPMParamTrackingCenterPoint);
centerKnob = center;
// Slave the center knob and unslave when tracking
if ( !center->linkTo(getCenterKnob()) ) {
throw std::runtime_error("Could not link center");
}
KnobDoublePtr offset = getNodeKnob<KnobDouble>(node, kTrackerPMParamTrackingOffset);
// Slave the offset knob
if ( !offset->linkTo( getOffsetKnob() ) ) {
throw std::runtime_error("Could not link offset");
}
offsetKnob = offset;
// Ref frame is set for each
refFrameKnob = getNodeKnob<KnobInt>(node, kTrackerPMParamTrackingReferenceFrame);
// Enable reference frame
KnobBoolPtr enableRefFrameKnob = getNodeKnob<KnobBool>(node, kTrackerPMParamTrackingEnableReferenceFrame);
enableRefFrameKnob->setValue(true);
KnobChoicePtr scoreType = getNodeKnob<KnobChoice>(node, kTrackerPMParamScore);
if (effect) {
#ifdef kTrackerParamPatternMatchingScoreType
KnobIPtr modelKnob = effect->getKnobByName(kTrackerParamPatternMatchingScoreType);
if (modelKnob) {
if ( !scoreType->linkTo(modelKnob) ) {
throw std::runtime_error("Could not link scoreType");
}
}
#endif
}
scoreTypeKnob = scoreType;
KnobDoublePtr correlationScore = getNodeKnob<KnobDouble>(node, kTrackerPMParamTrackingCorrelationScore);
correlationScoreKnob = correlationScore;
KnobDoublePtr patternBtmLeft = getNodeKnob<KnobDouble>(node, kTrackerPMParamTrackingPatternBoxBtmLeft);
patternBtmLeftKnob = patternBtmLeft;
// Slave the search window and pattern of the node to the parameters of the marker
(void)patternBtmLeft->linkTo(getPatternBtmLeftKnob());
KnobDoublePtr patternTopRight = getNodeKnob<KnobDouble>(node, kTrackerPMParamTrackingPatternBoxTopRight);
patternTopRightKnob = patternTopRight;
(void)patternTopRight->linkTo(getPatternTopRightKnob());
KnobDoublePtr searchWindowBtmLeft = getNodeKnob<KnobDouble>(node, kTrackerPMParamTrackingSearchBoxBtmLeft);
searchWindowBtmLeftKnob = searchWindowBtmLeft;
(void)searchWindowBtmLeft->linkTo(getSearchWindowBottomLeftKnob());
KnobDoublePtr searchWindowTopRight = getNodeKnob<KnobDouble>(node, kTrackerPMParamTrackingSearchBoxTopRight);
searchWindowTopRightKnob = searchWindowTopRight;
(void)searchWindowTopRight->linkTo(getSearchWindowTopRightKnob());
} // TrackMarkerPM::initializeKnobs
示例12: assert
//.........这里部分代码省略.........
}
}
break;
}
case eTrackerTransformNodeTransform: {
KnobIPtr translateKnob = createdNode->getKnobByName(kTransformParamTranslate);
if (translateKnob) {
KnobDoublePtr isDbl = toKnobDouble(translateKnob);
if (isDbl) {
if (!linked) {
isDbl->copyKnob(translate.lock() );
} else {
ignore_result(isDbl->linkTo(translate.lock()));
}
}
}
KnobIPtr scaleKnob = createdNode->getKnobByName(kTransformParamScale);
if (scaleKnob) {
KnobDoublePtr isDbl = toKnobDouble(scaleKnob);
if (isDbl) {
if (!linked) {
isDbl->copyKnob(scale.lock() );
} else {
ignore_result(isDbl->linkTo(scale.lock()));
}
}
}
KnobIPtr rotateKnob = createdNode->getKnobByName(kTransformParamRotate);
if (rotateKnob) {
KnobDoublePtr isDbl = toKnobDouble(rotateKnob);
if (isDbl) {
if (!linked) {
isDbl->copyKnob(rotate.lock());
} else {
ignore_result(isDbl->linkTo(rotate.lock()));
}
}
}
KnobIPtr centerKnob = createdNode->getKnobByName(kTransformParamCenter);
if (centerKnob) {
KnobDoublePtr isDbl = toKnobDouble(centerKnob);
if (isDbl) {
isDbl->copyKnob( center.lock() );
}
}
break;
}
} // switch
KnobIPtr cpInvertKnob = createdNode->getKnobByName(kTransformParamInvert);
if (cpInvertKnob) {
KnobBoolPtr isBool = toKnobBool(cpInvertKnob);
if (isBool) {
if (!linked) {
isBool->copyKnob(invertTransform.lock());
} else {
ignore_result(isBool->linkTo(invertTransform.lock()));
}
}
}
{
KnobIPtr knob = createdNode->getKnobByName(kTransformParamMotionBlur);
if (knob) {
KnobDoublePtr isType = toKnobDouble(knob);
if (isType) {
isType->copyKnob(motionBlur.lock());
}
}
}
{
KnobIPtr knob = createdNode->getKnobByName(kTransformParamShutter);
if (knob) {
KnobDoublePtr isType = toKnobDouble(knob);
if (isType) {
isType->copyKnob(shutter.lock());
}
}
}
{
KnobIPtr knob = createdNode->getKnobByName(kTransformParamShutterOffset);
if (knob) {
KnobChoicePtr isType = toKnobChoice(knob);
if (isType) {
isType->copyKnob(shutterOffset.lock());
}
}
}
{
KnobIPtr knob = createdNode->getKnobByName(kTransformParamCustomShutterOffset);
if (knob) {
KnobDoublePtr isType = toKnobDouble(knob);
if (isType) {
isType->copyKnob(customShutterOffset.lock());
}
}
}
} // exportTrackDataFromExportOptions
示例13: ts
//.........这里部分代码省略.........
continue;
}
if ((*it)->getKnobDeclarationType() != KnobI::eKnobDeclarationTypePlugin) {
continue;
}
// do not escape characters in the scriptName, since it will be put between backquotes
QString knobScriptName = /*NATRON_NAMESPACE::convertFromPlainTextToMarkdown(*/ QString::fromUtf8( (*it)->getName().c_str() )/*, genHTML, true)*/;
QString knobLabel = NATRON_NAMESPACE::convertFromPlainTextToMarkdown( QString::fromUtf8( (*it)->getLabel().c_str() ), genHTML, true);
QString knobHint = NATRON_NAMESPACE::convertFromPlainTextToMarkdown( QString::fromUtf8( (*it)->getHintToolTip().c_str() ), genHTML, true);
// totally ignore the documentation for these parameters (which are always secret in Natron)
if ( knobScriptName.startsWith( QString::fromUtf8("NatronOfxParam") ) ||
knobScriptName == QString::fromUtf8("exportAsPyPlug") ||
knobScriptName == QString::fromUtf8(kOCIOParamInputSpace) ||
knobScriptName == QString::fromUtf8(kOCIOParamOutputSpace) ||
( ( pluginID == QString::fromUtf8(kOCIODisplayPluginIdentifier) ) &&
( knobScriptName == QString::fromUtf8(kOCIODisplayParamDisplay) ) ) ||
( ( pluginID == QString::fromUtf8(kOCIODisplayPluginIdentifier) ) &&
( knobScriptName == QString::fromUtf8(kOCIODisplayParamView) ) ) ||
//( ( pluginID == QString::fromUtf8(kOCIOCDLTransformPluginIdentifier) ) &&
// ( knobScriptName == QString::fromUtf8(kOCIOCDLTransformParamCCCID) ) ) ||
( ( pluginID == QString::fromUtf8(kOCIOFileTransformPluginIdentifier) ) &&
( knobScriptName == QString::fromUtf8(kOCIOFileTransformParamCCCID) ) ) ||
false) {
continue;
}
QString defValuesStr, knobType;
std::vector<std::pair<QString, QString> > dimsDefaultValueStr;
KnobIntPtr isInt = toKnobInt(*it);
KnobChoicePtr isChoice = toKnobChoice(*it);
KnobBoolPtr isBool = toKnobBool(*it);
KnobDoublePtr isDbl = toKnobDouble(*it);
KnobStringPtr isString = toKnobString(*it);
bool isLabel = isString && isString->isLabel();
KnobSeparatorPtr isSep = toKnobSeparator(*it);
KnobButtonPtr isBtn = toKnobButton(*it);
KnobParametricPtr isParametric = toKnobParametric(*it);
KnobGroupPtr isGroup = toKnobGroup(*it);
KnobPagePtr isPage = toKnobPage(*it);
KnobColorPtr isColor = toKnobColor(*it);
if (isInt) {
knobType = tr("Integer");
} else if (isChoice) {
knobType = tr("Choice");
} else if (isBool) {
knobType = tr("Boolean");
} else if (isDbl) {
knobType = tr("Double");
} else if (isString) {
if (isLabel) {
knobType = tr("Label");
} else {
knobType = tr("String");
}
} else if (isSep) {
knobType = tr("Separator");
} else if (isBtn) {
knobType = tr("Button");
} else if (isParametric) {
knobType = tr("Parametric");
} else if (isGroup) {
knobType = tr("Group");
示例14: assert
bool
RotoShapeRenderNodePrivate::renderStroke_generic(RenderStrokeDataPtr userData,
PFNRenderStrokeBeginRender beginCallback,
PFNRenderStrokeRenderDot renderDotCallback,
PFNRenderStrokeEndRender endCallback,
const std::list<std::list<std::pair<Point, double> > >& strokes,
const double distToNextIn,
const Point& lastCenterPointIn,
const RotoDrawableItemPtr& stroke,
bool doBuildup,
double opacity,
TimeValue time,
ViewIdx /*view*/,
const RenderScale& scale,
double* distToNextOut,
Point* lastCenterPoint)
{
assert(distToNextOut && lastCenterPoint);
*distToNextOut = 0;
double brushSize, brushSizePixelX, brushSizePixelY, brushSpacing, brushHardness, writeOnStart, writeOnEnd;
bool pressureAffectsOpacity, pressureAffectsHardness, pressureAffectsSize;
{
KnobDoublePtr brushSizeKnob = stroke->getBrushSizeKnob();
brushSize = brushSizeKnob->getValueAtTime(time);
KnobDoublePtr brushSpacingKnob = stroke->getBrushSpacingKnob();
brushSpacing = brushSpacingKnob->getValueAtTime(time);
if (brushSpacing == 0.) {
return false;
}
brushSpacing = std::max(brushSpacing, 0.05);
KnobDoublePtr brushHardnessKnob = stroke->getBrushHardnessKnob();
brushHardness = brushHardnessKnob->getValueAtTime(time);
KnobDoublePtr visiblePortionKnob = stroke->getBrushVisiblePortionKnob();
writeOnStart = visiblePortionKnob->getValueAtTime(time);
writeOnEnd = visiblePortionKnob->getValueAtTime(time, DimIdx(1));
if ( (writeOnEnd - writeOnStart) <= 0. ) {
return false;
}
// This function is also used for opened bezier which do not have pressure.
RotoStrokeItemPtr isStroke = toRotoStrokeItem(stroke);
if (!isStroke) {
pressureAffectsOpacity = false;
pressureAffectsSize = false;
pressureAffectsHardness = false;
} else {
KnobBoolPtr pressureOpacityKnob = isStroke->getPressureOpacityKnob();
KnobBoolPtr pressureSizeKnob = isStroke->getPressureSizeKnob();
KnobBoolPtr pressureHardnessKnob = isStroke->getPressureHardnessKnob();
pressureAffectsOpacity = pressureOpacityKnob->getValueAtTime(time);
pressureAffectsSize = pressureSizeKnob->getValueAtTime(time);
pressureAffectsHardness = pressureHardnessKnob->getValueAtTime(time);
}
brushSizePixelX = brushSize;
brushSizePixelY = brushSizePixelX;
brushSizePixelX = std::max( 1., brushSizePixelX * scale.x);
brushSizePixelY = std::max( 1., brushSizePixelY * scale.y);
}
double distToNext = distToNextIn;
bool hasRenderedDot = false;
beginCallback(userData, brushSizePixelX, brushSizePixelY, brushSpacing, brushHardness, pressureAffectsOpacity, pressureAffectsHardness, pressureAffectsSize, doBuildup, opacity);
*lastCenterPoint = lastCenterPointIn;
Point prevCenter = lastCenterPointIn;
for (std::list<std::list<std::pair<Point, double> > >::const_iterator strokeIt = strokes.begin(); strokeIt != strokes.end(); ++strokeIt) {
int firstPoint = (int)std::floor( (strokeIt->size() * writeOnStart) );
int endPoint = (int)std::ceil( (strokeIt->size() * writeOnEnd) );
assert( firstPoint >= 0 && firstPoint < (int)strokeIt->size() && endPoint > firstPoint && endPoint <= (int)strokeIt->size() );
///The visible portion of the paint's stroke with points adjusted to pixel coordinates
std::list<std::pair<Point, double> > visiblePortion;
std::list<std::pair<Point, double> >::const_iterator startingIt = strokeIt->begin();
std::list<std::pair<Point, double> >::const_iterator endingIt = strokeIt->begin();
std::advance(startingIt, firstPoint);
std::advance(endingIt, endPoint);
for (std::list<std::pair<Point, double> >::const_iterator it = startingIt; it != endingIt; ++it) {
visiblePortion.push_back(*it);
}
if ( visiblePortion.empty() ) {
continue;
}
std::list<std::pair<Point, double> >::iterator it = visiblePortion.begin();
if (visiblePortion.size() == 1) {
double spacing;
*lastCenterPoint = it->first;
renderDotCallback(userData, prevCenter, *lastCenterPoint, it->second, &spacing);
distToNext += spacing;
continue;
//.........这里部分代码省略.........
示例15: tr
void
TrackMarker::initializeKnobs()
{
TrackerContextPtr context = _imp->context.lock();
KnobIntPtr defPatternSizeKnob = context->getDefaultMarkerPatternWinSizeKnob();
KnobIntPtr defSearchSizeKnob = context->getDefaultMarkerSearchWinSizeKnob();
double patternHalfSize = defPatternSizeKnob->getValue() / 2.;
double searchHalfSize = defSearchSizeKnob->getValue() / 2.;
KnobDoublePtr swbbtmLeft = AppManager::createKnob<KnobDouble>(shared_from_this(), tr(kTrackerParamSearchWndBtmLeftLabel), 2, false);
swbbtmLeft->setName(kTrackerParamSearchWndBtmLeft);
swbbtmLeft->setDefaultValue(-searchHalfSize, 0);
swbbtmLeft->setDefaultValue(-searchHalfSize, 1);
swbbtmLeft->setHintToolTip( tr(kTrackerParamSearchWndBtmLeftHint) );
_imp->searchWindowBtmLeft = swbbtmLeft;
KnobDoublePtr swbtRight = AppManager::createKnob<KnobDouble>(shared_from_this(), tr(kTrackerParamSearchWndTopRightLabel), 2, false);
swbtRight->setName(kTrackerParamSearchWndTopRight);
swbtRight->setDefaultValue(searchHalfSize, 0);
swbtRight->setDefaultValue(searchHalfSize, 1);
swbtRight->setHintToolTip( tr(kTrackerParamSearchWndTopRightHint) );
_imp->searchWindowTopRight = swbtRight;
KnobDoublePtr ptLeft = AppManager::createKnob<KnobDouble>(shared_from_this(), tr(kTrackerParamPatternTopLeftLabel), 2, false);
ptLeft->setName(kTrackerParamPatternTopLeft);
ptLeft->setDefaultValue(-patternHalfSize, 0);
ptLeft->setDefaultValue(patternHalfSize, 1);
ptLeft->setHintToolTip( tr(kTrackerParamPatternTopLeftHint) );
_imp->patternTopLeft = ptLeft;
KnobDoublePtr ptRight = AppManager::createKnob<KnobDouble>(shared_from_this(), tr(kTrackerParamPatternTopRightLabel), 2, false);
ptRight->setName(kTrackerParamPatternTopRight);
ptRight->setDefaultValue(patternHalfSize, 0);
ptRight->setDefaultValue(patternHalfSize, 1);
ptRight->setHintToolTip( tr(kTrackerParamPatternTopRightHint) );
_imp->patternTopRight = ptRight;
KnobDoublePtr pBRight = AppManager::createKnob<KnobDouble>(shared_from_this(), tr(kTrackerParamPatternBtmRightLabel), 2, false);
pBRight->setName(kTrackerParamPatternBtmRight);
pBRight->setDefaultValue(patternHalfSize, 0);
pBRight->setDefaultValue(-patternHalfSize, 1);
pBRight->setHintToolTip( tr(kTrackerParamPatternBtmRightHint) );
_imp->patternBtmRight = pBRight;
KnobDoublePtr pBLeft = AppManager::createKnob<KnobDouble>(shared_from_this(), tr(kTrackerParamPatternBtmLeftLabel), 2, false);
pBLeft->setName(kTrackerParamPatternBtmLeft);
pBLeft->setDefaultValue(-patternHalfSize, 0);
pBLeft->setDefaultValue(-patternHalfSize, 1);
pBLeft->setHintToolTip( tr(kTrackerParamPatternBtmLeftHint) );
_imp->patternBtmLeft = pBLeft;
KnobDoublePtr centerKnob = AppManager::createKnob<KnobDouble>(shared_from_this(), tr(kTrackerParamCenterLabel), 2, false);
centerKnob->setName(kTrackerParamCenter);
centerKnob->setHintToolTip( tr(kTrackerParamCenterHint) );
_imp->center = centerKnob;
KnobDoublePtr offsetKnob = AppManager::createKnob<KnobDouble>(shared_from_this(), tr(kTrackerParamOffsetLabel), 2, false);
offsetKnob->setName(kTrackerParamOffset);
offsetKnob->setHintToolTip( tr(kTrackerParamOffsetHint) );
_imp->offset = offsetKnob;
#ifdef NATRON_TRACK_MARKER_USE_WEIGHT
KnobDoublePtr weightKnob = AppManager::createKnob<KnobDouble>(shared_from_this(), tr(kTrackerParamTrackWeightLabel), 1, false);
weightKnob->setName(kTrackerParamTrackWeight);
weightKnob->setHintToolTip( tr(kTrackerParamTrackWeightHint) );
weightKnob->setDefaultValue(1.);
weightKnob->setAnimationEnabled(false);
weightKnob->setMinimum(0.);
weightKnob->setMaximum(1.);
_imp->weight = weightKnob;
#endif
KnobChoicePtr mmodelKnob = AppManager::createKnob<KnobChoice>(shared_from_this(), tr(kTrackerParamMotionModelLabel), 1, false);
mmodelKnob->setHintToolTip( tr(kTrackerParamMotionModelHint) );
mmodelKnob->setName(kTrackerParamMotionModel);
{
std::vector<std::string> choices, helps;
TrackerContext::getMotionModelsAndHelps(true, &choices, &helps);
mmodelKnob->populateChoices(choices, helps);
}
mmodelKnob->setDefaultValue(0);
_imp->motionModel = mmodelKnob;
KnobDoublePtr errKnob = AppManager::createKnob<KnobDouble>(shared_from_this(), tr(kTrackerParamErrorLabel), 1, false);
errKnob->setName(kTrackerParamError);
_imp->error = errKnob;
KnobBoolPtr enableKnob = AppManager::createKnob<KnobBool>(shared_from_this(), tr(kTrackerParamEnabledLabel), 1, false);
enableKnob->setName(kTrackerParamEnabled);
enableKnob->setHintToolTip( tr(kTrackerParamEnabledHint) );
enableKnob->setAnimationEnabled(true);
enableKnob->setDefaultValue(true);
_imp->enabled = enableKnob;
QObject::connect( this, SIGNAL(enabledChanged(int)), _imp->context.lock().get(), SLOT(onMarkerEnabledChanged(int)) );
boost::shared_ptr<KnobSignalSlotHandler> handler = _imp->center.lock()->getSignalSlotHandler();
//.........这里部分代码省略.........