[dali_1.4.26] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / docs / content / programming-guide / script-json-specification.md
diff --git a/docs/content/programming-guide/script-json-specification.md b/docs/content/programming-guide/script-json-specification.md
deleted file mode 100644 (file)
index abcbd55..0000000
+++ /dev/null
@@ -1,484 +0,0 @@
-/**
- *
-[TOC]
-
-# DALi JSON Specification  {#script-json-specification}
-
-## Overview {#overview}
-
-This document describes the Dali JSON specification.
-The format is not yet formally versioned within the JSON.
-
-# General format {#format}
-
-The JSON format supports
-
-- Named templates for on demand creation of
- - Actors/ Controls
- - Animations
-- Style sets
- - Dynamically change the style of Actor hierarchies
- - Animate to a style set
-- Includes
- - Build style sets up by merging JSON
-- Creating Scene content on load
- - Controls created without any code
-
-
-Concrete Actors and Controls can be created from types registered in the
-Dali Type Registry.
-
-Template, style and scene sections all configure Actors and Controls via
-the Dali property system.
-
-The JSON format deviates from the formal JSON specification and allows C style comments.
-
-~~~
-    {                                        //
-      "version": 0,                          // Version Number
-      "includes":                            // Include section
-      [                                      //
-       "base-theme.json"                     // Include file to merge into the
-                                             // JSON
-      ]                                      //
-      "constants":                           // Constant replacement section
-      {                                      //
-        ...                                  //
-      },                                     //
-      "templates":                           // Template library section
-      {                                      //
-        "basic-text":                        // A named template
-        {                                    // } key value properties
-         ...                                 //
-         "actors":                           // A tree of sub actors
-         [                                   //
-         ...                                 //
-         ]                                   //
-        }                                    //
-        },                                   //
-        "styles":                            // Named Style set section
-        {                                    //
-        "light-theme":                       // Style set name
-        {                                    //
-         ...                                 //
-        },                                   //
-        dark-theme":                         //
-        {                                    //
-         ...                                 //
-        },                                   //
-      }                                      //
-      "stage":                               // Stage section
-      [                                      //
-       {                                     // Actors|Controls to create on JSON file load
-       "type": "basic-text",                 // A Dali Control or a template name
-       "styles":["base-theme","light-theme"] // Style list to apply to this instance
-       }                                     //
-      ]                                      //
-    }                                        //
-~~~
-
-# Top level sections {#sections}
-
-## Includes {#includes}
-
-The "includes" section is an array of filenames to be merged in order to
-create a final in memory JSON tree.
-
-The merge process will walk key, value attributes from the root JSON
-node and overwrite previous values with the newer values.
-
-- If the key does not exist then it will be created.
-- If the newer value is a different type then the newer type will persist.
-- Where both values are objects the merge will descend into the object.
-- Where both values are arrays the merge will replace the old array entirely.
-
-The merge is relatively simple and is expected to be used to build up
-from base themes to custom themes where there are few conflicts and
-simple direct replacements are desired.
-
-### Constants {#constants}
-
-The merge behaviour when a file has constants and includes is
-
-1. Constants are loaded first
-2. Includes file list is merged in order
-3. All other (non constant) data is merged
-
-The include merge is recursive, so step (2) above will cause the
-constants in the first included file to be merged first.
-
-## Constants {#constantdetail}
-
-The constants section supports sub-string and full property replacement.
-
-~~~
-    {
-    "constants":                        // Constant replacement section
-    {                                   //
-      "IMAGES": "/usr/share/images/",   // Constants can be set here or in code.
-      "SIZE": [100,100,1]               //
-    },                                  //
-    ...                                 //
-    {                                   //
-      "type":"ImageActor"               // An Dali type or a template name
-      "image":                          //
-      {                                 //
-        "filename":"{IMAGES}b.jpg"      // Image filename substring replacement
-      },                                //
-      "size": "{SIZE}"                  //
-    }                                   //  Property replacement
-    }                                   //
-~~~
-
-The type of the constant should match the expected type of the property.
-
-A property constant cannot be used for sub string replacement; a string
-constant should be used.
-
-With a property replacement, the replace site must contain a string
-where the first and last positions are braces.
-
-## Templates {#templates}
-
-The template section supports the creation of actor instances. The
-template name can be used in code to create an actor tree.
-
-~~~
-actorTree = builder.Create("basic-text");
-~~~
-
-Templates consist of a name, multiple property-value configurations and
-an optional actor sub hierarchy.
-
-~~~
-   {                                    //
-   "templates":                         //  Template library section
-   {                                    //
-   "basic-text":                        //  The template name
-   {                                    //
-     "type":"ImageActor",               //  Concrete Dali Type/Class to create
-     "styles":["base-style"],           //  Style list to apply
-     "name":"image",                    //  }
-     "image":                           //  } property name : value
-     {                                  //  }
-     "filename":"{IMAGES}/b.jpg"        //
-     },                                 //
-     "parent-origin": "CENTER"          //
-     ...                                //
-     "actors":                          //  A tree of sub actors
-     [                                  //
-     {                                  //
-     "type":"TextView"                  //
-     "name":"text",                     //
-     "text":"Hello World",              //
-     "parent-origin": "CENTER",         //
-     }                                  //
-     ]                                  //
-   }                                    //
-   }                                    //
-~~~
-
-A template has a special 'type' property which must contain a concrete
-Dali Actor or Control type name.
-
-A template has a special 'styles' property which contains a list of
-styles to apply when creating using the template.
-
-## Styles {#styles}
-
-The styles section supports a named set of properties that can be
-applied to an actor or actor tree.
-
-~~~
-Builder.ApplyStyle("light-theme", myActor);
-~~~
-
-The styles can also be applied as an animation.
-
-~~~
-Builder.AnimateTo("light-theme", myActor, TimePeriod(0, 10));
-~~~
-
-~~~
-   {                                   //
-   "styles":                           // Style set section
-   {                                   //
-   "light-theme":                      // Style-set name
-   {                                   //
-     "color":[1,1,1,1]                 // }
-     "position":[0,-120,0],            // } properties to set on the given actor
-     "rotation":[0,0,30],              // }
-     "actors":                         //
-     {                                 // Sub Actors are referenced by name
-       "title-text":                   // Actor name to search for under given actor
-       {                               //
-         "color":[1,1,1,1]             // }
-         "position":[0,-120,0],        // } properties to set if 'title-text' is found
-         "rotation":[0,0,30],          // }
-       }
-     },                                //
-     "icon":                           //
-     {                                 //
-       "color":[1,1,1,1]               //
-     }                                 //
-    },                                 //
-    "dark-theme":                      //
-    {                                  //
-    }                                  //
-   }                                   //
-~~~
-
-When applied to an actor tree the actors are referenced by name. Names
-are not unique in Dali.
-
-When a style is applied in code Dali will perform a depth first search
-stopping with the first matching name.
-
-Typically an application developer will apply the style to the template
-root actor and not the stage root actor. Therefore in most uses cases
-name conflicts are not expected.
-
-## Animations {#animations}
-
-The animation section defines a library of animation definitions.
-
-The animations can be created by name from code.
-
-They can also be created automatically from JSON in an actor signal.
-
-~~~
-    {                                    //
-    "animations":                        // Animation library
-    {                                    //
-     "rotate":                           // An Animation named rotate
-     {                                   //
-     "duration": 10,                     // Duration in seconds
-     "loop": false,                      // Whether to loop.
-     "end-action": "Bake",               // Whether to set final value(bake) or
-                                         // reset
-     "disconnect-aciton": "Discard",     // Whether 'Bake' or 'Discard' when disconnected
-     "properties":
-     [
-                                         // Properties changed in this animation
-     {
-     "actor":"image",                    // Actor found by name from the stage
-     "property":"rotation",              // Property to change
-     "value":[0, 0.1, 0, 0],             // Value to set
-     "alpha-function": "EASE\_IN\_OUT",  // Interpolation function
-                                         //
-     "time-period":                      // Time period for change
-     {"delay": 0,
-      "duration": 3
-      }
-     },
-     ...                                 // 1 or more property changes per animation
-     },                                  //
-     ...                                 //
-    },                                   //
-~~~
-
-### Splines {#splines}
-
-An animation property can be defined with a path and forward direction
-instead of a single final value.
-
-Paths are defined in a top level path section and referenced by the
-animation property.
-
-~~~~
-    {                                    //
-    "paths":                             // Path library
-     {                                   //
-     "path0":                            // Path definition by name
-     {                                   //
-     "points":[                          // points
-       [-150, -50, 0],
-       [0.0,70.0,0.0],
-       [190.0,-150.0,0.0]
-      ],
-                                         // curvature automatically creates
-     "curvature":0.35,                   // control-points
-                                         //
-     "control-points": [...]             // Otherwise control-points can be
-                                         // directly specified.
-     }                                   //
-     },                                  //
-    "animations":                        //
-    {                                    //
-     "path-animation":
-     {
-     "duration": 3.0,
-     "properties":
-     [
-     {
-     "actor": "greeting2",
-                                         // Path is mandatory for spline
-     "path":"path0",                     // animation.
-     "forward":[1,0,0],                  // Forward vector specifies orientation
-                                         // whilst travelling along the path
-     "alpha-function": "EASE\_IN\_OUT",  // (optional)
-     "time-period":
-     {
-     "delay": 0,
-     "duration": 3
-     }
-     },
-     ...
-                                         // Other properties changes can use
-     ]                                   // paths or values in the same
-                                         // animation.
-    },                                   //
-    }                                    //
-~~~~
-
-## Shaders {#shaders}
-
-The shader section of the JSON file defines a library of shader effect
-instances that are created on demand.
-
-The shaders are referred to by name from the template, style, stage or
-animation sections.
-
-Multiple actors can set the same shader as the name refers to a single
-instance.
-
-Similarly one named shader instance can be set to several actors and can
-be animated by one animation.
-
-~~~~
-    {                                             //
-    "shader-effects":                             // Shader Effect section
-    {                                             //
-      "myshader1":                                // Shader  instance  name
-      {                                           //
-       "program":                                 //
-       {                                          // Prefixs are placed before DALi uniforms.
-         "vertexPrefix": "",                      // (Useful for \#defines.)
-         "vertex":"",                             // Glsl vertex program
-         "fragmentPrefix": "",
-         "fragment": "",                          // Glsl fragment program.
-         "geometry-type": "GEOMETRY_TYPE_IMAGE",  // Geometry type(see DALi documentation)
-       },
-       "geometry-hints": "HINT_NONE":             // Geometry hints (see DALi documentation)
-       "grid-density": 0,                         // Grid density(see DALi documentation)
-       "image":
-       {
-         "filename": ""                           // Effect image available as a second texture unit.
-       }
-     },
-     ...
-    },
-    "stage":
-    [{
-     "type": "ImageActor",
-     "effect": "myshader1",
-     ...
-    }]
-    }
-~~~~
-
-At least one of the vertex or fragment fields is mandatory. All
-other fields are optional will use internal defaults.
-
-Actors have an "effect" field that refers to the shader effect
-instance to use with that actor.
-
-### Animating shaders {#animatingshaders}
-
-Shader uniforms can be animated as if they are properties of the actor.
-
-When the animation is created from code (or from a signal) the property
-name search begins on the actor, if it isn't found the search continues
-on the attached shader object.
-
-The actor property names and shader uniform names must not clash for the
-uniform to animate correctly. The convention in DALi is to prepend
-uniforms with 'u'.
-
-~~~~
-    {                                    \\
-    "animations":                        \\ Animation library
-    {                                    \\
-     "rotate":                           \\ An Animation named rotate
-     {                                   \\
-     "duration": 10,                     \\
-     "properties":                       \\ Properties changed in this animation
-     [                                   \\
-     {
-     "actor":"image",                    \\ Actor found by name from the stage
-     "property":"uTranslate",            \\ Uniform name specified as if it is a
-                                         \\ property of the object.
-     "value":[10, 20],
-     ...
-     },
-     ...
-     ]
-     },
-     "shader-effects":
-     {
-     "myshader1":
-     {
-                                        \\ Shader program with uniform
-     "program": {...}                   \\ "uTranslate"
-     }
-     },
-     "actors":
-     [
-     {
-     "name": "image",
-     "effect": "myshader1"              \\ Actor using shader effect instance
-                                        \\ "myshader1"
-     }
-     ]
-    },
-~~~~
-
-## Stage {#stage}
-
-The stage section supports the immediate creation of actors at the time
-the JSON is loaded.
-
-The stage is a tree of actors that can be added to Dali's stage object.
-
-~~~
-builder = Dali.Builder();
-json_text = load("layout.json");
-builder.Load(json\_text);
-stage = Dali.Stage.GetCurrent();
-builder.AddActors( stage.GetRootLayer()); // Add actors to the stage root layer
-~~~
-
-~~~
-    {                                    \\
-    "stage":                             \\  Stage Section Number
-    [                                    \\  An array of actors
-     {
-     "type": "ImageActor",
-     ...
-     "actors":                           \\  Each actor can have children
-                                         \\ creating a tree
-     [
-     {
-     "type": "TextView",
-                                         \\  The Type to create; this can be a
-     ...                                 \\ concrete Dali type (actor/control)
-                                         \\ or a template name.
-     "styles": ["base-style"]
-                                         \\  A list of styles to apply to the
-     }                                   \\ created type.
-     ]
-     }
-    ]
-    }
-~~~
-
-# Actor and Control Properties {#actorprop}
-
-Each control has a set of supported properties documented in the "Dali
-UI Control Specification".
-
-Please refer to the above document for further information about specific
-controls.
-
-@class ScriptJsonSpecification
-*/