Ejemplo n.º 1
0
        private void AddMoodLayer(Graphics g, MoodDataSet mood, bool showDataPoints)
        {
            PointF bottomRight = new PointF(this.Width, this.Height);
            PointF bottomLeft  = new PointF(0, this.Height);
            var    color       = mood.Mood.DisplayColor;
            Pen    pen         = new Pen(color, 2);
            var    dataPoints  = mood.DataPoints.Select(dp => DataPointToPoint(dp)).ToList();
            var    last        = dataPoints[dataPoints.Count - 1];

            GraphicsPath path = new GraphicsPath();

            path.AddCurve(dataPoints.ToArray(), this.Tension);
            last.X = bottomRight.X;
            path.AddLine(last, bottomRight);
            path.AddLine(bottomRight, bottomLeft);
            path.AddLine(bottomLeft, dataPoints.First());
            g.FillPath(new SolidBrush(color), path);

            if (ShowDataPoints)
            {
                var dpW = _dataPointWidth / 2;
                foreach (var dp in dataPoints)
                {
                    g.FillEllipse(new SolidBrush(Color.Black), dp.X - dpW, dp.Y - dpW, _dataPointWidth, _dataPointWidth);
                }
            }
        }
Ejemplo n.º 2
0
        private void AddSeperator(CGContext g, RectangleF frame, MoodDataSet mood)
        {
            var color      = new CGColor(255, 255, 255);
            var dataPoints = GetPointsForSpline(mood.DataPoints, frame);

            var     first = dataPoints.First();
            CGLayer layer = CGLayer.Create(g, new SizeF(frame.Width, frame.Height));

            layer.Context.SetStrokeColor(color);
            layer.Context.SetLineWidth(5f);
            layer.Context.MoveTo(first.X, first.Y);

            if (endsPrematurely)
            {
                dataPoints.RemoveAt(dataPoints.Count() - 1);
            }


            if (this.SmoothLines && dataPoints.Count() >= minDataPointsRequiredForSpline)
            {
                layer.Context.AddSpline(dataPoints.ToArray(), this.Tension);
                var last = dataPoints.Last();
                layer.Context.AddLineToPoint(last.X, last.Y);
            }
            else
            {
                layer.Context.AddLines(dataPoints.ToArray());
            }

            layer.Context.DrawPath(CGPathDrawingMode.Stroke);
            g.DrawLayer(layer, new PointF(0, 0));
        }
Ejemplo n.º 3
0
        private void AddSeperator(Graphics g, MoodDataSet mood)
        {
            Pen          pen        = new Pen(Color.White, 5);
            GraphicsPath path       = new GraphicsPath();
            var          dataPoints = mood.DataPoints.Select(dp => DataPointToPoint(dp)).ToList();

            path.AddCurve(dataPoints.ToArray(), this.Tension);
            g.DrawPath(pen, path);
        }
Ejemplo n.º 4
0
        private void AddMoodLayer(CGContext g, RectangleF frame, MoodDataSet mood, bool showDataPoints)
        {
            PointF  bottomRight = new PointF(frame.Width, frame.Height + 100);
            PointF  bottomLeft  = new PointF(0, frame.Height + 100);
            var     color       = mood.Mood.DisplayColor;
            var     dataPoints  = GetPointsForSpline(mood.DataPoints, frame);
            var     last        = dataPoints [dataPoints.Count - 1];
            var     first       = dataPoints.First();
            CGLayer layer       = CGLayer.Create(g, new SizeF(frame.Width, frame.Height));

            layer.Context.SetFillColor(color);
            layer.Context.SetStrokeColor(new CGColor(0, 0, 0));

            layer.Context.MoveTo(bottomLeft.X, bottomLeft.Y);
            layer.Context.AddLineToPoint(first.X, first.Y);


            if (this.SmoothLines && dataPoints.Count() >= minDataPointsRequiredForSpline)
            {
                layer.Context.AddSpline(dataPoints.ToArray(), this.Tension);
            }
            else
            {
                layer.Context.AddLines(dataPoints.ToArray());
            }

            layer.Context.AddLineToPoint(last.X, bottomRight.Y);
            layer.Context.AddLineToPoint(bottomLeft.X, bottomLeft.Y);


            layer.Context.DrawPath(CGPathDrawingMode.EOFill);
            g.DrawLayer(layer, new PointF(0, 0));

            if (ShowDataPoints)
            {
                var dpW = _dataPointWidth / 2;
                g.SetFillColor(new CGColor(0, 0, 0));
                foreach (var dp in dataPoints)
                {
                    g.FillEllipseInRect(new RectangleF(dp.X - dpW, dp.Y - dpW, _dataPointWidth, _dataPointWidth));
                }
            }
        }
Ejemplo n.º 5
0
        public void AddSnapshot(DateTime timeStamp, IEnumerable <MoodMapItem> moods, bool endOnThis)
        {
            decimal cumulativePercentage = 0;

            foreach (var mood in moods)
            {
                var     responseCount      = mood.ResponseCount;
                decimal responsePercentage = mood.ResponsePercentage;
                var     moodData           = _moods.FirstOrDefault(m => m.Mood.Name.Equals(mood.Name, StringComparison.InvariantCultureIgnoreCase));
                if (moodData == null)
                {
                    moodData = new MoodDataSet()
                    {
                        Mood = new MoodItem()
                        {
                            DisplayColor = mood.DisplayColor,
                            DisplayIndex = mood.DisplayIndex,
                            MoodType     = mood.MoodType,
                            Name         = mood.Name
                        },
                        DataPoints = new List <DataPoint>()
                    };
                    _moods.Add(moodData);
                }
                moodData.DataPoints.Add(new DataPoint()
                {
                    TimeStamp = timeStamp, ResponseCount = responseCount, ResponsePercentage = responsePercentage, CumulativePercentage = cumulativePercentage
                });
                if (endOnThis)
                {
//					endsPrematurely = true;
//					moodData.DataPoints.Add (new DataPoint () { TimeStamp = timeStamp, ResponseCount = 0, ResponsePercentage = 0, CumulativePercentage = 100 });
                }

                cumulativePercentage += responsePercentage;
            }
        }