+ mOvershootOverlay.SetProperty(Actor::Property::VISIBLE, visible);
+ // make sure overshoot image is correctly placed
+ if(visible)
+ {
+ Actor self = mAttachedScrollView.Self();
+ if(mOvershoot > 0.0f)
+ {
+ // positive overshoot
+ const Vector3 size = mOvershootOverlay.GetCurrentProperty<Vector3>(Actor::Property::SIZE);
+ Vector3 relativeOffset;
+ const Vector3 parentSize = self.GetCurrentProperty<Vector3>(Actor::Property::SIZE);
+ if(IsVertical())
+ {
+ mOvershootOverlay.SetProperty(Actor::Property::ORIENTATION, Quaternion(Quaternion(Radian(0.0f), Vector3::ZAXIS)));
+ mOvershootOverlay.SetProperty(Actor::Property::SIZE, Vector3(parentSize.width, GetBounceActorHeight(parentSize.width, mOvershootSize.height), size.depth));
+ }
+ else
+ {
+ mOvershootOverlay.SetProperty(Actor::Property::ORIENTATION, Quaternion(Quaternion(Radian(1.5f * Math::PI), Vector3::ZAXIS)));
+ mOvershootOverlay.SetProperty(Actor::Property::SIZE, Vector3(parentSize.height, GetBounceActorHeight(parentSize.height, mOvershootSize.height), size.depth));
+ relativeOffset = Vector3(0.0f, 1.0f, 0.0f);
+ }
+ mOvershootOverlay.SetProperty(Actor::Property::POSITION, relativeOffset * parentSize);
+ }
+ else
+ {
+ // negative overshoot
+ const Vector3 size = mOvershootOverlay.GetCurrentProperty<Vector3>(Actor::Property::SIZE);
+ Vector3 relativeOffset;
+ const Vector3 parentSize = self.GetCurrentProperty<Vector3>(Actor::Property::SIZE);
+ if(IsVertical())
+ {
+ mOvershootOverlay.SetProperty(Actor::Property::ORIENTATION, Quaternion(Quaternion(Radian(Math::PI), Vector3::ZAXIS)));
+ mOvershootOverlay.SetProperty(Actor::Property::SIZE, Vector3(parentSize.width, GetBounceActorHeight(parentSize.width, mOvershootSize.height), size.depth));
+ relativeOffset = Vector3(1.0f, 1.0f, 0.0f);
+ }
+ else
+ {
+ mOvershootOverlay.SetProperty(Actor::Property::ORIENTATION, Quaternion(Quaternion(Radian(0.5f * Math::PI), Vector3::ZAXIS)));
+ mOvershootOverlay.SetProperty(Actor::Property::SIZE, Vector3(parentSize.height, GetBounceActorHeight(parentSize.height, mOvershootSize.height), size.depth));
+ relativeOffset = Vector3(1.0f, 0.0f, 0.0f);
+ }
+ mOvershootOverlay.SetProperty(Actor::Property::POSITION, relativeOffset * parentSize);
+ }
+ }