Esempio n. 1
0
status_t
CamSensor::AcceptVideoFrame(uint32 &width, uint32 &height)
{
	// minimum sanity
	if (width < 1)
		width = MaxWidth();
	if (height < 1)
		height = MaxHeight();
	if (width > MaxWidth())
		width = MaxWidth();
	if (height > MaxHeight())
		height = MaxHeight();
	return B_OK;
}
Esempio n. 2
0
void PopupMenu::updateLayout(void)
{
    //Determine the Max Preferred Width of my MenuItems
    Real32 MaxWidth(0);
    Real32 TotalHeight(0);
    for(UInt32 i(0) ; i<getMFChildren()->size() ; ++i)
    {
        if(MaxWidth < getChildren(i)->getRequestedSize().x())
        {
            MaxWidth = getChildren(i)->getRequestedSize().x();
        }
        TotalHeight += getChildren(i)->getRequestedSize().y();
        if(i!=0)
        {
            TotalHeight += 1.0f;
        }
    }

    //Set My preferred Size
    Pnt2f TopLeft, BottomRight;
    Pnt2f InsetsTopLeft, InsetsBottomRight;
    getBounds(TopLeft, BottomRight);
    getInsideInsetsBounds(InsetsTopLeft, InsetsBottomRight);

    Vec2f InsetSize( (BottomRight-TopLeft) - (InsetsBottomRight-InsetsTopLeft) );
    setPreferredSize(Vec2f(MaxWidth+InsetSize.x(), TotalHeight+InsetSize.y()));

    //Sneakily set my size
    _sfSize.setValue(getPreferredSize());

    getInsideInsetsBounds(InsetsTopLeft, InsetsBottomRight);

    //Now position and size the Items
    Real32 TopOffset(InsetsTopLeft.y());
    for(UInt32 i(0) ; i<getMFChildren()->size() ; ++i)
    {
        getChildren(i)->setSize(Vec2f(MaxWidth, getChildren(i)->getRequestedSize().y()));
        getChildren(i)->setPosition(Pnt2f(InsetsTopLeft.x(), TopOffset));

        TopOffset += getChildren(i)->getRequestedSize().y() +1;
    }
}
Esempio n. 3
0
int main(int argc, char ** argv)
{
    if(argc != 6 )
      {
	cout <<"Usage: lobmaskCF_Levine <BasalGangliaThalamus_File(BGT)> <Singulate_Mask_File> <OutputFile> -g GridFile"<<endl;
	cout<<"To generate mask for Collenergic Fibres. By: Dr. Azhar Quddus"<<endl;
	exit(1);
      }

    info hdr_info;
    string fname(argv[1]);
    string cfname(argv[2]);

    //Read Header & Make Grid info
    read_analyze_header(fname + ".hdr", hdr_info);

    if(hdr_info.datatype == 2) make_grid<uchar>(argc, argv);
    else {
        if(hdr_info.datatype == 4) make_grid<short>(argc, argv);
        else {
            cout << "Input file has wrong datatype:"
                 <<" only uchar and short are allowed. Exiting... " << endl;
            exit(1);
        }
    }

    int xgrid=grid.sagital[2]-grid.sagital[1];

    //Read Image files
    uchar *img=read_analyze<uchar>(fname, hdr_info);
    uchar *cing=read_analyze<uchar>(cfname, hdr_info);

    //Make Blank Volume
   uchar *mask = new uchar[volume];
   if(!mask) {
       cout << "Memory allocation failed. Exiting..." << endl;
       exit(1);
   }
   fill(mask, mask + volume, (uchar)BACKGROUND);

   //Copy Singulate into output mask
   memcpy(mask,cing,volume);

    //Make Axial slice
   int axial_area=sz[0] * sz[1];
   uchar *axial_in=new uchar[axial_area];
   uchar *axial_out=new uchar[axial_area];

   if(!axial_in || !axial_out)
     {
       cout << "Failed to allocate memory for trace masks. Exiting..." << endl;
       exit(1);
     }

   fill(axial_in, axial_in + axial_area, BACKGROUND);

   //Find Strip end (from top)
   int oldWidth=0;
   int Width=0;
   int slice_break=0;
   int breakSlicesfromTop=0;

   for(int i=sz[2]-1;i>=0;i--)
     {
       get_Axial_Slice(axial_in,img,i);
       if(!Blank_Slice(axial_in,axial_area))
	 {
	   Width=MaxWidth(axial_in,sz[1], sz[0]);
	   breakSlicesfromTop++;
	 }

       if(oldWidth==0)
	 oldWidth=Width;

       if(oldWidth!=0 && Width!=0 && oldWidth!=Width)
	 {
	   slice_break=i+1;
	   break;
	 }
     }
   cout<<"Slice Break 1:"<<slice_break<<endl;

   int stSlices=3 * breakSlicesfromTop;

   //Find full curve end (from top)
   int slice_break2=0;
   for(int i=slice_break;i>=0;i--)
     {
       get_Axial_Slice(axial_in,img,i);
       bool line=true;
       int r=grid.coronal[9];

       if(!FindLine(axial_in,sz[1],sz[0],r))
	 {
	   slice_break2=i+1;
	   break;
	 }
     }
   cout<<"Slice Break 2:"<<slice_break2<<endl;


   cout<<"Valid Slices:";

//Processing Half-Curved regions...
   for(int i=0;i<slice_break2;i++)
     {
       int LastRow=0;

       get_Axial_Slice(axial_in,img,i);
       get_Axial_Slice(axial_out,mask,i);

       if(!Blank_Slice(axial_in,axial_area))
	 {cout<<i<<" " ;
	   for(int r=0;r<sz[1];r++)
	     for(int c=0;c<sz[0];c++)
	       {
		 int pos=r*sz[0]+c;
		 if(axial_in[pos]==0 && axial_in[pos+1]>0)
		   {
		     int C=c+(int)((double)xgrid/4.0);
		     for(int lc=C;lc > (C-xgrid/2);lc--)
		       axial_out[r*sz[0]+lc]=12;
		   }

		 if(axial_in[pos]==0 && axial_in[pos-1]>0)
		   {
		     int C=c-(int)((double)xgrid/4.0);
		     for(int lc=C;lc < (C+xgrid/2);lc++)
		       axial_out[r*sz[0]+lc]=14;
		   }
	       }
	 }

       set_Axial_Slice(axial_out, mask,i);
     }

   //Processing Full-Curved regions...
   for(int i=slice_break2;i<slice_break;i++)
     {
       get_Axial_Slice(axial_in,img,i);
       get_Axial_Slice(axial_out,mask,i);

       if(!Blank_Slice(axial_in,axial_area))
	 {cout<<i<<" " ;
	   for(int r=0;r<sz[1];r++)
	     for(int c=0;c<sz[0];c++)
	       {
		 int pos=r*sz[0]+c;
		 if(axial_in[pos]==0 && axial_in[pos+1]>0)
		   {
int C=c+3;
		     for(int lc=C;lc > (C-xgrid/2);lc--)
		       axial_out[r*sz[0]+lc]=12;
		   }

		 if(axial_in[pos]==0 && axial_in[pos-1]>0)
		   {
int C=c-3;
		     for(int lc=C;lc < (C+xgrid/2);lc++)
		       axial_out[r*sz[0]+lc]=14;
		   }
	       }
	 }

       set_Axial_Slice(axial_out, mask,i);
     }
   
   //Generating straight regions...
   int LTR=grid.coronal[6];
   int LBR=grid.coronal[13];
   int LRC=(int)((double)grid.sagital[3]-(double)xgrid/2.0);
   int LLC=LRC-(int)((double)xgrid/2.0);
LRC=LRC+3;
LLC=LLC+3;

   int RTR=LTR;
   int RBR=LBR;
   int RLC=(int)((double)grid.sagital[5]+(double)xgrid/2.0);
   int RRC=RLC+(int)((double)xgrid/2.0);
RLC=RLC-3;
RRC=RRC-3;

   for(int i=slice_break;i < (slice_break + stSlices); i++)
     {
       get_Axial_Slice(axial_in,img,i);

       cout<<i<<" ";

       get_Axial_Slice(axial_out,mask,i);

       for(int r=LTR;r<=LBR;r++)
	 for(int c=LLC;c<=LRC;c++)
	   axial_out[r*sz[1]+c]=12;

       for(int r=RTR;r<=RBR;r++)
	 for(int c=RLC;c<=RRC;c++)
	   axial_out[r*sz[1]+c]=14;

       set_Axial_Slice(axial_out, mask,i);
     }
     
    // output
    hdr_info.max = 15;
    hdr_info.min = 0;
    hdr_info.datatype = 2;
    cout<<endl;
    cout << "Writing: "<< argv[3]<<"...";
    write_analyze(string(argv[3]), mask,  hdr_info);
    cout <<"Done!"<<endl;
    
    delete [] mask;
    delete [] img;
    delete [] cing;
    delete [] axial_in;
    delete [] axial_out;
    return 0;
}  // end of main