WebKitCSSKeyframeRule.cpp [plain text]
#include "config.h"
#include "WebKitCSSKeyframeRule.h"
#include "PropertySetCSSStyleDeclaration.h"
#include "StylePropertySet.h"
#include "WebKitCSSKeyframesRule.h"
namespace WebCore {
void StyleKeyframe::setProperties(PassRefPtr<StylePropertySet> properties)
{
m_properties = properties;
}
void StyleKeyframe::parseKeyString(const String& s, Vector<float>& keys)
{
keys.clear();
Vector<String> strings;
s.split(',', strings);
for (size_t i = 0; i < strings.size(); ++i) {
float key = -1;
String cur = strings[i].stripWhiteSpace();
if (cur == "from")
key = 0;
else if (cur == "to")
key = 1;
else if (cur.endsWith('%')) {
float k = cur.substring(0, cur.length() - 1).toFloat();
if (k >= 0 && k <= 100)
key = k/100;
}
if (key < 0) {
keys.clear();
return;
}
else
keys.append(key);
}
}
String StyleKeyframe::cssText() const
{
String result = keyText();
result += " { ";
result += m_properties->asText();
result += "}";
return result;
}
WebKitCSSKeyframeRule::WebKitCSSKeyframeRule(StyleKeyframe* keyframe, WebKitCSSKeyframesRule* parent)
: CSSRule(0, CSSRule::WEBKIT_KEYFRAME_RULE)
, m_keyframe(keyframe)
{
setParentRule(parent);
}
WebKitCSSKeyframeRule::~WebKitCSSKeyframeRule()
{
if (m_propertiesCSSOMWrapper)
m_propertiesCSSOMWrapper->clearParentRule();
}
CSSStyleDeclaration* WebKitCSSKeyframeRule::style() const
{
if (!m_propertiesCSSOMWrapper)
m_propertiesCSSOMWrapper = StyleRuleCSSStyleDeclaration::create(m_keyframe->properties(), const_cast<WebKitCSSKeyframeRule*>(this));
return m_propertiesCSSOMWrapper.get();
}
}