float getNextVoxelValue() throws Exception {
		if (isJvxl) {
			if (jvxlSurfaceDataCount <= 0)
				return 0f; // unnecessary -- probably a plane
			if (nThisValue == 0) {
				nThisValue = parseInt();
				if (nThisValue == Integer.MIN_VALUE) {
					line = br.readLine();
					if (line == null || (nThisValue = parseInt(line)) == Integer.MIN_VALUE) {
						if (!endOfData)
							Logger.error("end of file in JvxlReader?" + " line=" + line);
						endOfData = true;
						nThisValue = 10000;
						// throw new NullPointerException();
					}
					else {
						surfaceData += line + "\n";
					}
				}
				thisInside = !thisInside;
			}
			--nThisValue;
			return (thisInside ? 1f : 0f);
		}
		float voxelValue = parseFloat();
		if (Float.isNaN(voxelValue)) {
			line = br.readLine();
			if (line == null || Float.isNaN(voxelValue = parseFloat(line))) {
				if (!endOfData)
					Logger.warn("end of file reading cube voxel data? nBytes=" + nBytes + " nDataPoints=" + nDataPoints
							+ " (line):" + line);
				endOfData = true;
				line = "0 0 0 0 0 0 0 0 0 0";
			}
			nBytes += line.length() + 1;
		}
		return voxelValue;
	}