예제 #1
0
        ROI_Item::ROI_Item (const MR::Image::Info& src) :
            Volume (src),
            saved (true),
            current_undo (-1)
        {
          type = gl::UNSIGNED_BYTE;
          format = gl::RED;
          internal_format = gl::R8;
          set_allowed_features (false, true, false);
          set_interpolate (false);
          set_use_transparency (true);
          set_min_max (0.0, 1.0);
          set_windowing (-1.0f, 0.0f);
          alpha = 1.0f;
          colour = preset_colours[current_preset_colour++];
          if (current_preset_colour >= 6)
            current_preset_colour = 0;
          transparent_intensity = 0.4f;
          opaque_intensity = 0.6f;
          colourmap = ColourMap::index ("Colour");
          float voxsize = std::min (src.vox(0), std::min (src.vox(1), src.vox(2)));
          brush_size = min_brush_size = voxsize;
          max_brush_size = 100.0f*min_brush_size;

          std::stringstream name;
          name << "ROI" << std::setfill('0') << std::setw(5) << new_roi_counter++ << ".mif";
          filename = name.str();

          Window::GrabContext context;
          bind();
          allocate();
        }
예제 #2
0
template <class elem,class Type> void tpl_red_seg<elem,Type>::f
(
      Type * out,
      const Type * in,
      Type * buf_av,
      Type * buf_ar,
      INT    x_min,
      INT    x_max,
      INT    dx0,
      INT    dx1,
      Type   neutre
)
{
     set_min_max(dx0,dx1);


     if (dx1-dx0 <=3)
     {
          trivial_f(out,in,buf_av,x_min,x_max,dx0,dx1);
          return;
     }


    INT  per;
    INT  X_max,X_min;

    per = dx1-dx0 + 1;
    X_min = x_min + dx0;
    X_max = x_max + dx1;

    // une passe en avant;

	INT4 x; // FUUUCCKKK to visual

    buf_av[X_min] = in[X_min];
    for (x =X_min+1; x<X_max ; x++)
        if (x%per)
           buf_av[x] = elem::op(buf_av[x-1],in[x]);
        else
           buf_av[x] = in[x];


    // une passe en arriere;

    buf_ar[X_max-1] =  in[X_max-1];
    for (x = X_max-2; x >= X_min ; x--)
        if (x%per)
           buf_ar[x] = elem::op(buf_ar[x+1],in[x]);
        else
           buf_ar[x] = neutre;

    // Conclusion :

    for (x=x_min ; x<x_max ; x++)
        out[x] = elem::op(buf_ar[x+dx0],buf_av[x+dx1]);
}
예제 #3
0
SPHBonesData::SPHBonesData()
{
	bones_mask					=u64(-1);
	root_bone					=0;

	Fvector						_mn, _mx;

	_mn.set						(-100.f,-100.f,-100.f);
	_mx.set						(100.f,100.f,100.f);
	set_min_max					(_mn, _mx);
}
예제 #4
0
int smt_set_mac_opvalues(struct s_smc *smc)
{
	int	st ;
	int	st2 ;

	st = set_min_max(1,smc->mib.m[MAC0].fddiMACTvxValueMIB,
		smc->mib.a[PATH0].fddiPATHTVXLowerBound,
		&smc->mib.m[MAC0].fddiMACTvxValue) ;
	st |= set_min_max(0,smc->mib.m[MAC0].fddiMACT_MaxMIB,
		smc->mib.a[PATH0].fddiPATHT_MaxLowerBound,
		&smc->mib.m[MAC0].fddiMACT_Max) ;
	st |= (st2 = set_min_max(0,smc->mib.m[MAC0].fddiMACT_ReqMIB,
		smc->mib.a[PATH0].fddiPATHMaxT_Req,
		&smc->mib.m[MAC0].fddiMACT_Req)) ;
	if (st2) {
		AIX_EVENT(smc, (u_long) FDDI_RING_STATUS, (u_long)
			FDDI_SMT_EVENT, (u_long) FDDI_REMOTE_T_REQ,
			smt_get_event_word(smc));
	}
	return st;
}
예제 #5
0
int smt_set_mac_opvalues(struct s_smc *smc)
{
	int	st ;
	int	st2 ;

	st = set_min_max(1,smc->mib.m[MAC0].fddiMACTvxValueMIB,
		smc->mib.a[PATH0].fddiPATHTVXLowerBound,
		&smc->mib.m[MAC0].fddiMACTvxValue) ;
	st |= set_min_max(0,smc->mib.m[MAC0].fddiMACT_MaxMIB,
		smc->mib.a[PATH0].fddiPATHT_MaxLowerBound,
		&smc->mib.m[MAC0].fddiMACT_Max) ;
	st |= (st2 = set_min_max(0,smc->mib.m[MAC0].fddiMACT_ReqMIB,
		smc->mib.a[PATH0].fddiPATHMaxT_Req,
		&smc->mib.m[MAC0].fddiMACT_Req)) ;
	if (st2) {
		/* Treq attribute changed remotely. So send an AIX_EVENT to the
		 * user
		 */
		AIX_EVENT(smc, (u_long) FDDI_RING_STATUS, (u_long)
			FDDI_SMT_EVENT, (u_long) FDDI_REMOTE_T_REQ,
			smt_get_event_word(smc));
	}
	return(st) ;
}
예제 #6
0
void SPHBonesData::net_Load(NET_Packet &P)
{
	bones.clear					();

	bones_mask					=P.r_u64();
	root_bone					=P.r_u16();
	Fvector						_mn, _mx;
	P.r_vec3					(_mn);
	P.r_vec3					(_mx);
	set_min_max					(_mn, _mx);

	u16 bones_number			=P.r_u16();//bones number /**/
	for(int i=0;i<bones_number;i++)
	{
		SPHNetState	S;
		S.net_Load(P,get_min(),get_max());
		bones.push_back(S);
	}
}
예제 #7
0
template <class elem,class Type> void grp_tpl_red_seg<elem,Type>::f
(
         Type * out,
         const Type * in,
         Type * buf_av,
         INT    x_min,
         INT    x_max,
         INT    dx0,
         INT    dx1,
         Type   neutre
)
{
     set_min_max(dx0,dx1);

     if (dx1-dx0 <=1)
     {
          tpl_red_seg<elem,Type>::trivial_f(out,in,buf_av,x_min,x_max,dx0,dx1);
          return;
     }

     Type * tmp  = buf_av + x_min + dx0;
     const Type * ptr_ar = in + x_min + dx0;
     const Type * ptr_av = in + x_min + dx0;

     Type res = neutre;

     for (INT dx = dx0; dx <dx1 ; dx++)
         elem::op_eq(res,*(ptr_av++));
          
     for (INT x = x_min; x <x_max ; x++)
     {
         elem::op_eq(res,*(ptr_av++));
         *(tmp++) = res;
         elem::inv_eq(res,*(ptr_ar++));
     }

     convert(out+x_min,buf_av + x_min + dx0,x_max-x_min);
        
}