From: <ha...@us...> - 2007-04-02 00:27:30
|
Revision: 7307 http://svn.sourceforge.net/jmol/?rev=7307&view=rev Author: hansonr Date: 2007-04-01 17:27:27 -0700 (Sun, 01 Apr 2007) Log Message: ----------- JVXL refactoring. Modified Paths: -------------- trunk/Jmol/src/org/openscience/jvxl/readers/JvxlReader.java trunk/Jmol/src/org/openscience/jvxl/readers/VolumeDataReader.java trunk/Jmol/src/org/openscience/jvxl/readers/VolumeFileReader.java trunk/Jmol/src/org/openscience/jvxl/readers/VoxelReader.java Modified: trunk/Jmol/src/org/openscience/jvxl/readers/JvxlReader.java =================================================================== --- trunk/Jmol/src/org/openscience/jvxl/readers/JvxlReader.java 2007-04-01 23:06:55 UTC (rev 7306) +++ trunk/Jmol/src/org/openscience/jvxl/readers/JvxlReader.java 2007-04-02 00:27:27 UTC (rev 7307) @@ -336,7 +336,7 @@ return dataOut; } - float getNextVoxelValue() throws Exception { + float getNextVoxelValue(StringBuffer sb) throws Exception { //called by VolumeFileReader.readVoxelData @@ -352,8 +352,8 @@ endOfData = true; nThisValue = 10000; //throw new NullPointerException(); - } else { - surfaceData += line + "\n"; + } else if (sb != null){ + sb.append(line).append('\n'); } } thisInside = !thisInside; Modified: trunk/Jmol/src/org/openscience/jvxl/readers/VolumeDataReader.java =================================================================== --- trunk/Jmol/src/org/openscience/jvxl/readers/VolumeDataReader.java 2007-04-01 23:06:55 UTC (rev 7306) +++ trunk/Jmol/src/org/openscience/jvxl/readers/VolumeDataReader.java 2007-04-02 00:27:27 UTC (rev 7307) @@ -54,48 +54,32 @@ readPlaneData(); return; } + voxelData = volumeData.voxelData; + if (isMapData) + return; + StringBuffer sb = new StringBuffer(); boolean inside = false; int dataCount = 0; - - voxelData = volumeData.voxelData; - if (isMapData || params.thePlane != null) - return; nDataPoints = 0; float cutoff = params.cutoff; boolean isCutoffAbsolute = params.isCutoffAbsolute; - for (int x = 0; x < nPointsX; ++x) { - float[][] plane; - plane = voxelData[x]; - for (int y = 0; y < nPointsY; ++y) { - float[] strip; - strip = plane[y]; + for (int x = 0; x < nPointsX; ++x) + for (int y = 0; y < nPointsY; ++y) for (int z = 0; z < nPointsZ; ++z) { - float voxelValue; - voxelValue = strip[z]; //precalculated ++nDataPoints; - if (inside == isInside(voxelValue, cutoff, isCutoffAbsolute)) { + if (inside == isInside(voxelData[x][y][z], cutoff, isCutoffAbsolute)) { dataCount++; } else { if (dataCount != 0) - surfaceData += " " + dataCount; + sb.append(' ').append(dataCount); dataCount = 1; inside = !inside; } } - } - } - surfaceData += " " + dataCount + "\n"; - jvxlData.jvxlSurfaceData = surfaceData; + sb.append(' ').append(dataCount).append('\n'); + jvxlData.jvxlSurfaceData = sb.toString(); jvxlData.jvxlPlane = params.thePlane; volumeData.setVoxelData(voxelData); - } - - float getVoxelValue(int x, int y, int z) { - return volumeData.voxelData[x][y][z]; - } - - + } } - - Modified: trunk/Jmol/src/org/openscience/jvxl/readers/VolumeFileReader.java =================================================================== --- trunk/Jmol/src/org/openscience/jvxl/readers/VolumeFileReader.java 2007-04-01 23:06:55 UTC (rev 7306) +++ trunk/Jmol/src/org/openscience/jvxl/readers/VolumeFileReader.java 2007-04-02 00:27:27 UTC (rev 7307) @@ -232,47 +232,59 @@ voxelData = new float[nPointsX][][]; nDataPoints = 0; line = ""; - float cutoff = params.cutoff; - boolean isCutoffAbsolute = params.isCutoffAbsolute; - for (int x = 0; x < nPointsX; ++x) { - float[][] plane; - plane = new float[nPointsY][]; - voxelData[x] = plane; - for (int y = 0; y < nPointsY; ++y) { - float[] strip; - strip = new float[nPointsZ]; - plane[y] = strip; - for (int z = 0; z < nPointsZ; ++z) { - float voxelValue = getNextVoxelValue(); - strip[z] = voxelValue; - ++nDataPoints; - if (isMapData || isJvxl && params.thePlane == null) - continue; - - // update surfaceData - - if (inside == isInside(voxelValue, cutoff, isCutoffAbsolute)) { - dataCount++; - } else { - if (dataCount != 0) - surfaceData += " " + dataCount; - dataCount = 1; - inside = !inside; + StringBuffer sb = new StringBuffer(); + boolean collectData = (!isJvxl && params.thePlane == null); + if (isMapData || isJvxl && params.thePlane == null) { + for (int x = 0; x < nPointsX; ++x) { + float[][] plane = new float[nPointsY][]; + voxelData[x] = plane; + for (int y = 0; y < nPointsY; ++y) { + float[] strip = new float[nPointsZ]; + plane[y] = strip; + for (int z = 0; z < nPointsZ; ++z) { + strip[z] = getNextVoxelValue(sb); + ++nDataPoints; } } } + } else { + float cutoff = params.cutoff; + boolean isCutoffAbsolute = params.isCutoffAbsolute; + for (int x = 0; x < nPointsX; ++x) { + float[][] plane; + plane = new float[nPointsY][]; + voxelData[x] = plane; + for (int y = 0; y < nPointsY; ++y) { + float[] strip = new float[nPointsZ]; + plane[y] = strip; + for (int z = 0; z < nPointsZ; ++z) { + float voxelValue = getNextVoxelValue(sb); + strip[z] = voxelValue; + ++nDataPoints; + if (inside == isInside(voxelValue, cutoff, isCutoffAbsolute)) { + dataCount++; + } else { + if (collectData && dataCount != 0) + sb.append(' ').append(dataCount); + dataCount = 1; + inside = !inside; + } + } + } + } } - if (!isJvxl) - surfaceData += " " + dataCount + "\n"; + //Jvxl getNextVoxelValue records the data read on its own. + if (collectData) + sb.append(' ').append(dataCount).append('\n'); if (!isMapData) { - jvxlData.jvxlSurfaceData = (params.thePlane == null ? surfaceData : ""); + jvxlData.jvxlSurfaceData = sb.toString(); jvxlData.jvxlPlane = params.thePlane; } volumeData.setVoxelData(voxelData); } - float getNextVoxelValue() throws Exception { - //overloaded in JvxlReader + float getNextVoxelValue(StringBuffer sb) throws Exception { + //overloaded in JvxlReader, where sb is appended to float voxelValue = 0; if (nSurfaces > 1 && !params.blockCubeData) { for (int i = 1; i < params.fileIndex; i++) Modified: trunk/Jmol/src/org/openscience/jvxl/readers/VoxelReader.java =================================================================== --- trunk/Jmol/src/org/openscience/jvxl/readers/VoxelReader.java 2007-04-01 23:06:55 UTC (rev 7306) +++ trunk/Jmol/src/org/openscience/jvxl/readers/VoxelReader.java 2007-04-02 00:27:27 UTC (rev 7307) @@ -133,7 +133,6 @@ int nBytes; int nDataPoints; - String surfaceData; int nPointsX, nPointsY, nPointsZ; private int edgeCount; @@ -209,7 +208,6 @@ void initializeVolumetricData() { nThisValue = 0; - surfaceData = ""; nPointsX = voxelCounts[0]; nPointsY = voxelCounts[1]; nPointsZ = voxelCounts[2]; @@ -257,8 +255,8 @@ if (inside == isInside(voxelValue, cutoff, isCutoffAbsolute)) { dataCount++; } else { - if (dataCount != 0) - surfaceData += " " + dataCount; + //if (dataCount != 0) + //surfaceData += " " + dataCount; dataCount = 1; inside = !inside; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |