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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: igraph.cpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 20:49:25  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: igraph.cpp,v 1000.1 2004/06/01 20:49:25 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:  Andrey Yazhuk
  35.  *
  36.  * File Description:
  37.  *
  38.  */
  39. #include <ncbi_pch.hpp>
  40. #include <gui/opengl.h>
  41. #include <gui/graph/igraph.hpp>
  42. BEGIN_NCBI_SCOPE
  43. IGraph::~IGraph()
  44. {
  45. }
  46. IGraphDataSource::~IGraphDataSource()
  47. {
  48. }
  49. /////////////////////////////////////////////////////////////////////////////
  50. /// CGraphBase
  51. CGraphBase::CGraphBase()
  52. :   m_pDataSource(NULL),
  53.     m_Color(0.5f, 0.5f, 0.5f),
  54.     m_TextColor(0.0f, 0.0f, 0.0f)
  55. {
  56. }
  57. CGraphBase::~CGraphBase()
  58. {
  59. }
  60. bool    CGraphBase::SetDataSource(IGraphDataSource* pDS)
  61. {
  62.     m_pDataSource = pDS;
  63.     CalculateLimits();
  64.     return true;
  65. }
  66. IGraphDataSource*   CGraphBase::GetDataSource()
  67. {
  68.     return m_pDataSource;
  69. }
  70.   
  71. const TModelRect&    CGraphBase::GetLimits()    const
  72. {
  73.     return m_Limits;
  74. }
  75. void    CGraphBase::Render(CGlPane* pPane)
  76. {
  77. }
  78. /////////////////////////////////////////////////////////////////////////////
  79. /// class CGraphDotMarker
  80. void    CGraphDotMarker::RenderMarker(TModelUnit cX, TModelUnit cY, TModelUnit MarkerW, TModelUnit MarkerH, EMarkerType Type)
  81. {
  82.     if(Type != eNone) {    
  83.       glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
  84.       TModelUnit Rx = MarkerW / 2;
  85.       TModelUnit Ry = MarkerH / 2;
  86.       
  87.       switch(Type) {
  88.       case eDiamond: {
  89.           glBegin(GL_QUADS);
  90.               glVertex2d(cX + Rx, cY);
  91.               glVertex2d(cX, cY + Ry);
  92.               glVertex2d(cX - Rx, cY);
  93.               glVertex2d(cX, cY - Ry);
  94.           glEnd();
  95.           break;
  96.       }
  97.       case eRect: {
  98.           glBegin(GL_QUADS);
  99.               glVertex2d(cX + Rx, cY + Ry);
  100.               glVertex2d(cX + Rx, cY - Ry);
  101.               glVertex2d(cX - Rx, cY - Ry);
  102.               glVertex2d(cX - Rx, cY + Ry);
  103.           glEnd();
  104.           break;
  105.       }
  106.       case eTriangle: {
  107.           glBegin(GL_TRIANGLES);
  108.               glVertex2d(cX, cY + Ry);
  109.               glVertex2d(cX + Rx, cY - Ry);
  110.               glVertex2d(cX - Rx, cY - Ry);
  111.           glEnd();
  112.           break;
  113.       }
  114.       case eCross: {
  115.           glBegin(GL_LINES);
  116.               glVertex2d(cX - Rx, cY - Ry);
  117.               glVertex2d(cX + Rx, cY + Ry);            
  118.               glVertex2d(cX - Rx, cY + Ry);
  119.               glVertex2d(cX + Rx, cY - Ry);                        
  120.           glEnd();
  121.           break;
  122.       }
  123.       default: _ASSERT(false);
  124.       }// switch
  125.     }
  126. }
  127. END_NCBI_SCOPE
  128. /*
  129.  * ===========================================================================
  130.  * $Log: igraph.cpp,v $
  131.  * Revision 1000.1  2004/06/01 20:49:25  gouriano
  132.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4
  133.  *
  134.  * Revision 1.4  2004/05/21 22:27:42  gorelenk
  135.  * Added PCH ncbi_pch.hpp
  136.  *
  137.  * Revision 1.3  2003/08/11 16:10:57  yazhuk
  138.  * Compilation fixes for GCC
  139.  *
  140.  * Revision 1.2  2003/08/08 15:59:36  yazhuk
  141.  * Comments added
  142.  *
  143.  * ===========================================================================
  144.  */
  145.