⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bond.cpp

📁 ncbi源码
💻 CPP
字号:
/* * =========================================================================== * PRODUCTION $Log: bond.cpp,v $ * PRODUCTION Revision 1000.2  2004/06/01 18:27:52  gouriano * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.21 * PRODUCTION * =========================================================================== *//*  $Id: bond.cpp,v 1000.2 2004/06/01 18:27:52 gouriano Exp $* ===========================================================================**                            PUBLIC DOMAIN NOTICE*               National Center for Biotechnology Information**  This software/database is a "United States Government Work" under the*  terms of the United States Copyright Act.  It was written as part of*  the author's official duties as a United States Government employee and*  thus cannot be copyrighted.  This software/database is freely available*  to the public for use. The National Library of Medicine and the U.S.*  Government have not placed any restriction on its use or reproduction.**  Although all reasonable efforts have been taken to ensure the accuracy*  and reliability of the software and data, the NLM and the U.S.*  Government do not and cannot warrant the performance or results that*  may be obtained by using this software or data. The NLM and the U.S.*  Government disclaim all warranties, express or implied, including*  warranties of performance, merchantability or fitness for any particular*  purpose.**  Please cite the author in any work or product based on this material.** ===========================================================================** Authors:  Paul Thiessen** File Description:*      Classes to hold chemical bonds** ===========================================================================*/#ifdef _MSC_VER#pragma warning(disable:4018)   // disable signed/unsigned mismatch warning in MSVC#endif#include <ncbi_pch.hpp>#include <corelib/ncbistd.hpp>#include <objects/mmdb1/Molecule_id.hpp>#include <objects/mmdb1/Residue_id.hpp>#include <objects/mmdb1/Atom_id.hpp>#include "bond.hpp"#include "atom_set.hpp"#include "structure_set.hpp"#include "coord_set.hpp"#include "opengl_renderer.hpp"#include "chemical_graph.hpp"#include "periodic_table.hpp"#include "style_manager.hpp"#include "molecule.hpp"#include "show_hide_manager.hpp"#include "cn3d_tools.hpp"USING_NCBI_SCOPE;USING_SCOPE(objects);BEGIN_SCOPE(Cn3D)Bond::Bond(StructureBase *parent) : StructureBase(parent), order(eUnknown),    previousVirtual(NULL), nextVirtual(NULL){}const Bond* MakeBond(StructureBase *parent,    int mID1, int rID1, int aID1,    int mID2, int rID2, int aID2,    int bondOrder){    // get StructureObject* parent    const StructureObject *object;    if (!parent->GetParentOfType(&object) || object->coordSets.size() == 0) {        ERRORMSG("Bond() : parent doesn't have any CoordSets");        return NULL;    }    AtomPntr ap1(mID1, rID1, aID1), ap2(mID2, rID2, aID2);    Bond *bond = new Bond(parent);    bond->atom1 = ap1;    bond->atom2 = ap2;    bond->order = static_cast<Bond::eBondOrder>(bondOrder);    return bond;}const Bond* MakeBond(StructureBase *parent,    const CAtom_pntr& atomPtr1, const CAtom_pntr& atomPtr2, int bondOrder){    return MakeBond(parent,        atomPtr1.GetMolecule_id().Get(),        atomPtr1.GetResidue_id().Get(),        atomPtr1.GetAtom_id().Get(),        atomPtr2.GetMolecule_id().Get(),        atomPtr2.GetResidue_id().Get(),        atomPtr2.GetAtom_id().Get(),        bondOrder    );}bool Bond::Draw(const AtomSet *atomSet) const{    if (!parentSet->renderer) {        ERRORMSG("Bond::Draw() - no renderer");        return false;    }    // get AtomCoord* for appropriate altConf    if (!atomSet) {        ERRORMSG("Bond::Draw(data) - NULL AtomSet*");        return false;    }    bool overlayEnsembles = parentSet->showHideManager->OverlayConfEnsembles();    const AtomCoord *a1 = atomSet->GetAtom(atom1, overlayEnsembles, true);    if (!a1) return true;    const AtomCoord *a2 = atomSet->GetAtom(atom2, overlayEnsembles, true);    if (!a2) return true;    // get Style    BondStyle bondStyle;    if (!parentSet->styleManager->GetBondStyle(this, atom1, a1, atom2, a2,            (a1->site - a2->site).length(), &bondStyle))        return false;    // don't show bond if either atom isn't visible    if (bondStyle.end1.style == StyleManager::eNotDisplayed &&        bondStyle.end2.style == StyleManager::eNotDisplayed)        return true;    // get prev, next alphas if drawing worm virtual bond    const Vector *site0 = NULL, *site3 = NULL;    if (bondStyle.end1.style == StyleManager::eLineWormBond ||        bondStyle.end1.style == StyleManager::eThickWormBond ||        bondStyle.end2.style == StyleManager::eLineWormBond ||        bondStyle.end2.style == StyleManager::eThickWormBond) {        if (previousVirtual) {            const AtomCoord *a0 = atomSet->GetAtom(previousVirtual->atom1, overlayEnsembles, true);            if (a0) site0 = &(a0->site);        }        if (!site0) site0 = &(a1->site);        if (nextVirtual) {            const AtomCoord *a3 = atomSet->GetAtom(nextVirtual->atom2, overlayEnsembles, true);            if (a3) site3 = &(a3->site);        }        if (!site3) site3 = &(a2->site);    }    // draw the bond    parentSet->renderer->DrawBond(a1->site, a2->site, bondStyle, site0, site3);    return true;}END_SCOPE(Cn3D)/** ---------------------------------------------------------------------------* $Log: bond.cpp,v $* Revision 1000.2  2004/06/01 18:27:52  gouriano* PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.21** Revision 1.21  2004/05/21 21:41:38  gorelenk* Added PCH ncbi_pch.hpp** Revision 1.20  2004/02/19 17:04:44  thiessen* remove cn3d/ from include paths; add pragma to disable annoying msvc warning** Revision 1.19  2003/06/21 08:18:58  thiessen* show all atoms with coordinates, even if not in all coord sets** Revision 1.18  2003/02/03 19:20:01  thiessen* format changes: move CVS Log to bottom of file, remove std:: from .cpp files, and use new diagnostic macros** Revision 1.17  2001/08/09 19:07:13  thiessen* add temperature and hydrophobicity coloring** Revision 1.16  2001/06/29 18:13:57  thiessen* initial (incomplete) user annotation system** Revision 1.15  2001/03/23 04:18:52  thiessen* parse and display disulfides** Revision 1.14  2000/12/01 19:35:56  thiessen* better domain assignment; basic show/hide mechanism** Revision 1.13  2000/08/25 14:22:00  thiessen* minor tweaks** Revision 1.12  2000/08/24 18:43:52  thiessen* tweaks for transparent sphere display** Revision 1.11  2000/08/11 12:58:31  thiessen* added worm; get 3d-object coords from asn1** Revision 1.10  2000/08/07 00:21:17  thiessen* add display list mechanism** Revision 1.9  2000/08/04 22:49:02  thiessen* add backbone atom classification and selection feedback mechanism** Revision 1.8  2000/08/03 15:12:23  thiessen* add skeleton of style and show/hide managers** Revision 1.7  2000/07/27 13:30:51  thiessen* remove 'using namespace ...' from all headers** Revision 1.6  2000/07/18 16:50:10  thiessen* more friendly rotation center setting** Revision 1.5  2000/07/18 02:41:32  thiessen* fix bug in virtual bonds and altConfs** Revision 1.4  2000/07/17 22:37:17  thiessen* fix vector_math typo; correctly set initial view** Revision 1.3  2000/07/17 04:20:49  thiessen* now does correct structure alignment transformation** Revision 1.2  2000/07/16 23:19:10  thiessen* redo of drawing system** Revision 1.1  2000/07/11 13:45:28  thiessen* add modules to parse chemical graph; many improvements**/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -