public void LoadXML(XmlReader reader) { _GradientSegments.Clear(); XMLHelpers.ReadOrbitType(reader, "orbitType", ref _OrbitType); XMLHelpers.ReadBlendType(reader, "blendType", ref _BlendType); XMLHelpers.ReadDouble(reader, "multiplier", ref _Multiplier); XMLHelpers.ReadDouble(reader, "offset", ref _Offset); XMLHelpers.ReadDouble(reader, "power", ref _Power); while (reader.NodeType != XmlNodeType.EndElement && reader.Read()) { if (reader.NodeType == XmlNodeType.Element && reader.Name == "GRADIENTSEGMENT") { GradientSegment seg = new GradientSegment(); seg.LoadXML(reader); _GradientSegments.Add(seg); } } // backwards compatability if (_GradientSegments.Count() == 0) { _GradientSegments.Add(new GradientSegment()); } reader.Read(); }
private void image1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { Point clkPosition = e.GetPosition(image1); float left = (float)clkPosition.X / ((float)image1.ActualWidth - 1.0f); int edge = GetNearestEdge(left); if (edge > -1) { _DragEdge = edge; Mouse.Capture(sender as System.Windows.IInputElement); _ValueDrag = true; _DragStart = left; } _CurrentSegment = 0; for (int i = 0; i < _FractalColours._GradientSegments.Count(); i++) { if (left > _FractalColours._GradientSegments[i]._StartX) { _CurrentSegment++; } } _CurrentSegment--; if (e.ClickCount == 2) { if (GetNearestEdge(left) == -1) { Material mat = _FractalColours._GradientSegments[_CurrentSegment].GetMaterial(left); GradientSegment segment = new GradientSegment(); segment._StartX = _FractalColours._GradientSegments[_CurrentSegment]._StartX; segment._StartColour = _FractalColours._GradientSegments[_CurrentSegment]._StartColour.Clone(); segment._EndX = left; segment._EndColour = mat.Clone(); _FractalColours._GradientSegments[_CurrentSegment]._StartX = left; _FractalColours._GradientSegments[_CurrentSegment]._StartColour = mat.Clone(); _FractalColours._GradientSegments.Insert(_CurrentSegment, segment); SetDirty(); } } materialSelector1.SetSelectedMaterial(_FractalColours._GradientSegments[_CurrentSegment]._StartColour); materialSelector2.SetSelectedMaterial(_FractalColours._GradientSegments[_CurrentSegment]._EndColour); GUIUpdate(); }