aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.FileSystem/FileItem.cs
blob: cbc90ce06cefbaf63c15cc279268ae7386e727df (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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using RealTimeGraphEx.Models;
using RealTimeGraphEx.Enums;

namespace RealTimeGraphEx.FastGraphs
{
    public class RealTimeGraphExEllipseScroll : RealTimeGraphExLineScroll
    {
        #region Cross Thread Fields

        protected OpacityTypeEnum _opacityAnimationType;
        protected int _ellipseXRadius;
        protected int _ellipseYRadius;

        #endregion

        #region Constructors

        public RealTimeGraphExEllipseScroll()
            : base()
        {

        }

        #endregion

        #region Properties

        public OpacityTypeEnum OpacityAnimationType
        {
            get { return (OpacityTypeEnum)GetValue(OpacityAnimationTypeProperty); }
            set { SetValue(OpacityAnimationTypeProperty, value); }
        }
        public static readonly DependencyProperty OpacityAnimationTypeProperty =
            DependencyProperty.Register("OpacityAnimationType", typeof(OpacityTypeEnum), typeof(RealTimeGraphExEllipseScroll), new PropertyMetadata(OpacityTypeEnum.None, new PropertyChangedCallback(CrossModelChanged)));



        public int EllipseXRadius
        {
            get { return (int)GetValue(EllipseXRadiusProperty); }
            set { SetValue(EllipseXRadiusProperty, value); }
        }
        public static readonly DependencyProperty EllipseXRadiusProperty =
            DependencyProperty.Register("EllipseXRadius", typeof(int), typeof(RealTimeGraphExEllipseScroll), new PropertyMetadata(5));



        public int EllipseYRadius
        {
            get { return (int)GetValue(EllipseYRadiusProperty); }
            set { SetValue(EllipseYRadiusProperty, value); }
        }
        public static readonly DependencyProperty EllipseYRadiusProperty =
            DependencyProperty.Register("EllipseYRadius", typeof(int), typeof(RealTimeGraphExEllipseScroll), new PropertyMetadata(5));




        #endregion

        #region Override Methods

        protected override void OnSetCrossThreadFields()
        {
            base.OnSetCrossThreadFields();

            this.Dispatcher.Invoke(() =>
            {

                _opacityAnimationType = OpacityAnimationType;
                _ellipseXRadius = EllipseXRadius;
                _ellipseYRadius = EllipseYRadius;

            }, System.Windows.Threading.DispatcherPriority.Send);
        }

        /// <summary>
        /// Draw the actual polygon on the image.
        /// </summary>
        /// <param name="bmp"></param>
        protected override void OnDrawVisuals(WriteableBitmap bmp)
        {
            Color stroke = _graphController.dataSeries.GetStrokeColor() != null ? _graphController.dataSeries.GetStrokeColor().Value : _stroke;
            Color fill = _graphController.dataSeries.GetFillColor() != null ? _graphController.dataSeries.GetFillColor().Value : _fill;

            double scale = GetPolygonScaleFactor();

            for (int i = 0; i < graphPolygon.Count; i++)
            {
                var point = graphPolygon[i];

                Color processedLineColor = stroke;
                Color processedFillColor = fill;

                if (_opacityAnimationType == OpacityTypeEnum.FadeOut)
                {
                    byte opacity = (byte)((((i) * 100 / _maxPoints) * 255) / 100);

                    processedLineColor.A = opacity;
                    processedFillColor.A = opacity;
                }

                if (_fillGraph)
                {
                    bmp.FillEllipseCentered((int)(i * scale), (int)ConvertYToImageYFliped(point), _ellipseXRadius, _ellipseYRadius, processedFillColor);
                }

                bmp.DrawEllipseCentered((int)(i * scale), (int)ConvertYToImageYFliped(point), _ellipseXRadius, _ellipseYRadius, processedLineColor);
            }
        }

        #endregion
    }
}