Merge branch 'devel/master' into tizen
authorWonsik Jung <sidein@samsung.com>
Tue, 2 Jun 2020 02:41:08 +0000 (11:41 +0900)
committerWonsik Jung <sidein@samsung.com>
Tue, 2 Jun 2020 02:41:08 +0000 (11:41 +0900)
29 files changed:
automated-tests/src/dali-toolkit-internal/utc-Dali-TextureManager.cpp
automated-tests/src/dali-toolkit/utc-Dali-Builder.cpp
automated-tests/src/dali-toolkit/utc-Dali-Popup.cpp
dali-toolkit/internal/controls/magnifier/magnifier-impl.cpp
dali-toolkit/internal/controls/page-turn-view/page-turn-view-impl.cpp
dali-toolkit/internal/controls/popup/popup-impl.cpp
dali-toolkit/internal/controls/scroll-bar/scroll-bar-impl.cpp
dali-toolkit/internal/controls/scrollable/item-view/item-view-impl.cpp
dali-toolkit/internal/controls/scrollable/scroll-view/scroll-overshoot-indicator-impl.cpp
dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.cpp
dali-toolkit/internal/controls/shadow-view/shadow-view-impl.cpp
dali-toolkit/internal/controls/slider/slider-impl.cpp
dali-toolkit/internal/controls/table-view/table-view-impl.cpp
dali-toolkit/internal/controls/text-controls/text-selection-toolbar-impl.cpp
dali-toolkit/internal/controls/tool-bar/tool-bar-impl.cpp
dali-toolkit/internal/text/decorator/text-decorator.cpp
dali-toolkit/internal/text/rendering/atlas/text-atlas-renderer.cpp
dali-toolkit/internal/text/text-controller-impl.cpp
dali-toolkit/internal/transition-effects/cube-transition-effect-impl.cpp
dali-toolkit/internal/visuals/animated-vector-image/animated-vector-image-visual.cpp
dali-toolkit/internal/visuals/animated-vector-image/vector-animation-task.cpp
dali-toolkit/internal/visuals/image/image-visual.cpp
dali-toolkit/internal/visuals/texture-manager-impl.cpp
dali-toolkit/internal/visuals/texture-manager-impl.h
dali-toolkit/public-api/dali-toolkit-version.cpp
docs/content/programming-guide/popup.md
docs/content/programming-guide/size-negotiation-controls.h
docs/content/programming-guide/size-negotiation.h
packaging/dali-toolkit.spec

index 21f6f7c..f2b032d 100644 (file)
 #include <stdlib.h>
 
 #include <dali-toolkit-test-suite-utils.h>
+#include <toolkit-timer.h>
+#include <toolkit-event-thread-callback.h>
 #include <dali-toolkit/internal/visuals/texture-manager-impl.h>
 #include <dali-toolkit/internal/visuals/texture-upload-observer.h>
+#include <dali/devel-api/adaptor-framework/pixel-buffer.h>
 
 using namespace Dali::Toolkit::Internal;
 
@@ -37,11 +40,27 @@ void utc_dali_toolkit_texture_manager_cleanup(void)
   test_return_value = TET_PASS;
 }
 
+namespace
+{
+
+const char* TEST_IMAGE_FILE_NAME =  TEST_RESOURCE_DIR "/gallery-small-1.jpg";
+
+}
+
 class TestObserver : public Dali::Toolkit::TextureUploadObserver
 {
 public:
+  enum class CompleteType
+  {
+    NOT_COMPLETED = 0,
+    UPLOAD_COMPLETE,
+    LOAD_COMPLETE
+  };
+
+public:
   TestObserver()
-  : mLoaded(false),
+  : mCompleteType( CompleteType::NOT_COMPLETED ),
+    mLoaded(false),
     mObserverCalled(false)
   {
   }
@@ -49,16 +68,19 @@ public:
   virtual void UploadComplete( bool loadSuccess, int32_t textureId, TextureSet textureSet,
                                bool useAtlasing, const Vector4& atlasRect, bool preMultiplied ) override
   {
+    mCompleteType = CompleteType::UPLOAD_COMPLETE;
     mLoaded = loadSuccess;
     mObserverCalled = true;
   }
 
   virtual void LoadComplete( bool loadSuccess, Devel::PixelBuffer pixelBuffer, const VisualUrl& url, bool preMultiplied ) override
   {
+    mCompleteType = CompleteType::LOAD_COMPLETE;
     mLoaded = loadSuccess;
     mObserverCalled = true;
   }
 
+  CompleteType mCompleteType;
   bool mLoaded;
   bool mObserverCalled;
 };
@@ -117,3 +139,68 @@ int UtcTextureManagerGenerateHash(void)
 
   END_TEST;
 }
+
+int UtcTextureManagerCachingForDifferentLoadingType(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline( "UtcTextureManagerCachingForDifferentLoadingType" );
+
+  TextureManager textureManager; // Create new texture manager
+
+  TestObserver observer1;
+  std::string filename( TEST_IMAGE_FILE_NAME );
+  auto preMultiply = TextureManager::MultiplyOnLoad::LOAD_WITHOUT_MULTIPLY;
+  textureManager.RequestLoad(
+    filename,
+    ImageDimensions(),
+    FittingMode::SCALE_TO_FILL,
+    SamplingMode::BOX_THEN_LINEAR,
+    TextureManager::NO_ATLAS,
+    &observer1,
+    true,
+    TextureManager::ReloadPolicy::CACHED,
+    preMultiply);
+
+  DALI_TEST_EQUALS( observer1.mLoaded, false, TEST_LOCATION );
+  DALI_TEST_EQUALS( observer1.mObserverCalled, false, TEST_LOCATION );
+
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
+
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS( observer1.mLoaded, true, TEST_LOCATION );
+  DALI_TEST_EQUALS( observer1.mObserverCalled, true, TEST_LOCATION );
+  DALI_TEST_EQUALS( observer1.mCompleteType, TestObserver::CompleteType::UPLOAD_COMPLETE, TEST_LOCATION );
+
+  TestObserver observer2;
+  Devel::PixelBuffer pixelBuffer = textureManager.LoadPixelBuffer(
+    filename,
+    ImageDimensions(),
+    FittingMode::SCALE_TO_FILL,
+    SamplingMode::BOX_THEN_LINEAR,
+    false,
+    &observer2,
+    true,
+    preMultiply);
+
+  DALI_TEST_EQUALS( observer2.mLoaded, false, TEST_LOCATION );
+  DALI_TEST_EQUALS( observer2.mObserverCalled, false, TEST_LOCATION );
+
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );
+
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS( observer2.mLoaded, true, TEST_LOCATION );
+  DALI_TEST_EQUALS( observer2.mObserverCalled, true, TEST_LOCATION );
+  DALI_TEST_EQUALS( observer2.mCompleteType, TestObserver::CompleteType::LOAD_COMPLETE, TEST_LOCATION );
+
+  END_TEST;
+}
index 7a5fa3e..01b9096 100644 (file)
@@ -1635,7 +1635,7 @@ int UtcDaliBuilderTypeCasts(void)
   DALI_TEST_EQUALS( createdActor.GetCurrentProperty< Vector3 >( Actor::Property::POSITION ), Vector3(100.0f,10.0f,1.0f), TEST_LOCATION );
   DALI_TEST_EQUALS( createdActor.GetCurrentProperty< Vector4 >( Actor::Property::COLOR ), Vector4(0.5f,0.5f,0.5f,1.0f), TEST_LOCATION );
   DALI_TEST_EQUALS( createdActor.GetProperty< bool >( Actor::Property::SENSITIVE ), false, TEST_LOCATION );
