| 289 | } |
| 290 | |
| 291 | static int CreateBlockStrategyRequests(GDALDataset *poDS, int nMaxRequests, |
| 292 | Request *&psRequestList, |
| 293 | Request *&psRequestLast) |
| 294 | { |
| 295 | int nXSize = poDS->GetRasterXSize(); |
| 296 | int nYSize = poDS->GetRasterYSize(); |
| 297 | int nMaxXWin = std::min(1000, nXSize / 10 + 1); |
| 298 | int nMaxYWin = std::min(1000, nYSize / 10 + 1); |
| 299 | int nQueriedBands = std::min(4, poDS->GetRasterCount()); |
| 300 | int bStop = FALSE; |
| 301 | int nRequests = 0; |
| 302 | for (int iLoop = 0; !bStop && iLoop < nLoops; iLoop++) |
| 303 | { |
| 304 | for (int nYOff = 0; !bStop && nYOff < nYSize; nYOff += nMaxYWin) |
| 305 | { |
| 306 | int nReqYSize = |
| 307 | (nYOff + nMaxYWin > nYSize) ? nYSize - nYOff : nMaxYWin; |
| 308 | for (int nXOff = 0; nXOff < nXSize; nXOff += nMaxXWin) |
| 309 | { |
| 310 | if (nMaxRequests > 0 && nRequests == nMaxRequests) |
| 311 | { |
| 312 | bStop = TRUE; |
| 313 | break; |
| 314 | } |
| 315 | int nReqXSize = |
| 316 | (nXOff + nMaxXWin > nXSize) ? nXSize - nXOff : nMaxXWin; |
| 317 | AddRequest(psRequestList, psRequestLast, nXOff, nYOff, |
| 318 | nReqXSize, nReqYSize, nQueriedBands); |
| 319 | nRequests++; |
| 320 | } |
| 321 | } |
| 322 | } |
| 323 | return nQueriedBands * nMaxXWin * nMaxYWin; |
| 324 | } |
| 325 | |
| 326 | TEST(testblockcache, test) |
| 327 | { |
no test coverage detected