void NewImageInterface::__SetToActiveImage_Click( Button& /*sender*/, bool /*checked*/ ) { ImageWindow w = ImageWindow::ActiveWindow(); if ( !w.IsNull() ) { ImageVariant v = w.MainView().Image(); AbstractImage* img = v.AnyImage(); if ( img != 0 ) { if ( v.IsFloatSample() ) switch ( v.BitsPerSample() ) { case 32: instance.sampleFormat = NewImageSampleFormat::F32; break; case 64: instance.sampleFormat = NewImageSampleFormat::F64; break; } else switch ( v.BitsPerSample() ) { case 8: instance.sampleFormat = NewImageSampleFormat::I8; break; case 16: instance.sampleFormat = NewImageSampleFormat::I16; break; case 32: instance.sampleFormat = NewImageSampleFormat::I32; break; } instance.colorSpace = img->IsColor() ? NewImageColorSpace::RGB : NewImageColorSpace::Gray; instance.width = img->Width(); instance.height = img->Height(); instance.numberOfChannels = img->NumberOfChannels(); UpdateControls(); } } }
static void FindPreviews( StringList& items, const String& imageId, const String& previewId ) { if ( imageId.HasWildcards() ) { Array<ImageWindow> W = ImageWindow::AllWindows(); for ( size_type i = 0; i < W.Length(); ++i ) if ( String( W[i].MainView().Id() ).WildMatch( imageId ) ) FindPreviews( items, W[i], previewId ); } else { ImageWindow w = ImageWindow::WindowById( IsoString( imageId ) ); if ( w.IsNull() ) throw ParseError( "Image not found", imageId ); FindPreviews( items, w, previewId ); } }
bool AnnotationInterface::ImportProcess( const ProcessImplementation& p ) { const AnnotationInstance* i = dynamic_cast<const AnnotationInstance*>( &p ); if ( i == 0 ) throw Error( "Not an Annotation instance." ); if ( view == 0 ) { ImageWindow w = ImageWindow::ActiveWindow(); if ( w.IsNull() ) { throw Error( "The Annotation interface requires an active image window to import a process instance." ); return false; } view = new View( w.MainView() ); view->AddToDynamicTargets(); } ClearBitmaps(); instance.Assign( *i ); annotationPlaced = false; leaderPlaced = false; if ( view->Window().CurrentView() != *view ) view->Window().SelectView( *view ); UpdateControls(); return true; }
ArgumentList ExtractArguments( const StringList& argv, argument_item_mode mode, ArgumentOptions options ) { bool noItems = mode == ArgumentItemMode::NoItems; bool itemsAsFiles = mode == ArgumentItemMode::AsFiles; bool itemsAsViews = mode == ArgumentItemMode::AsViews; bool allowWildcards = !noItems && options.IsFlagSet( ArgumentOption::AllowWildcards ); bool noPreviews = itemsAsViews && options.IsFlagSet( ArgumentOption::NoPreviews ); bool recursiveDirSearch = itemsAsFiles && allowWildcards && options.IsFlagSet( ArgumentOption::RecursiveDirSearch ); bool recursiveSearchArgs = recursiveDirSearch && options.IsFlagSet( ArgumentOption::RecursiveSearchArgs ); // This is the recursive search mode flag, controlled by --r[+|-] bool recursiveSearch = false; // The list of existing view identifiers, in case itemsAsViews = true. SortedStringList imageIds; // The list of extracted arguments ArgumentList arguments; for ( StringList::const_iterator i = argv.Begin(); i != argv.End(); ++i ) { if ( i->StartsWith( '-' ) ) { Argument arg( i->At( 1 ) ); if ( recursiveSearchArgs && arg.Id() == s_recursiveSearchArg ) { if ( arg.IsSwitch() ) recursiveSearch = arg.SwitchState(); else if ( arg.IsLiteral() ) recursiveSearch = true; else arguments.Add( arg ); } else arguments.Add( arg ); } else { if ( noItems ) throw ParseError( "Non-parametric arguments are not allowed", *i ); StringList items; if ( itemsAsFiles ) { String fileName = *i; if ( fileName.StartsWith( '\"' ) ) fileName.Delete( 0 ); if ( fileName.EndsWith( '\"' ) ) fileName.Delete( fileName.UpperBound() ); fileName.Trim(); if ( fileName.IsEmpty() ) throw ParseError( "Empty path specification", *i ); fileName = File::FullPath( fileName ); if ( fileName.HasWildcards() ) { if ( !allowWildcards ) throw ParseError( "Wildcards not allowed", fileName ); items = SearchDirectory( fileName, recursiveSearch ); } else items.Add( fileName ); } else if ( itemsAsViews ) { String viewId = *i; if ( !allowWildcards ) if ( viewId.HasWildcards() ) throw ParseError( "Wildcards not allowed", viewId ); size_type p = viewId.Find( "->" ); if ( p != String::notFound ) { if ( noPreviews ) throw ParseError( "Preview identifiers not allowed", viewId ); String imageId = viewId.Left( p ); if ( imageId.IsEmpty() ) throw ParseError( "Missing image identifier", viewId ); String previewId = viewId.Substring( p+2 ); if ( previewId.IsEmpty() ) throw ParseError( "Missing preview identifier", viewId ); FindPreviews( items, imageId, previewId ); } else { if ( viewId.HasWildcards() ) { Array<ImageWindow> W = ImageWindow::AllWindows(); for ( size_type i = 0; i < W.Length(); ++i ) { View v = W[i].MainView(); if ( String( v.Id() ).WildMatch( viewId ) ) AddView( items, v ); } } else { ImageWindow w = ImageWindow::WindowById( IsoString( viewId ) ); if ( w.IsNull() ) throw ParseError( "Image not found", viewId ); AddView( items, w.MainView() ); } } } else items.Add( *i ); Argument arg( *i, items ); arguments.Add( arg ); } } return arguments; }