-  DALI_TEST_EQUALS( createdActor.GetColorMode(), USE_OWN_MULTIPLY_PARENT_COLOR, TEST_LOCATION );
+  DALI_TEST_EQUALS( createdActor.GetProperty< ColorMode >( Actor::Property::COLOR_MODE ), USE_OWN_MULTIPLY_PARENT_COLOR, TEST_LOCATION );
 
   END_TEST;
 }
index 31faabb..08f601e 100755 (executable)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2020 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.
@@ -467,6 +467,44 @@ int UtcDaliPopupSetControlFooterMultiple(void)
   END_TEST;
 }
 
+int UtcDaliPopupSetTitleAndFooter(void)
+{
+  ToolkitTestApplication application;  // Exceptions require ToolkitTestApplication
+  tet_infoline( " UtcDaliPopupSetTitleAndFooter" );
+
+  // Create the Popup actor
+  Popup popup = Popup::New();
+
+  // Put in show state so it's layer is connected to popup (for ancestor check).
+  popup.SetDisplayState( Popup::SHOWN );
+
+  // Add the title
+  TextLabel titleActor = TextLabel::New();
+  titleActor.SetProperty( Toolkit::TextLabel::Property::TEXT, "title" );
+
+  DALI_TEST_CHECK( !popup.GetTitle() );
+  popup.SetTitle( titleActor );
+  TextLabel textActor = TextLabel::DownCast( popup.GetTitle() );
+  DALI_TEST_CHECK( textActor == titleActor );
+
+  std::string resultText;
+  DALI_TEST_CHECK( textActor.GetProperty( Toolkit::TextLabel::Property::TEXT ).Get( resultText ) );
+  DALI_TEST_CHECK( ( popup.GetTitle() ) && ( resultText == "title" ) );
+  // verify titleActor is actually inside popup, and not elsewhere on stage, or off even.
+  DALI_TEST_CHECK( HasAncestor( titleActor, popup ) );
+
+  // Add the footer
+  PushButton button = PushButton::New();
+  DALI_TEST_CHECK( !HasAncestor(button, popup) );
+  popup.SetFooter( button );
+  // Hide and then re-show popup to cause button to be rearranged and added to popup.
+  popup.SetDisplayState( Popup::HIDDEN );
+  popup.SetDisplayState( Popup::SHOWN );
+  DALI_TEST_CHECK( HasAncestor( button, popup ) );
+
+  END_TEST;
+}
+
 int UtcDaliPopupSetStateP(void)
 {
   ToolkitTestApplication application;  // Exceptions require ToolkitTestApplication
index c0629c3..04fa8da 100644 (file)
@@ -263,7 +263,7 @@ void Magnifier::SetFrameVisibility(bool visible)
     mFrame.SetProperty( Actor::Property::INHERIT_SCALE, true );
     mFrame.SetResizePolicy( ResizePolicy::SIZE_FIXED_OFFSET_FROM_PARENT, Dimension::ALL_DIMENSIONS );
     Vector3 sizeOffset(IMAGE_BORDER_INDENT*2.f - 2.f, IMAGE_BORDER_INDENT*2.f - 2.f, 0.0f);
-    mFrame.SetSizeModeFactor( sizeOffset );
+    mFrame.SetProperty( Actor::Property::SIZE_MODE_FACTOR, sizeOffset );
 
     Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get();
 
index 6cb28d6..9204fa4 100644 (file)
@@ -589,7 +589,7 @@ void PageTurnView::AddPage( int pageIndex )
     }
 
     float degree = isLeftSide ? 180.f :0.f;
-    mPages[index].actor.SetOrientation( Degree( degree ), Vector3::YAXIS );
+    mPages[index].actor.SetProperty( Actor::Property::ORIENTATION, Quaternion( Degree( degree ), Vector3::YAXIS ) );
     mPages[index].actor.SetProperty( Actor::Property::VISIBLE, false );
     mPages[index].UseEffect( mSpineEffectShader, mGeometry );
     mPages[index].SetTexture( newPage );
@@ -904,7 +904,7 @@ void PageTurnView::TurnedOver( Animation& animation )
   mAnimationPageIdPair.erase( animation );
 
   float degree = mPages[index].isTurnBack ? 180.f : 0.f;
-  mPages[index].actor.SetOrientation( Degree(degree), Vector3::YAXIS );
+  mPages[index].actor.SetProperty( Actor::Property::ORIENTATION, Quaternion( Degree(degree), Vector3::YAXIS ) );
   mPages[index].UseEffect( mSpineEffectShader );
 
   int id = pageId + (mPages[index].isTurnBack ? -1 : 1);
@@ -969,7 +969,7 @@ void PageTurnView::StopTurning()
     mPages[ index ].actor.RemoveConstraints();
     mPages[ index ].UseEffect( mSpineEffectShader );
     float degree = mTurningPageIndex==mCurrentPageIndex ? 0.f :180.f;
-    mPages[index].actor.SetOrientation( Degree(degree), Vector3::YAXIS );
+    mPages[index].actor.SetProperty( Actor::Property::ORIENTATION, Quaternion( Degree(degree), Vector3::YAXIS ) );
     mPageUpdated = true;
   }
 
index 8672c4a..4d0e156 100644 (file)
@@ -82,7 +82,7 @@ BaseHandle CreateToast()
   Toolkit::Popup popup = Toolkit::Popup::New();
 
   // Setup for Toast Popup type.
-  popup.SetSizeModeFactor( DEFAULT_TOAST_WIDTH_OF_STAGE_RATIO );
+  popup.SetProperty( Actor::Property::SIZE_MODE_FACTOR, DEFAULT_TOAST_WIDTH_OF_STAGE_RATIO );
   popup.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::WIDTH );
   popup.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT );
   popup.SetProperty( Toolkit::Popup::Property::CONTEXTUAL_MODE, Toolkit::Popup::NON_CONTEXTUAL );
@@ -282,7 +282,7 @@ void Popup::OnInitialize()
   self.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
   self.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER );
 
-  self.SetSizeModeFactor( DEFAULT_POPUP_PARENT_RELATIVE_SIZE );
+  self.SetProperty( Actor::Property::SIZE_MODE_FACTOR, DEFAULT_POPUP_PARENT_RELATIVE_SIZE );
   self.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::WIDTH );
   self.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT );
 
@@ -636,7 +636,7 @@ void Popup::SetTitle( Actor titleActor )
   {
     // Set up padding to give sensible default behaviour
     // (an application developer can later override this if they wish).
-    mTitle.SetPadding( DEFAULT_TITLE_PADDING );
+    mTitle.SetProperty( Actor::Property::PADDING, DEFAULT_TITLE_PADDING );
 
     mPopupLayout.AddChild( mTitle, Toolkit::TableView::CellPosition( 0, 0 ) );
   }
