next up previous contents index
suivant: Constructeur monter: Exercices précédent: Quantification par fusion   Table des matières   Index


Inversion de table de couleur par tri sur une coordonnée

On considère la classe suivante :
class colormap 
{
private:
  unsigned char* tab;
  unsigned int nb_color;
public:
  colormap(image&);
  ~colormap();
  int give_entry(unsigned char);
  typedef enum {forward,backward} iterator_mode;
  
  class iterator
  {
  private:
    unsigned char* tab;
    unsigned int nb_color;
    int current;
    iterator_mode mode;
  public:    
    iterator(colormap& map,int index=-1,iterator_mode mode=forward):
    tab(col.tab),nb_color(col.nb_color),mode(dir)
    {
        if(index==-1) {current=index;return}
        current=(mode==forward?0:nb_color-1);
    }
    iterator(iterator&):
    tab(ite.tab),nb_color(ite.nb_color),current(ite.current),mode(ite.mode)    
    {
    }
    
    unsigned char operator [](int);
    iterator& operator ++();
    iterator operator ++(int);
    bool operator <(const iterator&);
    iterator end();
    int index() const
    {
        return current;
    }
  };
  void inverse(unsigned char*,unsigned char*);
private:
  void oriented_search(iterator &,unsigned char *,int&,int &);
};
typedef colormap::iterator colormap_iterator;


Sous-sections

Brun Luc 2004-03-25