From: Michael T H. <mic...@us...> - 2004-02-18 01:22:27
|
Update of /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8964/src/org/openscience/jmol/viewer/datamodel Modified Files: Axes.java AxesRenderer.java Bbox.java BboxRenderer.java Shape.java Unitcell.java UnitcellRenderer.java Added Files: Frank.java FrankRenderer.java SelectionIndependentShape.java Log Message: reimplemented Frank ... since I *lost* it :-( added SelectionIndependentShape class ... to better manage colors & sizes colors now work for SelectionIndependentShapes size now works for Axes ... looks cool :-) --- NEW FILE: Frank.java --- /* $RCSfile: Frank.java,v $ * $Author: michaelthoward $ * $Date: 2004/02/18 01:13:14 $ * $Revision: 1.1 $ * * Copyright (C) 2002-2003 The Jmol Development Team * * Contact: jmo...@li... * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA * 02111-1307 USA. */ package org.openscience.jmol.viewer.datamodel; import org.openscience.jmol.viewer.g3d.Colix; public class Frank extends SelectionIndependentShape { void initShape() { colix = Colix.GRAY; } } --- NEW FILE: FrankRenderer.java --- /* $RCSfile: FrankRenderer.java,v $ * $Author: michaelthoward $ * $Date: 2004/02/18 01:13:15 $ * $Revision: 1.1 $ * * Copyright (C) 2002-2003 The Jmol Development Team * * Contact: jmo...@li... * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA * 02111-1307 USA. */ package org.openscience.jmol.viewer.datamodel; import org.openscience.jmol.viewer.*; import org.openscience.jmol.viewer.g3d.Graphics3D; import java.awt.Rectangle; import java.awt.Font; import java.awt.FontMetrics; import javax.vecmath.Point3f; import javax.vecmath.Point3i; class FrankRenderer extends ShapeRenderer { private final static String frankString = "Jmol"; private final static String frankFontName = "Serif"; private final static int frankFontStyle = Font.BOLD; private final static int frankFontSize = 14; private final static int frankMargin = 4; Font frankFont; int frankWidth; int frankDescent; void render() { Frank frank = (Frank)shape; if (! frank.show) return; if (frankFont == null) { frankFont = new Font(frankFontName, frankFontStyle, frankFontSize); FontMetrics fm = g3d.getFontMetrics(frankFont); frankWidth = fm.stringWidth(frankString); frankDescent = fm.getDescent(); } g3d.setFont(frankFont); g3d.drawString(frankString, frank.colix, g3d.width - frankWidth - frankMargin, g3d.height - frankDescent - frankMargin, 0); } } --- NEW FILE: SelectionIndependentShape.java --- /* $RCSfile: SelectionIndependentShape.java,v $ * $Author: michaelthoward $ * $Date: 2004/02/18 01:13:15 $ * $Revision: 1.1 $ * * Copyright (C) 2003 The Jmol Development Team * * Contact: jmo...@li... * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA * 02111-1307 USA. */ package org.openscience.jmol.viewer.datamodel; import org.openscience.jmol.viewer.*; import org.openscience.jmol.viewer.g3d.*; import java.util.BitSet; abstract public class SelectionIndependentShape extends Shape { short mad; short colix; public void setMad(short mad, BitSet bsSelected) { this.mad = mad; } public void setColix(byte palette, short colix, BitSet bsSelected) { if (palette == JmolConstants.PALETTE_COLOR) this.colix = colix; } } Index: Axes.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel/Axes.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- Axes.java 15 Feb 2004 22:54:28 -0000 1.13 +++ Axes.java 18 Feb 2004 01:13:14 -0000 1.14 @@ -34,7 +34,7 @@ import java.util.BitSet; -public class Axes extends Shape { +public class Axes extends SelectionIndependentShape { final static Point3f[] unitAxisPoints = { new Point3f( 1, 0, 0), @@ -52,7 +52,7 @@ axisPoints[i] = new Point3f(); } - public void initShape() { + void initShape() { originPoint.set(viewer.getBoundingBoxCenter()); Point3f corner = viewer.getBoundingBoxCorner(); for (int i = 6; --i >= 0; ) { @@ -65,6 +65,8 @@ axisPoint.y *= corner.y; axisPoint.z *= corner.z; axisPoint.add(originPoint); + + colix = viewer.getColixAxes(); } } } Index: AxesRenderer.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel/AxesRenderer.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- AxesRenderer.java 15 Feb 2004 22:54:28 -0000 1.8 +++ AxesRenderer.java 18 Feb 2004 01:13:14 -0000 1.9 @@ -43,7 +43,8 @@ void render() { Axes axes = (Axes)shape; - if (! axes.show) + short mad = axes.mad; + if (mad == 0) return; final Point3i[] axisScreens = frameRenderer.getTempScreens(7); final Point3i originScreen = axisScreens[6]; @@ -51,14 +52,20 @@ viewer.transformPoint(axes.originPoint, originScreen); for (int i = 6; --i >= 0; ) viewer.transformPoint(axes.axisPoints[i], axisScreens[i]); - - short colixAxes = viewer.getColixAxes(); - short colixAxesText = viewer.getColixAxesText(); + + int widthPixels = 0; + if (mad > 0) + widthPixels = viewer.scaleToScreen(originScreen.z, mad); + short colix = axes.colix; for (int i = 6; --i >= 0; ) { - g3d.drawDottedLine(colixAxes, originScreen, axisScreens[i]); + if (mad < 0) + g3d.drawDottedLine(colix, originScreen, axisScreens[i]); + else + g3d.fillCylinder(colix, Graphics3D.ENDCAPS_FLAT, + widthPixels, originScreen, axisScreens[i]); String label = axisLabels[i]; if (label != null) - frameRenderer.renderStringOutside(label, colixAxesText, + frameRenderer.renderStringOutside(label, colix, axisFontsize, axisScreens[i], g3d); } } Index: Bbox.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel/Bbox.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- Bbox.java 15 Feb 2004 22:54:28 -0000 1.9 +++ Bbox.java 18 Feb 2004 01:13:14 -0000 1.10 @@ -34,7 +34,7 @@ import java.util.BitSet; -class Bbox extends Shape { +class Bbox extends SelectionIndependentShape { final Point3f[] bboxPoints = new Point3f[8]; { @@ -58,7 +58,7 @@ final static byte edges[] = {0,1, 0,2, 0,4, 1,3, 1,5, 2,3, 2,6, 3,7, 4,5, 4,6, 5,7, 6,7}; - public void initShape() { + void initShape() { Point3f pointOrigin = viewer.getBoundingBoxCenter(); Point3f pointCorner = viewer.getBoundingBoxCorner(); for (int i = 0; i < 8; ++i) { @@ -69,5 +69,6 @@ bboxPoint.z *= pointCorner.z; bboxPoint.add(pointOrigin); } + colix = viewer.getColixAxes(); } } Index: BboxRenderer.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel/BboxRenderer.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- BboxRenderer.java 15 Feb 2004 21:47:40 -0000 1.8 +++ BboxRenderer.java 18 Feb 2004 01:13:14 -0000 1.9 @@ -45,7 +45,7 @@ return; for (int i = 8; --i >= 0; ) viewer.transformPoint(bbox.bboxPoints[i], bboxScreen[i]); - short colix = viewer.getColixAxes(); + short colix = bbox.colix; for (int i = 0; i < 24; i += 2) g3d.drawDottedLine(colix, bboxScreen[bbox.edges[i]], Index: Shape.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel/Shape.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- Shape.java 15 Feb 2004 22:54:28 -0000 1.4 +++ Shape.java 18 Feb 2004 01:13:15 -0000 1.5 @@ -41,7 +41,7 @@ initShape(); } - public void initShape() { + void initShape() { } public void setShow(boolean show) { Index: Unitcell.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel/Unitcell.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- Unitcell.java 16 Feb 2004 11:51:09 -0000 1.8 +++ Unitcell.java 18 Feb 2004 01:13:15 -0000 1.9 @@ -31,7 +31,7 @@ import javax.vecmath.Vector3f; import java.util.BitSet; -public class Unitcell extends Shape { +public class Unitcell extends SelectionIndependentShape { boolean hasUnitcell; float a,b,c,alpha,beta,gamma; @@ -41,7 +41,9 @@ final static float toRadians = (float)Math.PI * 2 / 360; - public void initShape() { + void initShape() { + colix = viewer.getColixAxes(); + float[] notionalUnitcell = frame.notionalUnitcell; Matrix3f crystalScaleMatrix = frame.crystalScaleMatrix; Vector3f crystalTranslateVector = frame.crystalTranslateVector; Index: UnitcellRenderer.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/datamodel/UnitcellRenderer.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- UnitcellRenderer.java 15 Feb 2004 21:47:40 -0000 1.3 +++ UnitcellRenderer.java 18 Feb 2004 01:13:15 -0000 1.4 @@ -41,7 +41,7 @@ Point3i[] screens = frameRenderer.getTempScreens(8); for (int i = 8; --i >= 0; ) viewer.transformPoint(unitcell.vertices[i], screens[i]); - short colix = viewer.getColixAxes(); + short colix = unitcell.colix; for (int i = 0; i < 24; i += 2) { Point3i screenA = screens[Bbox.edges[i]]; Point3i screenB = screens[Bbox.edges[i+1]]; |