Mini Kabibi Habibi

Current Path : C:/Users/Public/Documents/DXperience 13.1 Demos/WPF/CS/CarouselDemo.Wpf/
Upload File :
Current File : C:/Users/Public/Documents/DXperience 13.1 Demos/WPF/CS/CarouselDemo.Wpf/Utils.cs

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Windows.Controls;
using System.Windows.Markup;
using System.Windows.Data;
using System.Windows;
using System.Windows.Media;
using DevExpress.Xpf.Carousel;
using DevExpress.Xpf.DemoBase;
using System.Windows.Media.Imaging;
using System.Windows.Media.Effects;

namespace CarouselDemo {
    public enum ItemType { BinaryImage, DrawingImage }
    public class ContentLoadHelper {
        public string Path { get; set; }
        public ContentLoadHelper() {
        }
        public List<FrameworkElement> LoadItems(ItemType it) {
            LoadDelegate loadDelegate = null;
            switch (it) {
                case ItemType.BinaryImage:
                    loadDelegate = LoadImage;
                    break;
                case ItemType.DrawingImage:
                    loadDelegate = LoadDrawingImage;
                    break;
            }
            var items = new List<FrameworkElement>();
            if (loadDelegate != null) {
                foreach (var name in ResourcesTable.UriTable)
                    if (name.StartsWith(Path, StringComparison.OrdinalIgnoreCase)) {
                        try {
                            Uri resUri = ResourcesTable.GetUri(name);
                            Stream stream = Application.GetResourceStream(resUri).Stream;
                            items.Add(loadDelegate(stream));
                        }
                        catch { }
                    }
            }
            return items;
        }
        public delegate FrameworkElement LoadDelegate(Stream stream);
        public Image LoadDrawingImage(Stream stream) {
            var rd = (ResourceDictionary)XamlReader.Load(stream);
            var di = (DrawingImage)rd["Layer_1"];
            return new Image() { Source = di };
        }
        public Image LoadImage(Stream stream) {
            var image = new Image();
            image.Source = BitmapFrame.Create(stream);
            return image;
        }
    }
    public class ImageContainer {
        public string Name { get; set; }
        public ImageSource Source { get; set; }
    }
    public class PathContainer {
        public string Name { get; set; }
        public PathGeometry Path { get; set; }
    }
    public class FunctionContainer {
        public string Name { get; set; }
        public FunctionBase FunctionBase { get; set; }
    }
    public class BitmapEffectContainer {
        public string Name { get; set; }
        public BitmapEffect BitmapEffect { get; set; }
    }
    public class LanguageContainer {
        public string Name { get; set; }
        public string FlagImageSource { get; set; }
        public string Phrase { get; set; }
    }
    public class PhraseConverter : MarkupExtension, IValueConverter {
        public override object ProvideValue(IServiceProvider serviceProvider) {
            return this;
        }

        #region IValueConverter Members

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            var cc = (ContentControl)value;
            if (cc != null) {
                var lc = (LanguageContainer)cc.Content;
                return lc.Phrase;
            }
            return null;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            return null;
        }

        #endregion
    }
    public class LanguageContainerConverter : MarkupExtension, IValueConverter {
        public override object ProvideValue(IServiceProvider serviceProvider) {
            return this;
        }

        #region IValueConverter Members
        public static Image LoadFromResources(string path, Assembly asm) {
            try {
                Uri resUri = ResourcesTable.GetUri(path);
                Stream stream = Application.GetResourceStream(resUri).Stream;
                var rd = (ResourceDictionary)XamlReader.Load(stream);
                return new Image() { Source = (DrawingImage)rd["Layer_1"], Stretch = Stretch.Fill, UseLayoutRounding = true };
            }
            catch { }
            return new Image();
        }
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            var fileName = (string)value;
            return LoadFromResources(@"/CarouselDemo;component/Data/Images/Flags/" + fileName, Assembly.GetExecutingAssembly());
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            return null;
        }

        #endregion
    }
    public class FunctionContainerConverter : MarkupExtension, IValueConverter {
        public override object ProvideValue(IServiceProvider serviceProvider) {
            return this;
        }

        #region IValueConverter Members

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            IList list = (IList)parameter;
            foreach (object item in list) {
                FunctionContainer container = item as FunctionContainer;
                if (container != null && container.FunctionBase == value)
                    return container;
            }
            return list[0];
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            return ((FunctionContainer)value).FunctionBase;
        }

        #endregion
    }
    public class BitmapEffectContainerConverter : MarkupExtension, IValueConverter {
        public override object ProvideValue(IServiceProvider serviceProvider) {
            return this;
        }

        #region IValueConverter Members

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            return ((IList)parameter)[0];
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            return ((FunctionContainer)value).FunctionBase;
        }

        #endregion
    }
    public class DoubleToVisibleItemCountConverter : MarkupExtension, IValueConverter {
        public override object ProvideValue(IServiceProvider serviceProvider) {
            return this;
        }
        #region IValueConverter Members
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            double doubleValue = (double)value;
            int returnValue = (int)(doubleValue);
            returnValue *= 2;
            return returnValue + 1;
        }
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            if (targetType != typeof(double))
                throw new InvalidOperationException();
            return (double)((((int)value) - 1) / 2);
        }
        #endregion
    }
    public class VisibleItemCountToActiveElementIndexConverter : MarkupExtension, IValueConverter {
        public override object ProvideValue(IServiceProvider serviceProvider) {
            return this;
        }
        #region IValueConverter Members
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            if (targetType != typeof(int))
                throw new InvalidOperationException();
            return ((((int)value) - 1) / 2);
        }
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            throw new NotImplementedException();
        }
        #endregion
    }
    public class DoubleToIntConverter : MarkupExtension, IValueConverter {
        public override object ProvideValue(IServiceProvider serviceProvider) {
            return this;
        }
        #region IValueConverter Members
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            if (targetType != typeof(int))
                throw new InvalidOperationException();
            return (int)((double)value);
        }
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            throw new NotImplementedException();
        }
        #endregion
    }
    public class PathSizingModeConverter : MarkupExtension, IValueConverter {
        public override object ProvideValue(IServiceProvider serviceProvider) {
            return this;
        }
        #region IValueConverter Members
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            if ((PathSizingMode)value == PathSizingMode.Stretch)
                return true;
            return false;
        }
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            if ((bool)value)
                return PathSizingMode.Stretch;
            return PathSizingMode.Proportional;
        }
        #endregion
    }
    public class SizeTransformConverter : MarkupExtension, IValueConverter {
        public override object ProvideValue(System.IServiceProvider serviceProvider) {
            return this;
        }
        object IValueConverter.Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            //if ((string)parameter == "Width")
            return 200d * (double)value;
            //else
            //    return 150d * (double)value;
        }
        object IValueConverter.ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            throw new System.NotImplementedException();
        }
    }
}