blob: 1b07d9eac56ac98d2e31f2401751d2c4174ab2f3 (
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
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tango.PPC.Jobs.Models;
namespace Tango.PPC.Jobs.UndoRedoCommands
{
public class AddBrushStopCommand : IUndoRedoCommand
{
private JobModel _jobModel;
private SegmentModel _segment;
private SegmentModel _createdNewSegment;
private BrushStopModel _brushStopModelToAdd;
private int _index;
public AddBrushStopCommand(JobModel job, SegmentModel segment, BrushStopModel addedbrush)
{
_jobModel = job;
_segment = segment;
_index = _jobModel.GroupingSegments.IndexOf(_segment);
_brushStopModelToAdd = addedbrush;
_createdNewSegment = null;
}
public void Execute()
{
if (_segment == null)
return;
//SolidColor
if (_segment.BrushStops.Count == 0)
{
_brushStopModelToAdd.Position = BrushStopModel.PositionStatus.FirstColor;
_segment.BrushStops.Add(_brushStopModelToAdd);
}
//Add Second BrushStop
else if (_segment.BrushStops.Count == 1)// add gradient
{
BrushStopModel currentBrushStop = _segment.BrushStops[0];
_segment.CreateGradientBrushes(_segment.BrushStops[0], _brushStopModelToAdd);
_segment.RaiseSegmentBrushChanged();
}
else //Create new Segment and Add BrushStop
{
_createdNewSegment = _segment.Clone();
var length = _segment.Length / 2;
_createdNewSegment.Length = length;
_segment.Length = length;
_createdNewSegment.SegmentIndex = _segment.SegmentIndex + 1;
_createdNewSegment.CreateGradientBrushes(_brushStopModelToAdd.Clone(), _segment.SecondBrushStop);
_createdNewSegment.RaiseSegmentBrushChanged();
_segment.AddOrReplaceSecondBrush(_brushStopModelToAdd);
_segment.UpdateMiddleColorBrush();
_segment.RaiseSegmentBrushChanged();
_segment.ArrangeBrushStopsIndexes();
_createdNewSegment.ArrangeBrushStopsIndexes();
_jobModel.Segments.Add(_createdNewSegment);
if ((_index+1) < _jobModel.GroupingSegments.Count())
{
_jobModel.GroupingSegments.Insert(_index + 1, _createdNewSegment);
}
else
_jobModel.GroupingSegments.Add(_createdNewSegment);
_jobModel.ArrangeSegmentsIndixes();
}
}
public void UnExecute()
{
if (_segment == null)
return;
if (_createdNewSegment != null)
{
BrushStopModel secondbrush = _createdNewSegment.SecondBrushStop;
_segment.AddOrReplaceSecondBrush(secondbrush);
_segment.UpdateMiddleColorBrush();
_segment.RaiseSegmentBrushChanged();
_segment.ArrangeBrushStopsIndexes();
_jobModel.Segments.Remove(_createdNewSegment);
_jobModel.GroupingSegments.Remove(_createdNewSegment);
_jobModel.ArrangeSegmentsIndixes();
}
else if(_segment.IsGradient)
{
BrushStopModel firstbrush = _segment.FirstBrushStop;
_segment.BrushStops.Clear();
_segment.BrushStops.Add(firstbrush);
_segment.ArrangeBrushStopsIndexes();
}
else if(_segment.BrushStops.Count == 1)
{
_segment.BrushStops.Clear();
}
}
}
}
|