Beispiel #1
0
        public void BehaveLikeIList()
        {
            var ea = new AddOnlyList <int>(size => new int[size]);

            for (int iter = 0; iter < 2; iter++)
            {
                Assert.Empty(ea);

                ea.Add(addNumbers[0]);
                Assert.Single(ea);
                ea.Add(addNumbers[1]);
                Assert.Equal(2, ea.Count);

                Assert.Contains(addNumbers[0], ea);
                Assert.DoesNotContain(222, ea);

                for (int i = 2; i < addNumbers.Length; i++)
                {
                    ea.Add(addNumbers[i]);
                }

                Assert.Equal(12221, ea.Sum());

                Assert.Equal(6, ea.IndexOf(77));

                Assert.Equal(77, ea[6]);

                ea[6] = 777;
                Assert.Equal(777, ea[6]);

                // clear and try again
                ea.Clear();
            }
        }
Beispiel #2
0
        public void Dispose()
        {
            if (_clips != null)
            {
                foreach (IClip clip in _clips)
                {
                    clip.Dispose();
                }
                _clips = null;
            }

            if (_effects != null)
            {
                foreach (IEffect effect in _effects)
                {
                    effect.Dispose();
                }
                _effects = null;
            }

            if (_transitions != null)
            {
                foreach (ITransition transition in _transitions)
                {
                    transition.Dispose();
                }
                _transitions = null;
            }

            if (_track != null)
            {
                Marshal.ReleaseComObject(_track);
                _track = null;
            }
        }
Beispiel #3
0
        /// <summary>
        /// Creates a des track, wraps it into an ITrack, adds it to a collection and
        /// returns the new ITrack wrapper.
        /// </summary>
        /// <param name="desTimeline"></param>
        /// <param name="desComposition"></param>
        /// <param name="tracks"></param>
        /// <param name="name"></param>
        /// <param name="priority"></param>
        /// <returns></returns>
        internal static ITrack AddTrackToCollection(ITrackContainer container, IAMTimeline desTimeline,
                                                    IAMTimelineComp desComposition,
                                                    AddOnlyList <ITrack> tracks, string name, int priority)
        {
            priority = ReorderPriorities(tracks, priority);

            ITrack track = new Track(container, desTimeline, CreateTrack(desTimeline, desComposition, name, priority),
                                     name, priority);

            tracks.Add(track);

            return(track);
        }
Beispiel #4
0
        /// <summary>
        /// Creates a des effect, wraps it into an IEffect, adds it to a collection
        /// and returns the new IEffect wrapper.
        /// </summary>
        /// <param name="desTimeline"></param>
        /// <param name="desEffectable"></param>
        /// <param name="effects"></param>
        /// <param name="name"></param>
        /// <param name="priority"></param>
        /// <param name="offset"></param>
        /// <param name="duration"></param>
        /// <param name="effectDefinition"></param>
        /// <returns></returns>
        internal static IEffect AddEffectToCollection(IEffectContainer container, IAMTimeline desTimeline,
                                                      IAMTimelineEffectable desEffectable,
                                                      AddOnlyList <IEffect> effects, string name, int priority,
                                                      double offset, double duration, EffectDefinition effectDefinition)
        {
            priority = ReorderPriorities(effects, priority);

            IAMTimelineObj desEffect =
                InsertEffect(desTimeline, desEffectable, name, priority, offset, duration, effectDefinition);

            IEffect effect = new Effect(container, desEffect, name, priority, offset, duration, effectDefinition);

            effects.Add(effect);

            return(effect);
        }
Beispiel #5
0
        public void Dispose()
        {
            if (_timelineSrc != null)
            {
                Marshal.ReleaseComObject(_timelineSrc);
                _timelineSrc = null;
            }

            if (_effects != null)
            {
                foreach (IEffect effect in _effects)
                {
                    effect.Dispose();
                }
                _effects = null;
            }
        }
