Add CURRENT_FRAME_NUMBER and TOTAL_FRAME_NUMBER properties to the AnimatedImageVisual
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / visuals / animated-image / fixed-image-cache.cpp
index 9acf1af..1eea6e6 100644 (file)
@@ -54,24 +54,21 @@ FixedImageCache::~FixedImageCache()
   }
 }
 
-TextureSet FixedImageCache::FirstFrame()
+TextureSet FixedImageCache::Frame( uint32_t frameIndex )
 {
-  TextureSet textureSet = GetFrontTextureSet();
-
-  if( ! textureSet )
+  while( frameIndex > mFront )
   {
-    mWaitingForReadyFrame = true;
+    ++mFront;
+    if( mFront >= mImageUrls.size() )
+    {
+      mFront = 0;
+    }
+    LoadBatch();
   }
 
-  return textureSet;
-}
+  mFront = frameIndex;
 
-TextureSet FixedImageCache::NextFrame()
-{
   TextureSet textureSet;
-  ++mFront;
-  mFront %= mImageUrls.size();
-
   if( IsFrontReady() == true )
   {
     textureSet = GetFrontTextureSet();
@@ -81,11 +78,43 @@ TextureSet FixedImageCache::NextFrame()
     mWaitingForReadyFrame = true;
   }
 
-  LoadBatch();
+  return textureSet;
+}
+
+TextureSet FixedImageCache::FirstFrame()
+{
+  TextureSet textureSet = GetFrontTextureSet();
+
+  if( ! textureSet )
+  {
+    mWaitingForReadyFrame = true;
+  }
+
+  return textureSet;
+}
+
+TextureSet FixedImageCache::NextFrame()
+{
+  TextureSet textureSet = Frame((mFront + 1) % mImageUrls.size());
 
   return textureSet;
 }
 
+uint32_t FixedImageCache::GetFrameInterval( uint32_t frameIndex ) const
+{
+  return 0u;
+}
+
+int32_t FixedImageCache::GetCurrentFrameIndex() const
+{
+  return static_cast<int32_t>(mFront);
+}
+
+int32_t FixedImageCache::GetTotalFrameCount() const
+{
+  return mImageUrls.size();
+}
+
 bool FixedImageCache::IsFrontReady() const
 {
   return ( mReadyFlags.size() > 0 && mReadyFlags[mFront] == true );
@@ -96,7 +125,7 @@ void FixedImageCache::LoadBatch()
   // Try and load up to mBatchSize images, until the cache is filled.
   // Once the cache is filled, mUrlIndex exceeds mImageUrls size and
   // no more images are loaded.
-  bool frontFrameReady = IsFrontReady();;
+  bool frontFrameReady = IsFrontReady();
 
   for( unsigned int i=0; i< mBatchSize && mUrlIndex < mImageUrls.size(); ++i )
   {