@@ -111,16 +111,13 @@ int createEmptyWaves(WaveVec &waves, DataFolderHandle waveFolderHandle, CountInt
111111 return 0 ;
112112}
113113
114- int HandleResamplingIfRequested (DataFolderHandle waveFolderHandle, Wave &wave, int dimension, bool resampleData,
115- int pixelSize)
114+ int HandleResamplingIfRequested (DataFolderHandle waveFolderHandle, Wave &wave, CountInt dimensionSizes[MAX_DIMENSIONS + 1 ], int dimension, bool resampleData, CountInt pixelSize)
116115{
117116 if (!resampleData)
118117 {
119118 return 0 ;
120119 }
121120
122- wave.SetPixelSize (pixelSize);
123-
124121 DEBUGPRINT (" Resampling wave %s with pixelSize=%d" , wave.getWaveName (), pixelSize);
125122
126123 char dataFolderPath[MAXCMDLEN + 1 ];
@@ -135,6 +132,11 @@ int HandleResamplingIfRequested(DataFolderHandle waveFolderHandle, Wave &wave, i
135132 char cmd[MAXCMDLEN + ARRAY_SIZE];
136133 if (dimension == 1 )
137134 {
135+ if ((pixelSize * 15 ) >= dimensionSizes[ROWS])
136+ {
137+ return LA_TOO_FEW_PNTS;
138+ }
139+
138140 // Command: "Resample/DOWN= [...] wave"
139141 sprintf (cmd, " Resample/DOWN={%d} %s" , pixelSize, dataFolderPath);
140142 CatPossiblyQuotedName (cmd, wave.getWaveName ());
@@ -149,6 +151,11 @@ int HandleResamplingIfRequested(DataFolderHandle waveFolderHandle, Wave &wave, i
149151 }
150152 else if (dimension == 2 )
151153 {
154+ if ((pixelSize >= dimensionSizes[ROWS]) || (pixelSize >= dimensionSizes[COLUMNS]))
155+ {
156+ return LA_TOO_FEW_PNTS;
157+ }
158+
152159 // Command: "ImageInterpolate [...] Pixelate"
153160 sprintf (cmd, " ImageInterpolate/PXSZ={%d,%d}/DEST=%sM_PixelatedImage Pixelate %s" , pixelSize, pixelSize,
154161 dataFolderPath, dataFolderPath);
@@ -180,6 +187,7 @@ int HandleResamplingIfRequested(DataFolderHandle waveFolderHandle, Wave &wave, i
180187 }
181188
182189 wave.setWaveHandle (FetchWaveFromDataFolder (waveFolderHandle, wave.getWaveName ()));
190+ wave.SetPixelSize (static_cast <int >(pixelSize));
183191
184192 return 0 ;
185193}
@@ -282,17 +290,12 @@ int createWaves1D(DataFolderHandle baseFolderHandle, DataFolderHandle waveFolder
282290 continue ;
283291 }
284292
285- ret = HandleResamplingIfRequested (waveFolderHandle, *it, 1 , resampleData, pixelSize);
286-
287- if (ret != 0 )
288- {
289- return ret;
290- }
293+ ret = HandleResamplingIfRequested (waveFolderHandle, *it, dimensionSizes, 1 , resampleData, pixelSize);
291294
292295 double xAxisDelta;
293296
294- // also the wave scaling changes if we have resampled the data
295- if (resampleData)
297+ // also the wave scaling changes if we have resampled the data successfully
298+ if (resampleData && ret == 0 )
296299 {
297300 CountInt interpolatedDimSizes[MAX_DIMENSIONS + 1 ];
298301 MemClear (interpolatedDimSizes, sizeof (interpolatedDimSizes));
@@ -582,17 +585,12 @@ int createWaves2D(DataFolderHandle baseFolderHandle, DataFolderHandle waveFolder
582585 continue ;
583586 }
584587
585- ret = HandleResamplingIfRequested (waveFolderHandle, *it, 2 , resampleData, pixelSize);
586-
587- if (ret != 0 )
588- {
589- continue ;
590- }
588+ ret = HandleResamplingIfRequested (waveFolderHandle, *it, dimensionSizes, 2 , resampleData, pixelSize);
591589
592590 double xAxisDelta, yAxisDelta;
593591
594- // also the wave scaling changes if we have resampled the data
595- if (resampleData)
592+ // also the wave scaling changes if we have resampled the data successfully
593+ if (resampleData && ret == 0 )
596594 {
597595 CountInt interpolatedDimSizes[MAX_DIMENSIONS + 1 ];
598596 MemClear (interpolatedDimSizes, sizeof (interpolatedDimSizes));
0 commit comments