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; } }
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()))); } }
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; }; }
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); } }
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); }
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)) { }
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) { }
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) { }
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); }
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; }
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" ); }
void init() { buf = NEW_VECTEUR(0,sz_buf,U_INT1); }
LastRank_HK::LastRank_HK(INT max_vals) : Histo_Kieme (max_vals), _h (NEW_VECTEUR(-1,max_vals,INT)) { raz(); }
BinTree_HK::BinTree_HK(INT max_vals) : Histo_Kieme (Pow_of_2_sup(max_vals)), _h (NEW_VECTEUR(0,2*_max_vals,INT)) { raz(); }
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]; } }
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); }