Skip to content

Commit c4c2434

Browse files
authored
Merge pull request #2 from byte-physics/bugfix/fix-pixelsize-vs-datasize
Bugfix/fix pixelsize vs datasize
2 parents 4e82e25 + f9b580c commit c4c2434

File tree

6 files changed

+45
-25
lines changed

6 files changed

+45
-25
lines changed

VC8/brickletconverter.cpp

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -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));

VC8/version.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
version string of the XOP
1010
returned by the GetMtrxFileReaderVersion operation and also used for the resource file
1111
*/
12-
#define MatrixFileReader_XOP_VERSION 0, 2, 6, 0
12+
#define MatrixFileReader_XOP_VERSION 0, 2, 7, 0
1313

1414
// must be convertible to a double
15-
#define MatrixFileReader_XOP_VERSION_STR "0.260\0"
15+
#define MatrixFileReader_XOP_VERSION_STR "0.270\0"

create-public-release.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
set -e
44

5-
lastVersion=0.25.2
6-
newVersion=0.26
5+
lastVersion=0.26
6+
newVersion=0.27
77

88
filesToWatch="VC8 *.txt regression_tests *.pxp *.ihf"
99

matrixfilereader Help.ihf

248 Bytes
Binary file not shown.
13.3 MB
Binary file not shown.

regression_tests/Test_GetBrickletData.ipf

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,11 +226,33 @@ static Function valid_pixelsizes()
226226
CHECK(ItemsInList(S_waveNames) == 4) // we have four trace directions
227227
variable j
228228
for(j = 0; j < ItemsInList(S_waveNames); j+=1)
229-
CHECK_WAVE($StringFromList(j, S_waveNames), NUMERIC_WAVE, minorType = DOUBLE_WAVE)
229+
WAVE wv = $StringFromList(j, S_waveNames)
230+
CHECK_WAVE(wv, NUMERIC_WAVE, minorType = DOUBLE_WAVE)
231+
CHECK_EQUAL_VAR(NumberByKey("pixelSize", note(wv), "=", "\r"), i)
230232
endfor
231233
endfor
232234
End
233235

236+
static Function pixelsize_too_large_and_ignored()
237+
Struct errorCode err
238+
initStruct(err)
239+
240+
MFR_OpenResultFile/K folder + file
241+
CHECK_EQUAL_VAR(err.SUCCESS, V_flag)
242+
243+
variable/G V_MatrixFileReaderOverwrite = 1
244+
245+
MFR_GetBrickletData/S=(10)/R=(39)
246+
CHECK_EQUAL_VAR(err.SUCCESS, V_flag)
247+
CHECK(ItemsInList(S_waveNames) == 4) // we have four trace directions
248+
variable j
249+
for(j = 0; j < ItemsInList(S_waveNames); j+=1)
250+
WAVE wv = $StringFromList(j, S_waveNames)
251+
CHECK_WAVE(wv, NUMERIC_WAVE, minorType = DOUBLE_WAVE)
252+
CHECK_EQUAL_VAR(NumberByKey("pixelSize", note(wv), "=", "\r"), 1)
253+
endfor
254+
End
255+
234256
static Function valid_ps_with_liberal_names()
235257
Struct errorCode err
236258
initStruct(err)

0 commit comments

Comments
 (0)