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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: feature.cpp,v $
  4.  * PRODUCTION Revision 1000.0  2004/06/01 21:20:26  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [GCC34_MSVC7] Dev-tree R1.2
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: feature.cpp,v 1000.0 2004/06/01 21:20:26 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:  Mike DiCuccio
  35.  *
  36.  * File Description:
  37.  *    CLayoutFeat -- utility class to arrange CSeq_feat objects in hierarchical
  38.  *                (tree) order.
  39.  */
  40. #include <ncbi_pch.hpp>
  41. #include <gui/objutils/feature.hpp>
  42. #include <gui/objutils/utils.hpp>
  43. #include <algorithm>
  44. #include <objects/seqfeat/Seq_feat.hpp>
  45. #include <objects/seqfeat/SeqFeatData.hpp>
  46. #include <objects/seqloc/Seq_loc.hpp>
  47. #include <objects/seqloc/Seq_interval.hpp>
  48. #include <objmgr/util/sequence.hpp>
  49. #include <objmgr/util/feature.hpp>
  50. #include <serial/iterator.hpp>
  51. BEGIN_NCBI_SCOPE
  52. USING_SCOPE(objects);
  53. //
  54. // simple functor for sorting CRange<> objects
  55. //
  56. template <class T>
  57. struct SRangeSorter
  58. {
  59.     bool operator() (const CRange<T>& r0, const CRange<T>& r1) const
  60.     {
  61.         if (r0.GetFrom() < r1.GetFrom()) {
  62.             return true;
  63.         }
  64.         if (r0.GetFrom() > r1.GetFrom()) {
  65.             return false;
  66.         }
  67.         if (r0.GetTo() < r1.GetTo()) {
  68.             return true;
  69.         }
  70.         return false;
  71.     }
  72. };
  73. //
  74. // CLayoutFeat::CLayoutFeat()
  75. //
  76. CLayoutFeat::CLayoutFeat(const CMappedFeat& f)
  77.     : m_Feature(f),
  78.       m_Parent(NULL)
  79. {
  80.     m_HideLabel = false; // always show labels by default
  81.     // ...and we precompute the label for this feature
  82.     //feature::GetLabel(m_Feature.GetOriginalFeature(), &m_TextId, feature::eBoth);
  83. }
  84. // Access the sub-intervals in this feature
  85. void CLayoutFeat::x_CalcIntervals(void) const
  86. {
  87.     m_Intervals.clear();
  88.     CSeq_loc_CI iter(GetLocation());
  89.     for ( ;  iter;  ++iter) {
  90.         m_Intervals.push_back(iter.GetRange());
  91.     }
  92. }
  93. END_NCBI_SCOPE
  94. /*
  95.  * ===========================================================================
  96.  * $Log: feature.cpp,v $
  97.  * Revision 1000.0  2004/06/01 21:20:26  gouriano
  98.  * PRODUCTION: IMPORTED [GCC34_MSVC7] Dev-tree R1.2
  99.  *
  100.  * Revision 1.2  2004/05/21 22:27:43  gorelenk
  101.  * Added PCH ncbi_pch.hpp
  102.  *
  103.  * Revision 1.1  2004/04/30 11:48:15  dicuccio
  104.  * Initial commit - split out from src/gui/utils
  105.  *
  106.  * Revision 1.17  2004/02/24 14:35:04  lebedev
  107.  * Option to hide feature label added
  108.  *
  109.  * Revision 1.16  2003/08/22 15:48:12  dicuccio
  110.  * Added 'USING_SCOPE(objects)'
  111.  *
  112.  * Revision 1.15  2003/08/18 14:47:08  dicuccio
  113.  * Changed nales: CFeature -> CLayoutFeat; CAlignment -> CLayoutAlign; CGraph ->
  114.  * CLayoutGraph; CProtProduct -> CLayoutProtProd.
  115.  *
  116.  * Revision 1.14  2003/07/21 19:35:21  dicuccio
  117.  * Changed storage mechanism - CLayoutObject::GetObject() is now pure virtual.
  118.  * Changed CFeature to wrap a CMappedFeat instead of a CSeq_feat / CSeq_loc pair
  119.  *
  120.  * Revision 1.13  2003/07/11 11:43:11  dicuccio
  121.  * Fixed thinko in retrieving intervals - use the *real* location...
  122.  *
  123.  * Revision 1.12  2003/06/10 13:34:42  dicuccio
  124.  * Reworked CFeature to inherit from CLayoutObject.  Removed lots of dead code
  125.  *
  126.  * Revision 1.11  2003/06/02 16:06:25  dicuccio
  127.  * Rearranged src/objects/ subtree.  This includes the following shifts:
  128.  *     - src/objects/asn2asn --> arc/app/asn2asn
  129.  *     - src/objects/testmedline --> src/objects/ncbimime/test
  130.  *     - src/objects/objmgr --> src/objmgr
  131.  *     - src/objects/util --> src/objmgr/util
  132.  *     - src/objects/alnmgr --> src/objtools/alnmgr
  133.  *     - src/objects/flat --> src/objtools/flat
  134.  *     - src/objects/validator --> src/objtools/validator
  135.  *     - src/objects/cddalignview --> src/objtools/cddalignview
  136.  * In addition, libseq now includes six of the objects/seq... libs, and libmmdb
  137.  * replaces the three libmmdb? libs.
  138.  *
  139.  * Revision 1.10  2003/05/07 17:28:40  dicuccio
  140.  * Removed operator<< for CFeature.  Added missing link to xobjutil
  141.  *
  142.  * Revision 1.9  2003/05/07 13:07:29  dicuccio
  143.  * Code clean-up.  Removed dead functions.
  144.  *
  145.  * Revision 1.8  2003/05/07 12:33:38  dicuccio
  146.  * Code clean-up.  Deprecated old feature matching code in favor of library
  147.  * function
  148.  *
  149.  * Revision 1.7  2003/03/11 15:25:12  kuznets
  150.  * iterate -> ITERATE
  151.  *
  152.  * Revision 1.6  2003/02/10 18:10:59  dicuccio
  153.  * Fixed compilation errors relating to change in CFeat_CI API
  154.  *
  155.  * Revision 1.5  2003/01/15 21:15:03  dicuccio
  156.  * Dropped private sort mechanism in favor of standard Seq-feat sort
  157.  *
  158.  * Revision 1.4  2003/01/13 13:10:11  dicuccio
  159.  * Namespace clean-up.  Retired namespace gui -> converted all to namespace
  160.  * ncbi.  Moved all FLUID-generated code into namespace ncbi.
  161.  *
  162.  * Revision 1.3  2002/12/11 19:08:53  dicuccio
  163.  * Added member variables to handle selection a bit more intelligently.
  164.  *
  165.  * Revision 1.2  2002/12/06 14:08:18  dicuccio
  166.  * Moved feature sorting predicates into feature.[h,c]pp
  167.  *
  168.  * Revision 1.1  2002/11/29 15:30:38  dicuccio
  169.  * Initial revision - split out from gui/core/view/graphic
  170.  *
  171.  * Revision 1.5  2002/11/25 20:57:08  dicuccio
  172.  * Minor formatting changes.  Changed resolver to resolve based on the top-level
  173.  * seq-entry.
  174.  *
  175.  * Revision 1.4  2002/11/09 20:57:08  dicuccio
  176.  * Performance improvements:  Implemented smarter widget update (use update
  177.  * flags to specify update conditions); use a more intuitive (and flexible)
  178.  * mechanism to obtain features from the object manager.
  179.  *
  180.  * Revision 1.3  2002/11/08 02:14:42  dicuccio
  181.  * Minor code clean-ups (reformat text, eliminate dead variables, favor NCBI
  182.  * macros)
  183.  *
  184.  * Revision 1.2  2002/11/07 18:48:39  dicuccio
  185.  * Formatting changes: added early escapes for functions containing long if/else
  186.  * clauses.
  187.  *
  188.  * Revision 1.1  2002/11/07 16:27:25  dicuccio
  189.  * Initial revision
  190.  *
  191.  * ===========================================================================
  192.  */