Example #1
0
void Edge::adjust()
{
  if (!source || !dest)
    return;

  QRectF srect = source->boundingRect();
  QRectF drect = dest->boundingRect();

  QLineF line(mapFromItem(source, srect.width() / 2, srect.height() / 2),
              mapFromItem(dest, drect.width() / 2, drect.height() / 2));
  qreal length = line.length();

  prepareGeometryChange();

  if (length > qreal(40.)) {
    qreal line_angle = line.angle();
    qreal angle = line_angle > 90. ? fmod(line_angle, 90.0) : line_angle;
    qreal dist = qMax(angle, 45.0) - qMin(angle, 45.0);
    dist += 80.0 - dist;
    QPointF edgeOffset((line.dx() * dist) / length, (line.dy() * dist) / length);
    sourcePoint = line.p1() + edgeOffset;
    destPoint = line.p2() - edgeOffset;
    qreal new_angle = QLineF(sourcePoint, destPoint).angle();
    if (qAbs(new_angle - line_angle) > 90.)
      sourcePoint = destPoint = line.p1();
  } else {
    sourcePoint = destPoint = line.p1();
  }
}
Example #2
0
void GEdge::adjust()
{
    if (!source || !dest)
        return;

    QLineF * line = new QLineF (source->x(), source->y(),
                                dest->x(), dest->y());

    qreal length = line->length();

    prepareGeometryChange();

    if (length > qreal(20.)) {
        QPointF edgeOffset((line->dx() * 10) / length, (line->dy() * 10) / length);

        if (is_from_dummy_node)
            sourcePoint = line->p1();
        else
            sourcePoint = line->p1() + edgeOffset;

        if (is_to_dummy_node)
            destPoint = line->p2();
        else
            destPoint = line->p2() - edgeOffset;
    } else {
        sourcePoint = destPoint = line->p1();
    }
}
Example #3
0
/**
 *  Labels the edges of the given graph using Par and Low values.
 *  Edge labels are stored in the graph itself as values for each edge in the CSR representation
 */
void labelEdges(Graph *graph, int *Par, int *Low) {
    #pragma omp parallel for schedule(static)
    for(int u = 0; u < graph->numVertices; u++) {
        int uLow = Low[u];
        int uPar = Par[u];

        int start = edgeOffset(graph, u);
        int end = edgeOffset(graph, u + 1);
        for(int i = start; i < end; i++) {
            int v = graph->edgeArray[i];
            if(Low[v] == uLow || uPar == v) {
                graph->edgeLabels[i] = uLow;
            } else {
                graph->edgeLabels[i] = Low[v];
            }
        }
    }
}
Example #4
0
void Edge::adjust()
{
    if (!source || !dest)
        return;

    QPointF pStart = mapFromItem(source, 0, 0);
    QPointF pEnd = mapFromItem(dest, 0, 0);
    QRectF sourceBounds = source->boundingRect();
    QRectF destBounds = dest->boundingRect();

    //move points to middle of boundingboxes
    pStart.setX(pStart.x() + source->boundingRect().width()/2);
    pEnd.setX(pEnd.x() + dest->boundingRect().width()/2);
    pStart.setY(pStart.y() + source->boundingRect().height()/2);
    pEnd.setY(pEnd.y() + dest->boundingRect().height()/2);

    //adjust docking edges relative to point positions
    if (abs(pStart.y() - pEnd.y()) < destBounds.height()+30.f)//start and end are approximately at same height
    {
    	if (pStart.x() > pEnd.x()) //start is to the right of end
    	{
    		pStart.setX(pStart.x()-sourceBounds.width()/2);
    		pEnd.setX(pEnd.x()+destBounds.width()/2);
    	}
    	else //start is to the left of end
    	{
    		pStart.setX(pStart.x()+sourceBounds.width()/2);
    		pEnd.setX(pEnd.x()-destBounds.width()/2);
    	}
    }
    else if (pStart.y() > pEnd.y())//start is over end
    {
    	pStart.setY(pStart.y()-sourceBounds.height()/2);
    	pEnd.setY(pEnd.y()+destBounds.height()/2);
    }
    else //start is under end
    {
    	pStart.setY(pStart.y()+sourceBounds.height()/2);
    	pEnd.setY(pEnd.y()-destBounds.height()/2);
    }

    QLineF line(pStart, pEnd);
    qreal length = line.length();

    prepareGeometryChange();

    if (length > qreal(20.)) {
    	QPointF edgeOffset((line.dx() * 10) / length, (line.dy() * 10) / length);
    	sourcePoint = line.p1() + edgeOffset;
    	destPoint = line.p2() - edgeOffset;
    } else {
    	sourcePoint = destPoint = line.p1();
    }
}
Example #5
0
void Connection::resizeLine()
{
    QLineF line( mapFromItem( m_fromNode, 0, 0 ), mapFromItem( m_toNode, 0, 0 ) );
    const qreal length = line.length();

    QPointF edgeOffset(( line.dx() * 10 ) / length, ( line.dy() * 10 ) / length );

    prepareGeometryChange(); //prepareGeometryChange() will call update() if this is necessary
    m_sourcePoint = line.p1() + edgeOffset;
    m_destPoint = line.p2() - edgeOffset;
}
Example #6
0
 void Edge::adjust()
 {
     if (!source || !dest)
         return;

     QLineF line(mapFromItem(source, 0, 0), mapFromItem(dest, 0, 0));
     qreal length = line.length();
     QPointF edgeOffset((line.dx() * 30) / length, (line.dy() * 30) / length);

     prepareGeometryChange();
     sourcePoint = line.p1() + edgeOffset;
     destPoint = line.p2() - edgeOffset;
 }
