SeekStoryboard.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Media / Animation / SeekStoryboard.cs / 1305600 / SeekStoryboard.cs

                            /****************************************************************************\ 
*
* File: SeekStoryboard.cs
*
* This object includes a Storyboard reference.  When triggered, the Storyboard 
*  seeks to the given offset.
* 
* Copyright (C) by Microsoft Corporation.  All rights reserved. 
*
\***************************************************************************/ 
using System.ComponentModel;            // DefaultValueAttribute
using System.Diagnostics;               // Debug.Assert

namespace System.Windows.Media.Animation 
{
///  
/// SeekStoryboard will call seek on its Storyboard reference when 
///  it is triggered.
///  
public sealed class SeekStoryboard : ControllableStoryboardAction
{
    /// 
    ///     A time offset to use for this action.  If it is never explicitly 
    /// specified, it will be zero.
    ///  
    // [DefaultValue(TimeSpan.Zero)] - not usable because TimeSpan.Zero is not a constant expression. 
    public TimeSpan Offset
    { 
        get
        {
            return _offset;
        } 
        set
        { 
            if (IsSealed) 
            {
                throw new InvalidOperationException(SR.Get(SRID.CannotChangeAfterSealed, "SeekStoryboard")); 
            }
            // TimeSpan is a struct and can't be null - hence no ArgumentNullException check.
            _offset = value;
        } 
    }
 
    ///  
    /// This method is used by TypeDescriptor to determine if this property should
    /// be serialized. 
    /// 
    // Because we can't use [DefaultValue(TimeSpan.Zero)] - TimeSpan.Zero is not a constant expression.
    [EditorBrowsable(EditorBrowsableState.Never)]
    public bool ShouldSerializeOffset() 
    {
        return !(TimeSpan.Zero.Equals(_offset)); 
    } 

 
    /// 
    ///     A time offset origin from which to evaluate the Offset value.
    /// If it is never explicitly specified, it will be relative to the
    /// beginning.  ("Begin") 
    /// 
    [DefaultValue(TimeSeekOrigin.BeginTime)] 
    public TimeSeekOrigin Origin 
    {
        get 
        {
            return _origin;
        }
        set 
        {
            if (IsSealed) 
            { 
                throw new InvalidOperationException(SR.Get(SRID.CannotChangeAfterSealed, "SeekStoryboard"));
            } 

            if( value == TimeSeekOrigin.BeginTime || value == TimeSeekOrigin.Duration ) // FxCop doesn't like Enum.IsDefined, probably need some central validation mechanism.
            {
                _origin = value; 
            }
            else 
            { 
                throw new ArgumentException(SR.Get(SRID.Storyboard_UnrecognizedTimeSeekOrigin));
            } 
        }
    }

    ///  
    ///     Called when it's time to execute this storyboard action
    ///  
    internal override void Invoke( FrameworkElement containingFE, FrameworkContentElement containingFCE, Storyboard storyboard ) 
    {
        Debug.Assert( containingFE != null || containingFCE != null, 
            "Caller of internal function failed to verify that we have a FE or FCE - we have neither." );

        if( containingFE != null )
        { 
            storyboard.Seek(containingFE, Offset, Origin);
        } 
        else 
        {
            storyboard.Seek(containingFCE, Offset, Origin); 
        }
    }

    TimeSpan       _offset = TimeSpan.Zero; 
    TimeSeekOrigin _origin = TimeSeekOrigin.BeginTime;
} 
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK