Ejemplo n.º 1
0
        private void timelineControl_GradientDropped(object sender, ToolDropEventArgs e)
        {
            List<Element> elementList = new List<Element>();

            if (e.Element.Selected)
                elementList = TimelineControl.SelectedElements.ToList();
            else
                elementList.Add(e.Element);

            ColorGradient droppedGradient = _colorGradientLibrary.GetColorGradient(e.Data.GetData(DataFormats.StringFormat).ToString());
            foreach (Element elem in elementList)
            {
                ColorGradient gradient = new ColorGradient(droppedGradient);

                if (ToolsForm.LinkGradients)
                {
                    gradient.LibraryReferenceName = e.Data.GetData(DataFormats.StringFormat).ToString();
                }
                else
                {
                    gradient.LibraryReferenceName = string.Empty;
                    gradient.UnlinkFromLibrary();
                }

                gradient.IsCurrentLibraryGradient = false;

                object[] parms = elem.EffectNode.Effect.ParameterValues;
                switch (elem.EffectNode.Effect.EffectName)
                {
                    case "Alternating":
                        if (e.MouseButton == MouseButtons.Right || Control.ModifierKeys.HasFlag(Keys.Control))
                        {
                            parms[9] = false;
                            parms[11] = gradient;
                        }
                        else
                        {
                            parms[8] = false;
                            parms[10] = gradient;
                        }
                        break;
                    case "Pulse":
                        parms[1] = gradient;
                        break;
                    case "Chase":
                        parms[0] = ToolsForm.GradientHandling;
                        parms[4] = gradient;
                        break;
                    case "Spin":
                        parms[2] = ToolsForm.GradientHandling;
                        parms[10] = gradient;
                        break;
                    case "Twinkle":
                        parms[7] = ToolsForm.GradientHandling;
                        parms[9] = gradient;
                        break;
                    case "Wipe":
                        parms[0] = gradient;
                        break;
                }
                elem.EffectNode.Effect.ParameterValues = parms;
                TimelineControl.grid.RenderElement(elem);
            }
            sequenceModified();
        }