示例#1
0
void
SignalHandle::updateTransform()
{
    bool tmp = moveItem_;
    moveItem_ = false; // set false so itemChange doesn't interrupt
    RSystemElementRoad *road = parentSignalRoadItem_->getRoad();
    setPos(road->getGlobalPoint(0.0));
    setRotation(road->getGlobalHeading(0.0));
    moveItem_ = tmp; // reset
}
示例#2
0
void
SignalHandle::updatePos(SignalRoadItem *signalRoadItem, const QPointF &position, double sStartHint, double sEndHint)
{
    RSystemElementRoad *road = signalRoadItem->getRoad();

    // Calculate road coordinate //
    //
    double s = road->getSFromGlobalPoint(position, sStartHint, sEndHint);

    // Set Item Pose //
    //
    setPos(road->getGlobalPoint(s, 0.0));
    setRotation(road->getGlobalHeading(s));

    // Line that spans the whole road //
    //
    QPainterPath path;
    path.moveTo(0.0, road->getMinWidth(s));
    path.lineTo(0.0, road->getMaxWidth(s));
    path.addPath(*pathTemplate_);
    setPath(path);
}