cross_aln_render.hpp

来自「ncbi源码」· HPP 代码 · 共 231 行

HPP
231
字号
/* * =========================================================================== * PRODUCTION $Log: cross_aln_render.hpp,v $ * PRODUCTION Revision 1000.2  2004/06/01 21:06:33  gouriano * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.7 * PRODUCTION * =========================================================================== */#ifndef GUI_WIDGETS_ALN_CROSSALN___CROSS_ALN_RENDER__HPP#define GUI_WIDGETS_ALN_CROSSALN___CROSS_ALN_RENDER__HPP/*  $Id: cross_aln_render.hpp,v 1000.2 2004/06/01 21:06:33 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:  Vlad Lebedev * * File Description: *   Renderer for the CrossAlignment widget  *   Independent from FLTK. * */#include <gui/gui.hpp>#include <gui/opengl.h>#include <gui/widgets/seq_graphic/features_panel_ir.hpp>#include <gui/widgets/gl/ruler.hpp>#include <gui/widgets/aln_crossaln/cross_aln_ds.hpp>#include <gui/widgets/aln_crossaln/cross_aln_widget.hpp>#include <gui/widgets/aln_crossaln/cross_panel_ir.hpp>#include <gui/objutils/utils.hpp>#include <gui/objutils/objects.hpp>#include <gui/widgets/seq_graphic/seqgraphic_conf.hpp>BEGIN_NCBI_SCOPEUSING_SCOPE(objects);class CCrossAlnRenderer : public CObject{public:    enum ERenderPanel {        eFeatures1,        eRuler1,        eCross,        eFeatures2,        eRuler2,        eNone    };    typedef ERenderPanel TRendererPanel;                CCrossAlnRenderer();    ~CCrossAlnRenderer();    void SetDataSource(const TVPRect& rc, CCrossAlnDataSource* ds);    void SetConfig(CRef<CSeqGraphicConfig> config);        void Update();                // Colors    //void SetColor(CSeqGraphicView::EDisplayElement elem, CGlColor color);    //CGlColor GetColor(CSeqGraphicView::EDisplayElement elem) const;        // Zoom set from 0 to 1    float GetZoomX(void) const;    void  SetZoomX(float value);        void ZoomInCenter();    void ZoomOutCenter();    // scales the panels    void SetScaleRef1(TModelUnit m_x, TModelUnit m_y, const TModelPoint& point);    void SetScaleRef2(TModelUnit m_x, TModelUnit m_y, const TModelPoint& point);    void SetScaleRefC(TModelUnit m_x, TModelUnit m_y, const TModelPoint& point);        void FitToWindow    (void);    void ZoomToSequence (void);    void ZoomOnObject   (const CLayoutObject* obj);    void ZoomOnRange    (const TSeqRange& range);    void ZoomOnAlignment();    CGlPane& GetFeatGlPane1();    CGlPane& GetFeatGlPane2();    CGlPane& GetCrossGlPane();    void resize(const TVPRect& rc);    void draw();         // is there a Layoutable object at this screen coordinates?    const CLayoutObject* HitTest(int x, int y);        TRendererPanel PanelHitTest(int x, int y) const;    CGlPane*       PaneHitTest (int x, int y);    void GetTooltip(int x, int y, string* title);        void Scroll(TModelUnit x1, TModelUnit y1, TModelUnit x2, TModelUnit y2);    TModelUnit GetScrollLineSize1();    TModelUnit GetScrollLineSize2();    void ClearObjectSelection(void);    void SelectObject(const CObject* obj);    const TConstObjects& GetSelectedObjects(void) const;    private:    CRef<CCrossAlnDataSource> m_DS;        typedef vector<CGlPane*> TGlPanes;    typedef vector<IRenderable*> TRenderables;        TGlPanes m_AllPanes;    TGlPanes m_ScrollXPanes1;    TGlPanes m_ScrollXPanes2;        TRenderables m_AllRenderers;        CGlPane m_FP1;    CGlPane m_RP1;    CGlPane m_CP; // panel for cross-alignment with tricky model space        CGlPane m_FP2;    CGlPane m_RP2;            CFeaturesPanelIR m_FeatPanel1;    CRuler           m_RulerPanel1;    CCrossPanelIR    m_CrossPanel;    CFeaturesPanelIR m_FeatPanel2;    CRuler           m_RulerPanel2;    // offset (shift) of second (bottom) sequence against the top sequence    TSignedSeqPos m_Offset2;    TSeqPos       m_SeqLength1; // sequence lengths    TSeqPos       m_SeqLength2;    void x_SetupViewPorts(const TVPRect& rc);    void x_SetupModelLimits();    void x_AdjustCrossPane();        TModelUnit m_MinZoomX, m_MaxZoomX; // X axis zoom limits        TConstObjects m_SelectedObjects;   // selected features};inlineconst TConstObjects& CCrossAlnRenderer::GetSelectedObjects(void) const{    return m_SelectedObjects;}inlinevoid CCrossAlnRenderer::ClearObjectSelection(void){    m_SelectedObjects.clear();}END_NCBI_SCOPE/* * =========================================================================== * $Log: cross_aln_render.hpp,v $ * Revision 1000.2  2004/06/01 21:06:33  gouriano * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.7 * * Revision 1.7  2004/05/03 13:23:57  dicuccio * gui/utils --> gui/objutils where needed * * Revision 1.6  2004/04/16 14:49:02  dicuccio * Use TConstObjects for handling object selections * * Revision 1.5  2004/03/11 17:50:41  dicuccio * Updated typedefs: dropped TDimension, TPosition, TIndex, TColor; use TSeqRange * instead of TRange * * Revision 1.4  2004/01/27 16:20:41  lebedev * Changed stored selection from CLayoutObject to CObject * * Revision 1.3  2004/01/16 19:17:06  tereshko * Removed const modifyer for GetTooltip method * * Revision 1.2  2004/01/16 13:40:39  lebedev * Tooltips added * * Revision 1.1  2003/12/22 13:12:34  lebedev * Initial revision * * =========================================================================== */#endif  /* GUI_WIDGETS_ALN_CROSSALN___CROSS_ALN_RENDER__HPP */

⌨️ 快捷键说明

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