From: Seungho Baek Date: Wed, 23 Dec 2020 07:01:21 +0000 (+0900) Subject: Add CURRENT_FRAME_NUMBER and TOTAL_FRAME_NUMBER properties to the AnimatedImageVisual X-Git-Tag: dali_2.0.8~9^2 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=8c45458b64211285df3df591dfcb628126a1bc0e Add CURRENT_FRAME_NUMBER and TOTAL_FRAME_NUMBER properties to the AnimatedImageVisual Change-Id: I0512d42a0948ebc9adae9475004f7d73aa7eb52d Signed-off-by: Seungho Baek --- diff --git a/automated-tests/src/dali-toolkit/utc-Dali-AnimatedImageVisual.cpp b/automated-tests/src/dali-toolkit/utc-Dali-AnimatedImageVisual.cpp index 90ee00e..3d538cd 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-AnimatedImageVisual.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-AnimatedImageVisual.cpp @@ -107,7 +107,66 @@ int UtcDaliAnimatedImageVisualGetPropertyMap01(void) int UtcDaliAnimatedImageVisualGetPropertyMap02(void) { ToolkitTestApplication application; - tet_infoline( "UtcDaliAnimatedImageVisualGetPropertyMap for multi image" ); + tet_infoline( "UtcDaliAnimatedImageVisualGetPropertyMap for multi image with fixed cache" ); + + // request AnimatedImageVisual with a property map + VisualFactory factory = VisualFactory::Get(); + Property::Array urls; + CopyUrlsIntoArray( urls ); + + Visual::Base animatedImageVisual = factory.CreateVisual( + Property::Map() + .Add( Toolkit::Visual::Property::TYPE, Visual::ANIMATED_IMAGE ) + .Add( "url", urls ) + .Add( "batchSize", 4 ) + .Add( "cacheSize", 20 ) + .Add( "loopCount", 10 ) + .Add( "frameDelay", 200 ) + .Add( "pixelArea", Vector4() ) + .Add( "wrapModeU", WrapMode::REPEAT ) + .Add( "wrapModeV", WrapMode::DEFAULT )); + + Property::Map resultMap; + animatedImageVisual.CreatePropertyMap( resultMap ); + // check the property values from the returned map from a visual + Property::Value* value = resultMap.Find( Toolkit::Visual::Property::TYPE, Property::INTEGER ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == Visual::ANIMATED_IMAGE ); + + value = resultMap.Find( ImageVisual::Property::URL, "url" ); + DALI_TEST_CHECK( value ); + Property::Array* resultUrls = value->GetArray(); + DALI_TEST_CHECK( resultUrls ); + DALI_TEST_EQUALS( resultUrls->Count(), urls.Count(), TEST_LOCATION ); + + value = resultMap.Find( ImageVisual::Property::BATCH_SIZE, "batchSize" ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get(), 4, TEST_LOCATION ); + + value = resultMap.Find( ImageVisual::Property::CACHE_SIZE, "cacheSize" ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get(), 20, TEST_LOCATION ); + + value = resultMap.Find( Toolkit::DevelImageVisual::Property::LOOP_COUNT, "loopCount" ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get(), 10, TEST_LOCATION ); + + value = resultMap.Find( ImageVisual::Property::FRAME_DELAY, "frameDelay" ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get(), 200, TEST_LOCATION ); + + value = resultMap.Find( Toolkit::DevelImageVisual::Property::TOTAL_FRAME_NUMBER, "totalFrameNumber" ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get(), 11, TEST_LOCATION ); + + END_TEST; +} + + +int UtcDaliAnimatedImageVisualGetPropertyMap03(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliAnimatedImageVisualGetPropertyMap for multi image rolling cache" ); // request AnimatedImageVisual with a property map VisualFactory factory = VisualFactory::Get(); @@ -155,10 +214,14 @@ int UtcDaliAnimatedImageVisualGetPropertyMap02(void) DALI_TEST_CHECK( value ); DALI_TEST_EQUALS( value->Get(), 200, TEST_LOCATION ); + value = resultMap.Find( Toolkit::DevelImageVisual::Property::TOTAL_FRAME_NUMBER, "totalFrameNumber" ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get(), 11, TEST_LOCATION ); + END_TEST; } -int UtcDaliAnimatedImageVisualGetPropertyMap03(void) +int UtcDaliAnimatedImageVisualGetPropertyMap04(void) { ToolkitTestApplication application; tet_infoline( "UtcDaliAnimatedImageVisualGetPropertyMap" ); @@ -193,6 +256,10 @@ int UtcDaliAnimatedImageVisualGetPropertyMap03(void) DALI_TEST_CHECK( value ); DALI_TEST_CHECK( value->Get() == 2 ); + value = resultMap.Find( Toolkit::DevelImageVisual::Property::TOTAL_FRAME_NUMBER, "totalFrameNumber" ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get(), 4, TEST_LOCATION ); + END_TEST; } diff --git a/dali-toolkit/devel-api/visuals/image-visual-properties-devel.h b/dali-toolkit/devel-api/visuals/image-visual-properties-devel.h index a10a3f8..413b556 100644 --- a/dali-toolkit/devel-api/visuals/image-visual-properties-devel.h +++ b/dali-toolkit/devel-api/visuals/image-visual-properties-devel.h @@ -104,14 +104,14 @@ enum Type PLAY_STATE = ORIENTATION_CORRECTION + 5, /** - * @brief The current frame number the AnimatedVectorImageVisual will use. + * @brief The current frame number the AnimatedImageVisual and AnimatedVectorImageVisual will use. * @details Name "currentFrameNumber", Type Property::INTEGER, between [0, the maximum frame number] or between the play range if specified * @note This property is read-only. */ CURRENT_FRAME_NUMBER = ORIENTATION_CORRECTION + 6, /** - * @brief The total frame number the AnimatedVectorImageVisual will use. + * @brief The total frame number the AnimatedImageVisual and AnimatedVectorImageVisual will use. * @details Name "totalFrameNumber", Type Property::INTEGER. * @note This property is read-only. */ diff --git a/dali-toolkit/internal/visuals/animated-image/animated-image-visual.cpp b/dali-toolkit/internal/visuals/animated-image/animated-image-visual.cpp index 5a83d92..09cad55 100755 --- a/dali-toolkit/internal/visuals/animated-image/animated-image-visual.cpp +++ b/dali-toolkit/internal/visuals/animated-image/animated-image-visual.cpp @@ -249,6 +249,8 @@ void AnimatedImageVisual::DoCreatePropertyMap( Property::Map& map ) const map.Insert( Toolkit::ImageVisual::Property::CACHE_SIZE, static_cast(mCacheSize) ); map.Insert( Toolkit::ImageVisual::Property::FRAME_DELAY, static_cast(mFrameDelay) ); map.Insert( Toolkit::DevelImageVisual::Property::LOOP_COUNT, static_cast(mLoopCount) ); + map.Insert( Toolkit::DevelImageVisual::Property::CURRENT_FRAME_NUMBER, (mImageCache) ? static_cast(mImageCache->GetCurrentFrameIndex()) : -1 ); + map.Insert( Toolkit::DevelImageVisual::Property::TOTAL_FRAME_NUMBER, (mImageCache) ? static_cast(mImageCache->GetTotalFrameCount()) : -1 ); map.Insert( Toolkit::DevelImageVisual::Property::STOP_BEHAVIOR, mStopBehavior ); } diff --git a/dali-toolkit/internal/visuals/animated-image/fixed-image-cache.cpp b/dali-toolkit/internal/visuals/animated-image/fixed-image-cache.cpp index a90b31e..1eea6e6 100644 --- a/dali-toolkit/internal/visuals/animated-image/fixed-image-cache.cpp +++ b/dali-toolkit/internal/visuals/animated-image/fixed-image-cache.cpp @@ -110,6 +110,11 @@ int32_t FixedImageCache::GetCurrentFrameIndex() const return static_cast(mFront); } +int32_t FixedImageCache::GetTotalFrameCount() const +{ + return mImageUrls.size(); +} + bool FixedImageCache::IsFrontReady() const { return ( mReadyFlags.size() > 0 && mReadyFlags[mFront] == true ); diff --git a/dali-toolkit/internal/visuals/animated-image/fixed-image-cache.h b/dali-toolkit/internal/visuals/animated-image/fixed-image-cache.h index bd232b4..3eaac8a 100644 --- a/dali-toolkit/internal/visuals/animated-image/fixed-image-cache.h +++ b/dali-toolkit/internal/visuals/animated-image/fixed-image-cache.h @@ -77,6 +77,11 @@ public: */ int32_t GetCurrentFrameIndex() const override; + /** + * Get total frame count of the animated image file. + */ + int32_t GetTotalFrameCount() const override; + private: /** * @return true if the front frame is ready diff --git a/dali-toolkit/internal/visuals/animated-image/image-cache.h b/dali-toolkit/internal/visuals/animated-image/image-cache.h index b16b94e..adb6e58 100644 --- a/dali-toolkit/internal/visuals/animated-image/image-cache.h +++ b/dali-toolkit/internal/visuals/animated-image/image-cache.h @@ -101,6 +101,11 @@ public: */ virtual int32_t GetCurrentFrameIndex() const = 0; + /** + * Get total frame count of the animated image file. + */ + virtual int32_t GetTotalFrameCount() const = 0; + private: /** diff --git a/dali-toolkit/internal/visuals/animated-image/rolling-animated-image-cache.cpp b/dali-toolkit/internal/visuals/animated-image/rolling-animated-image-cache.cpp index 2733d7a..565252f 100644 --- a/dali-toolkit/internal/visuals/animated-image/rolling-animated-image-cache.cpp +++ b/dali-toolkit/internal/visuals/animated-image/rolling-animated-image-cache.cpp @@ -192,6 +192,11 @@ int32_t RollingAnimatedImageCache::GetCurrentFrameIndex() const return mQueue.Front().mFrameNumber; } +int32_t RollingAnimatedImageCache::GetTotalFrameCount() const +{ + return mFrameCount; +} + bool RollingAnimatedImageCache::IsFrontReady() const { return ( !mQueue.IsEmpty() && mQueue.Front().mReady ); diff --git a/dali-toolkit/internal/visuals/animated-image/rolling-animated-image-cache.h b/dali-toolkit/internal/visuals/animated-image/rolling-animated-image-cache.h index db35741..595adc0 100644 --- a/dali-toolkit/internal/visuals/animated-image/rolling-animated-image-cache.h +++ b/dali-toolkit/internal/visuals/animated-image/rolling-animated-image-cache.h @@ -95,6 +95,11 @@ public: */ int32_t GetCurrentFrameIndex() const override; + /** + * Get total frame count of the animated image file. + */ + int32_t GetTotalFrameCount() const override; + private: /** * @return true if the front frame is ready diff --git a/dali-toolkit/internal/visuals/animated-image/rolling-image-cache.cpp b/dali-toolkit/internal/visuals/animated-image/rolling-image-cache.cpp index e838060..dee6149 100644 --- a/dali-toolkit/internal/visuals/animated-image/rolling-image-cache.cpp +++ b/dali-toolkit/internal/visuals/animated-image/rolling-image-cache.cpp @@ -165,6 +165,11 @@ int32_t RollingImageCache::GetCurrentFrameIndex() const return mQueue.Front().mUrlIndex; } +int32_t RollingImageCache::GetTotalFrameCount() const +{ + return mImageUrls.size(); +} + bool RollingImageCache::IsFrontReady() const { return ( !mQueue.IsEmpty() && mQueue.Front().mReady ); diff --git a/dali-toolkit/internal/visuals/animated-image/rolling-image-cache.h b/dali-toolkit/internal/visuals/animated-image/rolling-image-cache.h index c20586f..f33a7b3 100644 --- a/dali-toolkit/internal/visuals/animated-image/rolling-image-cache.h +++ b/dali-toolkit/internal/visuals/animated-image/rolling-image-cache.h @@ -88,6 +88,11 @@ public: */ int32_t GetCurrentFrameIndex() const override; + /** + * Get total frame count of the animated image file. + */ + int32_t GetTotalFrameCount() const override; + private: /** * @return true if the front frame is ready