Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

pen_manager.H

Go to the documentation of this file.
00001 #ifndef PEN_MANAGER_H_IS_INCLUDED
00002 #define PEN_MANAGER_H_IS_INCLUDED
00003 
00004 /*!
00005  *  \file pen_manager.H
00006  *  \brief Contains the defintion of the PenManager class.
00007  *
00008  *  \sa pen_manager.C pen.H pen.C
00009  *
00010  */
00011 
00012 #include <vector>
00013 
00014 #include "geom/fsa.H"
00015 
00016 class Pen;
00017 
00018 class PenManager {
00019    
00020    public:
00021    
00022       PenManager(State *start_in)
00023          : start(start_in), cur_pen_idx(0) { }
00024       
00025       ~PenManager();
00026       
00027       //! \name Pen Accessor Functions
00028       //@{
00029       
00030       void add_pen(Pen *pen);
00031       
00032       void select_pen(Pen *pen);
00033       
00034       long num_pens() const
00035          { return pens.size(); }
00036       
00037       Pen *cur_pen() const
00038          { return pens.size() > 0 ? pens[cur_pen_idx] : 0; }
00039       
00040       void next_pen()
00041          { cycle_pen(1); }
00042       void prev_pen()
00043          { cycle_pen(-1); }
00044       
00045       //@}
00046    
00047    private:
00048    
00049       // Not copy constructable or assignable:
00050       PenManager(const PenManager&);
00051       PenManager &operator=(const PenManager&);
00052       
00053       State *start;
00054       
00055       void cycle_pen(int idx_change);
00056    
00057       std::vector<Pen*> pens;
00058       
00059       long cur_pen_idx;
00060 
00061 };
00062 
00063 #endif // PEN_MANAGER_H_IS_INCLUDED

Generated on Mon Sep 18 11:39:32 2006 for jot by  doxygen 1.4.4