aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Hive/Converters/HexClipConverter.cs
blob: d26e4a44adb455322e7391f64df4b86a2795e491 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
using System;
using System.Globalization;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Media;

namespace Tango.Hive.Converters
{
    public class HexClipConverter: IMultiValueConverter
    {
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            double w = (double)values[0];
            double h = (double)values[1];
            Orientation o = (Orientation) values[2];

            if (w <= 0 || h <= 0)
                return null;

            PathFigure figure = o == Orientation.Horizontal
                ? new PathFigure
                  {
                      StartPoint = new Point(0, h*0.5),
                      Segments =
                      {
                          new LineSegment {Point = new Point(w*0.25, 0)},
                          new LineSegment {Point = new Point(w*0.75, 0)},
                          new LineSegment {Point = new Point(w, h*0.5)},
                          new LineSegment {Point = new Point(w*0.75, h)},
                          new LineSegment {Point = new Point(w*0.25, h)},
                      }
                  }
                : new PathFigure
                  {
                      StartPoint = new Point(w*0.5, 0),
                      Segments =
                      {
                          new LineSegment {Point = new Point(w, h*0.25)},
                          new LineSegment {Point = new Point(w, h*0.75)},
                          new LineSegment {Point = new Point(w*0.5, h)},
                          new LineSegment {Point = new Point(0, h*0.75)},
                          new LineSegment {Point = new Point(0, h*0.25)},
                      }
                  };
            return new PathGeometry { Figures = { figure } };
        }

        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
}