Esempio n. 1
0
const Pack_Of_Pts * Conc_Compute::next(void)
{
   for(;;)
   {
      if (_num_neigh_cur == _nb_neigh)
      {
          _last_pck  = 
                 (_num_gen == 0)                                     ?
                 SAFE_DYNC(Std_Pack_Of_Pts<INT> *,const_cast<Pack_Of_Pts *>( _flx->next()))     :
                 SAFE_DYNC(Std_Pack_Of_Pts<INT> *,const_cast<Pack_Of_Pts *>( _curser->next()))  ;

          if (! _last_pck)
          {
              if ((_num_gen==0) && _reflexif)
              {
                   _num_neigh_cur--;
                   _nb_neigh--;
                   _nrel->set_reflexif(false);
              }
              _num_gen++;
              std::swap(_curent_set,_next_set);
              if ((! _curent_set->nb()) || (_num_gen == _nb_step_max))
                 return 0;
              _curser->re_start(_curent_set);
              _next_set->set_nb(0);
          }
          else
              _num_neigh_cur = 0;
      }
      else
      {
Esempio n. 2
0
void PInt_No_Cste_Out_Ras_W_Comp::vider_buf()
{
    memset(_cpt_coul,0,257*sizeof(int));
    INT i; // Fuuuuuck to Visual
    for (i = 0; i <_nb_pts_buf ; i++)
        _cpt_coul[_buf_c[i]] ++;

    for (i = 1; i < 257 ; i++)
         _cpt_coul[i] += _cpt_coul[i-1];

    INT adr;
    INT * x = _pts_sorted->_pts[0];
    INT * y = _pts_sorted->_pts[1];

    for (i = 0; i <_nb_pts_buf ; i++)
    {
         adr = --(_cpt_coul[_buf_c[i]]);
         x[adr] = _buf_x[i];
         y[adr] = _buf_y[i];
    }


    for (i = 0; i < 256 ; i++)
    {
        INT a0 = _cpt_coul[i];
        INT a1 = _cpt_coul[i+1];
        if (a0 != a1)
           for (INT a = a0; a < a1 ; a += _sz_buf)
           {
               if (_derd->_cmod == Indexed_Colour)
                  _coul = i;
               else
                  _coul = _dep->ilutage(_derd,_ddp->lut_compr(),&i);
               _map_psort->set_nb(ElMin(_sz_buf,a1-a));
               _map_psort->_pts[0] = x+a;
               _map_psort->_pts[1] = y+a;
               PInt_Cste_Out_Ras_W_Comp::update(_map_psort,0);
           }
    }
    _nb_pts_buf = 0;

    _derd->disp_flush();
}