Revision: 18577 http://sourceforge.net/p/jmol/code/18577 Author: hansonr Date: 2013-08-16 15:01:49 +0000 (Fri, 16 Aug 2013) Log Message: ----------- ___JmolVersion="13.3.4_dev_2013.08.16"
NEW FEATURE: set platformSpeed [0 to 10] (includes wireframeRotation along with cartoons and surfaces) Modified Paths: -------------- trunk/Jmol/src/org/jmol/g3d/Graphics3D.java trunk/Jmol/src/org/jmol/render/BallsRenderer.java trunk/Jmol/src/org/jmol/render/MeshRenderer.java trunk/Jmol/src/org/jmol/render/SticksRenderer.java trunk/Jmol/src/org/jmol/renderbio/BioShapeRenderer.java trunk/Jmol/src/org/jmol/renderbio/MeshRibbonRenderer.java trunk/Jmol/src/org/jmol/renderbio/RibbonsRenderer.java trunk/Jmol/src/org/jmol/renderspecial/EllipsoidsRenderer.java trunk/Jmol/src/org/jmol/renderspecial/GeoSurfaceRenderer.java trunk/Jmol/src/org/jmol/script/T.java trunk/Jmol/src/org/jmol/shapesurface/Isosurface.java trunk/Jmol/src/org/jmol/util/GData.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/jmol/viewer/StateManager.java trunk/Jmol/src/org/jmol/viewer/Viewer.java Modified: trunk/Jmol/src/org/jmol/g3d/Graphics3D.java =================================================================== --- trunk/Jmol/src/org/jmol/g3d/Graphics3D.java 2013-08-15 15:23:51 UTC (rev 18576) +++ trunk/Jmol/src/org/jmol/g3d/Graphics3D.java 2013-08-16 15:01:49 UTC (rev 18577) @@ -203,6 +203,7 @@ protected int[] zbuf; protected int[] zbufT; protected int translucencyMask; + private boolean renderLow; //int clipX; //int clipY; @@ -259,9 +260,10 @@ } @Override - public void beginRendering(Matrix3f rotationMatrix, boolean translucentMode, boolean isImageWrite) { + public void beginRendering(Matrix3f rotationMatrix, boolean translucentMode, boolean isImageWrite, boolean renderLow) { if (currentlyRendering) endRendering(); + this.renderLow = renderLow; if (windowWidth != newWindowWidth || windowHeight != newWindowHeight || newAntialiasing != isFullSceneAntialiasingEnabled) { windowWidth = newWindowWidth; @@ -611,7 +613,9 @@ int mask = colix & C.TRANSLUCENT_MASK; if (mask == C.TRANSPARENT) return false; - boolean isTranslucent = mask != 0; + if (renderLow) + mask = 0; + boolean isTranslucent = (mask != 0); isScreened = isTranslucent && mask == C.TRANSLUCENT_SCREENED; if (!checkTranslucent(isTranslucent && !isScreened)) return false; Modified: trunk/Jmol/src/org/jmol/render/BallsRenderer.java =================================================================== --- trunk/Jmol/src/org/jmol/render/BallsRenderer.java 2013-08-15 15:23:51 UTC (rev 18576) +++ trunk/Jmol/src/org/jmol/render/BallsRenderer.java 2013-08-16 15:01:49 UTC (rev 18577) @@ -37,7 +37,7 @@ @Override protected boolean render() { boolean needTranslucent = false; - if (!viewer.getBoolean(T.wireframerotation) || !viewer.getInMotion(true)) { + if (isExport || viewer.checkMotionRendering(T.balls)) { Atom[] atoms = modelSet.atoms; short[] colixes = ((Balls) shape).colixes; BS bsOK = viewer.getRenderableBitSet(); Modified: trunk/Jmol/src/org/jmol/render/MeshRenderer.java =================================================================== --- trunk/Jmol/src/org/jmol/render/MeshRenderer.java 2013-08-15 15:23:51 UTC (rev 18576) +++ trunk/Jmol/src/org/jmol/render/MeshRenderer.java 2013-08-16 15:01:49 UTC (rev 18577) @@ -135,7 +135,7 @@ protected boolean volumeRender; protected BS bsPolygons; protected boolean isTranslucentInherit; - protected boolean wireframeOnly; + protected boolean renderLow; private boolean setVariables() { if (mesh.visibilityFlags == 0) @@ -171,8 +171,8 @@ bsPolygons = (isGhostPass ? mesh.bsSlabGhost : selectedPolyOnly ? mesh.bsSlabDisplay : null); - wireframeOnly = (!isExport && viewer.getBoolean(T.wireframerotation) && viewer.getInMotion(true)); - frontOnly = wireframeOnly || !viewer.getSlabEnabled() && mesh.frontOnly + renderLow = (!isExport && !viewer.checkMotionRendering(T.mesh)); + frontOnly = renderLow || !viewer.getSlabEnabled() && mesh.frontOnly && !mesh.isTwoSided && !selectedPolyOnly; screens = viewer.allocTempScreens(vertexCount); if (frontOnly) @@ -215,11 +215,11 @@ protected void render2b(boolean generateSet) { if (!g3d.setColix(isGhostPass ? mesh.slabColix : colix)) return; - if (mesh.showPoints || mesh.polygonCount == 0) + if (renderLow || mesh.showPoints || mesh.polygonCount == 0) renderPoints(); - if (wireframeOnly || (isGhostPass ? mesh.slabMeshType == T.mesh : mesh.drawTriangles)) + if (!renderLow && (isGhostPass ? mesh.slabMeshType == T.mesh : mesh.drawTriangles)) renderTriangles(false, mesh.showTriangles, false); - if (!wireframeOnly && (isGhostPass ? mesh.slabMeshType == T.fill : mesh.fillTriangles)) + if (!renderLow && (isGhostPass ? mesh.slabMeshType == T.fill : mesh.fillTriangles)) renderTriangles(true, mesh.showTriangles, generateSet); } @@ -242,7 +242,13 @@ if (bsPoints.get(pt)) continue; bsPoints.set(pt); - g3d.fillSphereI(4, screens[pt]); + + if (renderLow) { + P3i s = screens[pt]; + g3d.drawPixel(s.x, s.y, s.z); + } else { + g3d.fillSphereI(4, screens[pt]); + } } } return; @@ -365,7 +371,7 @@ protected void drawTriangle(P3i screenA, short colixA, P3i screenB, short colixB, P3i screenC, short colixC, int check, int diam) { - if (wireframeOnly || !antialias && diam == 1) { + if (!antialias && diam == 1) { g3d.drawTriangle3C(screenA, colixA, screenB, colixB, screenC, colixC, check); return; Modified: trunk/Jmol/src/org/jmol/render/SticksRenderer.java =================================================================== --- trunk/Jmol/src/org/jmol/render/SticksRenderer.java 2013-08-15 15:23:51 UTC (rev 18576) +++ trunk/Jmol/src/org/jmol/render/SticksRenderer.java 2013-08-16 15:01:49 UTC (rev 18577) @@ -60,7 +60,7 @@ private int dx, dy; private int mag2d; private int bondOrder; - private boolean renderWireframe; + private boolean wireframeOnly; private boolean isAntialiased; private boolean slabbing; private boolean slabByAtom; @@ -95,8 +95,7 @@ && modeMultipleBond != JC.MULTIBOND_NEVER && viewer.getBoolean(T.showmultiplebonds)); - renderWireframe = viewer.getInMotion(true) - && viewer.getBoolean(T.wireframerotation); + wireframeOnly = !viewer.checkMotionRendering(T.bonds); ssbondsBackbone = viewer.getBoolean(T.ssbondsbackbone); hbondsBackbone = viewer.getBoolean(T.hbondsbackbone); bondsBackbone = hbondsBackbone | ssbondsBackbone; @@ -250,7 +249,7 @@ dx = xB - xA; dy = yB - yA; width = (int) viewer.scaleToScreen((zA + zB) / 2, mad); - if (renderWireframe && width > 0) + if (wireframeOnly && width > 0) width = 1; if (!isCartesianExport) { asLineOnly = (width <= 1); Modified: trunk/Jmol/src/org/jmol/renderbio/BioShapeRenderer.java =================================================================== --- trunk/Jmol/src/org/jmol/renderbio/BioShapeRenderer.java 2013-08-15 15:23:51 UTC (rev 18576) +++ trunk/Jmol/src/org/jmol/renderbio/BioShapeRenderer.java 2013-08-16 15:01:49 UTC (rev 18577) @@ -108,7 +108,7 @@ isPass2 = g3d.isPass2(); invalidateMesh = false; needTranslucent = false; - boolean TF = (!isExport && viewer.getBoolean(T.wireframerotation) && viewer.getInMotion(true)); + boolean TF = (!isExport && !viewer.checkMotionRendering(T.cartoon)); if (TF != wireframeOnly) invalidateMesh = true; Modified: trunk/Jmol/src/org/jmol/renderbio/MeshRibbonRenderer.java =================================================================== --- trunk/Jmol/src/org/jmol/renderbio/MeshRibbonRenderer.java 2013-08-15 15:23:51 UTC (rev 18576) +++ trunk/Jmol/src/org/jmol/renderbio/MeshRibbonRenderer.java 2013-08-16 15:01:49 UTC (rev 18577) @@ -30,7 +30,10 @@ @Override protected void renderBioShape(BioShape bioShape) { - renderMeshRibbon(); + if (wireframeOnly) + renderStrands(); + else + renderMeshRibbon(); } protected void renderMeshRibbon() { Modified: trunk/Jmol/src/org/jmol/renderbio/RibbonsRenderer.java =================================================================== --- trunk/Jmol/src/org/jmol/renderbio/RibbonsRenderer.java 2013-08-15 15:23:51 UTC (rev 18576) +++ trunk/Jmol/src/org/jmol/renderbio/RibbonsRenderer.java 2013-08-16 15:01:49 UTC (rev 18577) @@ -33,12 +33,9 @@ protected void renderBioShape(BioShape bioShape) { if (wingVectors == null) return; - if (wireframeOnly) { - // renderMeshRibbon(); - strandCount = 1; + if (wireframeOnly) renderStrands(); - return; - } - render2Strand(true, isNucleic ? 1f : 0.5f, isNucleic ? 0f : 0.5f); + else + render2Strand(true, isNucleic ? 1f : 0.5f, isNucleic ? 0f : 0.5f); } } Modified: trunk/Jmol/src/org/jmol/renderspecial/EllipsoidsRenderer.java =================================================================== --- trunk/Jmol/src/org/jmol/renderspecial/EllipsoidsRenderer.java 2013-08-15 15:23:51 UTC (rev 18576) +++ trunk/Jmol/src/org/jmol/renderspecial/EllipsoidsRenderer.java 2013-08-16 15:01:49 UTC (rev 18577) @@ -130,7 +130,7 @@ bGlobals[OPT_BALL] = viewer.getBooleanProperty("ellipsoidBall"); bGlobals[OPT_DOTS] = viewer.getBooleanProperty("ellipsoidDots"); bGlobals[OPT_FILL] = viewer.getBooleanProperty("ellipsoidFill"); - bGlobals[OPT_WIREFRAME] = (viewer.getBoolean(T.wireframerotation) && viewer.getInMotion(true)); + bGlobals[OPT_WIREFRAME] = !isExport && !viewer.checkMotionRendering(T.ellipsoid); diameter0 = Math.round (((Float) viewer.getParameter("ellipsoidAxisDiameter")) .floatValue() * 1000); Matrix4f m4 = viewer.getMatrixtransform(); Modified: trunk/Jmol/src/org/jmol/renderspecial/GeoSurfaceRenderer.java =================================================================== --- trunk/Jmol/src/org/jmol/renderspecial/GeoSurfaceRenderer.java 2013-08-15 15:23:51 UTC (rev 18576) +++ trunk/Jmol/src/org/jmol/renderspecial/GeoSurfaceRenderer.java 2013-08-16 15:01:49 UTC (rev 18577) @@ -24,6 +24,7 @@ package org.jmol.renderspecial; +import org.jmol.script.T; import org.jmol.shapespecial.GeoSurface; import org.jmol.util.BS; import org.jmol.util.C; @@ -45,7 +46,7 @@ @Override protected boolean render() { GeoSurface gs = (GeoSurface) shape; - iShowSolid = !(viewer.getInMotion(true) && gs.ec.getDotsConvexMax() > 100); + iShowSolid = !(!viewer.checkMotionRendering(T.geosurface) && gs.ec.getDotsConvexMax() > 100); if (!iShowSolid) return false; if (!g3d.setColix(C.BLACK)) Modified: trunk/Jmol/src/org/jmol/script/T.java =================================================================== --- trunk/Jmol/src/org/jmol/script/T.java 2013-08-15 15:23:51 UTC (rev 18576) +++ trunk/Jmol/src/org/jmol/script/T.java 2013-08-16 15:01:49 UTC (rev 18577) @@ -903,7 +903,8 @@ public final static int percentvdwatom = intparam | 26; public final static int perspectivemodel = intparam | 27; public final static int phongexponent = intparam | 28; - public final static int pickingspinrate = intparam | 30; + public final static int pickingspinrate = intparam | 29; + public final static int platformspeed = intparam | 30; public final static int propertyatomnumberfield = intparam | 31; public final static int propertyatomnumbercolumncount = intparam | 32; public final static int propertydatacolumncount = intparam | 34; @@ -2223,6 +2224,7 @@ "picking", T.t(picking), "pickingStyle", T.t(pickingstyle), "pickLabel", T.t(picklabel), + "platformSpeed", T.t(platformspeed), "propertyColorScheme", T.t(propertycolorscheme), "quaternionFrame", T.t(quaternionframe), "smilesUrlFormat", T.t(smilesurlformat), Modified: trunk/Jmol/src/org/jmol/shapesurface/Isosurface.java =================================================================== --- trunk/Jmol/src/org/jmol/shapesurface/Isosurface.java 2013-08-15 15:23:51 UTC (rev 18576) +++ trunk/Jmol/src/org/jmol/shapesurface/Isosurface.java 2013-08-16 15:01:49 UTC (rev 18577) @@ -149,7 +149,8 @@ currentMesh = thisMesh = isomeshes[index] = (m == null ? new IsosurfaceMesh( thisID, colix, index) : (IsosurfaceMesh) m); currentMesh.index = index; - sg.setJvxlData(jvxlData = thisMesh.jvxlData); + if (sg != null) + sg.setJvxlData(jvxlData = thisMesh.jvxlData); } @Override Modified: trunk/Jmol/src/org/jmol/util/GData.java =================================================================== --- trunk/Jmol/src/org/jmol/util/GData.java 2013-08-15 15:23:51 UTC (rev 18576) +++ trunk/Jmol/src/org/jmol/util/GData.java 2013-08-16 15:01:49 UTC (rev 18577) @@ -527,8 +527,9 @@ * @param stereoRotationMatrix * @param translucentMode * @param isImageWrite + * @param renderLow TODO */ - public void beginRendering(Matrix3f stereoRotationMatrix, boolean translucentMode, boolean isImageWrite) { + public void beginRendering(Matrix3f stereoRotationMatrix, boolean translucentMode, boolean isImageWrite, boolean renderLow) { } public void endRendering() { Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2013-08-15 15:23:51 UTC (rev 18576) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2013-08-16 15:01:49 UTC (rev 18577) @@ -11,8 +11,9 @@ # The quotes above look odd for a parameter file, but they are # important for the JavaScript version of Jmol. -___JmolVersion="13.3.4_dev_2013.08.15" +___JmolVersion="13.3.4_dev_2013.08.16" +NEW FEATURE: set platformSpeed [0 to 10] (includes wireframeRotation along with cartoons and surfaces) bug fix: binding names not included in SHOW MOUSE bug fix: "single" touch can fire double-click bug fix: {x}.tensor() command fails when no atom tensors Modified: trunk/Jmol/src/org/jmol/viewer/StateManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/StateManager.java 2013-08-15 15:23:51 UTC (rev 18576) +++ trunk/Jmol/src/org/jmol/viewer/StateManager.java 2013-08-16 15:01:49 UTC (rev 18577) @@ -562,7 +562,8 @@ + ";legacyautobonding;legacyhaddition" + ";loglevel;logfile;loggestures;logcommands;measurestylechime" + ";loadformat;loadligandformat;smilesurlformat;pubchemformat;nihresolverformat;edsurlformat;edsurlcutoff;multiprocessor;navigationmode;" - + ";pathforallfiles;perspectivedepth;phongexponent;perspectivemodel;preservestate;refreshing;repaintwaitms;rotationradius" + + ";pathforallfiles;perspectivedepth;phongexponent;perspectivemodel;platformspeed" + + ";preservestate;refreshing;repaintwaitms;rotationradius" + ";showaxes;showaxis1;showaxis2;showaxis3;showboundbox;showfrank;showtiming;showunitcell" + ";slabenabled;slab;slabrange;depth;zshade;zshadepower;specular;specularexponent;specularpercent;celshading;specularpower;stateversion" + ";statusreporting;stereo;stereostate;vibrationperiod" @@ -678,10 +679,12 @@ allowKeyStrokes = g.allowKeyStrokes; legacyAutoBonding = g.legacyAutoBonding; legacyHAddition = g.legacyHAddition; + platformSpeed = g.platformSpeed; useScriptQueue = g.useScriptQueue; useArcBall = g.useArcBall; databases = g.databases; showTiming = g.showTiming; + wireframeRotation = g.wireframeRotation; } if (databases == null) { databases = new Hashtable<String, String>(); @@ -1106,6 +1109,7 @@ boolean isosurfaceKey = false; boolean isosurfacePropertySmoothing = true; int isosurfacePropertySmoothingPower = 7; + int platformSpeed = 10; // 1 (slow) to 10 (fast) public int repaintWaitMs = 1000; boolean showHiddenSelectionHalos = false; boolean showKeyStrokes = true; Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2013-08-15 15:23:51 UTC (rev 18576) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2013-08-16 15:01:49 UTC (rev 18577) @@ -3980,6 +3980,7 @@ public void setInMotion(boolean inMotion) { if (this.inMotion ^ inMotion) { this.inMotion = inMotion; + resizeImage(0, 0, false, false, true); // for antialiasdisplay if (inMotion) { startHoverWatcher(false); ++motionEventNumber; @@ -4164,7 +4165,8 @@ return; if (!isExport && !isImageWrite) setShapeProperty(JC.SHAPE_LABELS, "clearBoxes", null); - antialiasDisplay = (isReset ? global.antialiasDisplay : isImageWrite + antialiasDisplay = (isReset ? global.antialiasDisplay + && checkMotionRendering(T.antialiasdisplay) : isImageWrite && !isExport ? global.antialiasImages : false); imageFontScaling = (isReset || width <= 0 ? 1 : (global.zoomLarge == (height > width) ? height : width) @@ -4325,8 +4327,7 @@ private void beginRendering(boolean isDouble, boolean isImageWrite) { gdata.beginRendering(transformManager.getStereoRotationMatrix(isDouble), - global.translucent, - isImageWrite); + global.translucent, isImageWrite, !checkMotionRendering(T.translucent)); } private boolean antialiasDisplay; @@ -5748,6 +5749,8 @@ return global.percentVdwAtom; case T.pickingspinrate: return global.pickingSpinRate; + case T.platformspeed: + return global.platformSpeed; case T.ribbonaspectratio: return global.ribbonAspectRatio; case T.showscript: @@ -5918,8 +5921,6 @@ return global.vectorSymmetry; case T.waitformoveto: return global.waitForMoveTo; - case T.wireframerotation: - return global.wireframeRotation; case T.zerobasedxyzrasmol: return global.zeroBasedXyzRasmol; } @@ -6431,6 +6432,10 @@ private void setIntPropertyTok(String key, int tok, int value) { switch (tok) { + case T.platformspeed: + // 13.4.4 + global.platformSpeed = Math.min(Math.max(value, 0), 10); // 0 could mean "adjust as needed" + break; case T.meshscale: // 12.3.29 global.meshScale = value; @@ -6862,13 +6867,9 @@ break; case T.antialiasdisplay: // 11.3.36 - setAntialias(0, value); - break; case T.antialiastranslucent: - setAntialias(1, value); - break; case T.antialiasimages: - setAntialias(2, value); + setAntialias(tok, value); break; case T.smartaromatic: // 11.3.29 @@ -7671,21 +7672,20 @@ setShapeSizeRD(JC.SHAPE_BALLS, rd, getModelUndeletedAtomsBitSet(-1)); } - private void setAntialias(int mode, boolean TF) { + private void setAntialias(int tok, boolean TF) { - switch (mode) { - case 0: // display + switch (tok) { + case T.antialiasdisplay: global.antialiasDisplay = TF; break; - case 1: // translucent + case T.antialiastranslucent: global.antialiasTranslucent = TF; break; - case 2: // images + case T.antialiasimages: global.antialiasImages = TF; return; } resizeImage(0, 0, false, false, true); - // requestRepaintAndWait(); } // ////////////////////////////////////////////////////////////// @@ -10277,15 +10277,36 @@ case 0: // off setTimeout("_SET_IN_MOTION_", 0, null); break; - case 1: // start timer - if (getBoolean(T.wireframerotation) && !inMotion) + case 1: // start 1-second timer (by default) + if (!inMotion) setTimeout("_SET_IN_MOTION_", global.hoverDelayMs * 2, "!setInMotion"); break; - case 2: // trigger + case 2: // trigger, from a timeout thread setInMotion(true); refresh(3, "timeoutThread set in motion"); break; } } + public boolean checkMotionRendering(int tok) { + if (!getInMotion(true)) + return true; + if (global.wireframeRotation) + return false; + switch (tok) { + case T.balls: + case T.bonds: + case T.ellipsoid: + return global.platformSpeed >= 3; + case T.cartoon: + case T.geosurface: + return global.platformSpeed >= 5; + case T.mesh: + case T.translucent: + case T.antialiasdisplay: + return global.platformSpeed >= 8; + } + return false; + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Get 100% visibility into Java/.NET code with AppDynamics Lite! It's a free troubleshooting tool designed for production. Get down to code-level detail for bottlenecks, with <2% overhead. Download for free and get started troubleshooting in minutes. http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk _______________________________________________ Jmol-commits mailing list Jmol-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jmol-commits