From: <ha...@us...> - 2008-11-24 12:39:41
|
Revision: 10361 http://jmol.svn.sourceforge.net/jmol/?rev=10361&view=rev Author: hansonr Date: 2008-11-24 12:39:37 +0000 (Mon, 24 Nov 2008) Log Message: ----------- version=11.6.7_dev stereo, applet status # bug fix: applet improperly reporting status of "quiet" commands # bug fix: stereo not in state # bug fix: stereoDegrees parameter not reported correctly Modified Paths: -------------- branches/v11_6/Jmol/src/org/jmol/shape/BallsRenderer.java branches/v11_6/Jmol/src/org/jmol/viewer/Eval.java branches/v11_6/Jmol/src/org/jmol/viewer/Jmol.properties branches/v11_6/Jmol/src/org/jmol/viewer/JmolConstants.java branches/v11_6/Jmol/src/org/jmol/viewer/StateManager.java branches/v11_6/Jmol/src/org/jmol/viewer/TransformManager.java branches/v11_6/Jmol/src/org/jmol/viewer/TransformManager11.java branches/v11_6/Jmol/src/org/jmol/viewer/Viewer.java Modified: branches/v11_6/Jmol/src/org/jmol/shape/BallsRenderer.java =================================================================== --- branches/v11_6/Jmol/src/org/jmol/shape/BallsRenderer.java 2008-11-24 12:36:10 UTC (rev 10360) +++ branches/v11_6/Jmol/src/org/jmol/shape/BallsRenderer.java 2008-11-24 12:39:37 UTC (rev 10361) @@ -41,7 +41,8 @@ //maxX = minX + rectClip.width; //minY = rectClip.y; //maxY = minY + rectClip.height; - boolean renderBalls = !viewer.getWireframeRotation() || !viewer.getInMotion(); + boolean renderBalls = !viewer.getWireframeRotation() + || !viewer.getInMotion(); slabbing = viewer.getSlabEnabled(); //isNav = viewer.getNavigationMode(); if (slabbing) { @@ -55,7 +56,7 @@ group.setMinZ(Integer.MAX_VALUE); i = Math.max(group.getLastAtomIndex(), i); //just in case! } - + for (int i = atomCount; --i >= 0;) { Atom atom = atoms[i]; if ((atom.getShapeVisibilityFlags() & JmolConstants.ATOM_IN_MODEL) == 0) @@ -66,9 +67,9 @@ atom.setClickable(0); //note that in the case of navigation, //maxZ is set to Integer.MAX_VALUE. - + //if (isNav) - //continue; + //continue; int r = atom.screenDiameter / 2; if (atom.screenZ < minZ - r || atom.screenZ > maxZ + r) continue; @@ -83,23 +84,25 @@ if (z < group.getMinZ()) group.setMinZ(Math.max(1, z)); } - if (renderBalls && atom.screenDiameter > 0 + if (renderBalls && atom.screenDiameter > 0 && (atom.getShapeVisibilityFlags() & myVisibilityFlag) != 0 && g3d.setColix(atom.getColix())) renderBall(atom); } - if (modelSet.getAtomCount() > 0 && viewer.getShowNavigationPoint() && !isGenerator) { - //testing here + if (modelSet.getAtomCount() > 0 + && viewer.getShowNavigationPoint() + && !isGenerator + && g3d.setColix(viewer.getNavigationCentered() ? Graphics3D.GOLD + : Graphics3D.RED)) { Point3f T = new Point3f(viewer.getNavigationOffset()); - int x = Math.max(Math.min(viewer.getScreenWidth(),(int) T.x),0); - int y = Math.max(Math.min(viewer.getScreenHeight(),(int) T.y),0); + int x = Math.max(Math.min(viewer.getScreenWidth(), (int) T.x), 0); + int y = Math.max(Math.min(viewer.getScreenHeight(), (int) T.y), 0); int z = (int) T.z + 1; - if (!g3d.setColix(viewer.getNavigationCentered() ? Graphics3D.GOLD : Graphics3D.RED)) - return; + //TODO: fix for antialiasDisplay g3d.drawRect(x - 10, y, z, 0, 20, 1); g3d.drawRect(x, y - 10, z, 0, 1, 20); - g3d.drawRect(x - 4, y -4, z, 0, 10, 10); + g3d.drawRect(x - 4, y - 4, z, 0, 10, 10); } } Modified: branches/v11_6/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- branches/v11_6/Jmol/src/org/jmol/viewer/Eval.java 2008-11-24 12:36:10 UTC (rev 10360) +++ branches/v11_6/Jmol/src/org/jmol/viewer/Eval.java 2008-11-24 12:39:37 UTC (rev 10361) @@ -3241,73 +3241,54 @@ // stereo color1 color2 6 // stereo redgreen 5 - float degrees = -5; + float degrees = TransformManager.DEFAULT_STEREO_DEGREES; boolean degreesSeen = false; - int[] colors = new int[2]; + int[] colors = null; int colorpt = 0; - String state = ""; for (int i = 1; i < statementLength; ++i) { if (isColorParam(i)) { if (colorpt > 1) error(ERROR_badArgumentCount); + if (colorpt == 0) + colors = new int[2]; + colors[colorpt] = getArgbParam(i); + if (colorpt++ == 0) + colors[1] = ~colors[0]; + i = iToken; if (!degreesSeen) degrees = 3; - colors[colorpt++] = getArgbParam(i); - i = iToken; - if (colorpt == 1) - colors[colorpt] = ~colors[0]; - state += " " + Escape.escapeColor(colors[colorpt - 1]); continue; } switch (getToken(i).tok) { case Token.on: checkLength(2); iToken = 1; - state = " on"; break; case Token.off: checkLength(2); iToken = 1; stereoMode = JmolConstants.STEREO_NONE; - state = " off"; break; case Token.integer: case Token.decimal: degrees = floatParameter(i); degreesSeen = true; - state += " " + degrees; break; case Token.identifier: String id = parameterAsString(i); - state += " " + id; if (!degreesSeen) degrees = 3; - if (id.equalsIgnoreCase("redblue")) { - stereoMode = JmolConstants.STEREO_REDBLUE; + stereoMode = JmolConstants.getStereoMode(id); + if (stereoMode != JmolConstants.STEREO_UNKNOWN) break; - } - if (id.equalsIgnoreCase("redcyan")) { - stereoMode = JmolConstants.STEREO_REDCYAN; - break; - } - if (id.equalsIgnoreCase("redgreen")) { - stereoMode = JmolConstants.STEREO_REDGREEN; - break; - } // fall into default: error(ERROR_invalidArgument); } } - setFloatProperty("stereoDegrees", degrees); - checkLength(iToken + 1); if (isSyntaxCheck) return; - if (colorpt > 0) { - viewer.setStereoMode(colors, state); - } else { - viewer.setStereoMode(stereoMode, state); - } + viewer.setStereoMode(colors, stereoMode, degrees); } private void connect() throws ScriptException { Modified: branches/v11_6/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v11_6/Jmol/src/org/jmol/viewer/Jmol.properties 2008-11-24 12:36:10 UTC (rev 10360) +++ branches/v11_6/Jmol/src/org/jmol/viewer/Jmol.properties 2008-11-24 12:39:37 UTC (rev 10361) @@ -3,6 +3,10 @@ version=11.6.7_dev +# bug fix: applet improperly reporting status of "quiet" commands +# bug fix: stereo not in state +# bug fix: stereoDegrees parameter not reported correctly + # ----------------------------------------------------------------------------- #version=11.6.6 Modified: branches/v11_6/Jmol/src/org/jmol/viewer/JmolConstants.java =================================================================== --- branches/v11_6/Jmol/src/org/jmol/viewer/JmolConstants.java 2008-11-24 12:36:10 UTC (rev 10360) +++ branches/v11_6/Jmol/src/org/jmol/viewer/JmolConstants.java 2008-11-24 12:39:37 UTC (rev 10361) @@ -155,26 +155,26 @@ public static String getDrawTypeName(int drawType) { switch (drawType) { - case JmolConstants.DRAW_MULTIPLE: + case DRAW_MULTIPLE: return "multiple"; - case JmolConstants.DRAW_POINT: + case DRAW_POINT: return "point"; - case JmolConstants.DRAW_LINE: + case DRAW_LINE: return "line"; - case JmolConstants.DRAW_CYLINDER: + case DRAW_CYLINDER: return "cylinder"; - case JmolConstants.DRAW_TRIANGLE: + case DRAW_TRIANGLE: return "triangle"; - case JmolConstants.DRAW_PLANE: + case DRAW_PLANE: return "plane"; - case JmolConstants.DRAW_ARROW: + case DRAW_ARROW: return "arrow"; - case JmolConstants.DRAW_ARC: + case DRAW_ARC: return "arc"; - case JmolConstants.DRAW_CIRCLE: - case JmolConstants.DRAW_CIRCULARPLANE: + case DRAW_CIRCLE: + case DRAW_CIRCULARPLANE: return "circle"; - case JmolConstants.DRAW_CURVE: + case DRAW_CURVE: return "curve"; } return "drawObject"; @@ -2757,7 +2757,7 @@ public final static int SHAPE_MAX = SHAPE_FRANK + 1; public final static boolean isShapeSecondary(int i ) { - return i >= JmolConstants.SHAPE_MIN_SECONDARY && i < JmolConstants.SHAPE_MAX_SECONDARY; + return i >= SHAPE_MIN_SECONDARY && i < SHAPE_MAX_SECONDARY; } // note that these next two arrays *MUST* be in the same sequence @@ -2852,14 +2852,28 @@ //////////////////////////////////////////////////////////////// // Stereo modes //////////////////////////////////////////////////////////////// - public final static int STEREO_NONE = 0; - public final static int STEREO_DOUBLE = 1; - public final static int STEREO_REDCYAN = 2; - public final static int STEREO_REDBLUE = 3; - public final static int STEREO_REDGREEN = 4; - public final static int STEREO_CUSTOM = 5; + final static int STEREO_UNKNOWN = -1; + final static int STEREO_NONE = 0; + final static int STEREO_DOUBLE = 1; + final static int STEREO_REDCYAN = 2; + final static int STEREO_REDBLUE = 3; + final static int STEREO_REDGREEN = 4; + final static int STEREO_CUSTOM = 5; + + private final static String[] stereoModes = + { "OFF", "", "REDCYAN", "REDBLUE", "REDGREEN" }; + static int getStereoMode(String id) { + for (int i = 0; i < STEREO_CUSTOM; i++) + if (id.equalsIgnoreCase(stereoModes[i])) + return i; + return STEREO_UNKNOWN; + } + static String getStereoModeName(int mode) { + return stereoModes[mode]; + } + // all of these things are compile-time constants // if they are false then the compiler should take them away static { Modified: branches/v11_6/Jmol/src/org/jmol/viewer/StateManager.java =================================================================== --- branches/v11_6/Jmol/src/org/jmol/viewer/StateManager.java 2008-11-24 12:36:10 UTC (rev 10360) +++ branches/v11_6/Jmol/src/org/jmol/viewer/StateManager.java 2008-11-24 12:39:37 UTC (rev 10361) @@ -536,7 +536,6 @@ boolean allowRotateSelected = false; boolean perspectiveDepth = true; - int stereoDegrees = 5; float visualRange = 5f; //solvent @@ -649,7 +648,6 @@ boolean navigationPeriodic = false; float navigationSpeed = 5; boolean showNavigationPointAlways = false; - String stereoState = null; // special persistent object characteristics -- bbcage, uccage, axes: @@ -683,8 +681,6 @@ if (backgroundImageFileName != null) appendCmd(str, "background IMAGE /*file*/" + Escape.escape(backgroundImageFileName)); str.append(getSpecularState()); - if (stereoState != null) - appendCmd(str, "stereo" + stereoState); appendCmd(str, "statusReporting = " + statusReporting); if (sfunc != null) str.append("end function;\n\n"); @@ -1236,7 +1232,7 @@ setParameterValue("spinZ", 0); setParameterValue("spinFps", 30); setParameterValue("ssbondsBackbone", ssbondsBackbone); - setParameterValue("stereoDegrees", stereoDegrees); + setParameterValue("stereoDegrees", TransformManager.DEFAULT_STEREO_DEGREES); setParameterValue("statusReporting", statusReporting); setParameterValue("strandCount", strandCountForStrands); setParameterValue("strandCountForStrands", strandCountForStrands); Modified: branches/v11_6/Jmol/src/org/jmol/viewer/TransformManager.java =================================================================== --- branches/v11_6/Jmol/src/org/jmol/viewer/TransformManager.java 2008-11-24 12:36:10 UTC (rev 10360) +++ branches/v11_6/Jmol/src/org/jmol/viewer/TransformManager.java 2008-11-24 12:39:37 UTC (rev 10361) @@ -162,6 +162,13 @@ StateManager.appendCmd(commands, "center " + Escape.escape(fixedRotationCenter)); StateManager.appendCmd(commands, getMoveToText(0, false)); + if (stereoMode != JmolConstants.STEREO_NONE) + StateManager.appendCmd(commands, "stereo " + + (stereoColors == null ? + JmolConstants.getStereoModeName(stereoMode) + : Escape.escapeColor(stereoColors[0]) + + " " + Escape.escapeColor(stereoColors[1])) + + " " + viewer.getStereoDegrees()); if (!isNavigationMode && !zoomEnabled) StateManager.appendCmd(commands, "zoom off"); commands.append(" slab ").append(slabPercentSetting).append(";depth ") @@ -1999,6 +2006,7 @@ // stereo support //////////////////////////////////////////////////////////////// + final static int DEFAULT_STEREO_DEGREES = -5; int stereoMode; int[] stereoColors; @@ -2017,7 +2025,7 @@ void setStereoDegrees(float stereoDegrees) { this.stereoDegrees = stereoDegrees; - this.stereoRadians = stereoDegrees * radiansPerDegree; + stereoRadians = stereoDegrees * radiansPerDegree; } boolean stereoFrame; Modified: branches/v11_6/Jmol/src/org/jmol/viewer/TransformManager11.java =================================================================== --- branches/v11_6/Jmol/src/org/jmol/viewer/TransformManager11.java 2008-11-24 12:36:10 UTC (rev 10360) +++ branches/v11_6/Jmol/src/org/jmol/viewer/TransformManager11.java 2008-11-24 12:39:37 UTC (rev 10361) @@ -742,6 +742,7 @@ float getNavigationOffsetPercent(char XorY) { transformPoint(navigationCenter, navigationOffset); + System.out.println("getNavOffsetPercent" +XorY + " " + width + navigationOffset + navigationCenter); return (XorY == 'X' ? (navigationOffset.x - width / 2f) * 100f / width : (navigationOffset.y - height / 2f) * 100f / height); } Modified: branches/v11_6/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- branches/v11_6/Jmol/src/org/jmol/viewer/Viewer.java 2008-11-24 12:36:10 UTC (rev 10360) +++ branches/v11_6/Jmol/src/org/jmol/viewer/Viewer.java 2008-11-24 12:39:37 UTC (rev 10361) @@ -3487,10 +3487,12 @@ String strErrorMessage = eval.getErrorMessage(); if (isOK) { isScriptQueued = isQueued; - statusManager.setStatusScriptStarted(++scriptIndex, strScript); + if (!isQuiet) + statusManager.setStatusScriptStarted(++scriptIndex, strScript); eval.runEval(checkScriptOnly, !checkScriptOnly || fileOpenCheck, historyDisabled, listCommands); - statusManager.setScriptStatus("Jmol script terminated", eval + if (!isQuiet) + statusManager.setScriptStatus("Jmol script terminated", eval .getErrorMessage(), 1 + eval.getExecutionWalltime()); if (isScriptFile && writeInfo != null) createImage(writeInfo); @@ -4383,7 +4385,7 @@ } if (key.equalsIgnoreCase("stereoDegrees")) { transformManager.setStereoDegrees(value); - return true; + break; } if (key.equalsIgnoreCase("vectorScale")) { //public -- no need to set @@ -5414,7 +5416,7 @@ private void setTransformManagerDefaults() { transformManager.setCameraDepthPercent(global.cameraDepth); transformManager.setPerspectiveDepth(global.perspectiveDepth); - transformManager.setStereoDegrees(global.stereoDegrees); + transformManager.setStereoDegrees(TransformManager.DEFAULT_STEREO_DEGREES); transformManager.setVisualRange(global.visualRange); transformManager.setSpinOn(false); transformManager.setVibrationPeriod(0); @@ -5883,21 +5885,16 @@ // stereo support // ////////////////////////////////////////////////////////////// - void setStereoMode(int stereoMode, String state) { - //Eval -- ok; this is set specially - global.stereoState = state; - transformManager.setStereoMode(stereoMode); + void setStereoMode(int[] twoColors, int stereoMode, float degrees) { + setFloatProperty("stereoDegrees", degrees); setBooleanProperty("greyscaleRendering", stereoMode > JmolConstants.STEREO_DOUBLE); + if (twoColors != null) + transformManager.setStereoMode(twoColors); + else + transformManager.setStereoMode(stereoMode); } - void setStereoMode(int[] twoColors, String state) { - //Eval -- also set specially - global.stereoState = state; - transformManager.setStereoMode(twoColors); - setBooleanProperty("greyscaleRendering", true); - } - int getStereoMode() { return transformManager.stereoMode; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |