UNPKG

biojs-vis-pdbviewer

Version:

A BioJS 2.0 component to view protein structures

96 lines (95 loc) 3.15 kB
Clazz.declarePackage ("J.jvxl.readers"); Clazz.load (["J.jvxl.readers.PmeshReader"], "J.jvxl.readers.ObjReader", ["java.util.Hashtable", "JU.BS", "$.CU", "$.P3", "$.PT"], function () { c$ = Clazz.declareType (J.jvxl.readers, "ObjReader", J.jvxl.readers.PmeshReader); Clazz.makeConstructor (c$, function () { Clazz.superConstructor (this, J.jvxl.readers.ObjReader, []); }); Clazz.overrideMethod (c$, "init2", function (sg, br) { this.init2PR (sg, br); this.type = "obj"; this.setHeader (); }, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); Clazz.overrideMethod (c$, "readVertices", function () { this.pmeshError = "pmesh ERROR: invalid vertex/face list"; var pt = new JU.P3 (); var color = 0; var ia; var ib; var ic; var id = 0; var i = 0; var nPts = 0; var htPymol = new java.util.Hashtable (); var ipt = null; var spt = null; var pymolMap = Clazz.newIntArray (3, 0); var bsOK = new JU.BS (); while (this.readLine () != null) { if (this.line.length < 2 || this.line.charAt (1) != ' ') { if (this.params.readAllData && this.line.startsWith ("usemtl")) color = JU.CU.getArgbFromString ("[x" + this.line.substring (8) + "]"); continue; }switch (this.line.charAt (0)) { case 'v': this.next[0] = 2; pt.set (JU.PT.parseFloatNext (this.line, this.next), JU.PT.parseFloatNext (this.line, this.next), JU.PT.parseFloatNext (this.line, this.next)); var addHt = false; if (htPymol == null) { i = this.nVertices; } else if ((ipt = htPymol.get (spt = "" + pt)) == null) { addHt = true; i = this.nVertices; } else { i = ipt.intValue (); }var j = i; if (i == this.nVertices) { if (this.isAnisotropic) this.setVertexAnisotropy (pt); j = this.addVertexCopy (pt, 0, this.nVertices++, true); if (j >= 0) bsOK.set (i); }pymolMap[nPts % 3] = j; if (addHt) htPymol.put (spt, Integer.$valueOf (i)); nPts++; if (htPymol != null && nPts > 3) htPymol = null; break; case 'f': if (nPts == 3 && this.line.indexOf ("//") < 0) htPymol = null; nPts = 0; this.nPolygons++; var tokens = JU.PT.getTokens (this.line); var vertexCount = tokens.length - 1; if (vertexCount == 4) htPymol = null; if (htPymol == null) { ia = JU.PT.parseInt (tokens[1]) - 1; ib = JU.PT.parseInt (tokens[2]) - 1; ic = JU.PT.parseInt (tokens[3]) - 1; this.pmeshError = " " + ia + " " + ib + " " + ic + " " + this.line; if (!bsOK.get (ia) || !bsOK.get (ib) || !bsOK.get (ic)) continue; if (vertexCount == 4) { id = JU.PT.parseInt (tokens[4]) - 1; var isOK = (bsOK.get (id)); this.nTriangles = this.addTriangleCheck (ia, ib, ic, (isOK ? 3 : 7), 0, false, color); if (isOK) this.nTriangles = this.addTriangleCheck (ia, ic, id, 6, 0, false, color); continue; }} else { ia = pymolMap[0]; ib = pymolMap[1]; ic = pymolMap[2]; if (ia < 0 || ib < 0 || ic < 0) continue; }this.nTriangles = this.addTriangleCheck (ia, ib, ic, 7, 0, false, color); break; case 'g': htPymol = null; if (this.params.readAllData) color = JU.CU.getArgbFromString ("[x" + this.line.substring (3) + "]"); break; } } this.pmeshError = null; return true; }); Clazz.overrideMethod (c$, "readPolygons", function () { return true; }); });