Impl(Control& controlImpl)
: mControlImpl( controlImpl ),
mStyleName(""),
- mBackgroundVisual(),
mBackgroundColor(Color::TRANSPARENT),
mStartingPinchScale( NULL ),
mKeyEventSignal(),
}
else
{
- // An empty map means the background is no longer required
+ // An empty image means the background is no longer required
controlImpl.ClearBackground();
}
break;
case Toolkit::Control::Property::BACKGROUND:
{
const Property::Map* map = value.GetMap();
- if( map )
+ if( map && !map->Empty() )
{
controlImpl.SetBackground( *map );
}
else
{
- // The background is not a property map, so we should clear the background
+ // The background is an empty property map, so we should clear the background
controlImpl.ClearBackground();
}
break;
{
DALI_LOG_WARNING( "BACKGROUND_IMAGE property is deprecated. Use BACKGROUND property instead\n" );
Property::Map map;
- if( controlImpl.mImpl->mBackgroundVisual )
+ Toolkit::Visual::Base visual = controlImpl.GetVisual( Toolkit::Control::Property::BACKGROUND );
+ if( visual )
{
- controlImpl.mImpl->mBackgroundVisual.CreatePropertyMap( map );
+ visual.CreatePropertyMap( map );
}
value = map;
break;
case Toolkit::Control::Property::BACKGROUND:
{
Property::Map map;
- if( controlImpl.mImpl->mBackgroundVisual )
+ Toolkit::Visual::Base visual = controlImpl.GetVisual( Toolkit::Control::Property::BACKGROUND );
+ if( visual )
{
- (controlImpl.mImpl->mBackgroundVisual).CreatePropertyMap( map );
+ visual.CreatePropertyMap( map );
}
value = map;
Control& mControlImpl;
RegisteredVisualContainer mVisuals; // Stores visuals needed by the control, non trivial type so std::vector used.
std::string mStyleName;
- Toolkit::Visual::Base mBackgroundVisual; ///< The visual to render the background
Vector4 mBackgroundColor; ///< The color of the background visual
Vector3* mStartingPinchScale; ///< The scale when a pinch gesture starts, TODO: consider removing this
Toolkit::Control::KeyEventSignalType mKeyEventSignal;
Property::Map map;
map[ Toolkit::VisualProperty::TYPE ] = Toolkit::Visual::COLOR;
map[ Toolkit::ColorVisual::Property::MIX_COLOR ] = color;
- mImpl->mBackgroundVisual = Toolkit::VisualFactory::Get().CreateVisual( map );
- RegisterVisual( Toolkit::Control::Property::BACKGROUND, mImpl->mBackgroundVisual );
- if( mImpl->mBackgroundVisual )
- {
- mImpl->mBackgroundVisual.SetDepthIndex( DepthIndex::BACKGROUND );
- }
+
+ SetBackground( map );
}
Vector4 Control::GetBackgroundColor() const
void Control::SetBackground( const Property::Map& map )
{
- mImpl->mBackgroundVisual = Toolkit::VisualFactory::Get().CreateVisual( map );
- RegisterVisual( Toolkit::Control::Property::BACKGROUND, mImpl->mBackgroundVisual );
- if( mImpl->mBackgroundVisual )
+ Toolkit::Visual::Base visual = Toolkit::VisualFactory::Get().CreateVisual( map );
+ if( visual )
{
- mImpl->mBackgroundVisual.SetDepthIndex( DepthIndex::BACKGROUND );
+ RegisterVisual( Toolkit::Control::Property::BACKGROUND, visual );
+ visual.SetDepthIndex( DepthIndex::BACKGROUND );
}
}
void Control::SetBackgroundImage( Image image )
{
- mImpl->mBackgroundVisual = Toolkit::VisualFactory::Get().CreateVisual( image );
- RegisterVisual( Toolkit::Control::Property::BACKGROUND, mImpl->mBackgroundVisual );
- if( mImpl->mBackgroundVisual )
+ DALI_LOG_WARNING( "SetBackgroundImage is for the depreciated Property::BACKGROUND_IMAGE use SetBackground( const Property::Map& map )\n" );
+ Toolkit::Visual::Base visual = Toolkit::VisualFactory::Get().CreateVisual( image );
+ if( visual )
{
- mImpl->mBackgroundVisual.SetDepthIndex( DepthIndex::BACKGROUND );
+ RegisterVisual( Toolkit::Control::Property::BACKGROUND, visual );
+ visual.SetDepthIndex( DepthIndex::BACKGROUND );
}
}
void Control::ClearBackground()
{
- if( mImpl->mBackgroundVisual )
- {
- Actor self( Self() );
- Toolkit::GetImplementation( mImpl->mBackgroundVisual ).SetOffStage( self );
- mImpl->mBackgroundVisual.Reset();
- }
- mImpl->mBackgroundColor = Color::TRANSPARENT;
+ UnregisterVisual( Toolkit::Control::Property::BACKGROUND );
+ mImpl->mBackgroundColor = Color::TRANSPARENT;
}
void Control::EnableGestureDetection(Gesture::Type type)
void Control::UnregisterVisual( Property::Index index )
{
- RegisteredVisualContainer::Iterator iter;
- if ( FindVisual( index, mImpl->mVisuals, iter ) )
- {
- mImpl->mVisuals.Erase( iter );
- }
+ RegisteredVisualContainer::Iterator iter;
+ if ( FindVisual( index, mImpl->mVisuals, iter ) )
+ {
+ Actor self( Self() );
+ Toolkit::GetImplementation((*iter)->visual).SetOffStage( self );
+ (*iter)->visual.Reset();
+ mImpl->mVisuals.Erase( iter );
+ }
}
Toolkit::Visual::Base Control::GetVisual( Property::Index index ) const
{
if ( (*iter)->enabled == enable )
{
+ DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Control::EnableVisual Visual Already enabled set (%s) \n", enable?"enabled":"disabled");
return;
}
{
if ( enable )
{
-
+ DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Control::EnableVisual Setting Visual(%d) on stage \n", index );
Toolkit::GetImplementation((*iter)->visual).SetOnStage( parentActor );
}
else
{
+ DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Control::EnableVisual Setting Visual(%d) off stage \n", index );
Toolkit::GetImplementation((*iter)->visual).SetOffStage( parentActor ); // No need to call if control not staged.
}
}
void Control::OnStageConnection( int depth )
{
+ DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Control::OnStageConnection number of registered visuals(%d)\n", mImpl->mVisuals.Size() );
+
for(RegisteredVisualContainer::Iterator iter = mImpl->mVisuals.Begin(); iter!= mImpl->mVisuals.End(); iter++)
{
// Check whether the visual is empty and enabled
if( (*iter)->visual && (*iter)->enabled )
{
+ DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Control::OnStageConnection Setting visual(%d) on stage\n", (*iter)->index );
Actor self( Self() );
Toolkit::GetImplementation((*iter)->visual).SetOnStage( self );
}
// Check whether the visual is empty
if( (*iter)->visual )
{
+ DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Control::OnStageDisconnection Setting visual(%d) off stage\n", (*iter)->index );
Actor self( Self() );
Toolkit::GetImplementation((*iter)->visual).SetOffStage( self );
}
void Control::OnSizeSet(const Vector3& targetSize)
{
- if( mImpl->mBackgroundVisual )
+ Toolkit::Visual::Base visual = GetVisual( Toolkit::Control::Property::BACKGROUND );
+ if( visual )
{
Vector2 size( targetSize );
- mImpl->mBackgroundVisual.SetSize( size );
+ visual.SetSize( size );
}
}
Vector3 Control::GetNaturalSize()
{
- if( mImpl->mBackgroundVisual )
+ Toolkit::Visual::Base visual = GetVisual( Toolkit::Control::Property::BACKGROUND );
+ if( visual )
{
Vector2 naturalSize;
- mImpl->mBackgroundVisual.GetNaturalSize(naturalSize);
- return Vector3(naturalSize);
+ visual.GetNaturalSize( naturalSize );
+ return Vector3( naturalSize );
}
return Vector3::ZERO;
}