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; }
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; } }
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