@@ -823,11 +823,11 @@ void Popup::LayoutPopup()
   {
     if( !mContent && !mFooter )
     {
-      mTitle.SetPadding( DEFAULT_TITLE_ONLY_PADDING );
+      mTitle.SetProperty( Actor::Property::PADDING, DEFAULT_TITLE_ONLY_PADDING );
     }
     else
     {
-      mTitle.SetPadding( DEFAULT_TITLE_PADDING );
+      mTitle.SetProperty( Actor::Property::PADDING, DEFAULT_TITLE_PADDING );
     }
   }
 
@@ -1029,7 +1029,7 @@ void Popup::UpdateBackgroundPositionAndSize()
   if( mPopupBackgroundImage )
   {
     mPopupBackgroundImage.SetResizePolicy( ResizePolicy::SIZE_FIXED_OFFSET_FROM_PARENT, Dimension::ALL_DIMENSIONS );
-    mPopupBackgroundImage.SetSizeModeFactor( Vector3( mBackgroundBorder.left + mBackgroundBorder.right, mBackgroundBorder.top + mBackgroundBorder.bottom, 0.0f ) );
+    mPopupBackgroundImage.SetProperty( Actor::Property::SIZE_MODE_FACTOR, Vector3( mBackgroundBorder.left + mBackgroundBorder.right, mBackgroundBorder.top + mBackgroundBorder.bottom, 0.0f ) );
 
     // Adjust the position of the background so the transparent areas are set appropriately
     mPopupBackgroundImage.SetPosition( ( mBackgroundBorder.right - mBackgroundBorder.left ) * 0.5f, ( mBackgroundBorder.bottom - mBackgroundBorder.top ) * 0.5f );
index 2227242..74b5b62 100755 (executable)
@@ -215,7 +215,7 @@ ScrollBar::~ScrollBar()
 void ScrollBar::OnInitialize()
 {
   CreateDefaultIndicatorActor();
-  Self().SetDrawMode(DrawMode::OVERLAY_2D);
+  Self().SetProperty( Actor::Property::DRAW_MODE,DrawMode::OVERLAY_2D);
 }
 
 void ScrollBar::SetScrollPropertySource( Handle handle, Property::Index propertyScrollPosition, Property::Index propertyMinScrollPosition, Property::Index propertyMaxScrollPosition, Property::Index propertyScrollContentSize )
@@ -247,7 +247,7 @@ void ScrollBar::CreateDefaultIndicatorActor()
   indicator.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
   indicator.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
   indicator.SetStyleName( "ScrollBarIndicator" );
-  indicator.SetColorMode( USE_OWN_MULTIPLY_PARENT_COLOR );
+  indicator.SetProperty( Actor::Property::COLOR_MODE, USE_OWN_MULTIPLY_PARENT_COLOR );
   SetScrollIndicator(indicator);
 }
 
index 43aa9a3..575f3aa 100755 (executable)
@@ -1508,7 +1508,7 @@ Vector2 ItemView::GetCurrentScrollPosition() const
 
 void ItemView::AddOverlay(Actor actor)
 {
-  actor.SetDrawMode( DrawMode::OVERLAY_2D );
+  actor.SetProperty( Actor::Property::DRAW_MODE, DrawMode::OVERLAY_2D );
   Self().Add(actor);
 }
 
@@ -1575,7 +1575,7 @@ void ItemView::EnableScrollOvershoot( bool enable )
       mOvershootOverlay.SetProperty( Actor::Property::COLOR,mOvershootEffectColor);
       mOvershootOverlay.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::TOP_LEFT );
       mOvershootOverlay.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::TOP_LEFT);
-      mOvershootOverlay.SetDrawMode( DrawMode::OVERLAY_2D );
+      mOvershootOverlay.SetProperty( Actor::Property::DRAW_MODE, DrawMode::OVERLAY_2D );
       self.Add(mOvershootOverlay);
 
       ApplyOvershootSizeConstraint( mOvershootOverlay, mOvershootSize.height );
index ee80f49..6bd7c3b 100644 (file)
@@ -243,12 +243,12 @@ void ScrollOvershootEffectRipple::UpdateVisibility( bool visible )
       const Vector3 parentSize = self.GetCurrentProperty< Vector3 >( Actor::Property::SIZE );
       if(IsVertical())
       {
-        mOvershootOverlay.SetOrientation( Quaternion( Radian( 0.0f ), Vector3::ZAXIS ) );
+        mOvershootOverlay.SetProperty( Actor::Property::ORIENTATION, Quaternion( Quaternion( Radian( 0.0f ), Vector3::ZAXIS ) ) );
         mOvershootOverlay.SetSize(parentSize.width, GetBounceActorHeight(parentSize.width, mOvershootSize.height), size.depth);
       }
       else
       {
-        mOvershootOverlay.SetOrientation( Quaternion( Radian( 1.5f * Math::PI ), Vector3::ZAXIS ) );
+        mOvershootOverlay.SetProperty( Actor::Property::ORIENTATION, Quaternion( Quaternion( Radian( 1.5f * Math::PI ), Vector3::ZAXIS ) ) );
         mOvershootOverlay.SetSize(parentSize.height, GetBounceActorHeight(parentSize.height, mOvershootSize.height), size.depth);
         relativeOffset = Vector3(0.0f, 1.0f, 0.0f);
       }
@@ -262,13 +262,13 @@ void ScrollOvershootEffectRipple::UpdateVisibility( bool visible )
       const Vector3 parentSize = self.GetCurrentProperty< Vector3 >( Actor::Property::SIZE );
       if(IsVertical())
       {
-        mOvershootOverlay.SetOrientation( Quaternion( Radian( Math::PI ), Vector3::ZAXIS ) );
+        mOvershootOverlay.SetProperty( Actor::Property::ORIENTATION, Quaternion( Quaternion( Radian( Math::PI ), Vector3::ZAXIS ) ) );
         mOvershootOverlay.SetSize(parentSize.width, GetBounceActorHeight(parentSize.width, mOvershootSize.height), size.depth);
         relativeOffset = Vector3(1.0f, 1.0f, 0.0f);
       }
       else
       {
-        mOvershootOverlay.SetOrientation( Quaternion( Radian( 0.5f * Math::PI ), Vector3::ZAXIS ) );
+        mOvershootOverlay.SetProperty( Actor::Property::ORIENTATION, Quaternion( Quaternion( Radian( 0.5f * Math::PI ), Vector3::ZAXIS ) ) );
         mOvershootOverlay.SetSize(parentSize.height, GetBounceActorHeight(parentSize.height, mOvershootSize.height), size.depth);
         relativeOffset = Vector3(1.0f, 0.0f, 0.0f);
       }
index 0053778..c9ed830 100755 (executable)
@@ -1777,7 +1777,7 @@ void ScrollView::EnableScrollOvershoot(bool enable)
 
 void ScrollView::AddOverlay(Actor actor)
 {
-  actor.SetDrawMode( DrawMode::OVERLAY_2D );
+  actor.SetProperty( Actor::Property::DRAW_MODE, DrawMode::OVERLAY_2D );
   mInternalActor.Add( actor );
 }
 
