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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: taxplot3d_widget4x.cpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 21:13:49  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.5
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: taxplot3d_widget4x.cpp,v 1000.1 2004/06/01 21:13:49 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:  Vladimir Tereshkov
  35.  *
  36.  * File Description:  
  37.  *   Tiled 4 instances of taxplot widget, representing different projections.
  38.  */
  39. #include <ncbi_pch.hpp>
  40. #include <gui/opengl/glfont.hpp>
  41. #include <gui/graph/igraph_utils.hpp>
  42. #include <gui/widgets/taxplot3d/taxplot3d_widget4x.hpp>
  43. #include <gui/widgets/taxplot3d/taxplot3d_widget.hpp>
  44. #include <gui/types.hpp>
  45. #include <gui/widgets/fl/splitter.hpp>
  46. #include <FL/Fl.H>
  47. #include <FL/Fl_Tile.H>
  48. #include <FL/Fl_Box.H>
  49. #include "taxplot3d_pane.hpp"
  50.   
  51. BEGIN_NCBI_SCOPE
  52. CTaxplot3dWidget4x::CTaxplot3dWidget4x(int x, int y,  int w, int h,
  53.                                        const char* label)
  54.     : Fl_Group(x, y, w, h, label)
  55. {    
  56.    // Fl_Tile* tile = new Fl_Tile(x, y, w, h);
  57.    // tile->box(FL_DOWN_BOX);
  58.    // tile->align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE);   
  59.     m_Widgets.clear();
  60.     m_Widgets.push_back(new CTaxplot3dWidget(x, y,          w/2, h/2, "XY View"));
  61.     m_Widgets.push_back(new CTaxplot3dWidget(x+w/2, y,      w/2, h/2, "YZ View"));
  62.     m_Widgets.push_back(new CTaxplot3dWidget(x, y+h/2,      w/2, h/2, "Camera View"));
  63.     m_Widgets.push_back(new CTaxplot3dWidget(x+w/2, y+h/2,  w/2, h/2, "XZ View"));
  64.   
  65.     Fl_Group* curr = Fl_Group::current();
  66.     vector<int> widths(2, w /2);
  67.     vector<int> heights(2, h /2);
  68.     CSplitter* splitter = new CSplitter(x, y, w, h);
  69.     splitter->Create(CSplitter::eGrid, widths, heights);
  70.     
  71.     
  72.     for (vector <CTaxplot3dWidget*>::iterator it=m_Widgets.begin(); it!=m_Widgets.end(); it++){
  73.         (*it)->box(FL_NO_BOX);
  74.         //(*it)->align(FL_ALIGN_CLIP);
  75.         (*it)->labeltype(FL_NO_LABEL);
  76.         (*it)->getPanel()->SetAutomation(this); 
  77.         (*it)->SetViewMode(it - m_Widgets.begin());        
  78.         splitter->add(*it);
  79.     } 
  80.    // Fl_Group::current()->resizable(splitter);      
  81.     curr->resizable(splitter);      
  82.    // Fl_Group::current()->resizable(tile);      
  83.     end();       
  84. }
  85. CTaxplot3dWidget4x::~CTaxplot3dWidget4x()
  86.     m_Widgets.clear();
  87. }
  88. void CTaxplot3dWidget4x::SetDataSource(CTaxplot3dDataSource * ds)
  89. {
  90.   for (vector <CTaxplot3dWidget*>::iterator it=m_Widgets.begin(); it!=m_Widgets.end(); it++) (*it)->SetDataSource(ds);  
  91. }
  92. void CTaxplot3dWidget4x::fireEvent(Fl_Widget * pWid, ITaxplot3dCP::eEventType eType)
  93. {
  94.     for (vector <CTaxplot3dWidget*>::iterator it=m_Widgets.begin(); it!=m_Widgets.end(); it++){
  95.         if (pWid!=(*it)->getPanel()) {  // do not automate yourself      
  96.             switch (eType){
  97.             case ITaxplot3dCP::eTransform:        
  98.               // (*it)->SetTransformationFrom((CTaxplot3dWidget*)pWid);
  99.               break;
  100.             case ITaxplot3dCP::eSelection:                  
  101.               (*it)->SlowRedraw();
  102.               break;          
  103.             }
  104.         }
  105.     }
  106. }
  107. void CTaxplot3dWidget4x::resize(int x, int y, int w, int h)
  108. {
  109.     Fl_Group::resize(x, y, w, h);          
  110. }
  111. END_NCBI_SCOPE
  112. /*
  113.  * ===========================================================================
  114.  * $Log: taxplot3d_widget4x.cpp,v $
  115.  * Revision 1000.1  2004/06/01 21:13:49  gouriano
  116.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.5
  117.  *
  118.  * Revision 1.5  2004/05/21 22:27:55  gorelenk
  119.  * Added PCH ncbi_pch.hpp
  120.  *
  121.  * Revision 1.4  2004/03/11 17:54:04  dicuccio
  122.  * Deprecated typedefs TDimension, TPosition
  123.  *
  124.  * Revision 1.3  2004/01/28 17:12:38  tereshko
  125.  * Adapted for different CSplitter interface
  126.  *
  127.  * Revision 1.2  2004/01/28 15:55:26  tereshko
  128.  * Fl_Tile replaced with CSplitter control
  129.  *
  130.  * Revision 1.1  2004/01/05 16:20:50  tereshko
  131.  * Initial revision
  132.  *
  133.  * ===========================================================================
  134.  */