Clazz.declarePackage ("J.export");
Clazz.load (["J.export.__CartesianExporter", "java.util.Hashtable", "J.export.Export3D", "$.___Exporter"], "J.export.JSExporter", ["java.lang.Boolean", "$.Float", "J.export.UseTable"], function () {
c$ = Clazz.decorateAsClass (function () {
this.htSpheresRendered = null;
this.htObjects = null;
this.html5Applet = null;
this.useTable = null;
this.ret = null;
Clazz.instantialize (this, arguments);
}, J["export"], "JSExporter", J["export"].__CartesianExporter);
Clazz.prepareFields (c$, function () {
this.htSpheresRendered =  new java.util.Hashtable ();
this.htObjects =  new java.util.Hashtable ();
this.ret =  new Array (1);
});
Clazz.makeConstructor (c$, 
function () {
Clazz.superConstructor (this, J["export"].JSExporter, []);
});
Clazz.defineMethod (c$, "jsInitExport", 
 function (applet) {
}, "~O");
Clazz.defineMethod (c$, "jsEndExport", 
 function (applet) {
}, "~O");
Clazz.defineMethod (c$, "jsCylinder", 
 function (applet, id, isNew, pt1, pt2, o) {
}, "~O,~S,~B,JU.P3,JU.P3,~A");
Clazz.defineMethod (c$, "jsSphere", 
 function (applet, id, isNew, pt, o) {
}, "~O,~S,~B,JU.T3,~A");
Clazz.defineMethod (c$, "jsSurface", 
function (applet, vertices, normals, indices, nVertices, nPolygons, nFaces, bsPolygons, faceVertexMax, color, vertexColors, polygonColors) {
}, "~O,~A,~A,~A,~N,~N,~N,JU.BS,~N,~N,~A,~A");
Clazz.defineMethod (c$, "jsTriangle", 
function (applet, color, pt1, pt2, pt3) {
}, "~O,~N,JU.T3,JU.T3,JU.T3");
Clazz.overrideMethod (c$, "outputHeader", 
function () {
this.html5Applet = this.vwr.html5Applet;
this.useTable =  new J["export"].UseTable ("JS");
this.htSpheresRendered.clear ();
this.htObjects.clear ();
this.jsInitExport (this.html5Applet);
});
Clazz.overrideMethod (c$, "outputFooter", 
function () {
this.jsEndExport (this.html5Applet);
this.htSpheresRendered.clear ();
this.htObjects.clear ();
this.useTable = null;
});
Clazz.overrideMethod (c$, "outputSphere", 
function (ptCenter, radius, colix, checkRadius) {
var iRad = Math.round (radius * 100);
var check = J["export"].___Exporter.round (ptCenter) + (checkRadius ? " " + iRad : "");
if (this.htSpheresRendered.get (check) != null) return;
this.htSpheresRendered.put (check, Boolean.TRUE);
var found = this.useTable.getDefRet ("S" + colix + "_" + iRad, this.ret);
var o;
if (found) o = this.htObjects.get (this.ret[0]);
 else this.htObjects.put (this.ret[0], o =  Clazz.newArray (-1, [this.getColor (colix), Float.$valueOf (radius)]));
this.jsSphere (this.html5Applet, this.ret[0], !found, ptCenter, o);
}, "JU.P3,~N,~N,~B");
Clazz.overrideMethod (c$, "outputCylinder", 
function (ptCenter, pt1, pt2, colix, endcaps, radius, ptX, ptY, checkRadius) {
if (ptX != null) return false;
var length = pt1.distance (pt2);
var found = this.useTable.getDefRet ("C" + colix + "_" + Math.round (length * 100) + "_" + radius + "_" + endcaps, this.ret);
var o;
if (found) o = this.htObjects.get (this.ret[0]);
 else this.htObjects.put (this.ret[0], o =  Clazz.newArray (-1, [this.getColor (colix), Float.$valueOf (length), Float.$valueOf (radius)]));
this.jsCylinder (this.html5Applet, this.ret[0], !found, pt1, pt2, o);
return true;
}, "JU.P3,JU.P3,JU.P3,~N,~N,~N,JU.P3,JU.P3,~B");
Clazz.overrideMethod (c$, "outputCircle", 
function (pt1, pt2, radius, colix, doFill) {
}, "JU.P3,JU.P3,~N,~N,~B");
Clazz.overrideMethod (c$, "outputEllipsoid", 
function (center, points, colix) {
}, "JU.P3,~A,~N");
Clazz.overrideMethod (c$, "outputCone", 
function (ptBase, ptTip, radius, colix) {
this.outputCylinder (null, ptBase, ptTip, colix, 0, radius, null, null, false);
}, "JU.P3,JU.P3,~N,~N");
Clazz.defineMethod (c$, "getColor", 
 function (colix) {
return Integer.$valueOf (this.gdata.getColorArgbOrGray (colix));
}, "~N");
Clazz.overrideMethod (c$, "outputSurface", 
function (vertices, normals, vertexColixes, indices, polygonColixes, nVertices, nPolygons, nTriangles, bsPolygons, faceVertexMax, colix, colorList, htColixes, offset) {
var vertexColors = this.getColors (vertexColixes);
var polygonColors = this.getColors (polygonColixes);
this.jsSurface (this.html5Applet, vertices, normals, indices, nVertices, nPolygons, nTriangles, bsPolygons, faceVertexMax, this.gdata.getColorArgbOrGray (colix), vertexColors, polygonColors);
}, "~A,~A,~A,~A,~A,~N,~N,~N,JU.BS,~N,~N,JU.Lst,java.util.Map,JU.P3");
Clazz.overrideMethod (c$, "outputTriangle", 
function (pt1, pt2, pt3, colix) {
this.jsTriangle (this.html5Applet, this.gdata.getColorArgbOrGray (colix), pt1, pt2, pt3);
}, "JU.T3,JU.T3,JU.T3,~N");
Clazz.overrideMethod (c$, "outputTextPixel", 
function (pt, argb) {
}, "JU.P3,~N");
Clazz.overrideMethod (c$, "outputFace", 
function (is, coordMap, faceVertexMax) {
}, "~A,~A,~N");
Clazz.defineMethod (c$, "output", 
function (pt) {
}, "JU.T3");
Clazz.overrideMethod (c$, "plotImage", 
function (x, y, z, image, bgcolix, width, height) {
}, "~N,~N,~N,~O,~N,~N,~N");
Clazz.overrideMethod (c$, "plotText", 
function (x, y, z, colix, text, font3d) {
}, "~N,~N,~N,~N,~S,JU.Font");
Clazz.defineMethod (c$, "getColors", 
 function (colixes) {
if (colixes == null) return null;
var colors =  Clazz.newIntArray (colixes.length, 0);
for (var i = colors.length; --i >= 0; ) {
colors[i] = this.gdata.getColorArgbOrGray (colixes[i]);
}
return colors;
}, "~A");
{
{
Jmol && Jmol.GLmol && Jmol.GLmol.extendJSExporter(J.export.JSExporter.prototype);
}}});
