MatrixTransformOperation.cpp [plain text]
#include "config.h"
#include "MatrixTransformOperation.h"
#include "TextStream.h"
#include <algorithm>
namespace WebCore {
bool MatrixTransformOperation::operator==(const TransformOperation& other) const
{
if (!isSameType(other))
return false;
const MatrixTransformOperation& m = downcast<MatrixTransformOperation>(other);
return m_a == m.m_a && m_b == m.m_b && m_c == m.m_c && m_d == m.m_d && m_e == m.m_e && m_f == m.m_f;
}
static Ref<TransformOperation> createOperation(TransformationMatrix& to, TransformationMatrix& from, double progress)
{
to.blend(from, progress);
return MatrixTransformOperation::create(to);
}
Ref<TransformOperation> MatrixTransformOperation::blend(const TransformOperation* from, double progress, bool blendToIdentity)
{
if (from && !from->isSameType(*this))
return *this;
TransformationMatrix fromT;
TransformationMatrix toT(m_a, m_b, m_c, m_d, m_e, m_f);
if (from) {
const MatrixTransformOperation& m = downcast<MatrixTransformOperation>(*from);
fromT.setMatrix(m.m_a, m.m_b, m.m_c, m.m_d, m.m_e, m.m_f);
}
if (blendToIdentity)
return createOperation(fromT, toT, progress);
return createOperation(toT, fromT, progress);
}
void MatrixTransformOperation::dump(TextStream& ts) const
{
ts << "("
<< TextStream::FormatNumberRespectingIntegers(m_a) << ", "
<< TextStream::FormatNumberRespectingIntegers(m_b) << ", "
<< TextStream::FormatNumberRespectingIntegers(m_c) << ", "
<< TextStream::FormatNumberRespectingIntegers(m_d) << ", "
<< TextStream::FormatNumberRespectingIntegers(m_e) << ", "
<< TextStream::FormatNumberRespectingIntegers(m_f) << ")";
}
}