ANIMATOR : Bug fix for loading animation 54/21454/1
authorseongwon.shim <seongwon.shim@samsung.com>
Wed, 21 May 2014 07:02:31 +0000 (16:02 +0900)
committerseongwon.shim <seongwon.shim@samsung.com>
Wed, 21 May 2014 07:05:30 +0000 (16:05 +0900)
Serailize & Deserailize boolean variable whether predefined or not for Keyframe

Change-Id: I8a92ddc505105eb8f4caa5c64b050c906b5bc011
Signed-off-by: seongwon.shim <seongwon.shim@samsung.com>
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/model/AnimatorFrame.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/model/AnimatorSelector.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/model/deserializer/AnimatorFrameDeserializer.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/model/serializer/AnimatorFrameSerializer.java

index a8cb361..8aa47a9 100644 (file)
@@ -578,8 +578,9 @@ public class AnimatorFrame extends AnimatorModel {
                }
                
                 if (getUsedPropertiesInThisFrame().contains(key)) {
-                       if(!keyframe.getName().contains("custom")) {
-                               computedProperties.put(key, getComputedPropertyforPredefinedAnimationFromPreviousKeyframe(key, widgetProperties.get(key)));
+                       if(isPredefined) {
+//                             computedProperties.put(key, getComputedPropertyforPredefinedAnimationFromPreviousKeyframe(key, widgetProperties.get(key)));
+                               computedProperties.put(key, getComputedPropertyforPredefinedAnimationFromPreviousCustomFrame(selector.getPreviousComputedProperty(this, key), key, widgetProperties.get(key)));
                        } else {
                         computedProperties.put(key, properties.get(key));
                        }
@@ -597,6 +598,8 @@ public class AnimatorFrame extends AnimatorModel {
         return this.computedProperties;
     }
     
+
+    
     /**
      * Get value that as a percentage of the css3 value
      * 
index f109858..e54b4ef 100644 (file)
@@ -419,7 +419,6 @@ public class AnimatorSelector extends AnimatorModel {
                                mergedFrame.addProperty(key, 
                                                mergedFrame.getComputedPropertyforPredefinedAnimationFromPreviousCustomFrame(
                                                                previousProperty, key, widgetProperties.get(key)));
-                       
                        } else {
                                String mergedFrameProperty = mergedFrame.getProperty(key);
                                if(mergedFrameProperty != null) {
@@ -585,7 +584,16 @@ public class AnimatorSelector extends AnimatorModel {
         return result;
     }
     
-    
+    /**
+     * Check with two keyframes that has same properties
+     * case 1. they have different properties and have same parent just keep going
+     * case 2. different properties and have different parent, merge to first keyframe's parent
+     * case 3. they have same properties and have same parent create other keyframe unit and move to last one to created keyframe unit
+     * case 4. they have same properties and have different parent just keep going     * 
+     * 
+     * @param keyframe
+     * @return
+     */
     public boolean mergeOrSplitKeyframe(AnimatorModelFactory modelFactory, List<AnimatorKeyframe> removedKeyframes) {
        boolean result = false;
        AnimatorFrame currentFrame = getNextAnimatorFrameByTime(null);
@@ -647,6 +655,20 @@ public class AnimatorSelector extends AnimatorModel {
        return result;
     }
     
+    public String getPreviousComputedProperty(AnimatorFrame currentFrame, String key) {
+       AnimatorFrame frame = getPreviousAnimatorFrameByTime(currentFrame);
+       while(frame != null) {
+               if(!frame.isPredefined()) {
+                       String value = frame.getProperty(key);
+                       if(value != null) {
+                               return value;
+                       }
+               }
+                       frame = getPreviousAnimatorFrameByTime(frame);
+       }
+       return null;
+    }
+    
 
     private AnimatorFrame getPreviousAnimatorFrameByTime(AnimatorFrame currentFrame) {         
        
index 09b28f8..1986939 100644 (file)
@@ -62,15 +62,18 @@ public class AnimatorFrameDeserializer extends AnimatorModelDeserializer<Animato
         AnimatorFrame frame = (AnimatorFrame)getModelFactory().createAnimatorModel(AnimatorModelType.FRAME);
         for (Map.Entry<String, JsonElement> entry : jobject.entrySet()) {
             String key = entry.getKey();
-            if (key.equals("time"))
+            if (key.equals("time")) {
                 frame.setFrameTime(entry.getValue().getAsDouble());
-            else if (key.equals("curveFrames")) {
+            } else if (key.equals("isPredefined") ){
+               frame.setPredefined(entry.getValue().getAsBoolean());
+            } else if (key.equals("curveFrames")) {
                 for (JsonElement curveFrame : jobject.get("curveFrames").getAsJsonArray()) {
                     frame.addCurveFrame((AnimatorCurveFrame) context
                             .deserialize(curveFrame, AnimatorCurveFrame.class));
                 }
-            } else
+            } else {
                 frame.addProperty(key, entry.getValue().getAsString());
+            }
         }
 
         return frame;
index e98ba76..e757f61 100644 (file)
@@ -56,6 +56,7 @@ public class AnimatorFrameSerializer implements JsonSerializer<AnimatorFrame> {
 
         final JsonObject json = new JsonObject();
         json.addProperty("time", frame.getFrameTime());
+        json.addProperty("isPredefined", frame.isPredefined());
 
         Iterator<Entry<String, String>> iterator = ((AnimatorFrame) frame).getPropertyIterator();
         while (iterator.hasNext()) {