index 2830165..90ff3f4 100644 (file)
@@ -243,7 +243,7 @@ void ShadowView::OnInitialize()
   // Target is constrained to point at the shadow plane origin
   mCameraActor.SetNearClippingPlane( 1.0f );
   mCameraActor.SetType( Dali::Camera::FREE_LOOK ); // Camera orientation constrained to point at shadow plane world position
-  mCameraActor.SetOrientation(Radian(Degree(180)), Vector3::YAXIS);
+  mCameraActor.SetProperty( Actor::Property::ORIENTATION, Quaternion(Radian(Degree(180)), Vector3::YAXIS) );
   mCameraActor.SetPosition(DEFAULT_LIGHT_POSITION);
 
   // Create render targets needed for rendering from light's point of view
@@ -275,7 +275,7 @@ void ShadowView::OnInitialize()
   mBlurRootActor.SetProperty( Actor::Property::INHERIT_POSITION, false );
   mBlurRootActor.SetProperty( Actor::Property::INHERIT_ORIENTATION, false );
   mBlurRootActor.SetProperty( Actor::Property::INHERIT_SCALE, false );
-  mBlurRootActor.SetColorMode( USE_OWN_COLOR );
+  mBlurRootActor.SetProperty( Actor::Property::COLOR_MODE, USE_OWN_COLOR );
 
   Self().Add( mBlurRootActor );
 
index 4fa4bf6..94530e9 100755 (executable)
@@ -605,7 +605,7 @@ Toolkit::TextLabel Slider::CreatePopupText()
   textLabel.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS );
   textLabel.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
   textLabel.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
-  textLabel.SetPadding( Padding( POPUP_TEXT_PADDING, POPUP_TEXT_PADDING, 0.0f, 0.0f ) );
+  textLabel.SetProperty( Actor::Property::PADDING, Padding( POPUP_TEXT_PADDING, POPUP_TEXT_PADDING, 0.0f, 0.0f ) );
   return textLabel;
 }
 
index 9a85dce..3044818 100755 (executable)
@@ -835,8 +835,7 @@ void TableView::OnRelayout( const Vector2& size, RelayoutContainer& container )
         }
         actor.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
 
-        Padding padding;
-        actor.GetPadding( padding );
+        Padding padding = actor.GetProperty<Vector4>( Actor::Property::PADDING );
 
         float left = (column > 0) ? mColumnData[column - 1].position : 0.f;
         float right;
index 3a0ccfd..022ea1e 100644 (file)
@@ -267,7 +267,7 @@ void TextSelectionToolbar::SetUpScrollBar( bool enable )
       mScrollBar.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
       mScrollBar.SetPosition( mScrollBarPadding.x, -mScrollBarPadding.y );
       mScrollBar.SetResizePolicy( Dali::ResizePolicy::FIT_TO_CHILDREN, Dali::Dimension::WIDTH );
-      mScrollBar.SetOrientation( Quaternion( Radian( 1.5f * Math::PI ), Vector3::ZAXIS ) );
+      mScrollBar.SetProperty( Actor::Property::ORIENTATION, Quaternion( Quaternion( Radian( 1.5f * Math::PI ), Vector3::ZAXIS ) ) );
       mScrollBar.SetScrollIndicator( indicator );
       mScrollBar.GetPanGestureDetector().DetachAll();
       mScrollView.Add( mScrollBar );
index 1c95686..aea6c50 100644 (file)
@@ -104,7 +104,7 @@ void ToolBar::AddControl( Actor control, float relativeSize, Toolkit::Alignment:
 
   // Create an alignment container where to place the control.
   Toolkit::Alignment alignmentContainer = Toolkit::Alignment::New( alignment );
-  alignmentContainer.SetSizeScalePolicy( SizeScalePolicy::FIT_WITH_ASPECT_RATIO );
+  alignmentContainer.SetProperty( Actor::Property::SIZE_SCALE_POLICY, SizeScalePolicy::FIT_WITH_ASPECT_RATIO );
   alignmentContainer.SetPadding( padding );
   alignmentContainer.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
   alignmentContainer.Add( control );
index b9b62d3..42a79fb 100644 (file)
@@ -823,7 +823,7 @@ struct Decorator::Impl : public ConnectionTracker
         grabHandle.grabArea.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_CENTER );
         grabHandle.grabArea.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_CENTER );
         grabHandle.grabArea.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
-        grabHandle.grabArea.SetSizeModeFactor( DEFAULT_GRAB_HANDLE_RELATIVE_SIZE );
+        grabHandle.grabArea.SetProperty( Actor::Property::SIZE_MODE_FACTOR, DEFAULT_GRAB_HANDLE_RELATIVE_SIZE );
         grabHandle.actor.Add( grabHandle.grabArea );
         grabHandle.actor.SetProperty( Actor::Property::COLOR, mHandleColor );
 
@@ -893,7 +893,7 @@ struct Decorator::Impl : public ConnectionTracker
         primary.grabArea.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
         primary.grabArea.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_CENTER );
         primary.grabArea.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_CENTER );
-        primary.grabArea.SetSizeModeFactor( DEFAULT_SELECTION_HANDLE_RELATIVE_SIZE );
+        primary.grabArea.SetProperty( Actor::Property::SIZE_MODE_FACTOR, DEFAULT_SELECTION_HANDLE_RELATIVE_SIZE );
 
         primary.grabArea.TouchSignal().Connect( this, &Decorator::Impl::OnHandleOneTouched );
 
@@ -937,7 +937,7 @@ struct Decorator::Impl : public ConnectionTracker
         secondary.grabArea.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
         secondary.grabArea.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_CENTER );
         secondary.grabArea.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_CENTER );
-        secondary.grabArea.SetSizeModeFactor( DEFAULT_SELECTION_HANDLE_RELATIVE_SIZE );
+        secondary.grabArea.SetProperty( Actor::Property::SIZE_MODE_FACTOR, DEFAULT_SELECTION_HANDLE_RELATIVE_SIZE );
 
         secondary.grabArea.TouchSignal().Connect( this, &Decorator::Impl::OnHandleTwoTouched );
 
@@ -1138,7 +1138,7 @@ struct Decorator::Impl : public ConnectionTracker
     // Whether to flip the handle vertically.
     if( handle.actor )
     {
-      handle.actor.SetOrientation( handle.verticallyFlipped ? ANGLE_180 : ANGLE_0, Vector3::XAXIS );
+      handle.actor.SetProperty( Actor::Property::ORIENTATION, Quaternion( handle.verticallyFlipped ? ANGLE_180 : ANGLE_0, Vector3::XAXIS ) );
     }
   }
 
@@ -1152,7 +1152,7 @@ struct Decorator::Impl : public ConnectionTracker
       mHighlightActor.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
       mHighlightActor.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
       mHighlightActor.SetProperty( Actor::Property::COLOR, mHighlightColor );
-      mHighlightActor.SetColorMode( USE_OWN_COLOR );
+      mHighlightActor.SetProperty( Actor::Property::COLOR_MODE, USE_OWN_COLOR );
     }
 
     // Add the highlight box telling the controller it needs clipping.
index 0b1f2e2..2fe54b0 100755 (executable)
@@ -372,7 +372,7 @@ struct AtlasRenderer::Impl
       mActor.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
       mActor.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
       mActor.SetSize( textSize );