Example #7
0
void Edge::adjust()
{
    /// sourcePoint=source->myPos;
    /// NOTE: mapfrom Item is the key;)
    QLineF line(mapFromItem(source, 0, 0), mapFromItem(dest, 0, 0));
    //QLineF line(sourcePoint,destPoint);
    qreal length = line.length();
    QPointF edgeOffset((line.dx() * 3) / length, (line.dy() * 3) / length);
    //prepareGeometryChange();
    update();
    sourcePoint = line.p1() ;//+ edgeOffset;
    destPoint = line.p2() ;//- edgeOffset;

}
Example #8
0
void Edge::adjust()
{
    if (!source || !dest)
	return;
    QLineF line(mapFromItem(source, 0, 0), mapFromItem(dest, 0, 0));
    qreal length = line.length();
    prepareGeometryChange();
    if (!qFuzzyCompare(length, qreal(0.0))) {
	QPointF edgeOffset((line.dx() * 10) / length, (line.dy() * 10) / length);
	sourcePoint = line.p1() + edgeOffset;
	destPoint = line.p2() - edgeOffset;
    } else {
	sourcePoint = destPoint = line.p1();
    }
}
void GraphicsEdge<GNode>::adjust()
{
    if (!this->startN || !this->endN)
        return;

    QLineF line(mapFromItem(this->startN, 0, 0), mapFromItem(this->endN, 0, 0));
    qreal length = line.length();

    prepareGeometryChange();

    if (length > qreal(20.)) {
        QPointF edgeOffset((line.dx() * 10) / length, (line.dy() * 10) / length);
        startPoint = line.p1() + edgeOffset;
        endPoint = line.p2() - edgeOffset;
    } else {
        startPoint = endPoint = line.p1();
    }
}
Example #10
0
void Edge::adjust()
{
    if (!srcN_ || !tarN_)
        return;

    QLineF line(mapFromItem(srcN_, 0, 0), mapFromItem(tarN_, 0, 0));
    qreal length = line.length();

    prepareGeometryChange();

    if (length > qreal(20.)) {
        QPointF edgeOffset((line.dx() * 37) / length, (line.dy() * 12) / length);
        srcP_ = line.p1() + edgeOffset;
        tarP_ = line.p2() - edgeOffset;
    } else {
        srcP_ = tarP_ = line.p1();
    }
}
Example #11
0
void WGraphicsArrowItem::adjust()
{
    if (!m_startNode || !m_endNode)
        return;

    QLineF line(mapFromItem(m_startNode, 0, 0), mapFromItem(m_endNode, 0, 0));
    qreal length = line.length();

    prepareGeometryChange();

    if (length > m_minDisplayableSize) {
        QPointF edgeOffset((line.dx() * 10) / length, (line.dy() * 10) / length);
        m_line.setP1(line.p1() + edgeOffset);
        m_line.setP2(line.p2() - edgeOffset);
    } else {
        m_line.setPoints(line.p1(), line.p1());
    }
}
Example #12
0
void Edge::adjust()
{
    if (!source || !dest)
        return;

    QLineF line(mapFromItem(source, 0, 0), mapFromItem(dest, 0, 0));
    qreal length = line.length();

    prepareGeometryChange();

    int ballSize = source->getBallSize();
    if (length > qreal(ballSize)) {
        QPointF edgeOffset((line.dx() * ballSize/2) / length, (line.dy() * ballSize/2) / length);
        sourcePoint = line.p1() + edgeOffset;
        destPoint = line.p2() - edgeOffset;
    } else {
        sourcePoint = destPoint = line.p1();
    }
}