From: Egon W. <eg...@us...> - 2002-10-27 13:57:07
|
Update of /cvsroot/cdk/cdk/src/org/openscience/cdk/libio/joelib In directory usw-pr-cvs1:/tmp/cvs-serv4996 Modified Files: Convertor.java Log Message: Applied patch by Joerg fixing conversion of coordinates. Index: Convertor.java =================================================================== RCS file: /cvsroot/cdk/cdk/src/org/openscience/cdk/libio/joelib/Convertor.java,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -r1.11 -r1.12 *** Convertor.java 23 Sep 2002 11:16:04 -0000 1.11 --- Convertor.java 27 Oct 2002 13:57:01 -0000 1.12 *************** *** 46,49 **** --- 46,50 ---- * * @author egonw + * @author Joerg K. Wegner <we...@in...> * * @keyword JOELib *************** *** 52,55 **** --- 53,59 ---- public class Convertor { + public static final int COORDINATES_3D = 3; + public static final int COORDINATES_2D = 2; + /** * Converts an org.openscience.cdk.Atom class into a *************** *** 64,70 **** **/ public static JOEAtom convert(Atom atom) { if (atom != null) { JOEAtom convertedAtom = new JOEAtom(); ! if (atom.getPoint3D() != null) { convertedAtom.setVector( atom.getX3D(), --- 68,95 ---- **/ public static JOEAtom convert(Atom atom) { + return convert(atom, -1); + } + + /** + * Converts an org.openscience.cdk.Atom class into a + * joelib.molecule.JOEAtom class. + * + * Conversion includes: + * - atomic number + * - coordinates + * + * @param atom CDK atom to be converted + * @param coordType coordinates to use. if -1 this converter uses the available coordinates. + * If 3D and 2D coordinates are available, the 3D coordinates are used + * @return converted JOELib atom + * + * @see #COORDINATES_3D + * @see #COORDINATES_2D + **/ + public static JOEAtom convert(Atom atom, int coordType) { if (atom != null) { JOEAtom convertedAtom = new JOEAtom(); ! if (coordType == COORDINATES_3D || ! (atom.getPoint3D() != null && coordType != -1)) { convertedAtom.setVector( atom.getX3D(), *************** *** 72,76 **** atom.getZ3D() ); ! } else if (atom.getPoint2D() != null) { convertedAtom.setVector( atom.getX2D(), --- 97,102 ---- atom.getZ3D() ); ! } else if (coordType == COORDINATES_2D || ! (atom.getPoint2D() != null && coordType != -1)) { convertedAtom.setVector( atom.getX2D(), *************** *** 183,196 **** * - bonds * ! * @param atom class to be converted ! * @return converted class in JOELib **/ public static JOEMol convert(Molecule mol) { if (mol != null) { JOEMol converted = new JOEMol(); int NOatoms = mol.getAtomCount(); for (int i=0; i<NOatoms; i++) { ! converted.addAtom(convert(mol.getAtomAt(i))); } double[][] matrix = mol.getConnectionMatrix(); for (int i=0; i<NOatoms-1; i++) { --- 209,255 ---- * - bonds * ! * @param mol molecule to be converted ! * @return converted JOELib molecule ! * ! * @see #COORDINATES_3D ! * @see #COORDINATES_2D **/ public static JOEMol convert(Molecule mol) { + return convert(mol, -1); + } + + /** + * Converts an org.openscience.cdk.Molecule class into a + * joelib.molecule.JOEMol class. + * + * Conversion includes: + * - atoms + * - bonds + * + * + * @param atom class to be converted + * @param coordType coordinates to use. if -1 this converter uses the available coordinates. + * If 3D and 2D coordinates are available, the 3D coordinates are used + * @return converted class in JOELib + * + * @see #COORDINATES_3D + * @see #COORDINATES_2D + **/ + public static JOEMol convert(Molecule mol, int coordType) { if (mol != null) { JOEMol converted = new JOEMol(); + + // start molecule modification + converted.beginModify(); + int NOatoms = mol.getAtomCount(); + + // add atoms + converted.reserveAtoms(NOatoms); for (int i=0; i<NOatoms; i++) { ! converted.addAtom(convert(mol.getAtomAt(i), coordType)); } + + // add bonds double[][] matrix = mol.getConnectionMatrix(); for (int i=0; i<NOatoms-1; i++) { |