}
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));
}
return this.computedProperties;
}
+
+
/**
* Get value that as a percentage of the css3 value
*
mergedFrame.addProperty(key,
mergedFrame.getComputedPropertyforPredefinedAnimationFromPreviousCustomFrame(
previousProperty, key, widgetProperties.get(key)));
-
} else {
String mergedFrameProperty = mergedFrame.getProperty(key);
if(mergedFrameProperty != null) {
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);
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) {
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;
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()) {