Beispiel #6
0
        /// <summary>
        /// Creates a des composition, wraps it into an IComposition, adds it to a collecton
        /// and returns the new IComposition wrapper.
        /// </summary>
        /// <param name="timeline"></param>
        /// <param name="desComposition"></param>
        /// <param name="compositions"></param>
        /// <param name="name"></param>
        /// <param name="priority"></param>
        /// <returns></returns>
        internal static IComposition AddCompositionToCollection(ICompositionContainer container, IAMTimeline timeline,
                                                                IAMTimelineComp desComposition,
                                                                AddOnlyList <IComposition> compositions, string name,
                                                                int priority)
        {
            priority = ReorderPriorities(compositions, priority);

            IComposition composition = new Composition(container,
                                                       timeline,
                                                       CreateComposition(timeline, desComposition, name, priority),
                                                       name,
                                                       priority);

            compositions.Add(composition);

            return(composition);
        }
Beispiel #7
0
        public void CanGrow()
        {
            var sb = new StringBuilder();

            for (int i = 0; i < 32; i++)
            {
                sb.AppendFormat("{0}/{1}\r\n", i, AddOnlyList <int> .GetBucketIndex(i));
            }

            var expected = "0/0,1/0,2/0,3/1,4/1,5/1,6/1," +
                           "7/2,8/2,9/2,10/2,11/2,12/2,13/2,14/2," +
                           "15/3,16/3,17/3,18/3,19/3,20/3,21/3,22/3,23/3,24/3,25/3,26/3,27/3,28/3,29/3,30/3," +
                           "31/4,";

            expected = expected.Replace(",", "\r\n");

            Assert.Equal(expected, sb.ToString());
        }
Beispiel #8
0
        /// <summary>
        /// Creates a des transition, wraps it into an ITransition, adds it to a collection
        /// and returns a new ITransition wrapper.
        /// </summary>
        /// <param name="desTimeline"></param>
        /// <param name="transable"></param>
        /// <param name="transitions"></param>
        /// <param name="name"></param>
        /// <param name="offset"></param>
        /// <param name="duration"></param>
        /// <param name="transitionDefinition"></param>
        /// <param name="swapInputs"></param>
        /// <returns></returns>
        internal static ITransition AddTransitionToCollection(ITransitionContainer container, IAMTimeline desTimeline,
                                                              IAMTimelineTransable transable,
                                                              AddOnlyList <ITransition> transitions, string name,
                                                              double offset, double duration,
                                                              TransitionDefinition transitionDefinition, bool swapInputs)
        {
            CheckForTransitionOveralp(container, offset, duration);

            IAMTimelineObj desTransition =
                InsertTransition(desTimeline, transable, name, offset, duration, transitionDefinition, swapInputs);

            ITransition transition =
                new Transition(container, desTransition, name, offset, duration, swapInputs, transitionDefinition);

            transitions.Add(transition);

            return(transition);
        }
Beispiel #9
0
        public void Dispose()
        {
            if (_timeline != null)
            {
                Marshal.ReleaseComObject(_timeline);
                _timeline = null;
            }

            if (_groups != null)
            {
                foreach (IGroup group in _groups)
                {
                    group.Dispose();
                }

                _groups = null;
            }
        }
Beispiel #10
0
        private static int ReorderPriorities <T>(AddOnlyList <T> list, int newPriority) where T : IPriority
        {
            if (newPriority < 0)
            {
                return(list.Count);
            }
            else
            {
                foreach (IPriority priority in list)
                {
                    if (priority.Priority >= newPriority)
                    {
                        ((IPrioritySetter)priority).SetPriority(priority.Priority + 1);
                    }
                }

                return(newPriority);
            }
        }
Beispiel #11
0
        public virtual void Dispose()
        {
            if (_compositions != null)
            {
                foreach (IComposition composition in _compositions)
                {
                    composition.Dispose();
                }

                _compositions = null;
            }

            if (_tracks != null)
            {
                foreach (ITrack track in _tracks)
                {
                    track.Dispose();
                }

                _tracks = null;
            }

            if (_transitions != null)
            {
                foreach (ITransition transition in _transitions)
                {
                    transition.Dispose();
                }

                _transitions = null;
            }

            if (_effects != null)
            {
                foreach (IEffect effect in _effects)
                {
                    effect.Dispose();
                }

                _effects = null;
            }
        }