|
using AngleSharp.Css;
using System;
namespace AngleSharp.DOM.Css
{
/// <summary>
/// Represents an @keyframes rule.
/// </summary>
public sealed class CSSKeyframesRule : CSSRule
{
#region Constants
internal const String RuleName = "keyframes";
#endregion
#region Members
CSSRuleList _cssRules;
String _name;
#endregion
#region ctor
/// <summary>
/// Creates a new @keyframes rule.
/// </summary>
internal CSSKeyframesRule()
{
_cssRules = new CSSRuleList();
_type = CssRule.Keyframes;
}
#endregion
#region Properties
/// <summary>
/// Gets or sets the name of the animation, used by the animation-name property.
/// </summary>
public String Name
{
get { return _name; }
set { _name = value; }
}
/// <summary>
/// Gets a CSSRuleList of the CSS rules in the media rule.
/// </summary>
public CSSRuleList CssRules
{
get { return _cssRules; }
}
#endregion
#region Methods
/// <summary>
/// Inserts a new keyframe rule into the current CSSKeyframesRule.
/// </summary>
/// <param name="rule">A string containing a keyframe in the same format as an entry of a @keyframes at-rule.</param>
/// <returns>The current @keyframes rule.</returns>
public CSSKeyframesRule AppendRule(String rule)
{
var obj = CssParser.ParseKeyframeRule(rule);
obj.ParentStyleSheet = _parent;
obj.ParentRule = this;
_cssRules.InsertAt(_cssRules.Length, obj);
return this;
}
/// <summary>
/// Deletes a keyframe rule from the current CSSKeyframesRule.
/// </summary>
/// <param name="key">The index of the keyframe to be deleted, expressed as a string resolving as a number between 0 and 1.</param>
/// <returns>The current @keyframes rule.</returns>
public CSSKeyframesRule DeleteRule(String key)
{
for (int i = 0; i < _cssRules.Length; i++)
{
if ((_cssRules[i] as CSSKeyframeRule).KeyText.Equals(key, StringComparison.OrdinalIgnoreCase))
{
_cssRules.RemoveAt(i);
break;
}
}
return this;
}
/// <summary>
/// Returns a keyframe rule corresponding to the given key.
/// </summary>
/// <param name="key">A string containing an index of the keyframe to be returned, resolving to a number between 0 and 1.</param>
/// <returns>The keyframe or null.</returns>
public CSSKeyframeRule FindRule(String key)
{
for (int i = 0; i < _cssRules.Length; i++)
{
var rule = _cssRules[i] as CSSKeyframeRule;
if (rule.KeyText.Equals(key, StringComparison.OrdinalIgnoreCase))
return rule;
}
return null;
}
#endregion
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Florian lives in Munich, Germany. He started his programming career with Perl. After programming C/C++ for some years he discovered his favorite programming language C#. He did work at Siemens as a programmer until he decided to study Physics.
During his studies he worked as an IT consultant for various companies. After graduating with a PhD in theoretical particle Physics he is working as a senior technical consultant in the field of home automation and IoT.
Florian has been giving lectures in C#, HTML5 with CSS3 and JavaScript, software design, and other topics. He is regularly giving talks at user groups, conferences, and companies. He is actively contributing to open-source projects. Florian is the maintainer of AngleSharp, a completely managed browser engine.