UNPKG

biojs-vis-pdbviewer

Version:

A BioJS 2.0 component to view protein structures

81 lines (78 loc) 3.24 kB
Clazz.declarePackage ("J.jvxl.readers"); Clazz.load (["J.jvxl.readers.PolygonFileReader"], "J.jvxl.readers.EfvetReader", ["JU.CU", "$.P3", "J.jvxl.data.JvxlCoder", "JU.Logger"], function () { c$ = Clazz.decorateAsClass (function () { this.vertexMap = null; Clazz.instantialize (this, arguments); }, J.jvxl.readers, "EfvetReader", J.jvxl.readers.PolygonFileReader); Clazz.makeConstructor (c$, function () { Clazz.superConstructor (this, J.jvxl.readers.EfvetReader, []); }); Clazz.overrideMethod (c$, "init2", function (sg, br) { this.init2PFR (sg, br); this.jvxlFileHeaderBuffer.append ("efvet file format\nvertices and triangles only\n"); J.jvxl.data.JvxlCoder.jvxlCreateHeaderWithoutTitleOrAtoms (this.volumeData, this.jvxlFileHeaderBuffer); this.hasColorData = true; }, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); Clazz.overrideMethod (c$, "getSurfaceData", function () { this.getHeader (); this.getVertices (); this.getTriangles (); JU.Logger.info ("efvet file contains " + this.nVertices + " vertices and " + this.nTriangles + " triangles"); }); Clazz.defineMethod (c$, "getHeader", function () { this.skipTo ("<efvet", null); while (this.readLine ().length > 0 && this.line.indexOf (">") < 0) this.jvxlFileHeaderBuffer.append ("# " + this.line + "\n"); JU.Logger.info (this.jvxlFileHeaderBuffer.toString ()); }); Clazz.defineMethod (c$, "getVertices", function () { var pt = new JU.P3 (); var value = 0; this.skipTo ("<vertices", "count"); this.jvxlData.vertexCount = this.nVertices = this.parseInt (); this.vertexMap = Clazz.newIntArray (this.nVertices + 1, 0); this.jvxlData.vertexColors = null; if (this.params.fileIndex == 0) { this.jvxlData.vertexColors = Clazz.newIntArray (this.nVertices, 0); this.jvxlData.nVertexColors = 0; }var values = Clazz.newFloatArray (this.jvxlData.vertexColors == null ? 3 : 9, 0); this.skipTo ("property=", null); this.line = this.line.$replace ('"', ' '); var tokens = this.getTokens (); var dataIndex = this.params.fileIndex; if (dataIndex > 0 && dataIndex < tokens.length) JU.Logger.info ("property " + tokens[dataIndex]); else JU.Logger.info (this.line); for (var i = 0; i < this.nVertices; i++) { this.skipTo ("<vertex", "image"); this.parseFloatArray (values, null, ">"); pt.set (values[0], values[1], values[2]); this.skipTo (null, "property"); for (var j = 0; j < dataIndex; j++) value = this.parseFloat (); if (this.isAnisotropic) this.setVertexAnisotropy (pt); var v = this.vertexMap[i + 1] = this.addVC (pt, value, i, true); if (v >= 0 && this.jvxlData.vertexColors != null) { this.jvxlData.vertexColors[v] = JU.CU.colorTriadToFFRGB (values[6], values[7], values[8]); this.jvxlData.nVertexColors++; }} }); Clazz.defineMethod (c$, "getTriangles", function () { this.skipTo ("<triangle_array", "count"); this.nTriangles = this.parseInt (); for (var i = 0; i < this.nTriangles; i++) { this.skipTo ("<triangle", "vertex"); var a = this.getInt (); var b = this.getInt (); var c = this.getInt (); if (a >= 0 && b >= 0 && c >= 0) this.addTriangleCheck (a, b, c, 7, 0, false, 0); } }); Clazz.defineMethod (c$, "getInt", function () { return this.vertexMap[this.parseInt ()]; }); });