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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: viewable_alignment.hpp,v $
  4.  * PRODUCTION Revision 1000.0  2003/10/29 18:42:36  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.2
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: viewable_alignment.hpp,v 1000.0 2003/10/29 18:42:36 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:  Paul Thiessen
  35. *
  36. * File Description:
  37. *      base class for information to be displayed in SequenceViewerWidget
  38. *
  39. * ===========================================================================
  40. */
  41. #ifndef WX_VIEWABLE_ALIGNMENT__HPP
  42. #define WX_VIEWABLE_ALIGNMENT__HPP
  43. // This is the generic interface to a viewable alignment; it provides a minimal
  44. // set of functions that are required to build the display. Any objects to be
  45. // displayed in the SequenceViewerWidget must be derived from ViewableAlignment,
  46. // and must implement these functions.
  47. class wxString;
  48. class wxColour;
  49. class ViewableAlignment
  50. {
  51. public:
  52.     // should set the overall size of the display, in columns (width) and rows (height)
  53.     virtual void GetSize(int *columns, int *rows) const = 0;
  54.     // should set a title string and color for a row; if the return value is false,
  55.     // the title area will be left blank.
  56.     virtual bool GetRowTitle(int row, wxString *title, wxColour *color) const = 0;
  57.     // should set the character and its traits to display at the given location;
  58.     // both columns and rows are numbered from zero. If the return value is false,
  59.     // the cell for this character will be left blank. If drawBackground is true,
  60.     // then the cell's background will be redrawn with the given color (e.g.,
  61.     // for highlights).
  62.     virtual bool GetCharacterTraitsAt(int column, int row,      // location
  63.         char *character,                                        // character to draw
  64.         wxColour *color,                                        // color of this character
  65.         bool *drawBackground,                                   // special background color?
  66.         wxColour *cellBackgroundColor                           // background color
  67.     ) const = 0;
  68.     ///// the following funtions are optional; they do nothing as-is, but can  /////
  69.     ///// be overridden to provide some user-defined behaviour on these events /////
  70.     // this is called when the mouse is moved over a cell; (-1,-1) means
  71.     // the mouse is not over the character grid. This is only called called once
  72.     // when the mouse enters a cell, or leaves the grid - it is not repeated if
  73.     // the mouse is dragged around inside a single cell.
  74.     virtual void MouseOver(int column, int row) const { }
  75.     // these are used in the the following feedback functions to tell whether
  76.     // control keys were down at the time of (the beginning of) selection. The
  77.     // 'controls' item may be any bitwise combination of the following:
  78.     enum eControlKeys {
  79.         eShiftDown      = 0x01,
  80.         eControlDown    = 0x02,
  81.         eAltOrMetaDown  = 0x04
  82.     };
  83.     // this is called when the mouse-down event occurs (i.e., at the
  84.     // beginning of selection), saying where the mouse was at the time and
  85.     // with what control keys (see eControlKeys above). If 'false' is returned,
  86.     // then no selection will ensue; if 'true', selection acts normally.
  87.     virtual bool MouseDown(int column, int row, unsigned int controls) { return true; }
  88.     // this is the callback when the the widget is in eSelect mode; it gives the
  89.     // corners of the rectangle of cells selected.
  90.     virtual void SelectedRectangle(
  91.         int columnLeft, int rowTop,
  92.         int columnRight, int rowBottom) { }
  93.     // this is the callback when the widget is in eDrag mode; it gives two cells,
  94.     // one where the mouse button-down occurred, and one where mouse-up occurred.
  95.     virtual void DraggedCell(
  96.         int columnFrom, int rowFrom,
  97.         int columnTo, int rowTo) { }
  98. };
  99. #endif // WX_VIEWABLE_ALIGNMENT__HPP
  100. /*
  101. * ---------------------------------------------------------------------------
  102. * $Log: viewable_alignment.hpp,v $
  103. * Revision 1000.0  2003/10/29 18:42:36  gouriano
  104. * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.2
  105. *
  106. * Revision 1.2  2003/02/03 19:20:08  thiessen
  107. * format changes: move CVS Log to bottom of file, remove std:: from .cpp files, and use new diagnostic macros
  108. *
  109. * Revision 1.1  2001/05/03 14:38:32  thiessen
  110. * put ViewableAlignment in its own (non-wx) header
  111. *
  112. */