| 231 | } |
| 232 | |
| 233 | static int CreateRandomStrategyRequests(GDALDataset *poDS, int nMaxRequests, |
| 234 | Request *&psRequestList, |
| 235 | Request *&psRequestLast) |
| 236 | { |
| 237 | unsigned long seed = 1; |
| 238 | int nXSize = poDS->GetRasterXSize(); |
| 239 | int nYSize = poDS->GetRasterYSize(); |
| 240 | int nMaxXWin = std::min(1000, nXSize / 10 + 1); |
| 241 | int nMaxYWin = std::min(1000, nYSize / 10 + 1); |
| 242 | int nQueriedBands = std::min(4, poDS->GetRasterCount()); |
| 243 | int nAverageIterationsToReadWholeFile = |
| 244 | ((nXSize + nMaxXWin / 2 - 1) / (nMaxXWin / 2)) * |
| 245 | ((nYSize + nMaxYWin / 2 - 1) / (nMaxYWin / 2)); |
| 246 | int nLocalLoops = nLoops * nAverageIterationsToReadWholeFile; |
| 247 | for (int iLoop = 0; iLoop < nLocalLoops; iLoop++) |
| 248 | { |
| 249 | if (nMaxRequests > 0 && iLoop == nMaxRequests) |
| 250 | break; |
| 251 | int nXOff = (int)((GIntBig)myrand_r(&seed) * (nXSize - 1) / MYRAND_MAX); |
| 252 | int nYOff = (int)((GIntBig)myrand_r(&seed) * (nYSize - 1) / MYRAND_MAX); |
| 253 | int nXWin = 1 + (int)((GIntBig)myrand_r(&seed) * nMaxXWin / MYRAND_MAX); |
| 254 | int nYWin = 1 + (int)((GIntBig)myrand_r(&seed) * nMaxYWin / MYRAND_MAX); |
| 255 | if (nXOff + nXWin > nXSize) |
| 256 | nXWin = nXSize - nXOff; |
| 257 | if (nYOff + nYWin > nYSize) |
| 258 | nYWin = nYSize - nYOff; |
| 259 | AddRequest(psRequestList, psRequestLast, nXOff, nYOff, nXWin, nYWin, |
| 260 | nQueriedBands); |
| 261 | } |
| 262 | return nQueriedBands * nMaxXWin * nMaxYWin; |
| 263 | } |
| 264 | |
| 265 | static int CreateLineStrategyRequests(GDALDataset *poDS, int nMaxRequests, |
| 266 | Request *&psRequestList, |
no test coverage detected