using namespace Dali;
ImageView::ImageView()
-: Control( ControlBehaviour( CONTROL_BEHAVIOUR_DEFAULT ) )
+: Control( ControlBehaviour( CONTROL_BEHAVIOUR_DEFAULT ) ),
+ mImageSize()
{
}
mVisual = visual;
}
- DevelControl::RegisterVisual( *this, Toolkit::ImageView::Property::IMAGE, visual );
+ if( !mShaderMap.Empty() )
+ {
+ Internal::Visual::Base& visualImpl = Toolkit::GetImplementation( visual );
+ visualImpl.SetCustomShader( mShaderMap );
+ }
+
+ DevelControl::RegisterVisual( *this, Toolkit::ImageView::Property::IMAGE, visual );
}
else
{
mVisual = visual;
}
+ if( !mShaderMap.Empty() )
+ {
+ Internal::Visual::Base& visualImpl = Toolkit::GetImplementation( visual );
+ visualImpl.SetCustomShader( mShaderMap );
+ }
+
DevelControl::RegisterVisual( *this, Toolkit::ImageView::Property::IMAGE, visual );
}
else
{
// Don't bother comparing if we had a visual previously, just drop old visual and create new one
mUrl = url;
+ mImageSize = size;
mImage.Reset();
mPropertyMap.Clear();
mVisual = visual;
}
+ if( !mShaderMap.Empty() )
+ {
+ Internal::Visual::Base& visualImpl = Toolkit::GetImplementation( visual );
+ visualImpl.SetCustomShader( mShaderMap );
+ }
+
DevelControl::RegisterVisual( *this, Toolkit::ImageView::Property::IMAGE, visual );
}
else
{
// Visual ready so update visual attached to this ImageView, following call to RelayoutRequest will use this visual.
mVisual = DevelControl::GetVisual( *this, Toolkit::ImageView::Property::IMAGE );
+ Toolkit::DevelControl::RequestLayout( *this );
}
///////////////////////////////////////////////////////////
impl.SetImage( *map );
}
// the property map contains only the custom shader
- else if( ( impl.mVisual )&&( map->Count() == 1u )&&( shaderValue ) )
+ else if( ( map->Count() == 1u )&&( shaderValue ) )
{
Property::Map* shaderMap = shaderValue->GetMap();
if( shaderMap )
{
- Internal::Visual::Base& visual = Toolkit::GetImplementation( impl.mVisual );
- visual.SetCustomShader( *shaderMap );
- if( imageView.OnStage() )
+ impl.mShaderMap = *shaderMap;
+
+ if( !impl.mUrl.empty() )
+ {
+ impl.SetImage( impl.mUrl, impl.mImageSize );
+ }
+ else if( impl.mImage )
+ {
+ impl.SetImage( impl.mImage );
+ }
+ else if( !impl.mPropertyMap.Empty() )
{
- // force to create new core renderer to use the newly set shader
- visual.SetOffStage( imageView );
- visual.SetOnStage( imageView );
+ impl.SetImage( impl.mPropertyMap );
}
}
}
Scripting::CreatePropertyMap( impl.mImage, map );
value = map;
}
- else if( !impl.mPropertyMap.Empty() )
+ else
{
- value = impl.mPropertyMap;
+ Property::Map map;
+ Toolkit::Visual::Base visual = DevelControl::GetVisual( impl, Toolkit::ImageView::Property::IMAGE );
+ if( visual )
+ {
+ visual.CreatePropertyMap( map );
+ }
+ value = map;
}
break;
}