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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: histogram.hpp,v $
  4.  * PRODUCTION Revision 1000.0  2004/06/01 19:55:12  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [GCC34_MSVC7] Dev-tree R1.4
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef GUI_OBJUTILS___HISTOGRAM__HPP
  10. #define GUI_OBJUTILS___HISTOGRAM__HPP
  11. /*  $Id: histogram.hpp,v 1000.0 2004/06/01 19:55:12 gouriano Exp $
  12.  * ===========================================================================
  13.  *
  14.  *                            PUBLIC DOMAIN NOTICE
  15.  *               National Center for Biotechnology Information
  16.  *
  17.  *  This software/database is a "United States Government Work" under the
  18.  *  terms of the United States Copyright Act.  It was written as part of
  19.  *  the author's official duties as a United States Government employee and
  20.  *  thus cannot be copyrighted.  This software/database is freely available
  21.  *  to the public for use. The National Library of Medicine and the U.S.
  22.  *  Government have not placed any restriction on its use or reproduction.
  23.  *
  24.  *  Although all reasonable efforts have been taken to ensure the accuracy
  25.  *  and reliability of the software and data, the NLM and the U.S.
  26.  *  Government do not and cannot warrant the performance or results that
  27.  *  may be obtained by using this software or data. The NLM and the U.S.
  28.  *  Government disclaim all warranties, express or implied, including
  29.  *  warranties of performance, merchantability or fitness for any particular
  30.  *  purpose.
  31.  *
  32.  *  Please cite the author in any work or product based on this material.
  33.  *
  34.  * ===========================================================================
  35.  *
  36.  * Authors:  Vlad Lebedev
  37.  *
  38.  * File Description:
  39.  *    CLayoutHistogram -- utility class for having 
  40.  *                      feature density histograms his in graphical layouts.
  41.  *
  42.  */
  43. #include <corelib/ncbiobj.hpp>
  44. #include <gui/objutils/layout.hpp>
  45. #include <gui/objutils/density_map.hpp>
  46. #include <objects/seqloc/Seq_interval.hpp>
  47. /** @addtogroup GUI_OBJUTILS
  48.  *
  49.  * @{
  50.  */
  51. BEGIN_NCBI_SCOPE
  52. class NCBI_GUIOBJUTILS_EXPORT CLayoutHistogram : public CLayoutObject
  53. {
  54. public:
  55.     // ctors
  56.     CLayoutHistogram(CDensityMap<int> map, objects::CSeqFeatData::E_Choice type,
  57.                                             objects::CSeqFeatData::ESubtype subType);
  58.     //
  59.     // pure virtual requirements
  60.     //
  61.     // Access the feature's remapped location
  62.     const CDensityMap<int>& GetDensityMap(void) const;
  63.     // access the position of this object.
  64.     const objects::CSeq_loc& GetLocation(void) const;
  65.     // access our core component - we wrap an object of some sort
  66.     const CObject* GetObject(TSeqPos pos) const;
  67.     
  68.     bool HasObject(const CObject* obj) const;
  69.     // retrieve the type of this object
  70.     EType GetType() const;
  71.     // Comparators
  72.     bool LessByPos (const CLayoutObject& obj) const;
  73.     bool LessBySize(const CLayoutObject& obj) const;
  74.     objects::CSeqFeatData::E_Choice Which() const;
  75.     objects::CSeqFeatData::ESubtype Subtype() const;
  76.     // Is this layout object selectable in the viewers?
  77.     bool IsSelectable() const;
  78. protected:
  79.     // Location is not real. 
  80.     // Histogram will occuy an entire row in layout
  81.     CRef<objects::CSeq_loc> m_Location;
  82.     objects::CSeqFeatData::E_Choice m_Which;
  83.     objects::CSeqFeatData::ESubtype m_SubType;
  84.     CDensityMap<int> m_Map;
  85. };
  86. inline
  87. objects::CSeqFeatData::E_Choice CLayoutHistogram::Which() const
  88. {
  89.     return m_Which;
  90. }
  91. inline
  92. objects::CSeqFeatData::ESubtype CLayoutHistogram::Subtype() const
  93. {
  94.     return m_SubType;
  95. }
  96. inline
  97. bool CLayoutHistogram::IsSelectable() const
  98. {
  99.     return false;
  100. }
  101. inline
  102. const CDensityMap<int>& CLayoutHistogram::GetDensityMap(void) const
  103. {
  104.     return m_Map;
  105. }
  106. inline
  107. const objects::CSeq_loc& CLayoutHistogram::GetLocation(void) const
  108. {
  109.     return *m_Location;
  110. }
  111. inline
  112. const CObject* CLayoutHistogram::GetObject(TSeqPos pos) const
  113. {
  114.     return NULL;
  115. }
  116. inline
  117. bool CLayoutHistogram::HasObject(const CObject* obj) const
  118. {
  119.     return false;
  120. }
  121. inline
  122. bool CLayoutHistogram::LessByPos(const CLayoutObject& obj) const
  123. {
  124.     return false;
  125. }
  126. inline
  127. bool CLayoutHistogram::LessBySize(const CLayoutObject& obj) const
  128. {
  129.     return false;
  130. }
  131. inline
  132. CLayoutHistogram::EType CLayoutHistogram::GetType() const
  133. {
  134.     return eHistogram;
  135. }
  136. END_NCBI_SCOPE
  137. /* @} */
  138. /*
  139.  * ===========================================================================
  140.  * $Log: histogram.hpp,v $
  141.  * Revision 1000.0  2004/06/01 19:55:12  gouriano
  142.  * PRODUCTION: IMPORTED [GCC34_MSVC7] Dev-tree R1.4
  143.  *
  144.  * Revision 1.4  2004/05/14 14:24:47  dicuccio
  145.  * Added new pure virtual requirement on CLayoutObject(): GetType(), returns enum
  146.  * defined in CLayoutObject
  147.  *
  148.  * Revision 1.3  2004/05/03 13:34:54  dicuccio
  149.  * FIxed include guards, doxygen groups
  150.  *
  151.  * Revision 1.2  2004/05/03 12:41:35  dicuccio
  152.  * Fixed #includes and export specifiers
  153.  *
  154.  * Revision 1.1  2004/04/30 11:52:53  dicuccio
  155.  * Split out from gui/utils
  156.  *
  157.  * Revision 1.3  2004/04/16 14:27:17  dicuccio
  158.  * Added doxygen module tag
  159.  *
  160.  * Revision 1.2  2004/04/15 12:57:43  lebedev
  161.  * Changed GetObject to return NULL or const pointer based on given position
  162.  *
  163.  * Revision 1.1  2004/03/23 12:24:40  lebedev
  164.  * Initial revision
  165.  *
  166.  * ===========================================================================
  167.  */
  168. #endif  // GUI_OBJUTILS___HISTOGRAM__HPP