//Method for accessing grid positions. //Basically, this returns an ofxGridSystemArray, which also has an overloaded [] operator. //Usage: grid[2][2] where this will return an ofVec3f for the column 2 and 2 baselines down from top of page. ofxGridSystemArray ofxGridSystem::operator[](int iColumn) { ofxGridSystemArray array; array.x = colX(iColumn); array.leading = leading; array.height = height; return array; }
QList<QRect> QwtDynGridLayout::layoutItems( const QRect &rect, uint numCols ) const { QList<QRect> itemGeometries; if ( numCols == 0 || isEmpty() ) return itemGeometries; uint numRows = itemCount() / numCols; if ( numRows % itemCount() ) numRows++; QVector<int> rowHeight( numRows ); QVector<int> colWidth( numCols ); layoutGrid( numCols, rowHeight, colWidth ); bool expandH, expandV; expandH = expandingDirections() & Qt::Horizontal; expandV = expandingDirections() & Qt::Vertical; if ( expandH || expandV ) stretchGrid( rect, numCols, rowHeight, colWidth ); const int maxCols = d_data->maxCols; d_data->maxCols = numCols; const QRect alignedRect = alignmentRect( rect ); d_data->maxCols = maxCols; const int xOffset = expandH ? 0 : alignedRect.x(); const int yOffset = expandV ? 0 : alignedRect.y(); QVector<int> colX( numCols ); QVector<int> rowY( numRows ); const int xySpace = spacing(); rowY[0] = yOffset + margin(); for ( int r = 1; r < ( int )numRows; r++ ) rowY[r] = rowY[r-1] + rowHeight[r-1] + xySpace; colX[0] = xOffset + margin(); for ( int c = 1; c < ( int )numCols; c++ ) colX[c] = colX[c-1] + colWidth[c-1] + xySpace; const int itemCount = d_data->itemList.size(); for ( int i = 0; i < itemCount; i++ ) { const int row = i / numCols; const int col = i % numCols; QRect itemGeometry( colX[col], rowY[row], colWidth[col], rowHeight[row] ); itemGeometries.append( itemGeometry ); } return itemGeometries; }