UNPKG

biojs-vis-pdbviewer

Version:

A BioJS 2.0 component to view protein structures

103 lines (102 loc) 3.5 kB
Clazz.declarePackage ("J.jvxl.readers"); Clazz.load (["J.jvxl.readers.PolygonFileReader"], "J.jvxl.readers.Pmesh4Reader", ["JU.CU", "$.P4", "J.jvxl.data.JvxlCoder", "JU.Logger"], function () { c$ = Clazz.decorateAsClass (function () { this.nPolygons = 0; this.pmeshError = null; this.type = null; this.color = 0; this.transparency = 0; this.nX = 0; this.nY = 0; this.tokens = null; this.iToken = 0; Clazz.instantialize (this, arguments); }, J.jvxl.readers, "Pmesh4Reader", J.jvxl.readers.PolygonFileReader); Clazz.prepareFields (c$, function () { this.tokens = new Array (0); }); Clazz.makeConstructor (c$, function () { Clazz.superConstructor (this, J.jvxl.readers.Pmesh4Reader, []); }); Clazz.overrideMethod (c$, "init2", function (sg, br) { this.init2PFR (sg, br); var fileName = (sg.getReaderData ())[0]; if (fileName == null) return; this.params.fullyLit = true; this.type = "pmesh4"; this.jvxlFileHeaderBuffer.append (this.type + " file format\nvertices and triangles only\n"); J.jvxl.data.JvxlCoder.jvxlCreateHeaderWithoutTitleOrAtoms (this.volumeData, this.jvxlFileHeaderBuffer); }, "J.jvxl.readers.SurfaceGenerator,java.io.BufferedReader"); Clazz.overrideMethod (c$, "getSurfaceData", function () { this.readLine (); if (this.readVerticesAndPolygons ()) JU.Logger.info (this.type + " file contains " + this.nVertices + " 4D vertices and " + this.nPolygons + " polygons for " + this.nTriangles + " triangles"); else JU.Logger.error (this.params.fileName + ": " + (this.pmeshError == null ? "Error reading pmesh4 data " : this.pmeshError)); }); Clazz.defineMethod (c$, "readVerticesAndPolygons", function () { try { this.readColor (); this.nY = this.getInt (); this.nX = this.getInt (); this.readVertices (); this.createMesh (); return true; } catch (e) { if (Clazz.exceptionOf (e, Exception)) { if (this.pmeshError == null) this.pmeshError = this.type + " ERROR: " + e; } else { throw e; } } return false; }); Clazz.defineMethod (c$, "readColor", function () { this.color = JU.CU.colorTriadToFFRGB (this.getFloat (), this.getFloat (), this.getFloat ()); this.transparency = this.getFloat (); }); Clazz.defineMethod (c$, "readVertices", function () { this.nVertices = this.nX * this.nY; this.iToken = 2147483647; this.pmeshError = this.type + " ERROR: invalid vertex list"; for (var i = 0; i < this.nVertices; i++) { var pt = JU.P4.new4 (this.getFloat (), this.getFloat (), this.getFloat (), this.getFloat ()); if (JU.Logger.debugging) JU.Logger.debug (i + ": " + pt); this.addVertexCopy (pt, 0, i, false); this.iToken = 2147483647; } this.pmeshError = null; return true; }); Clazz.defineMethod (c$, "createMesh", function () { for (var i = 0; i < this.nX - 1; i++) { for (var j = 0; j < this.nY - 1; j++) { this.nTriangles += 2; this.addTriangleCheck (i * this.nY + j, (i + 1) * this.nY + j, (i + 1) * this.nY + j + 1, 3, 0, false, this.color); this.addTriangleCheck ((i + 1) * this.nY + j + 1, i * this.nY + j + 1, i * this.nY + j, 3, 0, false, this.color); } } }); Clazz.defineMethod (c$, "nextToken", function () { while (this.iToken >= this.tokens.length) { this.iToken = 0; this.readLine (); this.tokens = this.getTokens (); } return this.tokens[this.iToken++]; }); Clazz.defineMethod (c$, "getInt", function () { return this.parseIntStr (this.nextToken ()); }); Clazz.defineMethod (c$, "getFloat", function () { return this.parseFloatStr (this.nextToken ()); }); });