Output_Computed * DE_GW_Not_Comp::compute(const Arg_Output_Comp & arg) { ASSERT_TJS_USER ( arg.flux()->dim() == 2, "need 2-dimensional sets to write in raster Graphic Window" ); // get the general representation of window Data_El_Geom_GWin * geom = _ew.degeow(); ASSERT_TJS_USER ( (geom->handle_rastser_scale_negatif()) || ((geom->sc().x>0) && (geom->sc().y>0)), "can only handle positive scales in raster mode (for now)" ); Data_Elise_Gra_Win * degw = _ew.degraw(); degw->_degd->reinit_cp(); degw->warn_graph(); (degw->sop()).pal_is_loaded(_pal); Data_Elise_Palette * dep = _pal.dep(); dep->verif_out_put(arg); Output_Computed * res; switch (arg.flux()->type()) { case Pack_Of_Pts::rle : res = degw->rle_out_comp(geom,arg,dep,mOnYDiff); break; case Pack_Of_Pts::integer : INT v[Elise_Std_Max_Dim]; if (arg.fonc()->icste(v)) res = degw->pint_cste_out_comp(geom,arg,dep,v); else res = degw->pint_no_cste_out_comp(geom,arg,dep); break; default : elise_fatal_error ("Raster Windows cannot manage real points (for now)",__FILE__,__LINE__); res = 0; } res = out_adapt_type_fonc (arg,res,Pack_Of_Pts::integer); { Pt2di p0,p1; geom->box_user_geom(p0,p1); res = clip_out_put(res,arg,p0,p1); } return res; }
virtual Output_Computed * compute(const Arg_Output_Comp & arg) { ASSERT_INTERNAL ( (*_pack_push)->dim() <= arg.fonc()->idim_out(), "insufficient dim in Push_Values_Out_Not_Comp" ); return out_adapt_type_fonc ( arg, new Push_Values_Out_Comp<Type>(arg,_pack_push), (*_pack_push)->type() ); }