void MultiDefinition::setItems( QValueVector<multiItem_st> items ) { // try to sort if ( items.empty() ) return; unsigned int i = 0; int max_X = 0, max_Y = 0, min_X = 0, min_Y = 0; for (; i < items.size(); ++i) { if ( items[max_X].x < items[i].x ) max_X = i; if ( items[max_Y].y < items[i].y ) max_Y = i; if ( items[min_X].x > items[i].x ) min_X = i; if ( items[min_Y].y > items[i].y ) min_Y = i; } // by now we have the dimensions. this->width = items[max_X].x + abs(items[min_X].x); this->height = items[max_Y].y + abs(items[min_Y].y); entries = items; }
void MultiDefinition::setItems( const QValueVector<multiItem_st>& items ) { // try to sort if ( items.empty() ) return; unsigned int i = 0; for ( ; i < items.size(); ++i ) { if ( items[i].x < left ) left = items[i].x; else if ( items[i].x > right ) right = items[i].x; if ( items[i].y < top ) top = items[i].y; else if ( items[i].y > bottom ) bottom = items[i].y; } // by now we have the dimensions. this->width = abs( right - left ) + 1; this->height = abs( bottom - top ) + 1; // copy into grid grid.resize( width * height ); for ( i = 0; i < items.size(); ++i ) { unsigned int index = ( items[i].y - top ) * width + ( items[i].x - left ); if ( index < grid.size() ) { grid[index].append( items[i] ); } } entries = items; }