#include <dali/public-api/rendering/visual-renderer.h>
//INTERNAL HEARDER
+#include <dali-toolkit/devel-api/visuals/color-visual-properties-devel.h>
#include <dali-toolkit/devel-api/visuals/visual-actions-devel.h>
#include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
#include <dali-toolkit/internal/helpers/property-helper.h>
mImpl->mBorderlineWidth = width;
}
- if(DALI_UNLIKELY(mImpl->mRenderer))
+ if(DALI_UNLIKELY(mImpl->mRenderer && IsTypeAvailableForBorderline(mImpl->mType)))
{
// Unusual case. SetProperty called after OnInitialize().
// Assume that DoAction call UPDATE_PROPERTY.
// Check whether we must update shader.
if(!mImpl->mAlwaysUsingBorderline && IsBorderlineRequired())
{
+ // Required to change shader mean, we didn't setup BORDERLINE_COLOR and BORDERLINE_OFFSET into mRenderer before. Set property now.
+ mImpl->mRenderer.SetProperty(DecoratedVisualRenderer::Property::BORDERLINE_COLOR, mImpl->mBorderlineColor);
+ mImpl->mRenderer.SetProperty(DecoratedVisualRenderer::Property::BORDERLINE_OFFSET, mImpl->mBorderlineOffset);
+
// Make Blend mode ON_WITHOUT_CULL for transparent mix color.
mImpl->mRenderer.SetProperty(Renderer::Property::BLEND_MODE, BlendMode::ON_WITHOUT_CULL);
mImpl->mBorderlineColor = color;
}
- if(DALI_UNLIKELY(mImpl->mRenderer))
+ if(DALI_UNLIKELY(mImpl->mRenderer && IsTypeAvailableForBorderline(mImpl->mType)))
{
// Unusual case. SetProperty called after OnInitialize().
// Assume that DoAction call UPDATE_PROPERTY.
mImpl->mBorderlineOffset = offset;
}
- if(DALI_UNLIKELY(mImpl->mRenderer))
+ if(DALI_UNLIKELY(mImpl->mRenderer && IsTypeAvailableForBorderline(mImpl->mType)))
{
// Unusual case. SetProperty called after OnInitialize().
// Assume that DoAction call UPDATE_PROPERTY.
}
}
- if(DALI_UNLIKELY(mImpl->mRenderer))
+ if(DALI_UNLIKELY(mImpl->mRenderer && IsTypeAvailableForCornerRadius(mImpl->mType)))
{
// Unusual case. SetProperty called after OnInitialize().
// Assume that DoAction call UPDATE_PROPERTY.
// Check whether we must update shader.
if(!mImpl->mAlwaysUsingCornerRadius && IsRoundedCornerRequired())
{
+ // Required to change shader mean, we didn't setup CORNER_RADIUS_POLICY into mRenderer before. Set property now.
+ mImpl->mRenderer.SetProperty(DecoratedVisualRenderer::Property::CORNER_RADIUS_POLICY, mImpl->mCornerRadiusPolicy);
+
// Change the shader must not be occured many times. we always have to use corner radius feature.
mImpl->mAlwaysUsingCornerRadius = true;
}
}
+void Visual::Base::DoActionExtension(const Dali::Property::Index actionId, const Dali::Any attributes)
+{
+ OnDoActionExtension(actionId, attributes);
+}
+
void Visual::Base::SetDepthIndex(int index)
{
mImpl->mDepthIndex = index;
mImpl->mTransform.mOffset = mImpl->mRenderer.GetProperty<Vector2>(VisualRenderer::Property::TRANSFORM_OFFSET);
mImpl->mTransform.mSize = mImpl->mRenderer.GetProperty<Vector2>(VisualRenderer::Property::TRANSFORM_SIZE);
- if(IsTypeAvailableForCornerRadius(mImpl->mType))
+ if(IsRoundedCornerRequired())
{
mImpl->mCornerRadius = mImpl->mRenderer.GetProperty<Vector4>(DecoratedVisualRenderer::Property::CORNER_RADIUS);
}
- if(IsTypeAvailableForBorderline(mImpl->mType))
+ if(IsBorderlineRequired())
{
mImpl->mBorderlineWidth = mImpl->mRenderer.GetProperty<float>(DecoratedVisualRenderer::Property::BORDERLINE_WIDTH);
mImpl->mBorderlineColor = mImpl->mRenderer.GetProperty<Vector4>(DecoratedVisualRenderer::Property::BORDERLINE_COLOR);
// May be overriden by derived class
}
+void Visual::Base::OnDoActionExtension(const Property::Index actionId, const Dali::Any attributes)
+{
+ // May be overriden by derived class
+}
+
void Visual::Base::RegisterMixColor()
{
if(mImpl->mRenderer)
Internal::TransitionData::Animator& animator)
{
#if defined(DEBUG_ENABLED)
+ if(gVisualBaseLogFilter->IsEnabledFor(Debug::General))
{
std::ostringstream oss;
oss << "Visual::Base::AnimateProperty(Visual:" << mImpl->mName << " Property:" << animator.propertyKey << " Target: " << animator.targetValue << std::endl;
}
break;
}
- // Special case for MIX_COLOR
default:
{
+ // Special case for MIX_COLOR
if(key.type == Property::Key::INDEX &&
((mImpl->mType == Toolkit::Visual::COLOR && key.indexKey == ColorVisual::Property::MIX_COLOR) ||
(mImpl->mType == Toolkit::Visual::PRIMITIVE && key.indexKey == PrimitiveVisual::Property::MIX_COLOR)))
{
return Dali::Property(mImpl->mRenderer, VisualRenderer::Property::VISUAL_MIX_COLOR);
}
+
+ // Special case for BLUR_RADIUS
+ if(mImpl->mType == Toolkit::Visual::COLOR &&
+ ((key.type == Property::Key::INDEX && key.indexKey == DevelColorVisual::Property::BLUR_RADIUS) ||
+ (key.type == Property::Key::STRING && key.stringKey == BLUR_RADIUS_NAME)))
+ {
+ // Request to color-visual class
+ return OnGetPropertyObject(key);
+ }
}
}
+ // If it is not VisualRenderer property, check registered Renderer and Shader property.
+ Property::Index index = GetPropertyIndex(key);
+ if(index != Property::INVALID_INDEX)
+ {
+ return Dali::Property(mImpl->mRenderer, index);
+ }
+
// We can't find the property in the base class.
// Request to child class
return OnGetPropertyObject(key);