void pipeline_base::order_before(pipeline_base & other) { if (get_node_map()->find_authority() == other.get_node_map()->find_authority()) { tpie::log_debug() << "Ignoring pipeline ordering hint since node maps are already shared" << std::endl; return; } runtime rt1(get_node_map()->find_authority()); runtime rt2(other.get_node_map()->find_authority()); std::vector<node *> mySinks; std::vector<node *> otherSources; rt1.get_item_sinks(mySinks); rt2.get_item_sources(otherSources); if (mySinks.size() == 0) { throw tpie::exception("pipeline::order_before: mySinks is empty"); } if (otherSources.size() == 0) { throw tpie::exception("pipeline::order_before: otherSources is empty"); } for (size_t i = 0; i < otherSources.size(); ++i) { for (size_t j = 0; j < mySinks.size(); ++j) { otherSources[i]->add_dependency(*mySinks[j]); } } }
void ScanWiew::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) { QColor cred(255,0,0); QColor cgreen(0,100,0); QColor cgreen2(0,150,0); QColor cblue(0,0,255); QPen pred(cred); QPen pgreen(cgreen); QPen pgreen2(cgreen2); QPen pblue(cblue); painter->setPen(pgreen); //QFont fcnew("Coruier new", 10, QFont::Normal); QFontMetrics fm(painter->font()); int pixelsHeight = fm.height(); int lineCnt = laserRangeInMeter/arcDistanceInMeter; for(int i = 1; i <= lineCnt; i++) { QRectF rectangle(-(i*arcDistanceInPixels), -(i*arcDistanceInPixels), i*2*arcDistanceInPixels,i*2*arcDistanceInPixels); int spanAngle = endAngle - startAngle+5; painter->drawArc(rectangle, ((int)startAngle+90-5)*16, (spanAngle+5)*16); int x = -::sin((startAngle-5)*TwoPi/360)*(i*arcDistanceInPixels); int y = -::cos((startAngle-5)*TwoPi/360)*(i*arcDistanceInPixels); char str[100]; sprintf(str,"%d",i*(int)arcDistanceInMeter); int pixelsWide = fm.width(str); QPoint ptl(x-pixelsWide,y); QPoint pbr(x,y+pixelsHeight); QRect rt(ptl,pbr); painter->drawText(rt, Qt::AlignCenter, (QString)(str)); x = -::sin((endAngle+5)*TwoPi/360)*(i*arcDistanceInPixels); y = -::cos((endAngle+5)*TwoPi/360)*(i*arcDistanceInPixels); QPoint ptl1(x,y); QPoint pbr1(x+pixelsWide,y+pixelsHeight); QRect rt1(ptl1,pbr1); painter->drawText(rt1, Qt::AlignCenter, (QString)(str)); } lineCnt = (endAngle - startAngle)/angleDelta; double ang = startAngle; int distance = (laserRangeInMeter/arcDistanceInMeter)*arcDistanceInPixels; for(int i = 0; i <= lineCnt ; i++) { painter->setPen(pgreen); int x = -::sin(ang*TwoPi/360)*(distance+5); int y = -::cos(ang*TwoPi/360)*(distance+5); painter->drawLine(0,0,x,y); char str[100]; sprintf(str,"%d",(int)ang); int pixelsWide = fm.width(str); x = -::sin(ang*TwoPi/360)*(distance+20); y = -::cos(ang*TwoPi/360)*(distance+20); QPoint ptl(x-pixelsWide/2,y - pixelsHeight/2); QPoint pbr(x+pixelsWide/2,y+pixelsHeight/2); QRect rt(ptl,pbr); painter->drawText(rt, Qt::AlignCenter, (QString)(str)); ang += angleDelta; } double olcek = arcDistanceInPixels/arcDistanceInMeter; //printf("olcek: %f\n",olcek); pgreen.setWidth(pgreen.width()+2); painter->setPen(pgreen2); for(int i = 0; i < pointCnt; i++) { painter->drawLine(0,0,-plist[i].y*olcek,-plist[i].x*olcek); } painter->setPen(pred); plinel_t *root = g_line_map.first; while(root != NULL) { if(root->line.length > 0.05 && root->point_cnt > 3 )//MIN_LENGTH_LINE_TO_SEND) { painter->drawLine(-root->line.sp.y*olcek,-root->line.sp.x*olcek,-root->line.ep.y*olcek,-root->line.ep.x*olcek); } root = root->next; } }