home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Linux / Divers / freedraft.tar.gz / freedraft.tar / FREEdraft-050298 / CORE / selectstack.h < prev   
C/C++ Source or Header  |  1998-04-29  |  2KB  |  77 lines

  1. // selectstack.h
  2.  
  3. // Copyright (C) 1997  Cliff Johnson                                       //
  4. //                                                                         //
  5. // This program is free software; you can redistribute it and/or           //
  6. // modify it under the terms of the GNU  General Public                    //
  7. // License as published by the Free Software Foundation; either            //
  8. // version 2 of the License, or (at your option) any later version.        //
  9. //                                                                         //
  10. // This software is distributed in the hope that it will be useful,        //
  11. // but WITHOUT ANY WARRANTY; without even the implied warranty of          //
  12. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU       //
  13. // General Public License for more details.                                //
  14. //                                                                         //
  15. // You should have received a copy of the GNU General Public License       //
  16. // along with this software (see COPYING); if not, write to the        //
  17. // Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. //
  18.  
  19.  
  20. #ifndef SELECTSTACK_H
  21. #define SELECTSTACK_H
  22.  
  23. #include <vector>
  24. #include <handle.h>
  25. #include <point.h>
  26. #include <selectionfilter.h>
  27. #include <selection.h>
  28.  
  29. class CoreException;
  30.  
  31. // SelectStack types are used to a list of screen selected entities from 
  32. // the VDGLCanvas back to the vdCmdWindow
  33.  
  34. class SelectStack
  35. {
  36. private:
  37.  
  38.     vector<Handle> selectedEntities;    // list of selected handles
  39.     Point pickedPoint;            // picked point 
  40.     int button;
  41.  
  42. public:
  43.     SelectStack() { } 
  44.  
  45.     SelectStack(int b, const Point& p);
  46.     
  47.     SelectStack(const SelectStack& ss);
  48.  
  49.     SelectStack& operator=(const SelectStack& ss);
  50.  
  51.     void Push(const Handle& h);        // load the stack
  52.  
  53.     Handle Top() const throw (CoreException);
  54.  
  55.     Handle Pop() throw (CoreException);
  56.  
  57.     Selection SelectTop() const throw (CoreException);
  58.  
  59.     Point GetPoint() const;    // used for extracting the data by vdCmdWindow
  60.  
  61.     int GetButton() const { return button; }
  62.  
  63.     int Size() const;            // and this
  64.  
  65.     Handle operator[](unsigned int idx) const throw (CoreException);    // and this too.
  66.  
  67.     SelectStack Filter(const SelectionFilter& sf) const;// pass a selection stack through a filter
  68.  
  69.     Handle TopofType(int type) throw (CoreException);
  70.  
  71.     friend ostream& operator<<(ostream& os, const SelectStack& ss);
  72.  
  73. //    double DistanceFromPoint(const Handle& h) const;
  74. };
  75.  
  76. #endif
  77.