-//
-// Copyright (c) 2014 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Flora License, Version 1.0 (the License);
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://floralicense.org/license/
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an AS IS BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+// INTERNAL INCLUDES
#include <dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-effect-impl.h>
#include <dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-wobble-effect-impl.h>
#include <dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.h>
}
/**
- * @param[out] current The new wobble value
- * @param[in] propertyTime The current time since the wobble effect started
- * @param[in] propertyPosition The scroll-position
- * @param[in] propertyOffset The scroll-overshoot
+ * @param[in,out] direction The new wobble value
+ * @param[in] inputs Contains:
+ * The current time since the wobble effect started
+ * The scroll-position
+ * The scroll-overshoot x & y
*/
- Vector3 operator()(const Vector3& current,
- const PropertyInput& propertyTime,
- const PropertyInput& propertyPosition,
- const PropertyInput& propertyOffsetX,
- const PropertyInput& propertyOffsetY)
+ void operator()( Vector3& direction, const PropertyInputContainer& inputs )
{
- Vector3 dir;
-
if(mStabilized)
{
// check if animation cycle id has changed (if so then this spells
else
{
// not stable (i.e. wobbling)
- Vector3 offset(propertyOffsetX.GetFloat(), propertyOffsetY.GetFloat(), 0.0f);
- const Vector3& position = propertyPosition.GetVector3() - offset;
- const float time = propertyTime.GetFloat();
+ Vector3 offset(inputs[2]->GetFloat(), inputs[3]->GetFloat(), 0.0f);
+ const Vector3& position = inputs[1]->GetVector3() - offset;
+ const float time = inputs[0]->GetFloat();
const float timePassed = time - mTime;
mTime = time;
}
}
- dir.x = propertyPosition.GetVector3().x - mChase.x;
- dir.y = propertyPosition.GetVector3().y - mChase.y;
+ direction.x = position.x - mChase.x;
+ direction.y = position.y - mChase.y;
} // end else
-
- return dir;
}
Vector3 mChase; ///< Chaser position
};
ScrollViewWobbleEffect::ScrollViewWobbleEffect()
-: mPropertyTime(Property::INVALID_INDEX)
+: mPropertyTime(Property::INVALID_INDEX),
+ mStableCurrent(0),
+ mAnimationCycleId(0)
{
-
}
ScrollViewWobbleEffect::~ScrollViewWobbleEffect()
void ScrollViewWobbleEffect::AttachActor(Actor actor)
{
- Property::Index propertyPosition = actor.GetPropertyIndex(Toolkit::ScrollView::SCROLL_POSITION_PROPERTY_NAME);
- Property::Index propertyOvershootX = actor.GetPropertyIndex(Toolkit::ScrollView::SCROLL_OVERSHOOT_X_PROPERTY_NAME);
- Property::Index propertyOvershootY = actor.GetPropertyIndex(Toolkit::ScrollView::SCROLL_OVERSHOOT_Y_PROPERTY_NAME);
-
// Create effect-overshoot property if not already created.
Property::Index propertyEffectOvershoot = actor.GetPropertyIndex(Toolkit::ScrollViewWobbleEffect::EFFECT_OVERSHOOT);
if(propertyEffectOvershoot == Property::INVALID_INDEX)
Actor scrollView = GetScrollView();
- Constraint constraint = Constraint::New<Vector3>( propertyEffectOvershoot,
- Source(scrollView, mPropertyTime),
- Source(actor, propertyPosition),
- Source(actor, propertyOvershootX),
- Source(actor, propertyOvershootY),
- ScrollViewWobbleEffectConstraint(*this) );
- actor.ApplyConstraint(constraint);
+ Constraint constraint = Constraint::New<Vector3>( actor, propertyEffectOvershoot, ScrollViewWobbleEffectConstraint(*this) );
+ constraint.AddSource( Source( scrollView, mPropertyTime ) );
+ constraint.AddSource( Source( actor, Toolkit::ScrollView::Property::SCROLL_POSITION ) );
+ constraint.AddSource( Source( actor, Toolkit::ScrollView::Property::OVERSHOOT_X ) );
+ constraint.AddSource( Source( actor, Toolkit::ScrollView::Property::OVERSHOOT_Y ) );
+ constraint.Apply();
}
void ScrollViewWobbleEffect::DetachActor(Actor actor)
Actor scrollView = GetScrollView();
mAnimation = Animation::New(WOBBLEEFFECT_ANIMATION_MAX_TIME);
- mAnimation.AnimateTo( Property(scrollView, mPropertyTime), endTime, AlphaFunctions::Linear );
+ mAnimation.AnimateTo( Property(scrollView, mPropertyTime), endTime, AlphaFunction::LINEAR );
mAnimation.FinishedSignal().Connect(this, &ScrollViewWobbleEffect::OnAnimationFinished);
mAnimation.Play();