-      mActor.SetColorMode( USE_OWN_MULTIPLY_PARENT_COLOR );
+      mActor.SetProperty( Actor::Property::COLOR_MODE, USE_OWN_MULTIPLY_PARENT_COLOR );
     }
 
     for( std::vector< MeshRecord >::const_iterator it = meshContainer.begin(),
@@ -744,7 +744,7 @@ struct AtlasRenderer::Impl
     actor.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
     actor.SetSize( actorSize );
     actor.RegisterProperty("uOffset", Vector2::ZERO );
-    actor.SetColorMode( USE_OWN_MULTIPLY_PARENT_COLOR );
+    actor.SetProperty( Actor::Property::COLOR_MODE, USE_OWN_MULTIPLY_PARENT_COLOR );
 
     return actor;
   }
index 9e270f4..5470d8d 100755 (executable)
@@ -3406,7 +3406,7 @@ Actor Controller::Impl::CreateBackgroundActor()
       actor.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
       actor.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
       actor.SetSize( textSize );
-      actor.SetColorMode( USE_OWN_MULTIPLY_PARENT_COLOR );
+      actor.SetProperty( Actor::Property::COLOR_MODE, USE_OWN_MULTIPLY_PARENT_COLOR );
       actor.AddRenderer( renderer );
     }
   }
index d151290..cd21afe 100644 (file)
@@ -114,7 +114,7 @@ void CubeTransitionEffect::SetTargetRight( unsigned int idx )
   mBoxes[ idx ].SetProperty(Actor::Property::PARENT_ORIGIN_Z, 1.0f - mTileSize.x * 0.5f );
 
   mTargetTiles[ idx ].SetProperty( Actor::Property::PARENT_ORIGIN, Vector3( 1.f, 0.5f, 0.5f) );
-  mTargetTiles[ idx ].SetOrientation( Degree( 90.f ), Vector3::YAXIS );
+  mTargetTiles[ idx ].SetProperty( Actor::Property::ORIENTATION, Quaternion( Degree( 90.f ), Vector3::YAXIS ) );
 }
 
 void CubeTransitionEffect::SetTargetLeft( unsigned int idx )
@@ -124,7 +124,7 @@ void CubeTransitionEffect::SetTargetLeft( unsigned int idx )
   mBoxes[ idx ].SetProperty(Actor::Property::PARENT_ORIGIN_Z, 1.0f - mTileSize.x * 0.5f );
 
   mTargetTiles[ idx ].SetProperty( Actor::Property::PARENT_ORIGIN, Vector3( 0.f, 0.5f, 0.5f) );
-  mTargetTiles[ idx ].SetOrientation( Degree( -90.f ), Vector3::YAXIS );
+  mTargetTiles[ idx ].SetProperty( Actor::Property::ORIENTATION, Quaternion( Degree( -90.f ), Vector3::YAXIS ) );
 }
 
 void CubeTransitionEffect::SetTargetBottom( unsigned int idx )
@@ -134,7 +134,7 @@ void CubeTransitionEffect::SetTargetBottom( unsigned int idx )
   mBoxes[ idx ].SetProperty(Actor::Property::PARENT_ORIGIN_Z, 1.0f - mTileSize.y * 0.5f );
 
   mTargetTiles[ idx ].SetProperty( Actor::Property::PARENT_ORIGIN, Vector3( 0.5f, 0.f, 0.5f) );
-  mTargetTiles[ idx ].SetOrientation( Degree( 90.f ), Vector3::XAXIS );
+  mTargetTiles[ idx ].SetProperty( Actor::Property::ORIENTATION, Quaternion( Degree( 90.f ), Vector3::XAXIS ) );
 }
 
 void CubeTransitionEffect::SetTargetTop( unsigned int idx )
@@ -144,7 +144,7 @@ void CubeTransitionEffect::SetTargetTop( unsigned int idx )
   mBoxes[ idx ].SetProperty(Actor::Property::PARENT_ORIGIN_Z, 1.0f - mTileSize.y * 0.5f );
 
   mTargetTiles[ idx ].SetProperty( Actor::Property::PARENT_ORIGIN, Vector3( 0.5f, 1.f, 0.5f) );
-  mTargetTiles[ idx ].SetOrientation( Degree( -90.f ), Vector3::XAXIS );
+  mTargetTiles[ idx ].SetProperty( Actor::Property::ORIENTATION, Quaternion( Degree( -90.f ), Vector3::XAXIS ) );
 }
 
 void CubeTransitionEffect::OnRelayout( const Vector2& size, RelayoutContainer& container )
