@Override protected boolean gotoAndReadVoxelData(boolean isMapData) { initializeVolumetricData(); if (nPointsX < 0 || nPointsY < 0 || nPointsZ < 0) return true; try { gotoData(params.fileIndex - 1, nPointsX * nPointsY * nPointsZ); if (vertexDataOnly) return true; volumeData.setMappingPlane(params.thePlane); readSurfaceData(isMapData); volumeData.setMappingPlane(null); if (edgeDataCount > 0) jvxlEdgeDataRead = jvxlReadFractionData("edge", edgeDataCount); params.bsExcluded = jvxlData.jvxlExcluded = new BS[4]; hasColorData = (colorDataCount > 0); // for nonXML version of JVXL if (hasColorData) jvxlColorDataRead = jvxlReadFractionData("color", colorDataCount); if (excludedVertexCount > 0) { jvxlData.jvxlExcluded[0] = JvxlCoder.jvxlDecodeBitSet(xr.getXmlData("jvxlExcludedVertexData", null, false, false)); if (xr.isNext("jvxlExcludedPlaneData")) jvxlData.jvxlExcluded[2] = JvxlCoder.jvxlDecodeBitSet( xr.getXmlData("jvxlExcludedPlaneData", null, false, false)); } if (excludedTriangleCount > 0) jvxlData.jvxlExcluded[3] = JvxlCoder.jvxlDecodeBitSet( xr.getXmlData("jvxlExcludedTriangleData", null, false, false)); if (invalidatedVertexCount > 0) jvxlData.jvxlExcluded[1] = JvxlCoder.jvxlDecodeBitSet( xr.getXmlData("jvxlInvalidatedVertexData", null, false, false)); if (haveContourData) jvxlDecodeContourData(jvxlData, xr.getXmlData("jvxlContourData", null, false, false)); if (jvxlDataIsColorMapped && jvxlData.nVertexColors > 0) { jvxlData.vertexColorMap = new Hashtable<String, BS>(); String vdata = xr.getXmlData("jvxlVertexColorData", null, true, false); String baseColor = XmlReader.getXmlAttrib(vdata, "baseColor"); jvxlData.baseColor = (baseColor.length() > 0 ? baseColor : null); for (int i = 0; i < jvxlData.nVertexColors; i++) { String s = xr.getXmlData("jvxlColorMap", vdata, true, false); String color = XmlReader.getXmlAttrib(s, "color"); BS bs = JvxlCoder.jvxlDecodeBitSet(xr.getXmlData("jvxlColorMap", s, false, false)); jvxlData.vertexColorMap.put(color, bs); } } } catch (Exception e) { Logger.error(e.toString()); return false; } return true; }