Scripting: Create animation on tree of actors starting at a specific root actor. 11/20311/1
authorJavon Prince <javon.prince@samsung.com>
Mon, 28 Apr 2014 08:51:14 +0000 (09:51 +0100)
committerDavid Steele <david.steele@partner.samsung.com>
Thu, 1 May 2014 15:01:35 +0000 (16:01 +0100)
This allows the mapping of JSON defined animations to arbitrary instances
of JSON defined actor tree templates

Change-Id: I34130e06c37ca394feef0d5dad7f029f8a46359b
Signed-off-by: Javon Prince <javon.prince@samsung.com>
dali-toolkit/internal/builder/builder-impl.cpp
dali-toolkit/internal/builder/builder-impl.h
dali-toolkit/public-api/builder/builder.cpp
dali-toolkit/public-api/builder/builder.h

index 06aa91e..a7b887c 100644 (file)
@@ -743,7 +743,7 @@ void Builder::AddActors( const std::string &sectionName, Actor toActor )
   }
 }
 
-Animation Builder::CreateAnimation( const std::string& animationName, const Replacement& replacement, Dali::Actor searchRoot )
+Animation Builder::CreateAnimation( const std::string& animationName, const Replacement& replacement, Dali::Actor sourceActor )
 {
   Animation anim;
 
@@ -751,7 +751,7 @@ Animation Builder::CreateAnimation( const std::string& animationName, const Repl
   {
     if( OptionalChild animation = IsChild(*animations, animationName) )
     {
-      anim = Dali::Toolkit::Internal::CreateAnimation( *animation, replacement, Stage::GetCurrent().GetRootLayer() );
+      anim = Dali::Toolkit::Internal::CreateAnimation( *animation, replacement, sourceActor );
     }
     else
     {
@@ -766,10 +766,10 @@ Animation Builder::CreateAnimation( const std::string& animationName, const Repl
   return anim;
 }
 
-Animation Builder::CreateAnimation( const std::string& animationName, const PropertyValueMap& map, Dali::Actor searchRoot )
+Animation Builder::CreateAnimation( const std::string& animationName, const PropertyValueMap& map, Dali::Actor sourceActor )
 {
   Replacement replacement(map, mReplacementMap);
-  return CreateAnimation( animationName, replacement, searchRoot);
+  return CreateAnimation( animationName, replacement, sourceActor);
 }
 
 Animation Builder::CreateAnimation( const std::string& animationName, const PropertyValueMap& map )
@@ -778,16 +778,17 @@ Animation Builder::CreateAnimation( const std::string& animationName, const Prop
   return CreateAnimation( animationName, replacement, Stage::GetCurrent().GetRootLayer() );
 }
 
-Animation Builder::CreateAnimation( const std::string& animationName, Dali::Actor searchRoot )
+Animation Builder::CreateAnimation( const std::string& animationName, Dali::Actor sourceActor )
 {
   Replacement replacement( mReplacementMap );
 
-  return CreateAnimation( animationName, replacement, searchRoot );
+  return CreateAnimation( animationName, replacement, sourceActor );
 }
 
 Animation Builder::CreateAnimation( const std::string& animationName )
 {
   Replacement replacement( mReplacementMap );
+
   return CreateAnimation( animationName, replacement, Dali::Stage::GetCurrent().GetRootLayer() );
 }
 
index 6b538a1..3378eee 100644 (file)
@@ -109,14 +109,14 @@ public:
   Animation CreateAnimation( const std::string& animationName, const PropertyValueMap& map );
 
   /**
-   * @copydoc Toolkit::Builder::CreateAnimation( const std::string& animationName, Dali::Actor searchRoot );
+   * @copydoc Toolkit::Builder::CreateAnimation( const std::string&,Dali::Actor);
    */
-  Animation CreateAnimation( const std::string& animationName, Dali::Actor searchRoot );
+  Animation CreateAnimation( const std::string& animationName, Dali::Actor sourceActor );
 
   /**
-   * @copydoc Toolkit::Builder::CreateAnimation( const std::string& animationName, const PropertyValueMap& map, Dali::Actor searchRoot );
+   * @copydoc Toolkit::Builder::CreateAnimation( const std::string&,const PropertyValueMap&,Dali::Actor);
    */
-  Animation CreateAnimation( const std::string& animationName, const PropertyValueMap& map, Dali::Actor searchRoot );
+  Animation CreateAnimation( const std::string& animationName, const PropertyValueMap& map, Dali::Actor sourceActor );
 
   /**
    * @copydoc Toolkit::Builder::CreateFromStyle( const std::string& styleName );
@@ -229,7 +229,7 @@ private:
 
   void ApplyStyle( const std::string& styleName, Handle& handle, const Replacement& replacement);
 
-  Animation CreateAnimation( const std::string& animationName, const Replacement& replacement, Dali::Actor searchRoot );
+  Animation CreateAnimation( const std::string& animationName, const Replacement& replacement, Dali::Actor sourceActor );
 
   BaseHandle CreateFromStyle( const std::string& styleName, const Replacement& replacement );
 };
index 06a1c90..669dd37 100644 (file)
@@ -83,6 +83,16 @@ Animation Builder::CreateAnimation( const std::string& animationName, const Prop
   return GetImpl(*this).CreateAnimation( animationName, map );
 }
 
+Animation Builder::CreateAnimation( const std::string& animationName, Dali::Actor sourceActor )
+{
+  return GetImpl(*this).CreateAnimation( animationName, sourceActor );
+}
+
+Animation Builder::CreateAnimation( const std::string& animationName, const PropertyValueMap& map, Dali::Actor sourceActor )
+{
+  return GetImpl(*this).CreateAnimation( animationName, map, sourceActor );
+}
+
 BaseHandle Builder::CreateFromStyle( const std::string& styleName )
 {
   return GetImpl(*this).CreateFromStyle( styleName );
index 209f3c2..1f2796b 100644 (file)
@@ -140,7 +140,7 @@ typedef std::map<std::string, Property::Value> PropertyValueMap;
    * @brief Adds or modifies a user defined constant to all future style template or animation expansions
    *
    * e.g.
-   * @code builder.AddConstant( "IMAGE_DIRECTORY", "/usr/share/images" );
+   *  builder.AddConstant( "IMAGE_DIRECTORY", "/usr/share/images" );
    *
    * @pre The Builder has been initialized.
    * @param key The constant name to add or update
@@ -152,9 +152,9 @@ typedef std::map<std::string, Property::Value> PropertyValueMap;
    * @brief Gets all currently defined constants.
    *
    * e.g.
-   * @code PropertyValueMap map = builder.GetConstants(); // get copy of current constants
-   *       map["IMAGE_DIRECTORY"] = "/usr/share/images";  // make modification
-   *       builder.AddConstants( map );                   // write back changes
+   *  PropertyValueMap map = builder.GetConstants(); // get copy of current constants
+   *  map["IMAGE_DIRECTORY"] = "/usr/share/images";  // make modification
+   *  builder.AddConstants( map );                   // write back changes
    *
    * @pre The Builder has been initialized.
    * @return A reference to the currently defined constants.
@@ -165,9 +165,9 @@ typedef std::map<std::string, Property::Value> PropertyValueMap;
    * @brief Gets a currently defined constant, or returns Property::INVALID
    *
    * e.g.
-   * @code PropertyValueMap map = builder.GetConstants(); // get copy of current constants
-   *       map["IMAGE_DIRECTORY"] = "/usr/share/images";  // make modification
-   *       builder.AddConstants( map );                   // write back changes
+   *  PropertyValueMap map = builder.GetConstants(); // get copy of current constants
+   *  map["IMAGE_DIRECTORY"] = "/usr/share/images";  // make modification
+   *  builder.AddConstants( map );                   // write back changes
    *
    * @pre The Builder has been initialized.
    * @param key The constant name to search for.
@@ -206,6 +206,44 @@ typedef std::map<std::string, Property::Value> PropertyValueMap;
   Animation CreateAnimation( const std::string& animationName, const PropertyValueMap& map );
 
   /**
+   * @brief Creates an animation from the set of known animations.
+   *
+   * The animation is applied to a specific actor.
+   * e.g.
+   *   Actor myInstance = builder.CreateFromStyle( "template-actor-tree" )
+   *   Animation a = builder.CreateAnimation( "wobble", myInstance );
+   *
+   * @pre The Builder has been initialized.
+   * @pre Preconditions have been met for creating dali objects ie Images, Actors etc
+   * @pre The animationName exists in the animations section of the data representation
+   * @param animationName The animation name to create
+   * @param sourceActor The starting point in an actor tree, from which to look for property owners
+   * @returns The base handle of the created object
+   */
+  Animation CreateAnimation( const std::string& animationName, Dali::Actor sourceActor );
+
+  /**
+   * @brief Creates an animation from the set of known animations with user defined constants
+   *
+   * The animation is applied to a specific actor.
+   * e.g.
+   *   PropertyValueMap map;
+   *   map["ACTOR"] = actor.GetName();       // replaces '{ACTOR} in the template
+   *   Actor myInstance = builder.CreateFromStyle( "template-actor-tree" )
+   *   Animation a = builder.CreateAnimation( "wobble", myInstance);
+   *
+   * @pre The Builder has been initialized.
+   * @pre Preconditions have been met for creating dali objects ie Images, Actors etc
+   * @pre The animationName exists in the animations section of the data representation
+   * @pre The map contains all the constant expansions in the style template
+   * @param animationName The animation name to create
+   * @param map The user defined constants used in style template expansion.
+   * @param sourceActor The starting point in an actor tree, from which to look for property owners
+   * @returns The base handle of the created object
+   */
+  Animation CreateAnimation( const std::string& animationName, const PropertyValueMap& map, Dali::Actor sourceActor );
+
+  /**
    * @brief Creates an object (e.g. an actor) from the set of known style templates
    *
    * e.g.