index ec041e9..1793fbc 100644 (file)
@@ -118,7 +118,8 @@ AnimatedVectorImageVisual::AnimatedVectorImageVisual( VisualFactoryCache& factor
 
 AnimatedVectorImageVisual::~AnimatedVectorImageVisual()
 {
-  // Finalize animation task in the main thread
+  // Finalize animation task and disconnect the signal in the main thread
+  mVectorAnimationTask->UploadCompletedSignal().Disconnect( this, &AnimatedVectorImageVisual::OnUploadCompleted );
   mVectorAnimationTask->Finalize();
 }
 
index ae66146..e0c08bd 100644 (file)
@@ -96,6 +96,8 @@ VectorAnimationTask::~VectorAnimationTask()
 
 void VectorAnimationTask::Finalize()
 {
+  ConditionalWait::ScopedLock lock( mConditionalWait );
+
   // Release some objects in the main thread
   if( mAnimationFinishedTrigger )
   {
@@ -418,7 +420,7 @@ void VectorAnimationTask::Initialize()
 
 bool VectorAnimationTask::Rasterize()
 {
-  bool stopped = false, needAnimationFinishedTrigger;
+  bool stopped = false, needAnimationFinishedTrigger, resourceReady;
   uint32_t currentFrame, startFrame, endFrame;
   int32_t loopCount, currentLoopCount;
   PlayState playState;
@@ -439,6 +441,7 @@ bool VectorAnimationTask::Rasterize()
     currentLoopCount = mCurrentLoop;
     needAnimationFinishedTrigger = mNeedAnimationFinishedTrigger;
     playState = mPlayState;
+    resourceReady = mResourceReady;
 
     mResourceReady = true;
     mCurrentFrameUpdated = false;
@@ -513,11 +516,19 @@ bool VectorAnimationTask::Rasterize()
     {
       DALI_LOG_INFO( gVectorAnimationLogFilter, Debug::Verbose, "VectorAnimationTask::Rasterize: Rendering failed. Try again later.[%d] [%p]\n", currentFrame, this );
       mUpdateFrameNumber = false;
+
+      if( !resourceReady )
+      {
+        ConditionalWait::ScopedLock lock( mConditionalWait );
+        mResourceReady = false;
+      }
     }
   }
 
   if( stopped && renderSuccess )
   {
+    ConditionalWait::ScopedLock lock( mConditionalWait );
+
     mPlayState = PlayState::STOPPED;
     mForward = true;
     mCurrentLoop = 0;
index ea4aaa2..3d8456a 100644 (file)
@@ -507,9 +507,12 @@ void ImageVisual::GetNaturalSize( Vector2& naturalSize )
     if( textureSet )
     {
       auto texture = textureSet.GetTexture(0);
-      naturalSize.x = texture.GetWidth();
-      naturalSize.y = texture.GetHeight();
-      return;
+      if( texture )
+      {
+        naturalSize.x = texture.GetWidth();
+        naturalSize.y = texture.GetHeight();
+        return;
+      }
     }
   }
 
index 71385e2..8912c17 100644 (file)
@@ -163,8 +163,8 @@ Devel::PixelBuffer TextureManager::LoadPixelBuffer(
   else
   {
     RequestLoadInternal( url, INVALID_TEXTURE_ID, 1.0f, desiredSize, fittingMode, samplingMode, TextureManager::NO_ATLAS,
-                         false, KEEP_PIXEL_BUFFER, textureObserver, orientationCorrection, TextureManager::ReloadPolicy::FORCED,
-                         preMultiplyOnLoad, true );
+                         false, RETURN_PIXEL_BUFFER, textureObserver, orientationCorrection, TextureManager::ReloadPolicy::FORCED,
+                         preMultiplyOnLoad );
   }
 
   return pixelBuffer;
@@ -226,7 +226,6 @@ TextureSet TextureManager::LoadTexture(
     if( !data )
     {
       // use broken image
-      textureSet = TextureSet::New();
       Devel::PixelBuffer pixelBuffer = LoadImageFromFile( mBrokenImageUrl );
       if( pixelBuffer )
       {
@@ -337,7 +336,7 @@ TextureManager::TextureId TextureManager::RequestLoad(
 {
   return RequestLoadInternal( url, INVALID_TEXTURE_ID, 1.0f, desiredSize, fittingMode, samplingMode, useAtlas,
                               false, UPLOAD_TO_TEXTURE, observer, orientationCorrection, reloadPolicy,
-                              preMultiplyOnLoad, false );
+                              preMultiplyOnLoad );
 }
 
 TextureManager::TextureId TextureManager::RequestLoad(
@@ -356,7 +355,7 @@ TextureManager::TextureId TextureManager::RequestLoad(
 {
   return RequestLoadInternal( url, maskTextureId, contentScale, desiredSize, fittingMode, samplingMode, useAtlas,
                               cropToMask, UPLOAD_TO_TEXTURE, observer, orientationCorrection, reloadPolicy,
-                              preMultiplyOnLoad, false );
+                              preMultiplyOnLoad );
 }
 
 TextureManager::TextureId TextureManager::RequestMaskLoad( const VisualUrl& maskUrl )
@@ -365,7 +364,7 @@ TextureManager::TextureId TextureManager::RequestMaskLoad( const VisualUrl& mask
   auto preMultiply = TextureManager::MultiplyOnLoad::LOAD_WITHOUT_MULTIPLY;
   return RequestLoadInternal( maskUrl, INVALID_TEXTURE_ID, 1.0f, ImageDimensions(), FittingMode::SCALE_TO_FILL,
                               SamplingMode::NO_FILTER, NO_ATLAS, false, KEEP_PIXEL_BUFFER, NULL, true,
-                              TextureManager::ReloadPolicy::CACHED, preMultiply, false );
+                              TextureManager::ReloadPolicy::CACHED, preMultiply );
 }
 
 TextureManager::TextureId TextureManager::RequestLoadInternal(
@@ -381,18 +380,16 @@ TextureManager::TextureId TextureManager::RequestLoadInternal(
   TextureUploadObserver*          observer,
   bool                            orientationCorrection,
   TextureManager::ReloadPolicy    reloadPolicy,
-  TextureManager::MultiplyOnLoad& preMultiplyOnLoad,
-  bool                            loadPixelBuffer )
+  TextureManager::MultiplyOnLoad& preMultiplyOnLoad )
 {
   // First check if the requested Texture is cached.
   const TextureHash textureHash = GenerateHash( url.GetUrl(), desiredSize, fittingMode, samplingMode, useAtlas,
                                                 maskTextureId );
 
   TextureManager::TextureId textureId = INVALID_TEXTURE_ID;
-
   // Look up the texture by hash. Note: The extra parameters are used in case of a hash collision.
   int cacheIndex = FindCachedTexture( textureHash, url.GetUrl(), desiredSize, fittingMode, samplingMode, useAtlas,
-                                      maskTextureId, preMultiplyOnLoad );
+                                      maskTextureId, preMultiplyOnLoad, storageType );
 
   // Check if the requested Texture exists in the cache.
   if( cacheIndex != INVALID_CACHE_INDEX )
@@ -420,7 +417,7 @@ TextureManager::TextureId TextureManager::RequestLoadInternal(
     mTextureInfoContainer.push_back( TextureInfo( textureId, maskTextureId, url.GetUrl(),
                                                   desiredSize, contentScale, fittingMode, samplingMode,
                                                   false, cropToMask, useAtlas, textureHash, orientationCorrection,
-                                                  preMultiply, loadPixelBuffer ) );
+                                                  preMultiply ) );
     cacheIndex = mTextureInfoContainer.size() - 1u;
 
     DALI_LOG_INFO( gTextureManagerLogFilter, Debug::General, "TextureManager::RequestLoad( url=%s observer=%p ) New texture, cacheIndex:%d, textureId=%d\n",
@@ -448,6 +445,7 @@ TextureManager::TextureId TextureManager::RequestLoadInternal(
   {
     DALI_LOG_INFO( gTextureManagerLogFilter, Debug::Verbose, "TextureManager::RequestLoad( url=%s observer=%p ) ForcedReload cacheIndex:%d, textureId=%d\n",
                    url.GetUrl().c_str(), observer, cacheIndex, textureId );
+
     textureInfo.loadState = TextureManager::NOT_STARTED;
   }
 
@@ -486,12 +484,14 @@ TextureManager::TextureId TextureManager::RequestLoadInternal(
       break;
     }
     case TextureManager::LOAD_FINISHED:
+    {
       // Loading has already completed.
-      if( observer && textureInfo.loadPixelBuffer )
+      if( observer && textureInfo.storageType == StorageType::RETURN_PIXEL_BUFFER )
       {
         LoadOrQueueTexture( textureInfo, observer );
       }
       break;
+    }
   }
 
   // Return the TextureId for which this Texture can now be referenced by externally.
@@ -786,7 +786,7 @@ void TextureManager::ProcessQueuedTextures()
                                            textureInfo.useAtlas, textureInfo.atlasRect,
                                            textureInfo.preMultiplied );
       }
-      else if ( textureInfo.loadState == LOAD_FINISHED && textureInfo.loadPixelBuffer )
+      else if ( textureInfo.loadState == LOAD_FINISHED && textureInfo.storageType == StorageType::RETURN_PIXEL_BUFFER )
       {
         element.mObserver->LoadComplete( true, textureInfo.pixelBuffer, textureInfo.url, textureInfo.preMultiplied );
       }
@@ -896,13 +896,16 @@ void TextureManager::PostLoad( TextureInfo& textureInfo, Devel::PixelBuffer& pix
       textureInfo.pixelBuffer = pixelBuffer; // Store the pixel data
       textureInfo.loadState = LOAD_FINISHED;
 
-      if( textureInfo.loadPixelBuffer )
+      if( textureInfo.storageType == StorageType::RETURN_PIXEL_BUFFER )
       {
         NotifyObservers( textureInfo, true );
       }
-      // Check if there was another texture waiting for this load to complete
-      // (e.g. if this was an image mask, and its load is on a different thread)
-      CheckForWaitingTexture( textureInfo );
+      else
+      {
+        // Check if there was another texture waiting for this load to complete
+        // (e.g. if this was an image mask, and its load is on a different thread)
+        CheckForWaitingTexture( textureInfo );
+      }
     }
   }
   else
@@ -1022,7 +1025,7 @@ void TextureManager::NotifyObservers( TextureInfo& textureInfo, bool success )
 
     info->observerList.Erase( info->observerList.begin() );
 
-    if( info->loadPixelBuffer )
+    if( info->storageType == StorageType::RETURN_PIXEL_BUFFER )
     {
       observer->LoadComplete( success, info->pixelBuffer, info->url, info->preMultiplied );
     }
@@ -1044,7 +1047,7 @@ void TextureManager::NotifyObservers( TextureInfo& textureInfo, bool success )
   mQueueLoadFlag = false;
   ProcessQueuedTextures();
 
-  if( info->loadPixelBuffer && info->observerList.Count() == 0 )
+  if( info->storageType == StorageType::RETURN_PIXEL_BUFFER && info->observerList.Count() == 0 )
   {
     Remove( info->textureId, nullptr );
   }
@@ -1147,7 +1150,8 @@ int TextureManager::FindCachedTexture(
   const Dali::SamplingMode::Type    samplingMode,
   const bool                        useAtlas,
   TextureId                         maskTextureId,
-  TextureManager::MultiplyOnLoad    preMultiplyOnLoad )
+  TextureManager::MultiplyOnLoad    preMultiplyOnLoad,
+  StorageType                       storageType )
 {
   // Default to an invalid ID, in case we do not find a match.
   int cacheIndex = INVALID_CACHE_INDEX;
@@ -1167,7 +1171,8 @@ int TextureManager::FindCachedTexture(
           ( size == textureInfo.desiredSize ) &&
           ( ( size.GetWidth() == 0 && size.GetHeight() == 0 ) ||
             ( fittingMode == textureInfo.fittingMode &&
-              samplingMode == textureInfo.samplingMode ) ) )
+              samplingMode == textureInfo.samplingMode ) ) &&
+          ( storageType == textureInfo.storageType ) )
       {
         // 1. If preMultiplyOnLoad is MULTIPLY_ON_LOAD, then textureInfo.preMultiplyOnLoad should be true. The premultiplication result can be different.
         // 2. If preMultiplyOnLoad is LOAD_WITHOUT_MULTIPLY, then textureInfo.preMultiplied should be false.
index df6c6f7..cc5c0e4 100755 (executable)
@@ -73,11 +73,12 @@ public:
   };
 
   /**
-   * Whether the pixel data should be kept in TextureManager, or uploaded for rendering
+   * Whether the pixel data should be kept in TextureManager, returned with pixelBuffer or uploaded for rendering
    */
   enum StorageType
   {
     KEEP_PIXEL_BUFFER,
+    RETURN_PIXEL_BUFFER,
     UPLOAD_TO_TEXTURE
   };
 
