Beispiel #1
0
void PortionDrawer::updateNodePositions(DiagramDrawer &drawer)
    {
    if(mGraph)
        {
        if(mGraph->getNodes().size() != mNodePositions.size())
            {
            mNodePositions.resize(mGraph->getNodes().size());
            }
        std::vector<size_t> depths = getCallDepths();
        std::vector<int> columnPositions = getColumnPositions(drawer, depths);
        int yOffset = 0;
        const int margin = 20;
        int pad = static_cast<int>(drawer.getTextExtentHeight("W"));
        for(size_t i=0; i<mNodePositions.size(); i++)
            {
            GraphRect rect = getNodeRect(drawer, i);
            rect.start.y = yOffset;
            yOffset += pad + rect.size.y;
            rect.start.y += margin;
            rect.start.x = margin + columnPositions[depths[i]];
            mNodePositions[i] = rect.start;
            }
        }
#define PORTION_GENES 1
#if(PORTION_GENES)
    if(mNodePositions.size() > 0)
        {
        DiagramDependencyGenes genes;
        GraphRect rect = getNodeRect(drawer, 0);
        genes.initialize(*this, static_cast<size_t>(rect.size.y));
        genes.updatePositionsInDrawer();
        }
#endif
    }
Beispiel #2
0
void PortionDrawer::drawConnections(DiagramDrawer &drawer)
    {
    size_t lastColorIndex = NO_INDEX;
    for(auto const &conn : mGraph->getConnections())
        {
        GraphRect suppRect = getNodeRect(drawer, conn.mSupplierNodeIndex);
        GraphRect consRect = getNodeRect(drawer, conn.mConsumerNodeIndex);
        GraphPoint suppPoint;
        GraphPoint consPoint;
        drawer.getConnectionPoints(consRect, suppRect, consPoint, suppPoint);
        size_t colorIndex = conn.mSupplierNodeIndex;
        if(colorIndex != lastColorIndex)
            {
            if(lastColorIndex != NO_INDEX)
                {
                drawer.groupShapes(false, 0, 0);
                }
            Color lineColor = DistinctColors::getColor(colorIndex % DistinctColors::getNumColors());
            drawer.groupShapes(true, lineColor, Color(245,245,255));
            lastColorIndex = colorIndex;
            }
        drawArrowDependency(drawer, consPoint, suppPoint);
        }
    if(lastColorIndex != NO_INDEX)
        {
        drawer.groupShapes(false, 0, 0);
        }
    }
Beispiel #3
0
void PortionDrawer::drawNodes(DiagramDrawer &drawer)
    {
    drawer.groupShapes(true, Color(0,0,0), Color(245,245,255));
    for(size_t i=0; i<mNodePositions.size(); i++)
        {
        if(mGraph->getNodes()[i].getNodeType() == PNT_Attribute)
            {
            drawer.drawRect(getNodeRect(drawer, i));
            }
        else
            {
            drawer.drawEllipse(getNodeRect(drawer, i));
            }
        }
    drawer.groupShapes(false, 0, 0);
    drawer.groupShapes(true, Color(0,0,255), Color(245,245,255));
    for(size_t i=0; i<mNodePositions.size(); i++)
        {
        if(mGraph->getNodes()[i].getNodeType() == PNT_NonMemberVariable)
            {
            drawer.drawRect(getNodeRect(drawer, i));
            }
        }
    drawer.groupShapes(false, 0, 0);
    }
Beispiel #4
0
bool TeachLayer::checkChildType(cocos2d::Node *pNode, cocos2d::Rect stencilRect)
{
    if (!pNode) return false;
    if (0 >= pNode->getChildrenCount()) return false;
    
    for (auto child : pNode->getChildren())
    {
        if (dynamic_cast<SpriteButton*>(child))
        {
            auto spriteButton = dynamic_cast<SpriteButton*>(child);
            Rect btnRect = getNodeRect(spriteButton);
            if (stencilRect.intersectsRect(btnRect))
            {
                removeFromParent();
//                spriteButton->execCallBackEvent();
                return true;
            }
        }
    }
    
    for (auto child : pNode->getChildren())
    {
        if (checkChildType(child, stencilRect))
            return true;
    }
    return false;
}
bool RCCheckButton::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)
{
    bool bRet = false;
	CCRect checkBtnRect = getNodeRect();
	if(checkBtnRect.containsPoint(convertToNodeSpace(pTouch->getLocation())))
	{
		m_pText->setColor(m_selectedLabelColor);
		bRet = true;
	}
	return bRet;
}
Beispiel #6
0
GraphSize PortionDrawer::getDrawingSize(DiagramDrawer &drawer) const
    {
    GraphRect graphRect;
    for(size_t i=0; i<mGraph->getNodes().size(); i++)
        {
        graphRect.unionRect(getNodeRect(drawer, i));
        }
    // Add some margin.
    graphRect.size.x += 5;
    graphRect.size.y += 5;
    return graphRect.size;
    }
void RCCheckButton::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent)
{
    CCRect checkBtnRect = getNodeRect();
	if(checkBtnRect.containsPoint(convertToNodeSpace(pTouch->getLocation())))
	{
		m_pText->setColor(m_selectedLabelColor);
	}
	else
	{
		m_pText->setColor(m_normalLabelColor);
	}
}
void RCCheckButton::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)
{
    CCRect checkBtnRect = getNodeRect();
	if(checkBtnRect.containsPoint(convertToNodeSpace(pTouch->getLocation())))
	{
        toggleSelected();
        if(m_pListener && m_pfnSelector)
        {
            (m_pListener->*m_pfnSelector)(this);
        }
	}
	m_pText->setColor(m_normalLabelColor);
}
Beispiel #9
0
void TeachLayer::stencilTouchCallBack(cocos2d::Ref* ref)
{
    if (_touchCallback)
    {
        _touchCallback(this);
        removeFromParent();
    } else
    {
        auto pSender = dynamic_cast<Node*>(ref);
        auto pLayer = pSender->getParent()->getParent();
        auto stencilRect = getNodeRect(pSender);
        checkChildType(pLayer, stencilRect);
    }
}
Beispiel #10
0
void PortionDrawer::getNodeText(DiagramDrawer &drawer,
    std::vector<DrawString> &drawStrings, std::vector<bool> &virtOpers)
    {
    float textHeight = drawer.getTextExtentHeight("W");
    int pad = static_cast<int>(textHeight / 7.f * 2);
    int yTextOffset = static_cast<int>(textHeight) + pad;
    for(size_t i=0; i<mGraph->getNodes().size(); i++)
        {
        GraphRect rect = getNodeRect(drawer, i);
        rect.start.x += pad;
        rect.start.y += yTextOffset;
        PortionNode const &node = mGraph->getNodes()[i];
        drawStrings.push_back(DrawString(rect.start, node.getDisplayName().getStr()));
        virtOpers.push_back(node.isVirtualOperation());
        }
    }