Пример #1
0
        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));
        }
Пример #2
0
        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>());
                }
            }
        }