@@ -445,8 +446,7 @@ private:
     TextureUploadObserver*              observer,
     bool                                orientationCorrection,
     TextureManager::ReloadPolicy        reloadPolicy,
-    MultiplyOnLoad&                     preMultiplyOnLoad,
-    bool                                loadPixelBuffer );
+    MultiplyOnLoad&                     preMultiplyOnLoad );
 
   /**
    * @brief Get the current state of a texture
@@ -477,8 +477,7 @@ private:
                  UseAtlas useAtlas,
                  TextureManager::TextureHash hash,
                  bool orientationCorrection,
-                 bool preMultiplyOnLoad,
-                 bool loadPixelBuffer )
+                 bool preMultiplyOnLoad )
     : url( url ),
       desiredSize( desiredSize ),
       useSize( desiredSize ),
@@ -497,8 +496,7 @@ private:
       cropToMask( cropToMask ),
       orientationCorrection( true ),
       preMultiplyOnLoad( preMultiplyOnLoad ),
-      preMultiplied( false ),
-      loadPixelBuffer( loadPixelBuffer )
+      preMultiplied( false )
     {
     }
 
@@ -531,7 +529,6 @@ private:
     bool orientationCorrection:1;  ///< true if the image should be rotated to match exif orientation data
     bool preMultiplyOnLoad:1;      ///< true if the image's color should be multiplied by it's alpha
     bool preMultiplied:1;          ///< true if the image's color was multiplied by it's alpha
-    bool loadPixelBuffer:1;        ///< true if the image is needed to be returned as PixelBuffer
   };
 
   /**
@@ -704,13 +701,15 @@ private:
   /**
    * @brief Looks up a cached texture by its hash.
    * If found, the given parameters are used to check there is no hash-collision.
-   * @param[in] hash          The hash to look up
-   * @param[in] url           The URL of the image to load
-   * @param[in] size          The image size
-   * @param[in] fittingMode   The FittingMode to use
-   * @param[in] samplingMode  The SamplingMode to use
-   * @param[in] useAtlas      True if atlased
-   * @param[in] maskTextureId Optional texture ID to use to mask this image
+   * @param[in] hash              The hash to look up
+   * @param[in] url               The URL of the image to load
+   * @param[in] size              The image size
+   * @param[in] fittingMode       The FittingMode to use
+   * @param[in] samplingMode      The SamplingMode to use
+   * @param[in] useAtlas          True if atlased
+   * @param[in] maskTextureId     Optional texture ID to use to mask this image
+   * @param[in] preMultiplyOnLoad if the image's color should be multiplied by it's alpha. Set to OFF if there is no alpha.
+   * @param[in] storageType       Whether the pixel data is stored in the cache, returned with PixelBuffer or uploaded to the GPU
    * @return A TextureId of a cached Texture if found. Or INVALID_TEXTURE_ID if not found.
    */
   TextureManager::TextureId FindCachedTexture(
@@ -721,7 +720,8 @@ private:
     const Dali::SamplingMode::Type samplingMode,
     const bool useAtlas,
     TextureId maskTextureId,
-    MultiplyOnLoad preMultiplyOnLoad);
+    MultiplyOnLoad preMultiplyOnLoad,
+    StorageType storageType );
 
 private:
 
index 3c84e6a..067310e 100644 (file)
@@ -31,7 +31,7 @@ namespace Toolkit
 
 const unsigned int TOOLKIT_MAJOR_VERSION = 1;
 const unsigned int TOOLKIT_MINOR_VERSION = 9;
-const unsigned int TOOLKIT_MICRO_VERSION = 13;
+const unsigned int TOOLKIT_MICRO_VERSION = 14;
 const char * const TOOLKIT_BUILD_DATE    = __DATE__ " " __TIME__;
 
 #ifdef DEBUG_ENABLED
index 901d0d6..28b9854 100644 (file)
@@ -249,7 +249,7 @@ okButton.SetLabelText( "OK" );
 okButton.SetParentOrigin( ParentOrigin::CENTER );
 okButton.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER );
 okButton.SetResizePolicy( ResizePolicy::SIZE_FIXED_OFFSET_FROM_PARENT, Dimension::ALL_DIMENSIONS );
