static CPLErr ConjPixelFunc( void **papoSources, int nSources, void *pData, int nXSize, int nYSize, GDALDataType eSrcType, GDALDataType eBufType, int nPixelSpace, int nLineSpace ) { /* ---- Init ---- */ if( nSources != 1 ) return CE_Failure; if( GDALDataTypeIsComplex( eSrcType ) && GDALDataTypeIsComplex( eBufType ) ) { const int nOffset = GDALGetDataTypeSizeBytes( eSrcType ) / 2; const void * const pReal = papoSources[0]; const void * const pImag = static_cast<GByte *>(papoSources[0]) + nOffset; /* ---- Set pixels ---- */ for( int iLine = 0, ii = 0; iLine < nYSize; ++iLine ) { for( int iCol = 0; iCol < nXSize; ++iCol, ++ii ) { // Source raster pixels may be obtained with SRCVAL macro. const double adfPixVal[2] = { +SRCVAL(pReal, eSrcType, ii), // re -SRCVAL(pImag, eSrcType, ii) // im }; GDALCopyWords( adfPixVal, GDT_CFloat64, 0, static_cast<GByte *>(pData) + nLineSpace * iLine + iCol * nPixelSpace, eBufType, nPixelSpace, 1 ); } } } else { // No complex data type. return RealPixelFunc(papoSources, nSources, pData, nXSize, nYSize, eSrcType, eBufType, nPixelSpace, nLineSpace); } /* ---- Return success ---- */ return CE_None; } // ConjPixelFunc
CPLErr ConjPixelFunc(void **papoSources, int nSources, void *pData, int nXSize, int nYSize, GDALDataType eSrcType, GDALDataType eBufType, int nPixelSpace, int nLineSpace) { /* ---- Init ---- */ if (nSources != 1) return CE_Failure; if (GDALDataTypeIsComplex( eSrcType ) && GDALDataTypeIsComplex( eBufType )) { int iLine, iCol, ii; double adfPixVal[2]; int nOffset = GDALGetDataTypeSize( eSrcType ) / 8 / 2; void *pReal = papoSources[0]; void *pImag = ((GByte *)papoSources[0]) + nOffset; /* ---- Set pixels ---- */ for( iLine = 0, ii= 0; iLine < nYSize; ++iLine ) { for( iCol = 0; iCol < nXSize; ++iCol, ++ii ) { /* Source raster pixels may be obtained with SRCVAL macro */ adfPixVal[0] = +SRCVAL(pReal, eSrcType, ii); /* re */ adfPixVal[1] = -SRCVAL(pImag, eSrcType, ii); /* im */ GDALCopyWords(adfPixVal, GDT_CFloat64, 0, ((GByte *)pData) + nLineSpace * iLine + iCol * nPixelSpace, eBufType, nPixelSpace, 1); } } } else { /* no complex data type */ return RealPixelFunc(papoSources, nSources, pData, nXSize, nYSize, eSrcType, eBufType, nPixelSpace, nLineSpace); } /* ---- Return success ---- */ return CE_None; } /* ConjPixelFunc */