| 4780 | /************************************************************************/ |
| 4781 | |
| 4782 | CPLErr GDALRasterBand::TryOverviewRasterIO( |
| 4783 | GDALRWFlag eRWFlag, int nXOff, int nYOff, int nXSize, int nYSize, |
| 4784 | void *pData, int nBufXSize, int nBufYSize, GDALDataType eBufType, |
| 4785 | GSpacing nPixelSpace, GSpacing nLineSpace, GDALRasterIOExtraArg *psExtraArg, |
| 4786 | int *pbTried) |
| 4787 | { |
| 4788 | int nXOffMod = nXOff; |
| 4789 | int nYOffMod = nYOff; |
| 4790 | int nXSizeMod = nXSize; |
| 4791 | int nYSizeMod = nYSize; |
| 4792 | GDALRasterIOExtraArg sExtraArg; |
| 4793 | |
| 4794 | GDALCopyRasterIOExtraArg(&sExtraArg, psExtraArg); |
| 4795 | |
| 4796 | int iOvrLevel = GDALBandGetBestOverviewLevel2( |
| 4797 | this, nXOffMod, nYOffMod, nXSizeMod, nYSizeMod, nBufXSize, nBufYSize, |
| 4798 | &sExtraArg); |
| 4799 | |
| 4800 | if (iOvrLevel >= 0) |
| 4801 | { |
| 4802 | GDALRasterBand *poOverviewBand = GetOverview(iOvrLevel); |
| 4803 | if (poOverviewBand) |
| 4804 | { |
| 4805 | *pbTried = TRUE; |
| 4806 | return poOverviewBand->RasterIO( |
| 4807 | eRWFlag, nXOffMod, nYOffMod, nXSizeMod, nYSizeMod, pData, |
| 4808 | nBufXSize, nBufYSize, eBufType, nPixelSpace, nLineSpace, |
| 4809 | &sExtraArg); |
| 4810 | } |
| 4811 | } |
| 4812 | |
| 4813 | *pbTried = FALSE; |
| 4814 | return CE_None; |
| 4815 | } |
| 4816 | |
| 4817 | /************************************************************************/ |
| 4818 | /* TryOverviewRasterIO() */ |
no test coverage detected