public void VisualMapSizePolicyHeight() { tlog.Debug(tag, $"VisualMapSizePolicyHeight START"); var testingTarget = new VisualMap(); Assert.IsNotNull(testingTarget, "Can't create success object VisualMap"); Assert.IsInstanceOf <VisualMap>(testingTarget, "Should be an instance of VisualMap type."); Assert.AreEqual(VisualTransformPolicyType.Relative, testingTarget.SizePolicyHeight, "Retrieved SizePolicyHeight should be equal to set value"); testingTarget.SizePolicyHeight = VisualTransformPolicyType.Absolute; Assert.AreEqual(VisualTransformPolicyType.Absolute, testingTarget.SizePolicyHeight, "Retrieved SizePolicyHeight should be equal to set value"); testingTarget.SizePolicyHeight = VisualTransformPolicyType.Relative; Assert.AreEqual(VisualTransformPolicyType.Relative, testingTarget.SizePolicyHeight, "Retrieved SizePolicyHeight should be equal to set value"); // default try { testingTarget.SizePolicyHeight = (VisualTransformPolicyType)3; } catch (Exception e) { tlog.Debug(tag, e.Message.ToString()); Assert.Fail("Caught Exception : Failed!"); } testingTarget.Dispose(); tlog.Debug(tag, $"VisualMapSizePolicyHeight END (OK)"); }
protected virtual void SelectIn(VisualMap selectInIndicator) { if (!(selectInIndicator is ImageVisual visual)) { return; } visual.URL = paginationStyle.IndicatorImageURL.Selected; }
public static void PerformVisualMapRebuild(ROM realRom, Region region, int maxDLLength) { // This is fake rom but it works anyways, just more convenient // Want to be safe with overwriting the whole display list ROM fakeRom = new ROM(region.data); VisualMapParseState state = new VisualMapParseState(); DisplayListRegion dlRegion = (DisplayListRegion)region; VisualMap map = new VisualMap(); byte curCmdIndex; do { curCmdIndex = fakeRom.Read8(); VisualMapParserCmd func = visualMapParser[curCmdIndex]; func(fakeRom, map, state); fakeRom.AddOffset(8); }while (fakeRom.offset < region.length); ROM visualMapROM = new ROM(new byte[maxDLLength]); int visualMapLength = map.MakeF3D(visualMapROM); // Now write data to real rom + trimming // bzero fakeRom.offset = 0; realRom.PushOffset(region.romStart); { do { realRom.Write64(0x0101010101010101); realRom.AddOffset(8); fakeRom.AddOffset(8); } while (fakeRom.offset < region.length); } realRom.PopOffset(); visualMapROM.offset = 0; realRom.PushOffset(region.romStart); { int start = region.romStart; do { Int64 cmd = visualMapROM.Read64(); visualMapROM.AddOffset(8); realRom.Write64((ulong)cmd); realRom.AddOffset(8); } while (visualMapROM.offset < visualMapLength); region.length = realRom.offset - start; region.data = new byte[region.length]; realRom.ReadData(region.romStart, region.length, region.data); } realRom.PopOffset(); }
protected virtual void SelectOut(VisualMap selectOutIndicator) { if (!(selectOutIndicator is ImageVisual visual)) { return; } visual.URL = Style?.IndicatorImageURL.Normal; visual.Opacity = 0.5f; }
private static void VisualMapParse_cmdBB(ROM rom, VisualMap map, VisualMapParseState state) { if ((UInt64)rom.Read64() == 0xBB000000FFFFFFFF) { state.state = VisualMapParseStateCmd.Footer; } VisualMapParse_common(rom, map, state); }
protected virtual void SelectIn(VisualMap selectInIndicator) { if (!(selectInIndicator is ImageVisual visual)) { return; } visual.URL = Style?.IndicatorImageURL.Selected; visual.Opacity = 1.0f; }
public void VisualMapConstructor() { tlog.Debug(tag, $"VisualMapConstructor START"); var testingTarget = new VisualMap(); Assert.IsNotNull(testingTarget, "Can't create success object VisualMap"); Assert.IsInstanceOf <VisualMap>(testingTarget, "Should be an instance of VisualMap type."); testingTarget.Dispose(); tlog.Debug(tag, $"VisualMapConstructor END (OK)"); }
/// <summary> /// Creates a visual animation (transition) with the input parameters. /// </summary> /// <param name="target">The visual map to animation.</param> /// <param name="property">The property of visual to animation.</param> /// <param name="destinationValue">The destination value of property after animation.</param> /// <param name="startTime">The start time of visual animation.</param> /// <param name="endTime">The end time of visual animation.</param> /// <param name="alphaFunction">The alpha function of visual animation.</param> /// <param name="initialValue">The initial property value of visual animation.</param> /// <returns>Animation instance</returns> /// <exception cref="ArgumentNullException"> Thrown when target is null. </exception> /// <since_tizen> 3 </since_tizen> public Animation AnimateVisual(VisualMap target, string property, object destinationValue, int startTime, int endTime, AlphaFunction.BuiltinFunctions?alphaFunction = null, object initialValue = null) { if (target == null) { throw new ArgumentNullException(nameof(target)); } string _alphaFunction = alphaFunction?.GetDescription(); foreach (var item in _visualDictionary.ToList()) { if (item.Value.Name == target.Name) { PropertyMap _animator = new PropertyMap(); if (_alphaFunction != null) { _animator.Add("alphaFunction", new PropertyValue(_alphaFunction)); } PropertyMap _timePeriod = new PropertyMap(); _timePeriod.Add("duration", new PropertyValue((endTime - startTime) / 1000.0f)); _timePeriod.Add("delay", new PropertyValue(startTime / 1000.0f)); _animator.Add("timePeriod", new PropertyValue(_timePeriod)); StringBuilder sb = new StringBuilder(property); sb[0] = (char)(sb[0] | 0x20); string _str = sb.ToString(); if (_str == "position") { _str = "offset"; } PropertyValue destVal = PropertyValue.CreateFromObject(destinationValue); PropertyMap _transition = new PropertyMap(); _transition.Add("target", new PropertyValue(target.Name)); _transition.Add("property", new PropertyValue(_str)); if (initialValue != null) { PropertyValue initVal = PropertyValue.CreateFromObject(initialValue); _transition.Add("initialValue", new PropertyValue(initVal)); } _transition.Add("targetValue", destVal); _transition.Add("animator", new PropertyValue(_animator)); TransitionData _transitionData = new TransitionData(_transition); return(this.CreateTransition(_transitionData)); } } return(null); }
/// <summary> /// Adds or updates a visual to visual view. /// </summary> /// <param name="visualName">The name of a visual to add. If a name is added to an existing visual name, the visual will be replaced.</param> /// <param name="visualMap">The property map of a visual to create.</param> /// <exception cref="ArgumentNullException"> Thrown when visualMap is null. </exception> /// <since_tizen> 3 </since_tizen> public void AddVisual(string visualName, VisualMap visualMap) { VisualBase visual = null; int visualIndex = -1; /* If the visual had added, then replace it using RegisterVusal. */ //visual.Name = name; foreach (var item in visualDictionary) { if (item.Value.Name == visualName) { /* Find a existed visual, its key also exited. */ visualIndex = item.Key; UnregisterVisual(visualIndex); visualDictionary.Remove(visualIndex); tranformDictionary.Remove(visualIndex); break; } } if (visualIndex == -1) // The visual is a new one, create index for it. */ { using (var temp = new PropertyValue(visualName)) { visualIndex = RegisterProperty(visualName, temp, PropertyAccessMode.ReadWrite); } } if (visualIndex > 0) { if (visualMap == null) { throw new ArgumentNullException(nameof(visualMap)); } visual = VisualFactory.Instance.CreateVisual(visualMap.OutputVisualMap); // Create a visual for the new one. visual.Name = visualName; visual.DepthIndex = visualMap.DepthIndex; RegisterVisual(visualIndex, visual); visualDictionary.Add(visualIndex, visual); tranformDictionary.Add(visualIndex, visualMap.OutputTransformMap); visualMap.VisualIndex = visualIndex; visualMap.Name = visualName; visualMap.Parent = this; RelayoutRequest(); } }
public void VisualMapDepthIndex() { tlog.Debug(tag, $"VisualMapDepthIndex START"); var testingTarget = new VisualMap(); Assert.IsNotNull(testingTarget, "Can't create success object VisualMap"); Assert.IsInstanceOf <VisualMap>(testingTarget, "Should be an instance of VisualMap type."); testingTarget.DepthIndex = 1; Assert.AreEqual(1, testingTarget.DepthIndex, "Retrieved DepthIndex should be equal to set value"); testingTarget.Dispose(); tlog.Debug(tag, $"VisualMapDepthIndex END (OK)"); }
private static void VisualMapParse_cmdFB(ROM rom, VisualMap map, VisualMapParseState state) { // Some importers have the only EnvColor func for everything lmfao if (rom.Read8(8) != 0xFD) { goto fini; } state.envColorCmd = (ulong)rom.Read64(); state.state = VisualMapParseStateCmd.Texture; state.td = new TextureDescription(); fini: VisualMapParse_common(rom, map, state); }
public void VisualMapOpacity() { tlog.Debug(tag, $"VisualMapOpacity START"); var testingTarget = new VisualMap(); Assert.IsNotNull(testingTarget, "Can't create success object VisualMap"); Assert.IsInstanceOf <VisualMap>(testingTarget, "Should be an instance of VisualMap type."); testingTarget.Opacity = 0.5f; Assert.AreEqual(0.5f, testingTarget.Opacity, "Retrieved VisualSize.Opacity should be equal to set value"); testingTarget.Dispose(); tlog.Debug(tag, $"VisualMapOpacity END (OK)"); }
private static void VisualMapParse_cmdFD(ROM rom, VisualMap map, VisualMapParseState state) { UInt64 fdCmd = state.td.GetTextureCMD(); if (state.state != VisualMapParseStateCmd.Texture) { state.state = VisualMapParseStateCmd.Texture; state.td = new TextureDescription(); if (state.envColorCmd != null) { state.td.Add(state.envColorCmd.GetValueOrDefault(), 0 /*FIXME*/); } } VisualMapParse_common(rom, map, state); }
public void VisualMapAnchorPoint() { tlog.Debug(tag, $"VisualMapAnchorPoint START"); var testingTarget = new VisualMap(); Assert.IsNotNull(testingTarget, "Can't create success object VisualMap"); Assert.IsInstanceOf <VisualMap>(testingTarget, "Should be an instance of VisualMap type."); testingTarget.AnchorPoint = Visual.AlignType.Center; Assert.AreEqual(Visual.AlignType.Center, testingTarget.AnchorPoint, "Retrieved PivotPoint should be equal to set value"); testingTarget.Dispose(); tlog.Debug(tag, $"VisualMapAnchorPoint END (OK)"); }
public void VisualMapPremultipliedAlpha() { tlog.Debug(tag, $"VisualMapPremultipliedAlpha START"); var testingTarget = new VisualMap(); Assert.IsNotNull(testingTarget, "Can't create success object VisualMap"); Assert.IsInstanceOf <VisualMap>(testingTarget, "Should be an instance of VisualMap type."); testingTarget.PremultipliedAlpha = true; Assert.IsTrue(testingTarget.PremultipliedAlpha, "Retrieved VisualSize.PremultipliedAlpha should be equal to set value"); testingTarget.Dispose(); tlog.Debug(tag, $"VisualMapPremultipliedAlpha END (OK)"); }
public void VisualMapOutputVisualMap() { tlog.Debug(tag, $"VisualMapOutputVisualMap START"); var testingTarget = new VisualMap(); Assert.IsNotNull(testingTarget, "Can't create success object VisualMap"); Assert.IsInstanceOf <VisualMap>(testingTarget, "Should be an instance of VisualMap type."); var result = testingTarget.OutputVisualMap; Assert.IsNotNull(result, "Should not be null"); testingTarget.Dispose(); tlog.Debug(tag, $"VisualMapOutputVisualMap END (OK)"); }
public void VisualMapRelativeSize() { tlog.Debug(tag, $"VisualMapRelativeSize START"); var testingTarget = new VisualMap(); Assert.IsNotNull(testingTarget, "Can't create success object VisualMap"); Assert.IsInstanceOf <VisualMap>(testingTarget, "Should be an instance of VisualMap type."); testingTarget.RelativeSize = new RelativeVector2(0.5f, 0.5f); Assert.AreEqual(0.5f, testingTarget.RelativeSize.X, "Retrieved VisualSize.RelativeSize.X should be equal to set value"); Assert.AreEqual(0.5f, testingTarget.RelativeSize.Y, "Retrieved VisualSize.RelativeSize.Y should be equal to set value"); testingTarget.Dispose(); tlog.Debug(tag, $"VisualMapRelativeSize END (OK)"); }
//temporary fix to pass TCT internal void UpdateVisual(int visualIndex, string visualName, VisualMap visualMap) { VisualBase visual = null; visual = VisualFactory.Instance.CreateVisual(visualMap.OutputVisualMap); visual.Name = visualName; visual.DepthIndex = visualMap.DepthIndex; RegisterVisual(visualIndex, visual); visualDictionary[visualIndex] = visual; tranformDictionary[visualIndex] = visualMap.OutputTransformMap; RelayoutRequest(); NUILog.Debug("UpdateVisual() name=" + visualName); }
protected virtual void SelectIn(VisualMap selectInIndicator) { if (!(selectInIndicator is ImageVisual visual)) { return; } if (isCurrentIndicatorCentered) { visual.URL = circularPaginationStyle?.CenterIndicatorImageURL?.Selected; } else { visual.URL = circularPaginationStyle?.IndicatorImageURL?.Selected; } visual.Opacity = 1.0f; }
protected virtual void SelectOut(VisualMap selectOutIndicator) { if (!(selectOutIndicator is ImageVisual visual)) { return; } if (isCurrentIndicatorCentered) { visual.URL = circularPaginationStyle.CenterIndicatorImageURL.Normal; } else { visual.URL = circularPaginationStyle.IndicatorImageURL.Normal; } visual.Opacity = 0.5f; }
private void StartTransition(VisualView view, VisualMap target, string property, bool activate) { if (_animation) { _animation.Stop(); _animation.Finished += OnTransitionFinished; } if (activate) { if (property == "Position") { _animation = view.AnimateVisual(target, property, new Position2D(20, 20), 0, 1000, AlphaFunction.BuiltinFunctions.Linear, new Position2D(40, 40)); } else if (property == "Opacity") { _animation = view.AnimateVisual(target, property, 0.0f, 0, 1000, AlphaFunction.BuiltinFunctions.Linear); } else if (property == "MixColor") { _animation = view.AnimateVisual(target, property, Color.Green, 0, 1000, AlphaFunction.BuiltinFunctions.Linear); } } else { if (property == "Position") { _animation = view.AnimateVisual(target, property, new Position2D(5, 5), 0, 1000); } else if (property == "Opacity") { _animation = view.AnimateVisual(target, property, 1.0f, 0, 1000); } else if (property == "MixColor") { _animation = view.AnimateVisual(target, property, Color.Red, 0, 1000); } } if (_animation) { _animation.Finished += OnTransitionFinished; _transitionInProgress = true; _animation.Play(); } }
private static void VisualMapParse_common(ROM rom, VisualMap map, VisualMapParseState state) { switch (state.state) { case VisualMapParseStateCmd.Header: map.AddHeaderCmd((UInt64)rom.Read64()); break; case VisualMapParseStateCmd.Texture: state.td.Add((UInt64)rom.Read64(), rom.GetSegmentedAddress(rom.offset)); break; case VisualMapParseStateCmd.Footer: map.AddFooterCmd((UInt64)rom.Read64()); break; } }
public void VisualMapOutputTransformMap() { tlog.Debug(tag, $"VisualMapOutputTransformMap START"); var testingTarget = new VisualMap(); Assert.IsNotNull(testingTarget, "Can't create success object VisualMap"); Assert.IsInstanceOf <VisualMap>(testingTarget, "Should be an instance of VisualMap type."); using (Vector2 vector2 = new Vector2(1.0f, 1.0f)) { testingTarget.Size = vector2; testingTarget.Position = vector2; testingTarget.PositionPolicy = VisualTransformPolicyType.Absolute; testingTarget.SizePolicy = VisualTransformPolicyType.Absolute; testingTarget.Origin = Visual.AlignType.Center; testingTarget.AnchorPoint = Visual.AlignType.Center; var result = testingTarget.OutputTransformMap; Assert.IsNotNull(result, "Can't create success object VisualMap"); Assert.IsInstanceOf <PropertyMap>(result, "Should be an instance of PropertyMap type."); result.Find((int)VisualTransformPropertyType.Size).Get(vector2); Assert.AreEqual(1.0f, vector2.X, "Retrieved VisualSize.X should be equal to set value"); Assert.AreEqual(1.0f, vector2.Y, "Retrieved VisualSize.Y should be equal to set value"); result.Find((int)VisualTransformPropertyType.Offset).Get(vector2); Assert.AreEqual(1.0f, vector2.X, "Retrieved Offset.X should be equal to set value"); Assert.AreEqual(1.0f, vector2.Y, "Retrieved Offset.Y should be equal to set value"); result.Find((int)VisualTransformPropertyType.OffsetPolicy).Get(vector2); Assert.AreEqual(1.0f, vector2.X, "Retrieved OffsetPolicy.X should be equal to set value"); Assert.AreEqual(1.0f, vector2.Y, "Retrieved OffsetPolicy.Y should be equal to set value"); result.Find((int)VisualTransformPropertyType.SizePolicy).Get(vector2); Assert.AreEqual(1.0f, vector2.X, "Retrieved SizePolicy.X should be equal to set value"); Assert.AreEqual(1.0f, vector2.Y, "Retrieved SizePolicy.Y should be equal to set value"); int type = 0; result.Find((int)VisualTransformPropertyType.Origin).Get(out type); Assert.AreEqual((int)Visual.AlignType.Center, type, "Retrieved Origin should be equal to set value"); result.Find((int)VisualTransformPropertyType.AnchorPoint).Get(out type); Assert.AreEqual((int)Visual.AlignType.Center, type, "Retrieved AnchorPoint should be equal to set value"); } testingTarget.Dispose(); tlog.Debug(tag, $"VisualMapOutputTransformMap END (OK)"); }
public void VisualMapVisualFittingMode() { tlog.Debug(tag, $"VisualMapVisualFittingMode START"); var testingTarget = new VisualMap(); Assert.IsNotNull(testingTarget, "Can't create success object VisualMap"); Assert.IsInstanceOf <VisualMap>(testingTarget, "Should be an instance of VisualMap type."); testingTarget.VisualFittingMode = VisualFittingModeType.Fill; Assert.AreEqual(VisualFittingModeType.Fill, testingTarget.VisualFittingMode, "Retrieved VisualFittingMode should be equal to set value"); testingTarget.VisualFittingMode = VisualFittingModeType.FitKeepAspectRatio; Assert.AreEqual(VisualFittingModeType.FitKeepAspectRatio, testingTarget.VisualFittingMode, "Retrieved VisualFittingMode should be equal to set value"); testingTarget.Dispose(); tlog.Debug(tag, $"VisualMapVisualFittingMode END (OK)"); }
public void VisualMapPosition() { tlog.Debug(tag, $"VisualMapPosition START"); var testingTarget = new VisualMap(); Assert.IsNotNull(testingTarget, "Can't create success object VisualMap"); Assert.IsInstanceOf <VisualMap>(testingTarget, "Should be an instance of VisualMap type."); using (Vector2 vector2 = new Vector2(1.0f, 1.0f)) { testingTarget.Position = vector2; Assert.AreEqual(1.0f, testingTarget.Position.X, "Retrieved Offset.X should be equal to set value"); Assert.AreEqual(1.0f, testingTarget.Position.Y, "Retrieved Offset.Y should be equal to set value"); } testingTarget.Dispose(); tlog.Debug(tag, $"VisualMapPosition END (OK)"); }
/// <summary> /// Adds or updates a visual to visual view. /// </summary> /// <param name="visualName">The name of a visual to add. If a name is added to an existing visual name, the visual will be replaced.</param> /// <param name="visualMap">The property map of a visual to create.</param> /// <exception cref="ArgumentNullException"> Thrown when visualMap is null. </exception> /// <since_tizen> 3 </since_tizen> public void AddVisual(string visualName, VisualMap visualMap) { int visualIndex = -1; /* If the visual had added, then replace it using RegisterVusal. */ //visual.Name = name; foreach (var item in visualNameDictionary) { if (item.Value == visualName) { /* Find a existed visual, its key also exited. */ visualIndex = item.Key; UnregisterVisual(visualIndex); visualNameDictionary.Remove(visualIndex); visualDictionary.Remove(visualIndex); tranformDictionary.Remove(visualIndex); break; } } if (visualIndex == -1) // The visual is a new one, create index for it. */ { using (var temp = new PropertyValue(visualName)) { visualIndex = RegisterProperty(visualName, temp, PropertyAccessMode.ReadWrite); } } if (visualIndex > 0) { if (visualMap == null) { throw new ArgumentNullException(nameof(visualMap)); } visualMap.VisualIndex = visualIndex; visualMap.Name = visualName; visualMap.Parent = this; // Register index and name UpdateVisual(visualIndex, visualName, visualMap); } }
public void VisualMapCornerRadius() { tlog.Debug(tag, $"VisualMapCornerRadius START"); var testingTarget = new VisualMap(); Assert.IsNotNull(testingTarget, "Can't create success object VisualMap"); Assert.IsInstanceOf <VisualMap>(testingTarget, "Should be an instance of VisualMap type."); testingTarget.CornerRadius = new Vector4(1.0f, 1.0f, 1.0f, 1.0f); Assert.AreEqual(1.0f, testingTarget.CornerRadius.X); Assert.AreEqual(1.0f, testingTarget.CornerRadius.Y); Assert.AreEqual(1.0f, testingTarget.CornerRadius.Z); Assert.AreEqual(1.0f, testingTarget.CornerRadius.W); testingTarget.Dispose(); tlog.Debug(tag, $"VisualMapCornerRadius END (OK)"); }
public void VisualMapSize() { tlog.Debug(tag, $"VisualMapSize START"); var testingTarget = new VisualMap(); Assert.IsNotNull(testingTarget, "Can't create success object VisualMap"); Assert.IsInstanceOf <VisualMap>(testingTarget, "Should be an instance of VisualMap type."); using (Vector2 vector2 = new Vector2(1.0f, 1.0f)) { testingTarget.Size = vector2; Assert.AreEqual(1.0f, testingTarget.Size.Width, "Retrieved VisualSize.Width should be equal to set value"); Assert.AreEqual(1.0f, testingTarget.Size.Height, "Retrieved VisualSize.Height should be equal to set value"); } testingTarget.Dispose(); tlog.Debug(tag, $"VisualMapSize END (OK)"); }
/// <summary> /// The method to set visual view visible after clicking the button2 /// - contains visuals images /// </summary> /// <returns> The created VisualView </returns> private VisualView CreateVisualView2() { VisualView CurrentVisualView = new VisualView(); CurrentVisualView.Size2D = new Size2D(CurrentWidth, CurrentHeight); CurrentVisualView.ParentOrigin = ParentOrigin.TopLeft; CurrentVisualView.PositionUsesPivotPoint = true; CurrentVisualView.PivotPoint = PivotPoint.TopLeft; CurrentVisualView.Position2D = new Position2D(WindowWidth + FrameSize, 0); CurrentVisualView.BackgroundColor = Color.White; VisualMap ThisVisualMap = null; /// the main title ThisVisualMap = CreateTextVisual("VISUALS", 20.0f, new RelativeVector2(0.5f, 0.0f)); CurrentVisualView.AddVisual("TextVisuals", ThisVisualMap); RelativeVector2[] ImageTextRelativePosition = { new RelativeVector2(0.3f, 0.3f), new RelativeVector2(0.7f, 0.3f), new RelativeVector2(0.3f, 0.9f), new RelativeVector2(0.7f, 0.9f), new RelativeVector2(0.5f, 0.6f) }; for (uint i = 0; i < ImageCount; ++i) { ThisVisualMap = CreateVisualMap(ImageType[i]); /// to show how nice NPatch can be stretched if (ImageType[i] == "NPatch") { ThisVisualMap.RelativeSize = new RelativeVector2(2 * ImageRelativeWidth, ImageRelativeHeight); } CurrentVisualView.AddVisual(ImageType[i], ThisVisualMap); CurrentVisualView.AddVisual("Text" + ImageType[i], CreateTextVisual(ImageType[i], 9.0f, ImageTextRelativePosition[i])); } MainVisualView.Add(CurrentVisualView); return(CurrentVisualView); }
/// <summary> /// You can override it to do your select in operation. /// </summary> /// <param name="selectInIndicator">The indicator will be selected in</param> /// <since_tizen> 8 </since_tizen> protected virtual void SelectIn(VisualMap selectInIndicator) { if (!(selectInIndicator is ImageVisual visual)) { return; } visual.URL = paginationStyle?.IndicatorImageUrl.Selected; if (selectedIndicatorColor == null) { //TODO: Apply color properties from PaginationStyle class. visual.MixColor = new Color(1.0f, 1.0f, 1.0f, 1.0f); visual.Opacity = 1.0f; } else { visual.MixColor = selectedIndicatorColor; visual.Opacity = selectedIndicatorColor.A; } }