Пример #1
0
RLE_Out_Ras_W_Comp::RLE_Out_Ras_W_Comp
(
      const Arg_Output_Comp &  arg   ,
      const Data_El_Geom_GWin * geom ,
      Data_Elise_Raster_W     * derw ,
      Data_Elise_Palette      * pal
) :
      Out_Ras_W_Comp(arg,geom,derw,pal)
      // _u_last_y,_w_last_x0 and _w_last_x1 initialized in update when (! _first)
{

    geom->box_user_geom(_pu1,_pu2);
    _line_lut = _derd->alloc_line_buf(_pu2.x-_pu1.x+2);
    _cpbli    = _derd->alloc_line_buf(_sz.x);

    REAL tx = _tr.x;
    REAL sx = _sc.x;


    _zx  = NEW_VECTEUR(_pu1.x,_pu2.x,U_INT2);
    _wx0 = NEW_VECTEUR(_pu1.x,_pu2.x,U_INT2);

    for (INT x = _pu1.x; x<_pu2.x ; x++)
    {
        INT wx0,wx1;
        interval_user_to_window(wx0,wx1,x,x+1,tx,sx);

        wx0 = std::max(0,wx0);
        wx1 = std::min(geom->sz().x,wx1);

        _zx[x] = wx1 -wx0;
        _wx0[x] = wx0;
    }

}
Пример #2
0
void Lut_RGB_Int::init(Elise_colour * col,INT nb)
{
	_nb = nb ;
	_r =  NEW_VECTEUR(0,nb,INT4);
	_g =  NEW_VECTEUR(0,nb,INT4);
	_b =  NEW_VECTEUR(0,nb,INT4);
	for (INT k=0; k<_nb ; k++)
	{
		_r[k] = std::max(0,std::min(255,(INT)(255*col[k].r())));
		_g[k] = std::max(0,std::min(255,(INT)(255*col[k].g())));
		_b[k] = std::max(0,std::min(255,(INT)(255*col[k].b())));

	}
}
Пример #3
0
void  Approx_poly::init(int nb,const ArgAPP & arg)
{
     _s = NEW_VECTEUR(-1,nb,SomApproxPoly);
     _s[-1]._mat = RMat_Inertie();
     _nb = nb;

     for (int i = 0; i<nb ; i++)
         _s[i].init_link(_s+i-1);

     _s[0]._pred = 0;
     _s[0]._best_anc = 0;
     _s[0]._cost = 0.0;

     switch (arg._mcout)
     {
          case ArgAPP::D2_droite :
               _calc_cout = APP_cout_square_droite;
          break;
	  case ArgAPP::DMaxDroite :
               _calc_cout = APP_cout_seuil;
          break;
     };
     switch (arg._mseg)
     {
          case ArgAPP::Extre :
               _calc_seg = APP_seg_extre;
          break;

          case ArgAPP::MeanSquare :
               _calc_seg = APP_seg_mean_square;
          break;
     };
}
Пример #4
0
Can_Exp_OPB_Comp::Can_Exp_OPB_Comp
(
                    const Arg_Fonc_Num_Comp & arg,
                    INT                     dim_out,
                    Fonc_Num                f0,
                    REAL                    fx,
                    REAL                    fy,
                    INT                     nb,
                    bool                    rec_ar,
                    bool                    double_sens
) :
       Fonc_Num_OPB_TPL<REAL>
       (
             arg,
             dim_out,
             Arg_FNOPB(f0,Box2di(Pt2di(0,0),Pt2di(0,nb)))
        ),
       _fx (fx),
       _fy (fy),
       _nb (nb),
       _rec_arr (rec_ar),
       _double_sens (double_sens),
       _cptl    (0)
{

     _buf_exp_x      = NEW_VECTEUR(_x0,_x1,REAL);
     _cumul_line_av  = NEW_MATRICE(Pt2di(_x0,0),Pt2di(_x1,_dim_out),REAL);
     if (_rec_arr)
     {
        _buf_rec_arr    = NEW_TAB_MATRICE(_dim_out,Pt2di(_x0,1),Pt2di(_x1,_nb+1),REAL);
        _correc_arr     = NEW_MATRICE(Pt2di(_x0,0),Pt2di(_x1,_dim_out),REAL);
     }
}
Пример #5
0
Huff_Ccitt_2D_T6::Huff_Ccitt_2D_T6
(
               Packed_Flux_Of_Byte*    flx,
               bool                    read,
               bool                    msbf,
               bool                    flush_flx,
               INT                     sz_buf
)   :
        Huff_Ccitt_1D_Codec(flx,read,msbf,flush_flx)
{
       _hvert =  HuffmanCodec::TiffCitt4Vert();
       _huc   =  HuffmanCodec::TiffCitt4UComp();
       _prec  = NEW_VECTEUR(-1,sz_buf+2,U_INT1);
       _cur   = NEW_VECTEUR(-1,sz_buf+2,U_INT1);


        _ht_pass = _hvert->leaf_of_val(pass_mod);
        _ht_horz = _hvert->leaf_of_val(hor_mod);
        _ht_eofb = _hvert->leaf_of_val(eofb);
}
Пример #6
0
Reducteur_Im_Compr::Reducteur_Im_Compr
(
	PackB_IM<U_INT1>	PBIM,
	INT 				zoom
) :
	StdGray_Scale_Im_Compr  (PBIM,PBIM.sz()/zoom),
	//_zoom                   (zoom),
	 _pbim					(_SzW.x,_SzW.y,0,-128),
	_dpbim					(_pbim.dpim()),
	_line					(NEW_VECTEUR(-RAB,_SzW.x+RAB,U_INT1))
{
}
Пример #7
0
         GenScaleIm<TObj>::GenScaleIm(Pt2di aSzU,Pt2di aSzW,INT NbChan) : 
		_tr 		(0,0),
		_sc         (0.0),	
		_CoeffPds	(0),
		_pW0		(0,0),
		_pW1		(0,0),
		_xU0		(0),
		_xU1		(0),
		_yU0		(0),
		_yU1		(0),
		_SzU		(aSzU),
		_u2wX		(NEW_VECTEUR(-RAB,aSzU.x+RAB,INT4)),
		_u2wY		(NEW_VECTEUR(-RAB,aSzU.y+RAB,INT4)),
		_Cw2uX      (NEW_VECTEUR(-RAB,aSzW.x+RAB,INT4)),
		_Cw2uY      (NEW_VECTEUR(-RAB,aSzW.y+RAB,INT4)),
		_SzW		(aSzW),
		_line       (NEW_MATRICE(Pt2di(-RAB,0),Pt2di(std::max(aSzW.x,aSzU.x)+RAB,NbChan),TObj)),
		_l0			(_line[0]),
		_nb_chan	(NbChan)
{
}
Пример #8
0
	Scale_Im_Compr<TObj,TLut,TInd>::Scale_Im_Compr
	(
		PackB_IM<TInd> PBIM,
		Pt2di SzW
	)	:

		GenScaleIm<TObj>(PBIM.sz(),SzW,1),
	//	_lut		(),
	// Init Bidon  (refait par do_it)
		_CurPds		(0),

	//	
		_pbim		(PBIM),
		_dim		(PBIM.dpim()),
		_RLE_Pds_0	(NEW_VECTEUR(-(Scale_Im_Compr<TObj,TLut,TInd>::RAB),(Scale_Im_Compr<TObj,TLut,TInd>::_SzU.x)+(Scale_Im_Compr<TObj,TLut,TInd>::RAB),INT4)),
		_RLE_Pds_1	(NEW_VECTEUR(-(Scale_Im_Compr<TObj,TLut,TInd>::RAB),(Scale_Im_Compr<TObj,TLut,TInd>::_SzU.x)+(Scale_Im_Compr<TObj,TLut,TInd>::RAB),INT4)),
		_LIT_Pds_0	(NEW_VECTEUR(-(Scale_Im_Compr<TObj,TLut,TInd>::RAB),(Scale_Im_Compr<TObj,TLut,TInd>::_SzU.x)+(Scale_Im_Compr<TObj,TLut,TInd>::RAB),INT4)),
		_LIT_Pds_1	(NEW_VECTEUR(-(Scale_Im_Compr<TObj,TLut,TInd>::RAB),(Scale_Im_Compr<TObj,TLut,TInd>::_SzU.x)+(Scale_Im_Compr<TObj,TLut,TInd>::RAB),INT4)),
		_LIT_Pds_2	(NEW_VECTEUR(-(Scale_Im_Compr<TObj,TLut,TInd>::RAB),(Scale_Im_Compr<TObj,TLut,TInd>::_SzU.x)+(Scale_Im_Compr<TObj,TLut,TInd>::RAB),INT4)),
        mTimeUnCompr (0.0)
{
}
Пример #9
0
PInt_NoC_TrueC_ORW_Comp::PInt_NoC_TrueC_ORW_Comp
(
             const Arg_Output_Comp &       arg,
             const Data_El_Geom_GWin *     geom,
             Data_Elise_Raster_W     *     derw,
             Data_Elise_Palette      *     DEP
) :
            Out_Ras_W_Comp(arg,geom,derw,DEP)
{
     if  ((_sc.x==1.0) && (_sc.y == 1.0))
         _pts = Elise_Pile<El_RW_Point> (arg.flux()->sz_buf());
     else
         _rects = Elise_Pile<El_RW_Rectangle>(arg.flux()->sz_buf());

     _coul = NEW_VECTEUR(0,arg.flux()->sz_buf(),INT);
}
Пример #10
0
MPD_CCIT_T6::MPD_CCIT_T6
(
               Packed_Flux_Of_Byte*    flx,
               bool                    read,
               bool                    msbf,
               bool                    flush_flx,
               INT                     sz_buf,
               INT                     nbb
)   :
    Huff_Ccitt_2D_T6(flx,read,msbf,flush_flx,sz_buf)
{
    _bin  = NEW_VECTEUR(-1,sz_buf+2,U_INT1);
    _hmpd = HuffmanCodec::TiffMPDT6();
    _ht_huf_bl =  _hmpd->leaf_of_val(huf_black);
    _nbb = nbb;
    _vmax = (1<<nbb) -1;
    _line = 0;
}
Пример #11
0
Pack_Bits_Flow::Pack_Bits_Flow
(
     Packed_Flux_Of_Byte * flx,          // compressed flow
     bool read,
     INT  tx
)   :
    Packed_Flux_Of_Byte(1),
    _flx  (flx),
    _read (read),
    _buf  (NEW_VECTEUR(0,tx,U_INT1)),
    _tx   (tx),
    _n    (0)
{
    El_Internal.ElAssert
    (
       (!_read),
       EEM0 << "do not handle Pack_Bits_Flow::Read"
    );
}
Пример #12
0
		void init()
		{
			buf = NEW_VECTEUR(0,sz_buf,U_INT1);
		}
