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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: trace_graph.hpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 19:51:52  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.8
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef __GUI_WIDGETS_ALNMULTI___ALIGN_TRACE_GRAPH__HPP
  10. #define __GUI_WIDGETS_ALNMULTI___ALIGN_TRACE_GRAPH__HPP
  11. /*  $Id: trace_graph.hpp,v 1000.1 2004/06/01 19:51:52 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:  Andrey Yazhuk
  37.  *
  38.  * File Description:
  39.  *
  40.  */
  41. #include <objtools/alnmgr/alnmap.hpp>
  42. #include <gui/opengl/glpane.hpp>
  43. #include <gui/widgets/aln_multiple/alnvec_row_graph.hpp>
  44. #include <gui/widgets/aln_multiple/trace_data.hpp>
  45. BEGIN_NCBI_SCOPE
  46. USING_SCOPE(objects);
  47. class NCBI_GUIWIDGETS_ALNMULTIPLE_EXPORT CTraceGraphProperties
  48.     :   public  IAlnRowGraphProperties
  49. {
  50. public:
  51.     /// chromatogram rendering mode
  52.     enum    ESingnalStyle   {
  53.         eCurve,
  54.         eIntensity
  55.     };
  56.     
  57.     enum    EGraphState {
  58.         eHidden,
  59.         eCollapsed,
  60.         eExpanded
  61.     };
  62. public:
  63.     ESingnalStyle   m_SignalStyle;
  64.     EGraphState m_ConfGraphState;
  65.     EGraphState m_SignalGraphState;
  66.     bool    m_bReverseColors; // reverse colors for signals measured on back strand 
  67.     // so that they correspond to assembly sequence rather than to trace sequence
  68.     CTraceGraphProperties();
  69.     CTraceGraphProperties&  operator=(const CTraceGraphProperties& orig);
  70. };
  71. ////////////////////////////////////////////////////////////////////////////////
  72. /// CTraceGraph - trace data renderer.
  73. /// Renders confidence graph and A, C, T, G chromatograms using CTraceData as
  74. /// datasource.
  75. class NCBI_GUIWIDGETS_ALNMULTIPLE_EXPORT CTraceGraph : public IAlnVecRowGraph
  76. {
  77. public:
  78.     typedef CConstRef<CAlnMap::CAlnChunkVec>   TChunkVec;
  79.     typedef CTraceGraphProperties::ESingnalStyle   ESingnalStyle;
  80.     typedef CTraceGraphProperties::EGraphState     EGraphState;
  81.     CTraceGraph(const CBioseq_Handle& handle, bool b_neg_strand);
  82.     /// @name IAlnVecRowGraph implementaion
  83.     /// @{
  84.     virtual ~CTraceGraph();
  85.     
  86.     virtual bool    HasData() const;
  87.     virtual bool    IsCreated() const;
  88.     virtual bool    Create();
  89.     virtual void    Destroy();
  90.     virtual const IAlnRowGraphProperties*     GetProperties() const;
  91.     virtual void    SetProperties(IAlnRowGraphProperties* props);
  92.     virtual int     GetPreferredHeight()    const;
  93.     virtual void    Render(CGlPane& pane, int y, int h, const TChunkVec& chunks);   
  94.     /// @}
  95.     void    SetConfGraphState(EGraphState state);    
  96.     void    SetSignalGraphState(EGraphState state);    
  97.     
  98. protected:
  99.     int     x_GetConfGraphH() const;
  100.     int     x_GetSignalGraphH() const;
  101.     void    x_RenderContour(CGlPane& pane, int y, 
  102.                             int conf_h, int total_h,
  103.                             const TChunkVec& chunks);
  104.     
  105.     void    x_RenderConfGraph(CGlPane& pane, int y, int h, 
  106.                               const TChunkVec& chunks);   
  107.     
  108.     void    x_RenderSignalGraph(CGlPane& pane, int y, int h,
  109.                                 const TChunkVec& chunks);   
  110.     
  111.     void    x_RenderCurveChunk(CGlPane& pane, 
  112.                                 CConstRef<CAlnMap::CAlnChunk> chunk, 
  113.                                 const CTraceData::TPositions& positions, 
  114.                                 const CTraceData::TValues& values,
  115.                                 int bottom_y, int h, int amp);
  116.     
  117.     void    x_RenderIntensityGraphs(CGlPane& pane, int y, int h, 
  118.                                              const TChunkVec& chunks);
  119.     const CGlColor&     GetColorByValue(double value, int signal) const;
  120.     int x_FindSampleToLeft(double pos) const;
  121.     int x_FindSampleToRight(double pos) const;
  122. protected:
  123.     CTraceDataProxy m_DataProxy;
  124.     CTraceData*     m_pData;
  125.     
  126.     CTraceGraphProperties   m_Props;
  127.     vector<CGlColor>    m_vSignalColors;
  128. };
  129. END_NCBI_SCOPE
  130. /*
  131.  * ===========================================================================
  132.  * $Log: trace_graph.hpp,v $
  133.  * Revision 1000.1  2004/06/01 19:51:52  gouriano
  134.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.8
  135.  *
  136.  * Revision 1.8  2004/05/14 13:20:08  yazhuk
  137.  * Added m_bReverseColors
  138.  *
  139.  * Revision 1.7  2004/03/29 18:59:28  yazhuk
  140.  * Added support for data loading and Properties management
  141.  *
  142.  * Revision 1.6  2004/03/26 14:59:02  yazhuk
  143.  * Renamed EMode to ESignalStyle
  144.  *
  145.  * Revision 1.5  2004/03/25 13:06:13  dicuccio
  146.  * Minor rearrangement to avoid compiler warning
  147.  *
  148.  * Revision 1.4  2004/03/08 17:05:56  yazhuk
  149.  * Inherited from IAlnVecRowGraph
  150.  *
  151.  * Revision 1.3  2004/03/08 15:37:59  yazhuk
  152.  * Implemented state management expanded/collapsed/hidden
  153.  *
  154.  * Revision 1.2  2004/03/02 18:06:35  kans
  155.  * remove CTraceGraph from x_RenderContour
  156.  *
  157.  * Revision 1.1  2004/03/02 15:11:00  yazhuk
  158.  * Initial revision
  159.  *
  160.  * ===========================================================================
  161.  */
  162. #endif  // __GUI_WIDGETS_ALNMULTI___ALIGN_TRACE_GRAPH__HPP