return gDebugAndroidAnimationInstances;
}
-AndroidAnimation::AndroidAnimation(const Animation* animation,
+AndroidAnimation::AndroidAnimation(AndroidAnimationType type,
+ const Animation* animation,
double beginTime)
: m_beginTime(beginTime)
, m_duration(animation->duration())
, m_direction(animation->direction())
, m_currentDirection(false)
, m_timingFunction(animation->timingFunction())
+ , m_type(type)
{
ASSERT(m_timingFunction);
, m_direction(anim->m_direction)
, m_currentDirection(false)
, m_timingFunction(anim->m_timingFunction)
+ , m_type(anim->m_type)
{
gDebugAndroidAnimationInstances++;
}
AndroidOpacityAnimation::AndroidOpacityAnimation(const Animation* animation,
KeyframeValueList* operations,
double beginTime)
- : AndroidAnimation(animation, beginTime)
+ : AndroidAnimation(AndroidAnimation::OPACITY, animation, beginTime)
, m_operations(operations)
{
}
AndroidTransformAnimation::AndroidTransformAnimation(const Animation* animation,
KeyframeValueList* operations,
double beginTime)
- : AndroidAnimation(animation, beginTime)
+ : AndroidAnimation(AndroidAnimation::TRANSFORM, animation, beginTime)
, m_operations(operations)
{
}
TransformAnimationValue* value = (TransformAnimationValue*) m_operations->at(i);
TransformOperations* values = (TransformOperations*) value->value();
float key = value->keyTime();
- float d = fabs(progress - key);
+ float d = progress - key;
XLOG("[%d] Key %.2f, %d values", i, key, values->size());
- if (!fromValue || (d < distance && i + 1 < m_operations->size())) {
+ if (!fromValue || (d > 0 && d < distance && i + 1 < m_operations->size())) {
fromValue = value;
distance = d;
foundAt = i;
class AndroidAnimation : public RefCounted<AndroidAnimation> {
public:
- AndroidAnimation(const Animation* animation,
+ enum AndroidAnimationType {
+ UNDEFINED,
+ OPACITY,
+ TRANSFORM
+ };
+ AndroidAnimation(AndroidAnimationType type,
+ const Animation* animation,
double beginTime);
AndroidAnimation(AndroidAnimation* anim);
static long instancesCount();
void setName(const String& name) { m_name = name; }
String name() { return m_name; }
+ AndroidAnimationType type() { return m_type; }
protected:
double m_beginTime;
bool m_currentDirection;
RefPtr<TimingFunction> m_timingFunction;
String m_name;
+ AndroidAnimationType m_type;
};
class AndroidOpacityAnimation : public AndroidAnimation {