Revision: 20783
          http://sourceforge.net/p/jmol/code/20783
Author:   hansonr
Date:     2015-09-21 12:17:42 +0000 (Mon, 21 Sep 2015)
Log Message:
-----------
DSSR fix; Ras3D reader for DSSR

Modified Paths:
--------------
    trunk/Jmol/src/org/jmol/dssx/DSSR1.java
    trunk/Jmol/src/org/jmol/jvxl/readers/PmeshReader.java
    trunk/Jmol/src/org/jmol/viewer/FileManager.java

Added Paths:
-----------
    trunk/Jmol/src/org/jmol/jvxl/readers/Ras3DReader.java

Modified: trunk/Jmol/src/org/jmol/dssx/DSSR1.java
===================================================================
--- trunk/Jmol/src/org/jmol/dssx/DSSR1.java     2015-09-21 02:16:07 UTC (rev 
20782)
+++ trunk/Jmol/src/org/jmol/dssx/DSSR1.java     2015-09-21 12:17:42 UTC (rev 
20783)
@@ -136,9 +136,9 @@
         if (x != null) {
           info.put("dssr", x);
           setGroup1(vwr.ms, modelIndex);
+          fixDSSRJSONMap(x);
+          setBioPolymers((BioModel) vwr.ms.am[modelIndex], false);
         }
-        fixDSSRJSONMap(x);
-
       } catch (Exception e) {
         info = null;
         out = "" + e;
@@ -240,13 +240,7 @@
     Lst<Map<String, Object>> singles = (info == null ? null
         : (Lst<Map<String, Object>>) info.get("ssSegments"));
     if (pairs == null && singles == null) {
-      BioModel m = (BioModel) vwr.ms.am[modelIndex];
-      int n = m.getBioPolymerCount();
-      for (int i = n; --i >= 0;) {
-        BioPolymer bp = m.bioPolymers[i];
-        if (bp.isNucleic())
-          ((NucleicPolymer) bp).isDssrSet = true;
-      }
+      setBioPolymers((BioModel) vwr.ms.am[modelIndex], true);
       return;
     }
     BS bsAtoms = ms.am[modelIndex].bsAtoms;
@@ -278,6 +272,15 @@
 
   }
 
+  private void setBioPolymers(BioModel m, boolean b) {
+    int n = m.getBioPolymerCount();
+    for (int i = n; --i >= 0;) {
+      BioPolymer bp = m.bioPolymers[i];
+      if (bp.isNucleic())
+        ((NucleicPolymer) bp).isDssrSet = b;
+    }
+  }
+
   private NucleicMonomer setRes(Atom atom) {
     NucleicMonomer m = (NucleicMonomer) atom.group;
     ((NucleicPolymer) m.bioPolymer).isDssrSet = true;

Modified: trunk/Jmol/src/org/jmol/jvxl/readers/PmeshReader.java
===================================================================
--- trunk/Jmol/src/org/jmol/jvxl/readers/PmeshReader.java       2015-09-21 
02:16:07 UTC (rev 20782)
+++ trunk/Jmol/src/org/jmol/jvxl/readers/PmeshReader.java       2015-09-21 
12:17:42 UTC (rev 20783)
@@ -290,11 +290,11 @@
       //             2
       if (vertexCount == 4) {
         nTriangles += 2;
-        addTriangleCheck(vertices[0], vertices[1], vertices[3], 5, color, 
false, -1);
-        addTriangleCheck(vertices[1], vertices[2], vertices[3], 3, color, 
false, -1);
+        addTriangleCheck(vertices[0], vertices[1], vertices[3], 5, 0, false, 
color);
+        addTriangleCheck(vertices[1], vertices[2], vertices[3], 3, 0, false, 
color);
       } else {
         nTriangles++;
-        addTriangleCheck(vertices[0], vertices[1], vertices[2], 7, color, 
false, -1);
+        addTriangleCheck(vertices[0], vertices[1], vertices[2], 7, 0, false, 
color);
       }
     }
     if (isBinary)

Added: trunk/Jmol/src/org/jmol/jvxl/readers/Ras3DReader.java
===================================================================
--- trunk/Jmol/src/org/jmol/jvxl/readers/Ras3DReader.java                       
        (rev 0)
