本文整理汇总了C++中ControlPoint::setAsHandleTo方法的典型用法代码示例。如果您正苦于以下问题:C++ ControlPoint::setAsHandleTo方法的具体用法?C++ ControlPoint::setAsHandleTo怎么用?C++ ControlPoint::setAsHandleTo使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ControlPoint
的用法示例。
在下文中一共展示了ControlPoint::setAsHandleTo方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: remove
//-----------------------------------------------------------------------------
void BezierCurve::remove(int iIndex)
{
if(iIndex < 0 || (unsigned int)iIndex >= mControlPoints.size())
{ return; }
mIsRasterValid = false;
const ControlPoint& cp = mControlPoints[iIndex];
/*Si le point de contrôle n'est pas un handle, il faut enlever tous les
handles qui pointe vers ce point et remettre tous les index des autres
handle à jour*/
int startIndex = iIndex;
int endIndex = iIndex;
int count = 1;
vector<ControlPoint>::iterator it = mControlPoints.end();
if(!cp.isHandle())
{
if(iIndex == 0)
{
count = 0;
int lastIndex = mControlPoints.size() - 1;
/*on enleve le point qui précède s'il est un handle a 0. Ici, on
incrémente pas le count parce que c'est le dernier point, il
na donc aucun impact sur les indices des points qui le précèdent.*/
if(mControlPoints[lastIndex].handleTo() == iIndex)
mControlPoints.erase(mControlPoints.begin() + lastIndex);
/*On enleve le point qui suit s'il est un handle à 0*/
if(mControlPoints[iIndex + 1].handleTo() == iIndex)
{
mControlPoints.erase(mControlPoints.begin() + iIndex + 1);
count++;
}
//On enleve le point 0
mControlPoints.erase(mControlPoints.begin());
count++;
/*Dans le cas où le premier point qui suit le point 0 est un handle
on le déplace à la fin de la courbe si la courbe est fermée. sinon
on l'enleve*/
if(mControlPoints[0].isHandle())
{
ControlPoint p = mControlPoints[0];
mControlPoints.erase(mControlPoints.begin());
count++;
if(isClosed())
{
p.setAsHandleTo(0);
mControlPoints.push_back(p);
}
}
it = mControlPoints.begin();
}
else
{
if(iIndex > 0 && mControlPoints[iIndex - 1].handleTo() == iIndex)
startIndex = iIndex - 1;
if((unsigned int)iIndex < mControlPoints.size() -1 &&
mControlPoints[iIndex + 1].handleTo() == iIndex)
endIndex = iIndex + 1;
count = endIndex - startIndex + 1;
it = mControlPoints.begin() + startIndex;
for(int i = 0; i < count; ++i)
it = mControlPoints.erase(it);
}
}
else
it = mControlPoints.erase(mControlPoints.begin() + iIndex);
//on remet les index des points qui suivent celui qu'on vient
//d'enlever à jour.
for(; it != mControlPoints.end(); ++it)
{
//les handles à 0 n'ont pas à être mis à jour.
if(it->isHandle() && it->handleTo() != 0)
it->setAsHandleTo(it->handleTo() - count);
}
}