本文整理汇总了C++中CNode::GetPosition方法的典型用法代码示例。如果您正苦于以下问题:C++ CNode::GetPosition方法的具体用法?C++ CNode::GetPosition怎么用?C++ CNode::GetPosition使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CNode
的用法示例。
在下文中一共展示了CNode::GetPosition方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getAscent
RealFde CFormulaNode::getAscent( const SizeFde &sz )
{
RealFde vc = sz.height() / 2.0;
switch( getAlignmentType() )
{
case FBtnChildPos::TableCenter2Baseline:
if( (getAlignmentValue() - 1) >= 0 && (getAlignmentValue() - 1) < GetChildCount() )
{
CNode *pNode = GetChild( getAlignmentValue() - 1 );
if( pNode != NULL )
vc = pNode->GetPosition().y() + pNode->GetSize().height() / 2.0;
}
break;
case FBtnChildPos::TableTop2Baseline:
if( (getAlignmentValue() - 1) >= 0 && (getAlignmentValue() - 1) < GetChildCount() )
{
CNode *pNode = GetChild( getAlignmentValue() - 1 );
if( pNode != NULL )
vc = pNode->GetPosition().y();
else
vc = 0.0;
}
else
vc = 0.0;
break;
case FBtnChildPos::TableBottom2Baseline:
if( (getAlignmentValue() - 1) >= 0 && (getAlignmentValue() - 1) < GetChildCount() )
{
CNode *pNode = GetChild( getAlignmentValue() - 1 );
if( pNode != NULL )
vc = pNode->GetPosition().y() + pNode->GetSize().height();
else
vc = sz.height();
}
else
vc = sz.height();
break;
default:
vc = sz.height() - ::calculateCurrentTextDescent( GetLevel() );
break;
}
return vc;
}
示例2: Draw
int CFormulaNode::Draw( CFmlDrawEngine& fde, const PointFde& tl, const RectFde& rc )
{
QString _mathbackground = getMathMLAttr().getFilteredAttr( FBL_ATTR_mathbackground );
if( isHidden() || to_mathml_data.name == FBL_TAG_mstyle )
{
if( _mathbackground.length() )
{
QColor dest_bkcolor;
QString backcolor_str = _mathbackground;
int rr = ::mml_mathcolor2color( backcolor_str, dest_bkcolor, QColor(0, 0, 0) );
if( rr != -1 )
{
// Paint the background
fde.FillRectangle( tl.x(), tl.y(), GetSize().width(), GetSize().height(), FS_LogBrush(dest_bkcolor, Qt::SolidPattern) );
}
}
if( isHidden() )
return 0;
}
if( !isFrameHidden() )
{
// draw child items
RectFde rcItem;
CNode *pNode = NULL;
for( long i = 0; i < GetChildCount(); i++ )
{
pNode = GetChild( i );
PointFde res = tl + pNode->GetPosition();
rcItem.setLeft( res.x() );
rcItem.setRight( rcItem.left() + pNode->GetSize().width() );
rcItem.setTop( res.y() );
rcItem.setBottom( rcItem.top() + pNode->GetSize().height() );
if( rcItem.left() > rc.right() || rcItem.top() > rc.bottom() || rcItem.right() < rc.left() || rcItem.bottom() < rc.top() )
continue;
pNode->Draw( fde, PointFde( rcItem.left(), rcItem.top() ), rc );
}
}
// draw graph primitives
CNodeExInfo_GraphPrimitive::Draw( fde, tl, this );
return 1;
}
示例3: CalcPosFromMouse
CVec2 CControl::CalcPosFromMouse(float x, float y) const
{
CVec2 pos(x, y);
CNode* pParent = GetParentNode();
if( pParent && pParent->GetType() == eNT_NodeGUI )
{
((CControl*)pParent)->WorldToLocal(x, y);
pos.x = x - ((CControl*)pParent)->GetRealSize().x * m_vec2PercentPosition.x;
pos.y = y - ((CControl*)pParent)->GetRealSize().y * m_vec2PercentPosition.y;
CVec3 paretnPosition = pParent->GetPosition();
((CControl*)pParent)->LocalToWorld( paretnPosition.x, paretnPosition.y );
CVec2 parentRealAnchor( paretnPosition.x, paretnPosition.y );
pos.x += parentRealAnchor.x;
pos.y += parentRealAnchor.y;
}
return pos;
}
示例4:
void CCamera3D::OnTransformed()
{
m_View = CMatrix4::IDENTY;
CMatrix4 rotate = CMatrix4::IDENTY;
CNode* node = m_Node;
node->GetTransform();
//TODO: Optimize rotation
CVector3 rot = CVector3(0.0f, 0.0f, node->GetRotation().Z);
rotate.Rotate(rot);
m_View *= rotate;
rot = CVector3(node->GetRotation().X, 0.0f, 0.0f);
rotate.Rotate(rot);
m_View *= rotate;
rot = CVector3(0.0f, node->GetRotation().Y, 0.0f);
rotate.Rotate(rot);
m_View *= rotate;
CMatrix4 translate = CMatrix4::IDENTY;
translate.Translate(node->GetPosition());
m_View *= translate;
CMatrix4 frustum = CMatrix4::IDENTY;
frustum *= m_Projection;
frustum *= m_View;
m_Frustum.Setup(frustum);
}
示例5: RunCalc
int CFormulaNode::RunCalc()
{
if( !getCalc() )
{
if( getCalcButtonID().length() )
setMissButton();
return 0;
}
if( !getCalc()->isPositionRunExist() ) return 0;
QVector<RealFde> frames_ltrb;
frames_ltrb.fill( 0.0, 4 * GetChildCount() );
QVector<RealFde> frames_margin_ltrb;
frames_margin_ltrb.fill( 0.0, 4 * GetChildCount() );
QVector<RealFde> primitive_ltrb;
primitive_ltrb.fill( 0.0, 4 * GetChildCount() );
long i;
CNode *pCurNode = GetFirstChild();
if( pCurNode->GetType() != NODE_FRAME ) return 0;
for( i = 0; i < GetChildCount() && pCurNode; pCurNode = pCurNode->GetNext(), i++ )
{
frames_ltrb[ i * 4 + SVG_NodeTemplate_Parameter_Left ] = pCurNode->GetPosition().x();
frames_ltrb[ i * 4 + SVG_NodeTemplate_Parameter_Top ] = pCurNode->GetPosition().y();
frames_ltrb[ i * 4 + SVG_NodeTemplate_Parameter_Right ] = pCurNode->GetPosition().x() + pCurNode->GetSize().width();
frames_ltrb[ i * 4 + SVG_NodeTemplate_Parameter_Bottom ] = pCurNode->GetPosition().y() + pCurNode->GetSize().height();
frames_margin_ltrb[ i * 4 + SVG_NodeTemplate_Parameter_Left ] = ((CFrameNode*) pCurNode)->getLeftIndent();
frames_margin_ltrb[ i * 4 + SVG_NodeTemplate_Parameter_Top ] = ((CFrameNode*) pCurNode)->getTopIndent();
frames_margin_ltrb[ i * 4 + SVG_NodeTemplate_Parameter_Right ] = ((CFrameNode*) pCurNode)->getRightIndent();
frames_margin_ltrb[ i * 4 + SVG_NodeTemplate_Parameter_Bottom ] = ((CFrameNode*) pCurNode)->getBottomIndent();
}
for( i = 0; i < getGraphPrimNumber(); i++ )
{
primitive_ltrb.push_back( getGraphPrimitivePositionCoord( i, 0 ) );
primitive_ltrb.push_back( getGraphPrimitivePositionCoord( i, 1 ) );
primitive_ltrb.push_back( getGraphPrimitivePositionCoord( i, 2 ) );
primitive_ltrb.push_back( getGraphPrimitivePositionCoord( i, 3 ) );
}
UseBtnCalc_InitByThisSize( *getCalc() );
int ret = getCalc()->PositionRun( frames_ltrb, frames_margin_ltrb, primitive_ltrb );
// reset parent margins
UseBtnCalc_ChangeThisMargin( *getCalc() );
for( i = 0; i < getGraphPrimNumber(); i++ )
{
if( getCalc()->isFormulaTypeGraphics( i ) )
{
setGraphPrimitivePositionCoord(
i, SVG_NodeTemplate_Parameter_Left,
primitive_ltrb[ i * 4 + SVG_NodeTemplate_Parameter_Left ] );
setGraphPrimitivePositionCoord(
i, SVG_NodeTemplate_Parameter_Top,
primitive_ltrb[ i * 4 + SVG_NodeTemplate_Parameter_Top ] );
setGraphPrimitivePositionCoord(
i, SVG_NodeTemplate_Parameter_Right,
primitive_ltrb[ i * 4 + SVG_NodeTemplate_Parameter_Right ] );
setGraphPrimitivePositionCoord(
i, SVG_NodeTemplate_Parameter_Bottom,
primitive_ltrb[ i * 4 + SVG_NodeTemplate_Parameter_Bottom ] );
}
}
if( ret )
{
pCurNode = GetFirstChild();
i = 0;
while( pCurNode )
{
((CFrameNode*) pCurNode)->setLeftIndent( frames_margin_ltrb[ i * 4 + SVG_NodeTemplate_Parameter_Left ] );
((CFrameNode*) pCurNode)->setTopIndent( frames_margin_ltrb[ i * 4 + SVG_NodeTemplate_Parameter_Top ] );
((CFrameNode*) pCurNode)->setRightIndent( frames_margin_ltrb[ i * 4 + SVG_NodeTemplate_Parameter_Right ] );
((CFrameNode*) pCurNode)->setBottomIndent( frames_margin_ltrb[ i * 4 + SVG_NodeTemplate_Parameter_Bottom ] );
pCurNode = pCurNode->GetNext();
i++;
}
RecalculateSizeChild();
}
return ret;
}
示例6: Recalculate_VerticalCenter
void CFormulaNode::Recalculate_VerticalCenter( const SizeFde &sz )
{
RealFde vc = sz.height() / 2.0;
switch( getAlignmentType() )
{
case FBtnChildPos::Child:
if( getAlignmentValue() >= 1 && (getAlignmentValue() - 1) < getGraphPrimNumber() )
{
const RectFde& _t = getGraphPrimitivePositionRect( getAlignmentValue() - 1 );
vc = (_t.top() + _t.bottom()) / 2.0;
}
break;
case FBtnChildPos::Child_Average:
if( getAlignmentValue() >= 1 && (getAlignmentValue() - 1) < getGraphPrimNumber() )
{
vc = 0.0;
for( long i = 0; i <= getAlignmentValue() - 1; i++ )
{
const RectFde& _t = getGraphPrimitivePositionRect( i );
vc += _t.top() + _t.bottom();
}
vc = vc / (getAlignmentValue() * 2.0);
}
break;
case FBtnChildPos::MSPACE_Exact_HeightDepth:
case FBtnChildPos::Frame:
if( (getAlignmentValue() - 1) >= 0 && (getAlignmentValue() - 1) < GetChildCount() )
{
CNode *pNode = GetChild( getAlignmentValue() - 1 );
if( pNode )
vc = pNode->GetPosition().y() + pNode->GetVerticalCenter();
}
break;
case FBtnChildPos::Frame_Blank_Average:
{
CNode *pNodeFirst = GetFirstChild();
CNode *pNodeLast = GetLastChild();
if( pNodeFirst != NULL && pNodeLast != NULL )
{
vc = (pNodeFirst->GetPosition().y() + pNodeFirst->GetSize().height() + pNodeLast->GetPosition().y()) / 2.0;
}
}
break;
case FBtnChildPos::Half:
break;
case FBtnChildPos::TableAxis:
if( (getAlignmentValue() - 1) >= 0 && (getAlignmentValue() - 1) < GetChildCount() )
{
CNode *pNode = GetChild( getAlignmentValue() - 1 );
if( pNode )
vc = pNode->GetPosition().y() + pNode->GetSize().height() / 2.0;
}
break;
case FBtnChildPos::TableCenter2Baseline:
case FBtnChildPos::TableTop2Baseline:
case FBtnChildPos::TableBottom2Baseline:
{
RealFde asc = ::getCurrentDefaultAscent( GetLevel() );
RealFde h = ::getCurrentDefaultSize( GetLevel() ).height();
vc = getAscent( sz ) - asc + h - asc / 2.0;
}
break;
default:
break;
}
SetVerticalCenter( vc );
}
示例7: CPathNode
/*****************************************************************
* GeneratePath() Uses A* PathFinding to generate a path from
* the start position to the goal position
*
* Ins: int
* int
*
* Outs: None
*
* Returns: vector<CNode*>
*
* Mod. Date: 08/16/2015
* Mod. Initials: NS
*****************************************************************/
vector<XMFLOAT3> CPathFinding::GeneratePath(int _start, int _goal, bool smoothed)
{
GetReadyForNewSearch();
// Create the first PathNode
CPathNode* curPathNode = new CPathNode(m_pGraph->GetNodes()[_start]);
m_pqNodeQue.push(curPathNode);
m_umVisitedNodes[_start] = curPathNode;
// Create all local variables here for attempt at optimization
CPathNode* theNode = nullptr;
CPathNode* visitedNode = nullptr;
CPathNode* nextPathNode = nullptr;
CNode* curNode;
CNode* adjNode;
CEdge* curEdge;
float newFinalCost;
float newCost;
float oldCost;
float curCost;
float newHeuristic;
int adjNodeIndex;
int curNodeIndex;
vector<XMFLOAT3> path;
// Loop while there are edges to explore
while (!m_pqNodeQue.empty())
{
// Get the next node.
curPathNode = m_pqNodeQue.front();
m_pqNodeQue.pop();
// Access the node and it's index for future use
curNode = curPathNode->GetNode();
curNodeIndex = curNode->GetIndex();
// If the destination is found
if (curNodeIndex == _goal)
{
// Clear the old path
m_lPath.clear();
// Build the path
theNode = m_umVisitedNodes[curNode->GetIndex()];
// Untill we trace back to the _start node
while (theNode != nullptr)
{
// Add the node to the path
m_lPath.push_back(theNode->GetNode());
// Advance to the next connected node
theNode = theNode->m_cpParent;
}
if (smoothed)
path = SmoothPath(m_lPath);
else
{
for (size_t currNode = 0; currNode < m_lPath.size(); currNode++)
path.push_back(m_lPath[currNode]->GetPosition());
}
/*m_umVisitedNodes.clear();
^^^^^^^^^^^^^^^^^^^^^^^^^^
This stupid line of code caused us so many headaches that I can't bring
myself to actually delete it. Forever it shall live in the belly of our
pathfinding code*/
return path;
}
// For each edge the node has
for (size_t edge = 0; edge < curNode->GetEdges().size(); edge++)
{
// Get the current Edge and the node attatched to it
curEdge = curNode->GetEdges()[edge];
adjNodeIndex = curEdge->GetAdjNode();
adjNode = m_pGraph->GetNodes()[adjNodeIndex];
// Calculate the cost to the adj Node from _start Node (Total cost so far)
curCost = curNode->GetCost() + curEdge->GetEdgeCost();
//.........这里部分代码省略.........