CSSKeyframeRule.cpp [plain text]
#include "config.h"
#include "CSSKeyframeRule.h"
#include "CSSKeyframesRule.h"
#include "PropertySetCSSStyleDeclaration.h"
#include "StyleProperties.h"
#include <wtf/text/StringBuilder.h>
namespace WebCore {
StyleKeyframe::StyleKeyframe(Ref<StyleProperties>&& properties)
: m_properties(WTFMove(properties))
{
}
StyleKeyframe::~StyleKeyframe()
{
}
MutableStyleProperties& StyleKeyframe::mutableProperties()
{
if (!is<MutableStyleProperties>(m_properties.get()))
m_properties = m_properties->mutableCopy();
return downcast<MutableStyleProperties>(m_properties.get());
}
String StyleKeyframe::keyText() const
{
StringBuilder keyText;
for (size_t i = 0; i < m_keys.size(); ++i) {
if (i)
keyText.append(',');
keyText.appendNumber(m_keys.at(i) * 100);
keyText.append('%');
}
return keyText.toString();
}
String StyleKeyframe::cssText() const
{
StringBuilder result;
result.append(keyText());
result.appendLiteral(" { ");
String decls = m_properties->asText();
result.append(decls);
if (!decls.isEmpty())
result.append(' ');
result.append('}');
return result.toString();
}
CSSKeyframeRule::CSSKeyframeRule(StyleKeyframe& keyframe, CSSKeyframesRule* parent)
: CSSRule(0)
, m_keyframe(keyframe)
{
setParentRule(parent);
}
CSSKeyframeRule::~CSSKeyframeRule()
{
if (m_propertiesCSSOMWrapper)
m_propertiesCSSOMWrapper->clearParentRule();
}
CSSStyleDeclaration& CSSKeyframeRule::style()
{
if (!m_propertiesCSSOMWrapper)
m_propertiesCSSOMWrapper = StyleRuleCSSStyleDeclaration::create(m_keyframe->mutableProperties(), *this);
return *m_propertiesCSSOMWrapper;
}
void CSSKeyframeRule::reattach(StyleRuleBase&)
{
ASSERT_NOT_REACHED();
}
}