-okButton.SetSizeModeFactor( Vector3( -20.0f, -20.0f, 0.0 ) );
+okButton.SetProperty( Actor::Property::SIZE_MODE_FACTOR, Vector3( -20.0f, -20.0f, 0.0 ) );
 okButton.ClickedSignal().Connect( this, &MyExample::OnOKButtonClicked );
 
 Toolkit::PushButton cancelButton = Toolkit::PushButton::New();
@@ -257,7 +257,7 @@ cancelButton.SetLabelText( "Cancel" );
 cancelButton.SetParentOrigin( ParentOrigin::CENTER );
 cancelButton.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER );
 cancelButton.SetResizePolicy( ResizePolicy::SIZE_FIXED_OFFSET_FROM_PARENT, Dimension::ALL_DIMENSIONS );
-cancelButton.SetSizeModeFactor( Vector3( -20.0f, -20.0f, 0.0 ) );
+cancelButton.SetProperty( Actor::Property::SIZE_MODE_FACTOR, Vector3( -20.0f, -20.0f, 0.0 ) );
 cancelButton.ClickedSignal().Connect( this, &MyExample::OnCancelButtonClicked );
 
 // Set up the footer's layout.
index 2f3ac40..c706da4 100644 (file)
@@ -67,7 +67,7 @@ The popup control is added to the layer and a background image is specified to f
 @code
 mBackgroundImage.SetResizePolicy( ResizePolicy::SIZE_FIXED_OFFSET_FROM_PARENT, Dimension::ALL_DIMENSIONS );
 Vector3 border( mPopupStyle->backgroundOuterBorder.x, mPopupStyle->backgroundOuterBorder.z, 0.0f );
-mBackgroundImage.SetSizeModeFactor( border );
+mBackgroundImage.SetProperty( Actor::Property::SIZE_MODE_FACTOR, border );
 @endcode
 A table view is added to the popup to specify layout. It will fill to the width of the popup and expand/contract around its children cell heights.
 @code
index 0687233..ab8c06a 100644 (file)
@@ -109,13 +109,13 @@ When an actor is required to maintain the aspect ratio of its natural size the f
 to ensure they maintain their aspect ratio while still fitting within the bounds they have been allocated. This can be one of SizeScalePolicy::USE_SIZE_SET, SizeScalePolicy::FIT_WITH_ASPECT_RATIO
 or SizeScalePolicy::FILL_WITH_ASPECT_RATIO. The first is the default. The second will fit the actor within the bounds it has been allocated while maintaining aspect ratio. The
 third will fill all available space, potentially overflowing its bounds, while maintaining apsect ratio.
-@code void SetSizeScalePolicy( SizeScalePolicy::Type policy ) @endcode
+@code actor.SetProperty( Actor::Property::SIZE_SCALE_POLICY, policy ); @endcode
 
 <h3>Using Actors in Containers</h3>
 
 When laying out actors in containers such as TableView it is useful to be able to specify padding that surrounds the actor. E.g. You may
 want some white space around an image actor placed in a table cell. The padding specifies the left, right, bottom and top padding values.
-@code void SetPadding( const Padding& padding ) @endcode
+@code actor.SetProperty( Actor::Property::PADDING, padding ); @endcode
 
 <h2 class="pg">An Example</h2>
 
@@ -131,7 +131,7 @@ content.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
 content.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT );
 content.SetFitHeight( 0 );
 content.SetFitHeight( 1 );
-content.SetPadding( Padding( 20.0f, 20.0f, 20.0f, 0.0f ) );
+content.SetProperty( Actor::Property::PADDING, Padding( 20.0f, 20.0f, 20.0f, 0.0f ) );
 
 // Text
 Toolkit::TextLabel text = Toolkit::TextLabel::New( "Do you really want to quit?" );
@@ -144,7 +144,7 @@ content.AddChild( text, Toolkit::TableView::CellPosition( 0, 0 ) );
 Toolkit::ImageView image = Toolkit::ImageView::New( IMAGE_PATH );
 image.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
 image.SetResizePolicy( ResizePolicy::DIMENSION_DEPENDENCY, Dimension::HEIGHT );
-image.SetPadding( Padding( 20.0f, 0.0f, 0.0f, 0.0f ) );
+image.SetProperty( Actor::Property::PADDING, Padding( 20.0f, 0.0f, 0.0f, 0.0f ) );
 content.AddChild( image, Toolkit::TableView::CellPosition( 0, 1 ) );
 
 // Checkbox and text
@@ -153,7 +153,7 @@ root.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
 root.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT );
 root.SetFitHeight( 0 );
 root.SetFitWidth( 0 );
-root.SetPadding( Padding( 0.0f, 0.0f, 0.0f, 20.0f ) );
+root.SetProperty( Actor::Property::PADDING, Padding( 0.0f, 0.0f, 0.0f, 20.0f ) );
 
 Dali::Image unchecked = Dali::ResourceImage::New( CHECKBOX_UNCHECKED_IMAGE );
 Dali::Image checked = Dali::ResourceImage::New( CHECKBOX_CHECKED_IMAGE );
@@ -165,7 +165,7 @@ checkBox.SetSize( Vector2( 48, 48 ) );
 root.AddChild( checkBox, Toolkit::TableView::CellPosition( 0, 0 ) );
 
 Toolkit::TextLabel text2 = Toolkit::TextLabel::New( "Don't show again" );
-text2.SetPadding( Padding( 20.0f, 0.0f, 0.0f, 10.0f ) );
+text2.SetProperty( Actor::Property::PADDING, Padding( 20.0f, 0.0f, 0.0f, 10.0f ) );
 
 root.AddChild( text2, Toolkit::TableView::CellPosition( 0, 1 ) );
 
@@ -187,7 +187,7 @@ content.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT );
 @endcode
 To add a little space around the left, right and bottom of the table view, some padding is added.
 @code
-content.SetPadding( Padding( 20.0f, 20.0f, 20.0f, 0.0f ) );
+content.SetProperty( Actor::Property::PADDING, Padding( 20.0f, 20.0f, 20.0f, 0.0f ) );
 @endcode
 The first text view has its width set to ResizePolicy::FILL_TO_PARENT and its height has a dimension dependency on its width. This
 will result in a text view that fills up its width to available space in the table cell and then then calculates its
@@ -201,7 +201,7 @@ width. Some padding is added to the left of it as well to center it more.
 @code
 image.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
 image.SetResizePolicy( ResizePolicy::DIMENSION_DEPENDENCY, Dimension::HEIGHT );
-image.SetPadding( Padding( 20.0f, 0.0f, 0.0f, 0.0f ) );
+image.SetProperty( Actor::Property::PADDING, Padding( 20.0f, 0.0f, 0.0f, 0.0f ) );
 @endcode
 The sub table view is similar as well in that it expands its width to the size of its cell. When it is added to the table view it
 will span two columns. Its height is set to natural size so that it will grow or shrink based on its children cells. Note that for
index d6653cc..3e8676c 100644 (file)
@@ -1,6 +1,6 @@
 Name:       dali2-toolkit
 Summary:    Dali 3D engine Toolkit
-Version:    1.9.13
+Version:    1.9.14
 Release:    1
 Group:      System/Libraries
 License:    Apache-2.0 and BSD-3-Clause and MIT