Example #1
0
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()
                     );
          }