return ret;
}
+ [Obsolete("Do not use this, that is deprecated in API13.")]
+ internal override void ApplyCornerRadius()
+ {
+ base.ApplyCornerRadius();
+
+ if (backgroundExtraData == null) return;
+
+ // Update corner radius properties to image by ActionUpdateProperty
+ if (backgroundExtraDataUpdatedFlag.HasFlag(BackgroundExtraDataUpdatedFlag.ContentsCornerRadius))
+ {
+ if (backgroundExtraData.CornerRadius != null)
+ {
+ _ = Interop.View.InternalUpdateVisualPropertyVector4(this.SwigCPtr, ImageView.Property.IMAGE, Visual.Property.CornerRadius, Vector4.getCPtr(backgroundExtraData.CornerRadius));
+ }
+ if (backgroundExtraData.CornerSquareness != null)
+ {
+ _ = Interop.View.InternalUpdateVisualPropertyVector4(this.SwigCPtr, ImageView.Property.IMAGE, Visual.Property.CornerSquareness, Vector4.getCPtr(backgroundExtraData.CornerSquareness));
+ }
+ _ = Interop.View.InternalUpdateVisualPropertyInt(this.SwigCPtr, ImageView.Property.IMAGE, Visual.Property.CornerRadiusPolicy, (int)backgroundExtraData.CornerRadiusPolicy);
+ }
+ }
+
internal ResourceLoadingStatusType GetResourceStatus()
{
return (ResourceLoadingStatusType)Interop.View.GetVisualResourceStatus(this.SwigCPtr, Property.IMAGE);
}
}
+ if (backgroundExtraData != null && backgroundExtraData.CornerRadius != null)
+ {
+ cachedImagePropertyMap.Set(Visual.Property.CornerRadius, backgroundExtraData.CornerRadius);
+ cachedImagePropertyMap.Set(Visual.Property.CornerRadiusPolicy, (int)backgroundExtraData.CornerRadiusPolicy);
+
+ if (backgroundExtraData.CornerSquareness != null)
+ {
+ cachedImagePropertyMap.Set(Visual.Property.CornerSquareness, backgroundExtraData.CornerSquareness);
+ }
+ }
+
+ // We already applied background extra data now.
+ backgroundExtraDataUpdatedFlag &= ~BackgroundExtraDataUpdatedFlag.ContentsCornerRadius;
+
UpdateImageMap();
}
Image = map;
+ if (backgroundExtraData != null)
+ {
+ if (backgroundExtraData.CornerRadius != null || backgroundExtraData.CornerSquareness != null)
+ {
+ UpdateBackgroundExtraData(BackgroundExtraDataUpdatedFlag.ContentsCornerRadius);
+ }
+ }
+
// All states applied well.
currentStates.changed = false;
private void SetInternalCornerRadius(Vector4 cornerRadius)
{
+ // Set for animation. Will be soon deprecated.
+ (backgroundExtraData ?? (backgroundExtraData = new BackgroundExtraData())).CornerRadius = cornerRadius;
+ UpdateBackgroundExtraData(BackgroundExtraDataUpdatedFlag.CornerRadius);
+
Object.InternalSetPropertyVector4(SwigCPtr, Property.CornerRadius, cornerRadius.SwigCPtr);
}
private void SetInternalCornerRadiusPolicy(VisualTransformPolicyType cornerRadiusPolicy)
{
+ // Set for animation. Will be soon deprecated.
+ (backgroundExtraData ?? (backgroundExtraData = new BackgroundExtraData())).CornerRadiusPolicy = cornerRadiusPolicy;
+ if (backgroundExtraData.CornerRadius != null)
+ {
+ UpdateBackgroundExtraData(BackgroundExtraDataUpdatedFlag.CornerRadius);
+ }
+
Object.InternalSetPropertyInt(SwigCPtr, Property.CornerRadiusPolicy, (int)cornerRadiusPolicy);
}
}
internal void SetInternalCornerSqureness(Vector4 cornerSquareness)
{
+ // Set for animation. Will be soon deprecated.
+ (backgroundExtraData ?? (backgroundExtraData = new BackgroundExtraData())).CornerSquareness = cornerSquareness;
+ UpdateBackgroundExtraData(BackgroundExtraDataUpdatedFlag.CornerRadius);
+
Object.InternalSetPropertyVector4(SwigCPtr, Property.CornerSquareness, cornerSquareness.SwigCPtr);
}
internal Vector4 GetInternalCornerSqureness()
map.Add(Visual.Property.Type, (int)Visual.Type.Image);
}
+ if (backgroundExtraData != null)
+ {
+ map.Add(Visual.Property.CornerRadius, backgroundExtraData.CornerRadius)
+ .Add(Visual.Property.CornerSquareness, backgroundExtraData.CornerSquareness)
+ .Add(Visual.Property.CornerRadiusPolicy, (int)backgroundExtraData.CornerRadiusPolicy);
+ }
+
+ backgroundExtraDataUpdatedFlag &= ~BackgroundExtraDataUpdatedFlag.Background;
+
using var mapValue = new PropertyValue(map);
Object.SetProperty(SwigCPtr, Property.BACKGROUND, mapValue);
}
// Background property will be Color after now. Remove background image url information.
backgroundImageUrl = null;
- Object.InternalSetPropertyVector4(SwigCPtr, View.Property.BACKGROUND, ((Color)value).SwigCPtr);
+ if (backgroundExtraData == null)
+ {
+ Object.InternalSetPropertyVector4(SwigCPtr, View.Property.BACKGROUND, ((Color)value).SwigCPtr);
+ return;
+ }
+
+ using var map = new PropertyMap();
+
+ map.Add(Visual.Property.Type, (int)Visual.Type.Color)
+ .Add(ColorVisualProperty.MixColor, value);
+
+ map.Add(Visual.Property.CornerRadius, backgroundExtraData.CornerRadius)
+ .Add(Visual.Property.CornerSquareness, backgroundExtraData.CornerSquareness)
+ .Add(Visual.Property.CornerRadiusPolicy, (int)backgroundExtraData.CornerRadiusPolicy);
+
+ backgroundExtraDataUpdatedFlag &= ~BackgroundExtraDataUpdatedFlag.Background;
+
+ using var mapValue = new PropertyValue(map);
+ Object.SetProperty(SwigCPtr, Property.BACKGROUND, mapValue);
}
private void SetColor(Color value)
private void SetShadow(ShadowBase value)
{
+ backgroundExtraDataUpdatedFlag &= ~BackgroundExtraDataUpdatedFlag.Shadow;
+
using var pv = value == null ? new PropertyValue() : value.ToPropertyValue(this);
Tizen.NUI.Object.SetProperty(SwigCPtr, View.Property.SHADOW, pv);
}
{
internal string styleName;
+ [Flags]
+ internal enum BackgroundExtraDataUpdatedFlag : byte
+ {
+ BackgroundCornerRadius = 1 << 0,
+ ShadowCornerRadius = 1 << 2,
+ ContentsCornerRadius = 1 << 3, /// Subclass cases.
+
+ Background = BackgroundCornerRadius,
+ Shadow = ShadowCornerRadius,
+
+ CornerRadius = BackgroundCornerRadius | ShadowCornerRadius | ContentsCornerRadius,
+
+ None = 0,
+ All = Background | Shadow,
+ }
+
+ internal BackgroundExtraDataUpdatedFlag backgroundExtraDataUpdatedFlag = BackgroundExtraDataUpdatedFlag.None;
+
// TODO : Re-open this API when we resolve Animation issue.
// private bool backgroundExtraDataUpdateProcessAttachedFlag = false;
return (ResourceLoadingStatusType)Interop.View.GetVisualResourceStatus(this.SwigCPtr, Property.BACKGROUND);
}
- [Obsolete("Do not use this, that is deprecated in API13.")]
+ /// <summary>
+ /// Lazy call to UpdateBackgroundExtraData.
+ /// Collect Properties need to be update, and set properties that starts the Processing.
+ /// </summary>
+ internal virtual void UpdateBackgroundExtraData(BackgroundExtraDataUpdatedFlag flag)
+ {
+ if (backgroundExtraData == null)
+ {
+ return;
+ }
+
+ if (!backgroundExtraDataUpdatedFlag.HasFlag(flag))
+ {
+ backgroundExtraDataUpdatedFlag |= flag;
+ // TODO : Re-open this API when we resolve Animation issue.
+ // Instead, let we call UpdateBackgroundExtraData() synchronously.
+ UpdateBackgroundExtraData();
+ // if (!backgroundExtraDataUpdateProcessAttachedFlag)
+ // {
+ // backgroundExtraDataUpdateProcessAttachedFlag = true;
+ // ProcessorController.Instance.ProcessorOnceEvent += UpdateBackgroundExtraData;
+ // // Call process hardly.
+ // ProcessorController.Instance.Awake();
+ // }
+ }
+ }
+
+ /// <summary>
+ /// Callback function to Lazy UpdateBackgroundExtraData.
+ /// </summary>
+ private void UpdateBackgroundExtraData(object source, EventArgs e)
+ {
+ // Note : To allow event attachment during UpdateBackgroundExtraData, let we make flag as false before call UpdateBackgroundExtraData().
+ // TODO : Re-open this API when we resolve Animation issue.
+ // backgroundExtraDataUpdateProcessAttachedFlag = false;
+ UpdateBackgroundExtraData();
+ }
+
+ /// <summary>
+ /// Update background extra data properties synchronously.
+ /// After call this API, All background extra data properties updated.
+ /// </summary>
+ internal virtual void UpdateBackgroundExtraData()
+ {
+ if (Disposed)
+ {
+ return;
+ }
+
+ if (backgroundExtraData == null)
+ {
+ return;
+ }
+
+ if (IsShadowEmpty())
+ {
+ backgroundExtraDataUpdatedFlag &= ~BackgroundExtraDataUpdatedFlag.Shadow;
+ }
+
+ if (!Rectangle.IsNullOrZero(backgroundExtraData.BackgroundImageBorder))
+ {
+ backgroundExtraDataUpdatedFlag &= ~BackgroundExtraDataUpdatedFlag.Background;
+ }
+
+ if (backgroundExtraDataUpdatedFlag == BackgroundExtraDataUpdatedFlag.None)
+ {
+ return;
+ }
+
+ if ((backgroundExtraDataUpdatedFlag & BackgroundExtraDataUpdatedFlag.CornerRadius) != BackgroundExtraDataUpdatedFlag.None)
+ {
+ ApplyCornerRadius();
+ }
+
+ backgroundExtraDataUpdatedFlag = BackgroundExtraDataUpdatedFlag.None;
+ }
+
+ //[Obsolete("Do not use this, that is deprecated in API13.")]
internal virtual void ApplyCornerRadius()
{
- Tizen.Log.Error("NUI", "ApplyCornerRadius() deprecated internally, Please don't use it.\n");
+ //Tizen.Log.Error("NUI", "ApplyCornerRadius() deprecated internally, Please don't use it.\n");
+
+ if (backgroundExtraData == null) return;
+
+ // Update corner radius properties to background and shadow by ActionUpdateProperty
+ if (backgroundExtraDataUpdatedFlag.HasFlag(BackgroundExtraDataUpdatedFlag.BackgroundCornerRadius))
+ {
+ if (backgroundExtraData.CornerRadius != null)
+ {
+ _ = Interop.View.InternalUpdateVisualPropertyVector4(this.SwigCPtr, View.Property.BACKGROUND, Visual.Property.CornerRadius, Vector4.getCPtr(backgroundExtraData.CornerRadius));
+ }
+ if (backgroundExtraData.CornerSquareness != null)
+ {
+ _ = Interop.View.InternalUpdateVisualPropertyVector4(this.SwigCPtr, View.Property.BACKGROUND, Visual.Property.CornerSquareness, Vector4.getCPtr(backgroundExtraData.CornerSquareness));
+ }
+ _ = Interop.View.InternalUpdateVisualPropertyInt(this.SwigCPtr, View.Property.BACKGROUND, Visual.Property.CornerRadiusPolicy, (int)backgroundExtraData.CornerRadiusPolicy);
+ }
+ if (backgroundExtraDataUpdatedFlag.HasFlag(BackgroundExtraDataUpdatedFlag.ShadowCornerRadius))
+ {
+ if (backgroundExtraData.CornerRadius != null)
+ {
+ _ = Interop.View.InternalUpdateVisualPropertyVector4(this.SwigCPtr, View.Property.SHADOW, Visual.Property.CornerRadius, Vector4.getCPtr(backgroundExtraData.CornerRadius));
+ }
+ if (backgroundExtraData.CornerSquareness != null)
+ {
+ _ = Interop.View.InternalUpdateVisualPropertyVector4(this.SwigCPtr, View.Property.SHADOW, Visual.Property.CornerSquareness, Vector4.getCPtr(backgroundExtraData.CornerSquareness));
+ }
+ _ = Interop.View.InternalUpdateVisualPropertyInt(this.SwigCPtr, View.Property.SHADOW, Visual.Property.CornerRadiusPolicy, (int)backgroundExtraData.CornerRadiusPolicy);
+ }
}
[Obsolete("Do not use this, that is deprecated in API13.")]
// Background property will be Color after now. Remove background image url information.
backgroundImageUrl = null;
- Object.InternalSetPropertyColor(SwigCPtr, Property.BACKGROUND, color);
+
+ if (backgroundExtraData == null)
+ {
+ Object.InternalSetPropertyColor(SwigCPtr, Property.BACKGROUND, color);
+ }
+ else
+ {
+ using var map = new PropertyMap()
+ .Append(Visual.Property.Type, (int)Visual.Type.Color)
+ .Append(ColorVisualProperty.MixColor, color)
+ .Append(Visual.Property.CornerRadius, backgroundExtraData.CornerRadius)
+ .Append(Visual.Property.CornerSquareness, backgroundExtraData.CornerSquareness)
+ .Append(Visual.Property.CornerRadiusPolicy, (int)backgroundExtraData.CornerRadiusPolicy);
+
+ backgroundExtraDataUpdatedFlag &= ~BackgroundExtraDataUpdatedFlag.Background;
+
+ Object.InternalSetPropertyMap(SwigCPtr, Property.BACKGROUND, map.SwigCPtr);
+ }
NotifyPropertyChanged(nameof(BackgroundColor));
NotifyBackgroundChanged();
{
themeData?.selectorData?.ClearShadow(this);
+ backgroundExtraDataUpdatedFlag &= ~BackgroundExtraDataUpdatedFlag.Shadow;
+
using var map = shadow.BuildMap(this);
Object.InternalSetPropertyMap(SwigCPtr, Property.SHADOW, map.SwigCPtr);
internal BackgroundExtraData(BackgroundExtraData other)
{
BackgroundImageBorder = other.BackgroundImageBorder;
+
+ // Deprecated in API13
+ CornerRadius = other.CornerRadius;
+ CornerSquareness = other.CornerSquareness;
+ CornerRadiusPolicy = other.CornerRadiusPolicy;
}
private Rectangle backgroundImageBorder;
return ret;
}
+ internal override void ApplyCornerRadius()
+ {
+ base.ApplyCornerRadius();
+
+ if (backgroundExtraData == null)
+ {
+ return;
+ }
+
+ // Update corner radius properties to webView by ActionUpdateProperty
+ if (backgroundExtraData.CornerRadius != null)
+ {
+ _ = Interop.View.InternalUpdateVisualPropertyVector4(this.SwigCPtr, WebView.Property.Url, Visual.Property.CornerRadius, Vector4.getCPtr(backgroundExtraData.CornerRadius));
+ }
+ if (backgroundExtraData.CornerSquareness != null)
+ {
+ _ = Interop.View.InternalUpdateVisualPropertyVector4(this.SwigCPtr, WebView.Property.Url, Visual.Property.CornerSquareness, Vector4.getCPtr(backgroundExtraData.CornerSquareness));
+ }
+ _ = Interop.View.InternalUpdateVisualPropertyInt(this.SwigCPtr, WebView.Property.Url, Visual.Property.CornerRadiusPolicy, (int)backgroundExtraData.CornerRadiusPolicy);
+ }
+
private void OnPageLoadStarted(string pageUrl)
{
WebViewPageLoadEventArgs e = new WebViewPageLoadEventArgs();