+++ trunk/Jmol/src/org/jmol/jvxl/readers/Ras3DReader.java       2015-09-21 
12:17:42 UTC (rev 20783)
@@ -0,0 +1,150 @@
+/* $RCSfile$
+ * $Author: hansonr $
+ * $Date: 2007-03-30 11:40:16 -0500 (Fri, 30 Mar 2007) $
+ * $Revision: 7273 $
+ *
+ * Copyright (C) 2007 Miguel, Bob, Jmol Development
+ *
+ * Contact: hans...@stolaf.edu
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2.1 of the License, or (at your option) any later version.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+package org.jmol.jvxl.readers;
+
+import java.io.BufferedReader;
+import java.util.Hashtable;
+import java.util.Map;
+
+import javajs.util.CU;
+import javajs.util.P3;
+
+import org.jmol.jvxl.data.JvxlCoder;
+import org.jmol.util.Logger;
+
+/*
+ *
+ */
+
+
+class Ras3DReader extends PolygonFileReader {
+
+  private String pmeshError;
+  private String type;
+  private boolean asQuads; 
+  private int nPolygons;
+
+
+  Ras3DReader(){}
+  
+  @Override
+  void init2(SurfaceGenerator sg, BufferedReader br) {
+    init2PR(sg, br);
+  }
+  
+  protected void init2PR(SurfaceGenerator sg, BufferedReader br) {
+    init2PFR(sg, br);
+    String fileName = (String) ((Object[])sg.getReaderData())[0];
+    if (fileName == null)
+      return;
+    type = "ras3d";
+    setHeader();
+  }
+
+  protected void setHeader() {
+    jvxlFileHeaderBuffer.append(type
+        + " file format\nvertices and triangles only\n");
+    JvxlCoder.jvxlCreateHeaderWithoutTitleOrAtoms(volumeData,
+        jvxlFileHeaderBuffer);
+  }
+
+  @Override
+  void getSurfaceData() throws Exception {
+    if (readVerticesAndPolygons())
+      Logger.info(type  + " file contains "
+          + nVertices + " vertices and " + nPolygons + " polygons for "
+          + nTriangles + " triangles");
+    else
+      Logger.error(params.fileName + ": " 
+          + (pmeshError == null ? "Error reading pmesh data "
+              : pmeshError));
+  }
+
+  protected boolean readVerticesAndPolygons() {
+    try {
+      if (readVertices())
+        return true;
+    } catch (Exception e) {
+      if (pmeshError == null)
+        pmeshError = type  + " ERROR: " + e;
+    }
+    return false;
+  }
+
+  Map<String, Integer> htVertices;
+
+  private boolean readVertices() throws Exception {
+    htVertices = new Hashtable<String, Integer>();
+    int[] v0 = new int[3];
+    int[] v1 = new int[3];
+    int[] v2;
+    int c0 = 0, c1 = 0, c2;
+    if (rd().indexOf("DSSR") >= 0)
+      asQuads = true;
+    while (rd() != null) {
+      while (!line.equals("1")) {
+        rd();
+      }
+      // triangles only
+      rd();
+      String[] tokens = getTokens();
+      v0[0] = getPoint(tokens, 0);
+      v0[1] = getPoint(tokens, 3);
+      v0[2] = getPoint(tokens, 6);
+      nTriangles++;
+      c0 = CU.colorTriadToFFRGB(parseFloatStr(tokens[9]),
+          parseFloatStr(tokens[10]), parseFloatStr(tokens[11]));
+      System.out.println(CU.colorPtFromInt(c0, new P3()));
+      if (asQuads) {
+        if (nTriangles % 2 == 1) {
+          v2 = v1;
+          v1 = v0;
+          v0 = v2;
+          c2 = c1;
+          c1 = c0;
+          c0 = c2;
+          continue;
+        }
+        addTriangleCheck(v0[0], v0[1], v0[2], 6, 0, false, c0);
+        addTriangleCheck(v1[0], v1[1], v1[2], 3, 0, false, c1);
+      } else {        
+        addTriangleCheck(v0[0], v0[1], v0[2], 7, 0, false, c0);
+      }
+      nPolygons++;
+    }
+    return true;
+  }
+
+  private int getPoint(String[] tokens, int i) {
+    String key = tokens[i] + ";" + tokens[i+1] + ";" + tokens[i+2];
+    Integer v = htVertices.get(key);
+    if (v == null) {
+      
addVertexCopy(P3.new3(parseFloatStr(tokens[i]),parseFloatStr(tokens[i+1]),parseFloatStr(tokens[i+2])),
 0, nVertices, false);
+      htVertices.put(key,  v = Integer.valueOf(nVertices++));
+    }
+    return v.intValue();
+  }
+
+
+}


Property changes on: trunk/Jmol/src/org/jmol/jvxl/readers/Ras3DReader.java
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Modified: trunk/Jmol/src/org/jmol/viewer/FileManager.java
===================================================================
--- trunk/Jmol/src/org/jmol/viewer/FileManager.java     2015-09-21 02:16:07 UTC 
(rev 20782)
+++ trunk/Jmol/src/org/jmol/viewer/FileManager.java     2015-09-21 12:17:42 UTC 
(rev 20783)
@@ -1387,6 +1387,8 @@
       return "Nff";
     if (line.indexOf("BEGIN_DATAGRID_3D") >= 0 || 
line.indexOf("BEGIN_BANDGRID_3D") >= 0)
       return "Xsf";
+    if (line.indexOf("tiles in x, y") >= 0)
+      return "Ras3D";
     // binary formats: problem here is that the buffered reader
     // may be translating byte sequences into unicode
     // and thus shifting the offset

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
_______________________________________________
Jmol-commits mailing list
Jmol-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jmol-commits

Reply via email to