Пример #13
0
LastRank_HK::LastRank_HK(INT max_vals) :
    Histo_Kieme  (max_vals),
    _h           (NEW_VECTEUR(-1,max_vals,INT))
{
   raz();
}
Пример #14
0
BinTree_HK::BinTree_HK(INT max_vals) :
     Histo_Kieme (Pow_of_2_sup(max_vals)),
     _h          (NEW_VECTEUR(0,2*_max_vals,INT))
{
   raz();
}
Пример #15
0
         FoncATrou_OPB_Comp<Type>::FoncATrou_OPB_Comp
         (
                 Liste_Pts<Type,INT>  l,
                 INT                       X0,
                 INT                       X1,
                 INT                       Y0,
                 INT                       Y1
         )   :
         _values      (1,1),
         _l            (1),
         _cpt         (NEW_VECTEUR(Y0,Y1+1,INT)),
         _dim_vals    (l.dim()-2)
{
	INT k;

     set_cste(_cpt+Y0,0,Y1-Y0+1);

     Im2D<Type,INT> XYV = l.image();

     INT nb_pts = 0;
     Type * tx = XYV.data()[0];
     Type * ty = XYV.data()[1];
     Type **   xyv  = XYV.data();


   //----  filtre les pts hors du rectangle ---------

     INT dim =        XYV.ty();

     {
          INT nb_pts_tot = XYV.tx();
          for( k=0; k<nb_pts_tot; k++)
              if (
                         (tx[k]>=X0) 
                      && (tx[k]< X1)
                      && (ty[k]>=Y0) 
                      && (ty[k]< Y1)
                 )
              {
                  for(INT d=0; d<dim; d++)
                     xyv[d][nb_pts] = xyv[d][k];
                  nb_pts++;
              }
     }

   //--------- histo en Y + cumule -----------------------
     for( k=0; k<nb_pts; k++)
         _cpt[ty[k]]++;
     for (INT y = Y0+1; y<=Y1; y++)
          _cpt[y] +=  _cpt[y-1];


    //---------------- range en y croissant ----------------
     _values = Im2D<Type,INT> (nb_pts,_dim_vals+1);
     _tx     = _values.data()[0];
     _v      = _values.data()+1;

     for( k=0; k<nb_pts ; k++)
     {
         INT adr =  --_cpt[ty[k]];
         _tx[adr] =  tx[k];
         for (INT d = 0; d<_dim_vals; d++)
             _v[d][adr] = xyv[d+2][k];
     }
}
Пример #16
0
Flux_To_Surf_Computed::Flux_To_Surf_Computed
(
     Arg  arg,
     bool front
)  :
   RLE_Flux_Pts_Computed(2,arg.b._p1.x-arg.b._p0.x),
   _b          (arg.b),
   _last       (false),
   _with_front (front?1:0)
{
   _l_cur =  NEW_VECTEUR(_b._p0.x,_b._p1.x+3,INT);
   set_cste(_l_cur+_b._p0.x,0,_b._p1.x+3-_b._p0.x);
   _l = NEW_VECTEUR(_b._p0.y,_b._p1.y,Line);

   INT   * y = arg.pts->_pts[1];
   INT   * x = arg.pts->_pts[0];
   INT   nb = arg.pts->nb();


   {
        // compute nb pts by line 

        for (INT ky=_b._p0.y ; ky<_b._p1.y ; ky++)
        {
            _l[ky].nb = 0;
            _l[ky].nb_ev = 0;
        }
        for (INT k=0 ; k<nb ; k++)
            _l[y[k]].nb++;
   }

   {
        // compute (end of) adresse to put x values;

        _res_x   = NEW_VECTEUR(0,nb,INT);
        _res_evt   = NEW_VECTEUR(0,nb,bool);
        _l[_b._p0.y].xs = _res_x +  _l[_b._p0.y].nb;
        _l[_b._p0.y].evts = _res_evt +  _l[_b._p0.y].nb;

        for (INT ky=_b._p0.y +1 ; ky<_b._p1.y ; ky++)
        {
            _l[ky].xs   = _l[ky-1].xs   + _l[ky].nb;
            _l[ky].evts = _l[ky-1].evts + _l[ky].nb;
        }
   }

   //  put x values ("begin by end")
   for (INT k=0 ; k<nb ; k++)
   {
        Line * l = _l + y[k];
        l->xs --;
        l->evts --;
        *(l->xs)  = x[k];
        *(l->evts)  = 
                (
                       ( y[mod(k-1,nb)] < y[k])
                   !=  ( y[mod(k+1,nb)] < y[k])
                 );
        if (*(l->evts)) 
           l->nb_ev ++;
   }
   delete arg.pts;
   new_line(_b._p0.y);
}