structure_base.cpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:5k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: structure_base.cpp,v $
  4.  * PRODUCTION Revision 1000.2  2004/06/01 18:29:24  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.14
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: structure_base.cpp,v 1000.2 2004/06/01 18:29:24 gouriano Exp $
  10. * ===========================================================================
  11. *
  12. *                            PUBLIC DOMAIN NOTICE
  13. *               National Center for Biotechnology Information
  14. *
  15. *  This software/database is a "United States Government Work" under the
  16. *  terms of the United States Copyright Act.  It was written as part of
  17. *  the author's official duties as a United States Government employee and
  18. *  thus cannot be copyrighted.  This software/database is freely available
  19. *  to the public for use. The National Library of Medicine and the U.S.
  20. *  Government have not placed any restriction on its use or reproduction.
  21. *
  22. *  Although all reasonable efforts have been taken to ensure the accuracy
  23. *  and reliability of the software and data, the NLM and the U.S.
  24. *  Government do not and cannot warrant the performance or results that
  25. *  may be obtained by using this software or data. The NLM and the U.S.
  26. *  Government disclaim all warranties, express or implied, including
  27. *  warranties of performance, merchantability or fitness for any particular
  28. *  purpose.
  29. *
  30. *  Please cite the author in any work or product based on this material.
  31. *
  32. * ===========================================================================
  33. *
  34. * Authors:  Paul Thiessen
  35. *
  36. * File Description:
  37. *      Base class for structure data
  38. *
  39. * ===========================================================================
  40. */
  41. #ifdef _MSC_VER
  42. #pragma warning(disable:4018)   // disable signed/unsigned mismatch warning in MSVC
  43. #endif
  44. #include <ncbi_pch.hpp>
  45. #include <corelib/ncbistd.hpp>
  46. #include "structure_base.hpp"
  47. #include "structure_set.hpp"
  48. #include "cn3d_tools.hpp"
  49. USING_NCBI_SCOPE;
  50. BEGIN_SCOPE(Cn3D)
  51. const int AtomPntr::NO_ID = -1;
  52. // store children in parent upon construction
  53. StructureBase::StructureBase(StructureBase *parent)
  54. {
  55.     if (parent) {
  56.         parent->_AddChild(this);
  57.         if (!(parentSet = parent->parentSet))
  58.             ERRORMSG("NULL parent->parentSet");
  59.     } else {
  60.         parentSet = NULL;
  61.     }
  62.     _parent = parent;
  63. }
  64. // delete children upon destruction
  65. StructureBase::~StructureBase(void)
  66. {
  67.     _ChildList::iterator i, e=_children.end();
  68.     for (i=_children.begin(); i!=e; ++i)
  69.         delete *i;
  70. }
  71. // draws the object and all its children - halt upon false return from Draw or DrawAll
  72. bool StructureBase::DrawAll(const AtomSet *atomSet) const
  73. {
  74.     if (!parentSet->renderer) return false;
  75.     if (!Draw(atomSet)) return true;
  76.     _ChildList::const_iterator i, e=_children.end();
  77.     for (i=_children.begin(); i!=e; ++i)
  78.         if (!((*i)->DrawAll(atomSet))) return true;
  79. return true;
  80. }
  81. void StructureBase::_AddChild(StructureBase *child)
  82. {
  83.     _children.push_back(child);
  84. }
  85. void StructureBase::_RemoveChild(const StructureBase *child)
  86. {
  87.     _ChildList::iterator i, ie=_children.end();
  88.     for (i=_children.begin(); i!=ie; ++i) {
  89.         if (*i == child) {
  90.             _children.erase(i);
  91.             return;
  92.         }
  93.     }
  94.     WARNINGMSG("attempted to remove non-existent child");
  95. }
  96. END_SCOPE(Cn3D)
  97. /*
  98. * ---------------------------------------------------------------------------
  99. * $Log: structure_base.cpp,v $
  100. * Revision 1000.2  2004/06/01 18:29:24  gouriano
  101. * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.14
  102. *
  103. * Revision 1.14  2004/05/21 21:41:40  gorelenk
  104. * Added PCH ncbi_pch.hpp
  105. *
  106. * Revision 1.13  2004/03/15 18:32:03  thiessen
  107. * prefer prefix vs. postfix ++/-- operators
  108. *
  109. * Revision 1.12  2004/02/19 17:05:14  thiessen
  110. * remove cn3d/ from include paths; add pragma to disable annoying msvc warning
  111. *
  112. * Revision 1.11  2003/02/03 19:20:06  thiessen
  113. * format changes: move CVS Log to bottom of file, remove std:: from .cpp files, and use new diagnostic macros
  114. *
  115. * Revision 1.10  2000/11/30 15:49:40  thiessen
  116. * add show/hide rows; unpack sec. struc. and domain features
  117. *
  118. * Revision 1.9  2000/11/11 21:15:55  thiessen
  119. * create Seq-annot from BlockMultipleAlignment
  120. *
  121. * Revision 1.8  2000/08/18 23:07:09  thiessen
  122. * minor efficiency tweaks
  123. *
  124. * Revision 1.7  2000/08/11 12:58:31  thiessen
  125. * added worm; get 3d-object coords from asn1
  126. *
  127. * Revision 1.6  2000/08/07 00:21:18  thiessen
  128. * add display list mechanism
  129. *
  130. * Revision 1.5  2000/08/04 22:49:04  thiessen
  131. * add backbone atom classification and selection feedback mechanism
  132. *
  133. * Revision 1.4  2000/08/03 15:12:23  thiessen
  134. * add skeleton of style and show/hide managers
  135. *
  136. * Revision 1.3  2000/07/16 23:19:11  thiessen
  137. * redo of drawing system
  138. *
  139. * Revision 1.2  2000/07/11 13:45:31  thiessen
  140. * add modules to parse chemical graph; many improvements
  141. *
  142. * Revision 1.1  2000/07/01 15:47:18  thiessen
  143. * major improvements to StructureBase functionality
  144. *
  145. */