Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

combinatorial_map.hh

Go to the documentation of this file.
00001 
00004 #ifndef __COMBINATORIAL_MAP__
00005 #define __COMBINATORIAL_MAP__
00006 
00007 #include <point.hh>
00008 #include <tab_sym_bool.hh>
00009 #include "level_set.hh"
00010 #include "image.hh"
00011 #include "combi_map_gen.hh"
00012 
00013 
00015 class combinatorial_map: protected combi_map_gen
00016 {
00017 typedef enum {cm_draw_single,cm_draw_both,cm_draw_all_single,cm_draw_all_both} draw_type;
00018 friend class pyramid;
00019 private:
00021   int level;
00022   // An array to store the orientation of the darts
00023   tab_sym_bool open_parenthesis;
00024 
00025 public:
00026 
00027 
00029   combinatorial_map():combi_map_gen(NULL),level(0)
00030   {}
00032   combinatorial_map(pyramid &P):combi_map_gen(&P),level(0)
00033   {}
00035   virtual ~combinatorial_map()
00036   {}
00038   dart &sigma(dart d)
00039   {
00040     return sig[d];
00041   }
00043   dart &alpha(dart d)
00044   {
00045     return alph[d];
00046   }
00048   vertex mu(dart d) const
00049   {
00050     return m(d);
00051   }
00053   dart mu_1(vertex v) const
00054   {
00055     return m_1(v);
00056   }
00058   bool is_open_parenthesis(dart d) const
00059   {
00060     return open_parenthesis(d);
00061   }
00063   dart give_level()
00064   {
00065     return level;
00066   }
00068   unsigned int give_background()
00069   {
00070     return background;
00071   }
00072 
00074   int give_level(dart d);
00075 
00077   int give_width();
00079   int give_height();
00081   dart give_alpha_base(dart d);
00083   dart give_sigma_base(dart d);
00085   void give_point(dart d,point &p);
00087   void give_pixel(dart d,point &p);
00089   move_type give_move(dart d);
00090 
00092   vertex_iterator &give_vertex_first();
00094   vertex_iterator &give_vertex_last();
00096   vertex_iterator &give_vertex_end();
00097 
00099   dart_iterator &give_dart_first();
00101   dart_iterator &give_dart_begin();
00103   dart_iterator &give_dart_last();
00105   dart_iterator &give_dart_end();
00106 
00108   void give_all_neighbors(vertex,list_label&,list_label&);
00110   void give_neighbors(vertex,list_label&);
00112   void give_included(vertex,list_label&);
00114   void display();
00116   void draw_border(image&,unsigned char*,draw_type=cm_draw_single);
00118   void draw_vertex_border(vertex,image&,unsigned char*,draw_type=cm_draw_single);
00120   dart give_neighbor_dart(vertex);
00121   
00122   
00124   class segment{
00125   private:
00126     // Pointor on the pyramid of the segment
00127     pyramid *pyr;
00128     // Level of the map of the segment
00129     int level;
00130     // First dart of the segment
00131     dart b_first;
00132     // Last dart of the segment
00133     dart b_last;
00134   public:
00136     segment();
00138     segment(dart,dart,int,pyramid *);
00139 
00140     typedef enum {first_dart,last_dart,end_dart} position;
00141     class iterator
00142     {
00143       private:
00144         // Pointor on the curent segment
00145         segment *seg;
00146         // Current dart of the segment
00147         dart b_current;
00148       public:
00150         iterator():seg(NULL), b_current(0)
00151         {}
00153         iterator(segment *,position p=first_dart);
00155         iterator &operator=(const iterator &);
00157         dart operator *()
00158         {
00159           return b_current;
00160         }
00162         iterator &operator++();
00164         iterator &operator++(int);
00166         iterator &operator--();
00168         iterator &operator--(int);
00170         move_type give_move();
00172         void give_point(point &);
00176         bool give_pixel(point &,point &);
00177 
00179         bool operator==(const iterator &) const;
00181         bool operator!=(const iterator &) const;
00182     };
00183 
00185     iterator & first();
00187     iterator & end();
00189     iterator & last();
00190   };
00191 
00193   segment give_segment(dart d)
00194   {
00195     return segment(d,alph(d),level,pyr);
00196   }
00197 };
00198 
00199 
00200 typedef combinatorial_map::segment segment;
00201 typedef combinatorial_map::segment::iterator segment_iterator;
00202 
00203 #endif // __COMBINATORIAL_MAP__

Generated on Tue Jun 24 14:58:23 2003 for Combinatorial Pyramids by doxygen1.2.18