/// </summary>
internal static float CalculateShadowWidthByExtents(UIExtents insetExtents, float blurRadius)
{
- return Math.Max(insetExtents.Start, Math.Max(insetExtents.End, Math.Max(insetExtents.Top, insetExtents.Bottom))) + blurRadius;
+ // Extra margin due to shadow alpha blending.
+ const float margin = 1.0f;
+ return Math.Max(insetExtents.Start, Math.Max(insetExtents.End, Math.Max(insetExtents.Top, insetExtents.Bottom))) + (blurRadius + margin) * 2.0f;
}
internal static Vector2 CalculateOffsetByExtents(UIExtents insetExtents)
{
// Offset from center of view.
return new Vector2((insetExtents.Start - insetExtents.End) * 0.5f, (insetExtents.Top - insetExtents.Bottom) * 0.5f);
}
- internal static Vector2 CalculateExtraSizeByExtents(UIExtents insetExtents, float shadowWidth)
+ internal static Vector2 CalculateExtraSizeByExtents(UIExtents insetExtents, float shadowWidth, float blurRadius)
{
- const float margin = 0.5f;
- return new Vector2(shadowWidth * 2.0f - insetExtents.Start - insetExtents.End + 2.0f * margin, shadowWidth * 2.0f - insetExtents.Top - insetExtents.Bottom + 2.0f * margin);
+ return new Vector2(shadowWidth * 2.0f - insetExtents.Start - insetExtents.End - blurRadius * 2.0f, shadowWidth * 2.0f - insetExtents.Top - insetExtents.Bottom - blurRadius * 2.0f);
}
internal static InnerShadow GenerateInnerShadowByExtents(UIExtents insetExtents, float blurRadius, Color color, ColorVisualCutoutPolicyType cutoutPolicy)
{
var shadowWidth = CalculateShadowWidthByExtents(insetExtents, blurRadius);
var offset = CalculateOffsetByExtents(insetExtents);
- var extents = CalculateExtraSizeByExtents(insetExtents, shadowWidth);
+ var extents = CalculateExtraSizeByExtents(insetExtents, shadowWidth, blurRadius);
return new InnerShadow(shadowWidth, blurRadius, cutoutPolicy, color, offset, extents);
}
};
const float viewGap = 24.0f;
- const float defaultCornerRadius = 16.0f / 320.0f;
+ const float defaultCornerRadius = 16.0f;
const float defaultViewSizeWidth = 400.0f;
const float defaultViewSizeHeight = 200.0f;
const float defaultBorderlineWidth = 10.0f;
+ const float defaultInnerShadowExtents = 20.0f;
const float defaultInnerShadowBlurRadius = 16.0f;
const float defaultShadowBlurRadius = 24.0f;
static private readonly UIExtents[] shadowExtentsList = new UIExtents[]
{
// begin, end, top, bottom
- new UIExtents(defaultBorderlineWidth * 2.0f, 0.0f, defaultBorderlineWidth * 2.0f, 0.0f),
- new UIExtents(0.0f, defaultBorderlineWidth * 2.0f, 0.0f, defaultBorderlineWidth * 2.0f),
- new UIExtents(defaultBorderlineWidth * 2.0f, 0.0f),
- new UIExtents(0.0f, defaultBorderlineWidth * 2.0f),
- new UIExtents(defaultBorderlineWidth * 2.0f),
- new UIExtents(defaultBorderlineWidth * 4.0f),
- new UIExtents(defaultBorderlineWidth * 4.0f, 0.0f, 0.0f, 0.0f),
- new UIExtents(0.0f, defaultBorderlineWidth * 4.0f, 0.0f, 0.0f),
- new UIExtents(0.0f, 0.0f, defaultBorderlineWidth * 4.0f, 0.0f),
- new UIExtents(0.0f, 0.0f, 0.0f, defaultBorderlineWidth * 4.0f),
+ new UIExtents(defaultInnerShadowExtents, -defaultInnerShadowExtents, defaultInnerShadowExtents, -defaultInnerShadowExtents),
+ new UIExtents(-defaultInnerShadowExtents, defaultInnerShadowExtents, -defaultInnerShadowExtents, defaultInnerShadowExtents),
+ new UIExtents(defaultInnerShadowExtents, -defaultInnerShadowExtents),
+ new UIExtents(-defaultInnerShadowExtents, defaultInnerShadowExtents),
+ new UIExtents(defaultInnerShadowExtents),
+ new UIExtents(defaultInnerShadowExtents * 2.0f),
+ new UIExtents(defaultInnerShadowExtents * 2.0f, 0.0f, 0.0f, 0.0f),
+ new UIExtents(0.0f, defaultInnerShadowExtents * 2.0f, 0.0f, 0.0f),
+ new UIExtents(0.0f, 0.0f, defaultInnerShadowExtents * 2.0f, 0.0f),
+ new UIExtents(0.0f, 0.0f, 0.0f, defaultInnerShadowExtents * 2.0f),
new UIExtents(0.0f),
+ new UIExtents(-defaultInnerShadowBlurRadius * 0.5f),
};
uint extentsIndex;
else if(e.Key.KeyPressedName == "3")
{
cornerRadius += defaultCornerRadius;
- if(cornerRadius > 0.5001f)
+ if(cornerRadius > 160.0001f)
{
cornerRadius = defaultCornerRadius;
cornerSquareness = 0.6f - cornerSquareness;
BorderlineOffset = -0.875f,
CornerRadius = cornerRadius,
- CornerRadiusPolicy = VisualTransformPolicyType.Relative,
+ CornerRadiusPolicy = VisualTransformPolicyType.Absolute,
CornerSquareness = cornerSquareness,
};