private void EventPropertiesChange(EventPropertiesAdjustMethod Method, EventPropertiesFlags Flags = EventPropertiesFlags.All) { List <TrackEvent> Events = myVegas.Project.GetSelectedEvents(); if (Events.Count == 0) { return; } if (Method == EventPropertiesAdjustMethod.Copy) { EventPropertiesChangeCopy(Events[0]); } else if (Method == EventPropertiesAdjustMethod.Paste) { EventPropertiesChangePaste(Events, Flags); } }
private void EventPropertiesChangePaste(IEnumerable <TrackEvent> TargetEvents, EventPropertiesFlags Flags) { object clipboardData = Clipboard.GetData(Strings.ClipboardTemplateTag); if (clipboardData == null) { return; } var bytes = clipboardData as Byte[]; var str = new MemoryStream(bytes); var fmt = new BinaryFormatter { Binder = new EventPropertiesTemplateBinder() }; var tpl = (EventPropertiesTemplate)fmt.Deserialize(str); using (var undo = new UndoBlock("Paste event properties")) { foreach (TrackEvent ev in TargetEvents) { if (Flags.IsSet(EventPropertiesFlags.FadeIn)) { ev.FadeIn.Length = Timecode.FromNanos(tpl.FadeIn.LengthNanos); } if (Flags.IsSet(EventPropertiesFlags.FadeOut)) { ev.FadeOut.Length = Timecode.FromNanos(tpl.FadeOut.LengthNanos); } if (Flags.IsSet(EventPropertiesFlags.FadeInCurve)) { ev.FadeIn.Curve = (CurveType)Enum.Parse(typeof(CurveType), tpl.FadeIn.CurveType); } if (Flags.IsSet(EventPropertiesFlags.FadeOutCurve)) { ev.FadeOut.Curve = (CurveType)Enum.Parse(typeof(CurveType), tpl.FadeOut.CurveType); } if (Flags.IsSet(EventPropertiesFlags.Gain)) { ev.FadeIn.Gain = tpl.FadeIn.Gain; } if (Flags.IsSet(EventPropertiesFlags.Loop)) { ev.Loop = tpl.Loop; } if (Flags.IsSet(EventPropertiesFlags.Length)) { ev.Length = Timecode.FromNanos(tpl.LengthNanos); } if (Flags.IsSet(EventPropertiesFlags.PitchAmount)) { ev.AdjustPlaybackRate(tpl.PlaybackRate, true); } if (Flags.IsSet(EventPropertiesFlags.PitchMethod)) { // Not supported by Vegas API yet } // broken, too unintuitive /*if (Flags.IsSet(EventPropertiesFlags.RegionOffset)) * { * Region r = myVegas.FindSurroundingRegion(ev); * * // workaround to make sure we don't stack events within the same region * if (r == null || r == LastSurroundingRegion) * continue; * * ev.Start.Nanos = r.Position.Nanos + tpl.RegionOffsetNanos; * LastSurroundingRegion = r; * }*/ } } }
private void EventPropertiesChangePaste(IEnumerable<TrackEvent> TargetEvents, EventPropertiesFlags Flags) { object clipboardData = Clipboard.GetData(Strings.ClipboardTemplateTag); if (clipboardData == null) return; var bytes = clipboardData as Byte[]; var str = new MemoryStream(bytes); var fmt = new BinaryFormatter { Binder = new EventPropertiesTemplateBinder() }; var tpl = (EventPropertiesTemplate)fmt.Deserialize(str); using (var undo = new UndoBlock("Paste event properties")) { foreach (TrackEvent ev in TargetEvents) { if (Flags.IsSet(EventPropertiesFlags.FadeIn)) ev.FadeIn.Length = Timecode.FromNanos(tpl.FadeIn.LengthNanos); if (Flags.IsSet(EventPropertiesFlags.FadeOut)) ev.FadeOut.Length = Timecode.FromNanos(tpl.FadeOut.LengthNanos); if (Flags.IsSet(EventPropertiesFlags.FadeInCurve)) ev.FadeIn.Curve = (CurveType)Enum.Parse(typeof(CurveType), tpl.FadeIn.CurveType); if (Flags.IsSet(EventPropertiesFlags.FadeOutCurve)) ev.FadeOut.Curve = (CurveType)Enum.Parse(typeof(CurveType), tpl.FadeOut.CurveType); if (Flags.IsSet(EventPropertiesFlags.Gain)) ev.FadeIn.Gain = tpl.FadeIn.Gain; if (Flags.IsSet(EventPropertiesFlags.Loop)) ev.Loop = tpl.Loop; if (Flags.IsSet(EventPropertiesFlags.Length)) ev.Length = Timecode.FromNanos(tpl.LengthNanos); if (Flags.IsSet(EventPropertiesFlags.PitchAmount)) ev.AdjustPlaybackRate(tpl.PlaybackRate, true); if (Flags.IsSet(EventPropertiesFlags.PitchMethod)) { // Not supported by Vegas API yet } // broken, too unintuitive /*if (Flags.IsSet(EventPropertiesFlags.RegionOffset)) { Region r = myVegas.FindSurroundingRegion(ev); // workaround to make sure we don't stack events within the same region if (r == null || r == LastSurroundingRegion) continue; ev.Start.Nanos = r.Position.Nanos + tpl.RegionOffsetNanos; LastSurroundingRegion = r; }*/ } } }
private void EventPropertiesChange(EventPropertiesAdjustMethod Method, EventPropertiesFlags Flags = EventPropertiesFlags.All) { List<TrackEvent> Events = myVegas.Project.GetSelectedEvents(); if (Events.Count == 0) return; if (Method == EventPropertiesAdjustMethod.Copy) EventPropertiesChangeCopy(Events[0]); else if (Method == EventPropertiesAdjustMethod.Paste) EventPropertiesChangePaste(Events, Flags); }