void RootPanel::updateUnit(NavUnit *unit) { NodeItem *el = 0; nodeMap.find(unit->getID(), el); UnitLocation loc = unit->getLocation(); //width is incl. borders and text, so correct for this . loc.x_ = (long)loc.x_ % (navview->width() - 40); loc.y_ = (long)loc.y_ % (navview->height() - 80); el->moveBy(loc.x_ - el->pos().x() , loc.y_ - el->pos().y()); el->show(); canvas.update(); if(unit->getID() == 1) { this->details->updateLocation(loc); } }
void Main::addMesh() { int x0 = 0; int y0 = 0; if ( !tb ) tb = new QBrush( Qt::red ); if ( !tp ) tp = new QPen( Qt::black ); int nodecount = 0; int w = canvas.width(); int h = canvas.height(); const int dist = 30; int rows = h / dist; int cols = w / dist; #ifndef QT_NO_PROGRESSDIALOG QProgressDialog progress( "Creating mesh...", "Abort", rows, this, "progress", TRUE ); #endif QMemArray<NodeItem*> lastRow(cols); for ( int j = 0; j < rows; j++ ) { int n = j%2 ? cols-1 : cols; NodeItem *prev = 0; for ( int i = 0; i < n; i++ ) { NodeItem *el = new NodeItem( &canvas ); nodecount++; int r = rand(); int xrand = r %20; int yrand = (r/20) %20; el->move( xrand + x0 + i*dist + (j%2 ? dist/2 : 0 ), yrand + y0 + j*dist ); if ( j > 0 ) { if ( i < cols-1 ) (new EdgeItem( lastRow[i], el, &canvas ))->show(); if ( j%2 ) (new EdgeItem( lastRow[i+1], el, &canvas ))->show(); else if ( i > 0 ) (new EdgeItem( lastRow[i-1], el, &canvas ))->show(); } if ( prev ) { (new EdgeItem( prev, el, &canvas ))->show(); } if ( i > 0 ) lastRow[i-1] = prev; prev = el; el->show(); } lastRow[n-1]=prev; #ifndef QT_NO_PROGRESSDIALOG progress.setProgress( j ); if ( progress.wasCancelled() ) break; #endif } #ifndef QT_NO_PROGRESSDIALOG progress.setProgress( rows ); #endif // qDebug( "%d nodes, %d edges", nodecount, EdgeItem::count() ); }