@ -95,27 +95,34 @@ cv::viz::VizMap cv::viz::VizAccessor::viz_map_;
cv : : viz : : VizAccessor : : VizAccessor ( ) { }
cv : : viz : : VizAccessor : : ~ VizAccessor ( )
cv : : viz : : VizAccessor : : ~ VizAccessor ( ) { }
cv : : viz : : VizAccessor & cv : : viz : : VizAccessor : : getInstance ( )
{
is_instantiated_ = false ;
if ( ! is_instantiated_ )
{
instance_ = new VizAccessor ( ) ;
is_instantiated_ = true ;
}
return * instance_ ;
}
cv : : viz : : VizAccessor * cv : : viz : : VizAccessor : : getInstance ( )
void cv : : viz : : VizAccessor : : releas e( )
{
if ( is_instantiated_ )
{
instance_ = new VizAccessor ( ) ;
is_instantiated_ = true ;
delete instance_ ;
instance_ = 0 ;
is_instantiated_ = false ;
}
return instance_ ;
}
cv : : viz : : Viz3d cv : : viz : : VizAccessor : : get ( const String & window_name )
{
// Add the prefix Viz
String name ( " Viz " ) ;
name = window_name . empty ( ) ? name : name + " - " + window_name ;
String name ;
generateWindowName ( window_name , name ) ;
VizMap : : iterator vm_itr = viz_map_ . find ( name ) ;
bool exists = vm_itr ! = viz_map_ . end ( ) ;
if ( exists ) return vm_itr - > second ;
@ -133,13 +140,29 @@ void cv::viz::VizAccessor::add(Viz3d window)
void cv : : viz : : VizAccessor : : remove ( const String & window_name )
{
VizMap : : iterator vm_itr = viz_map_ . find ( window_name ) ;
// Add the prefix Viz
String name ;
generateWindowName ( window_name , name ) ;
VizMap : : iterator vm_itr = viz_map_ . find ( name ) ;
bool exists = vm_itr ! = viz_map_ . end ( ) ;
if ( ! exists ) return ;
viz_map_ . erase ( vm_itr ) ;
}
void cv : : viz : : VizAccessor : : generateWindowName ( const String & window_name , String & output )
{
output = " Viz " ;
// Already is Viz
if ( window_name = = output ) return ;
String prefixed = output + " - " ;
if ( window_name . substr ( 0 , prefixed . length ( ) ) = = prefixed ) output = window_name ; // Already has "Viz - "
else if ( window_name . substr ( 0 , output . length ( ) ) = = output ) output = prefixed + window_name ; // Doesn't have prefix
else output = ( window_name = = " " ? output : prefixed + window_name ) ;
}
cv : : viz : : Viz3d cv : : viz : : get ( const String & window_name )
{
return cv : : viz : : VizAccessor : : getInstance ( ) - > get ( window_name ) ;
return cv : : viz : : VizAccessor : : getInstance ( ) . get ( window_name ) ;
}