public YogaParser(float density = 1) { this.nodeRenderer = new YogaNodeRenderer(this); // Renderers this.RegisterNodeRenderer(nodeRenderer); // Array converter this.RegisterConverter(ArrayConverters.Split()); // Base value converter this.RegisterCastConverter <int, float>(); this.RegisterCastConverter <float, int>(); this.RegisterCastConverter <string, int>(); this.RegisterCastConverter <string, float>(); this.RegisterCastConverter <string, bool>(); // Enum value converters this.RegisterEnumConverter <YogaUnit>(); this.RegisterEnumConverter <YogaEdge>(); this.RegisterEnumConverter <YogaWrap>(); this.RegisterEnumConverter <YogaAlign>(); this.RegisterEnumConverter <YogaJustify>(); this.RegisterEnumConverter <YogaOverflow>(); this.RegisterEnumConverter <YogaDisplay>(); this.RegisterEnumConverter <YogaDimension>(); this.RegisterEnumConverter <YogaPositionType>(); this.RegisterEnumConverter <YogaFlexDirection>(); // Yoga value converters this.RegisterConverter(YogaValueConverters.FromFloat(density)); this.RegisterConverter(YogaValueConverters.FromInt(density)); this.RegisterConverter(YogaValueConverters.FromString(density)); }
public void RegisterConverter <TSource, TDestination>(IValueConverter <TSource, TDestination> converter) { var existing = this.valueConverters.FindIndex(x => x.SourceType == typeof(TSource) && x.DestinationType == typeof(TDestination)); if (existing >= 0) { valueConverters.RemoveAt(existing); } this.valueConverters.Add(converter); if (!typeof(TDestination).IsArray) { if (!this.valueConverters.Any(x => x.SourceType == typeof(TDestination) && x.DestinationType == typeof(TDestination[]))) { this.valueConverters.Add(ArrayConverters.FromSingleItem <TDestination>()); } } }