When mergeKeyframe unit get Previous Keyframe unit by current time. not index of list
Change-Id: I179dd6a8b4425bb3e10dd365262be00f6f2b0e33
Signed-off-by: seongwon.shim <seongwon.shim@samsung.com>
}
}
- AnimatorKeyframe previousParent = (AnimatorKeyframe) currentSelector.getPrevChild(keyframe);
+ AnimatorKeyframe previousParent = (AnimatorKeyframe) currentSelector.getPreviousAnimatorKeyframeByTime(keyframe);
int keyframeChildrenSize = keyframe.getChildrenSize();
if (keyframeChildrenSize == 1) {
if (keyframe.getChildIndex(frame) == 0) {
//It is possible that keyframe has been changed in removeOrReplaceProperties
keyframe = (AnimatorKeyframe)frame.getParent();
- AnimatorKeyframe previousParent = (AnimatorKeyframe) currentSelector.getPrevChild(keyframe);
+ AnimatorKeyframe previousParent = (AnimatorKeyframe) currentSelector.getPreviousAnimatorKeyframeByTime(keyframe);
int keyframeChildrenSize = keyframe.getChildrenSize();
if (keyframeChildrenSize == 1) {
if (keyframe.getChildIndex(frame) == 0) {
// AnimatorPagePart pagePart = (AnimatorPagePart) manager.getPagePart();
AnimatorPagePart pagePart =
- (AnimatorPagePart) appManager.getPageData(appManager.getPageIndex(pageData))
- .getPagePart();
+ (AnimatorPagePart) getPageData().getPagePart();
List<AnimatorAnimation> animations = pagePart.getAnimations();
if (!animations.isEmpty()) {
this.currentAnimationGroupId = animations.get(0).getId();
*/
@Override
public void initLayout() {
- int index = appManager.getPageIndex(pageData);
+ int index = appManager.getPageIndex(getPageData());
tempHtml =
appManager.getAnimatorEditHtml(index, ((AnimatorBrowserViewer) this)
//
// String pageId = pagePart.getPropertyValue("id");
- getGoingBridge().aniBridge_play(appManager.getPageData(appManager.getPageIndex(pageData))
- .getName(), currentAnimationGroupId);
+ getGoingBridge().aniBridge_play(getPageData().getName(), currentAnimationGroupId);
}
/**
// AnimatorPagePart pagePart = (AnimatorPagePart) manager.getPagePart();
//
// String pageId = pagePart.getPropertyValue("id");
- getGoingBridge().aniBridge_pause(appManager.getPageData(appManager.getPageIndex(pageData))
- .getName());
+ getGoingBridge().aniBridge_pause(getPageData().getName());
}
/**
public void initAnimationFW() {
AnimatorFileWriter.checkAnimatorRelatedResources(appManager);
//PageData pageData2 = appManager.getPageData(appManager.getPageIndex(pageData));
- PageData pageData2 = pageData;
+ PageData pageData2 = getPageData();
if (pageData2 != null) {
getGoingBridge()
appManager
.getPageDataSet()
.getBaseRootPart(),
- appManager
- .getPageData(appManager
- .getPageIndex(pageData))
- .getPagePart()));
+ getPageData().getPagePart()));
getGoingBridge()
- .aniBridge_setAnimationJs(AnimatorFileWriter.getOneAnimationGroupModelString(appManager
- .getPageData(appManager
- .getPageIndex(pageData))
- .getName(),
+ .aniBridge_setAnimationJs(AnimatorFileWriter.getOneAnimationGroupModelString(getPageData().getName(),
currentAnimationGroupId,
appManager,
appManager
// AnimatorPagePart pagePart =
// (AnimatorPagePart) appManager.getPageData(appManager.getPageIndex(pageData))
// .getPagePart();
- AnimatorPagePart pagePart = (AnimatorPagePart)pageData.getPagePart();
+ AnimatorPagePart pagePart = (AnimatorPagePart)getPageData().getPagePart();
AnimatorAnimation animation = pagePart.getAnimation(currentAnimationGroupId);
if (animation == null) {
return;
if (getUsedPropertiesInThisFrame().contains(key)) {
if(isPredefined) {
// computedProperties.put(key, getComputedPropertyforPredefinedAnimationFromPreviousKeyframe(key, widgetProperties.get(key)));
- computedProperties.put(key, getComputedPropertyforPredefinedAnimationFromPreviousCustomFrame(selector.getPreviousComputedProperty(this, key), key, widgetProperties.get(key)));
+ computedProperties.put(key, getComputedPropertyforPredefinedAnimationFromPreviousCustomFrame(selector.getComputedPropertiesFromCustomPreviousFrame(this, key), key, widgetProperties.get(key)));
} else {
computedProperties.put(key, properties.get(key));
}
} else {
- String computedProperty = getComputedPropertiesFromPreviousFrame(key);
+ String computedProperty = selector.getComputedPropertiesFromPreviousFrame(this, key);
if(computedProperty != null) {
computedProperties.put(key, computedProperty);
// return null;
// }
- /**
- * Get computed properties from previous frames
- *
- * @param css3 key
- * @return value for input key
- */
- public String getComputedPropertiesFromPreviousFrame(String key) {
- AnimatorFrame previousFrame = getPreviousAnimatorFrame(this);
- while(previousFrame != null) {
- String value = previousFrame.getProperty(key);
- if(value != null) {
- return value;
- }
- previousFrame = getPreviousAnimatorFrame(previousFrame);
- }
-
- return null;
- }
-
- /**
- * Get previous AnimatorFrame
- *
- * @param current AnimatorFrame
- * @return previous AnimatorFrame
- */
- private static AnimatorFrame getPreviousAnimatorFrame(AnimatorFrame frame) {
-
- AnimatorFrame previousFrame = null;
- AnimatorKeyframe currentKeyframe = (AnimatorKeyframe)frame.getParent();
- previousFrame = (AnimatorFrame)currentKeyframe.getPrevChild(frame);
- if(previousFrame == null) {
- AnimatorKeyframe previousKeyframe = (AnimatorKeyframe)currentKeyframe.getParent().getPrevChild(currentKeyframe);
- if(previousKeyframe != null) {
- previousFrame = previousKeyframe.getLastFrame();
- }
- }
-
- return previousFrame;
- }
+
/**
* Get Computed Properties
package org.tizen.webuibuilder.animator.model;
-import java.util.List;
import java.util.Queue;
import org.tizen.webuibuilder.animator.AnimatorConstants;
public boolean mergeKeyframe(AnimatorFrame frame, Queue<AnimatorKeyframe> removedKeyframes) {
boolean result = false;
AnimatorSelector selector = (AnimatorSelector) getParent();
- AnimatorKeyframe previousParent = (AnimatorKeyframe) selector.getPrevChild(this);
+// AnimatorKeyframe previousParent = (AnimatorKeyframe) selector.getPrevChild(this);
AnimatorKeyframe nextParent = (AnimatorKeyframe) selector.getNextChild(this);
+ AnimatorKeyframe previousParent = selector.getPreviousAnimatorKeyframeByTime(this);
int keyframeChildrenSize = getChildrenSize();
if (keyframeChildrenSize == 1) {// case 1
if (getChildIndex(frame) == 0) {
return null;
}
- /*public List<AnimatorKeyframe> getCurrentKeyframes(double currentTime) {
- List<AnimatorKeyframe> keyframes = new ArrayList<AnimatorKeyframe>();
- for (AnimatorModel model : getChildren()) {
- AnimatorKeyframe keyframe = (AnimatorKeyframe) model;
- if (keyframe.isInclude(currentTime)) {
- keyframes.add(keyframe);
- }
- }
- return keyframes;
- }*/
public List<AnimatorKeyframe> getPreviousKeyframesByCurrentTime(double currentTime) {
List<AnimatorKeyframe> keyframes = new ArrayList<AnimatorKeyframe>();
for (AnimatorModel model : getChildren()) {
AnimatorKeyframe keyframe = (AnimatorKeyframe) model;
- if (Double.compare(keyframe.getDelay(), currentTime) <= 0) {
+ if (Double.compare(keyframe.getDelay(), currentTime) < 0) {
keyframes.add(keyframe);
}
}
return null;
}
- /**
- * Merge Frame if two frame at same time If next frame has property that has previous frame,
- * next frame's property will be ignored
- *
- * @param keyframe
- * @return
- */
- public boolean mergeKeyframe(AnimatorKeyframe keyframe) {
- boolean result = false;
- AnimatorKeyframe previousKeyframe = (AnimatorKeyframe) getPrevChild(keyframe);
- AnimatorKeyframe nextKeyframe = (AnimatorKeyframe) getNextChild(keyframe);
-
- if (previousKeyframe != null) {
- AnimatorFrame previousFrame = previousKeyframe.getLastFrame();
- if (previousFrame != null) {
- if (!previousFrame.hasSamePropertyValue(keyframe.getFirstFrame())) {
- previousKeyframe.mergeFrame(keyframe.getFirstFrame(), true);
- keyframe = previousKeyframe;
- result = true;
- }
- }
- }
-
- if (nextKeyframe != null) {
- AnimatorFrame nextFrame = nextKeyframe.getFirstFrame();
- if (nextFrame != null) {
- if (!keyframe.getLastFrame().hasSamePropertyValue(nextFrame)) {
- keyframe.mergeFrame(nextFrame, true);
- }
- }
- }
-
- return result;
- }
+// /**
+// * Merge Frame if two frame at same time If next frame has property that has previous frame,
+// * next frame's property will be ignored
+// *
+// * @param keyframe
+// * @return
+// */
+// public boolean mergeKeyframe(AnimatorKeyframe keyframe) {
+// boolean result = false;
+// AnimatorKeyframe previousKeyframe = (AnimatorKeyframe) getPrevChild(keyframe);
+// AnimatorKeyframe nextKeyframe = (AnimatorKeyframe) getNextChild(keyframe);
+//
+// if (previousKeyframe != null) {
+// AnimatorFrame previousFrame = previousKeyframe.getLastFrame();
+// if (previousFrame != null) {
+// if (!previousFrame.hasSamePropertyValue(keyframe.getFirstFrame())) {
+// previousKeyframe.mergeFrame(keyframe.getFirstFrame(), true);
+// keyframe = previousKeyframe;
+// result = true;
+// }
+// }
+// }
+//
+// if (nextKeyframe != null) {
+// AnimatorFrame nextFrame = nextKeyframe.getFirstFrame();
+// if (nextFrame != null) {
+// if (!keyframe.getLastFrame().hasSamePropertyValue(nextFrame)) {
+// keyframe.mergeFrame(nextFrame, true);
+// }
+// }
+// }
+//
+// return result;
+// }
/**
* Check with two keyframes that has same properties
return result;
}
- public String getPreviousComputedProperty(AnimatorFrame currentFrame, String key) {
- AnimatorFrame frame = getPreviousAnimatorFrameByTime(currentFrame);
- while(frame != null) {
- if(!frame.isPredefined()) {
- String value = frame.getProperty(key);
+ public String getComputedPropertiesFromCustomPreviousFrame(AnimatorFrame currentFrame, String key) {
+ AnimatorFrame previousFrame = getPreviousAnimatorFrameByTime(currentFrame);
+ while(previousFrame != null) {
+ if(!previousFrame.isPredefined()) {
+ String value = previousFrame.getProperty(key);
if(value != null) {
return value;
}
}
- frame = getPreviousAnimatorFrameByTime(frame);
+ previousFrame = getPreviousAnimatorFrameByTime(previousFrame);
}
return null;
}
+ /**
+ * Get computed properties from previous frames
+ *
+ * @param css3 key
+ * @return value for input key
+ */
+ public String getComputedPropertiesFromPreviousFrame(AnimatorFrame currentFrame, String key) {
+ AnimatorFrame previousFrame = getPreviousAnimatorFrameByTime(currentFrame);
+ while(previousFrame != null) {
+ String value = previousFrame.getProperty(key);
+ if(value != null) {
+ return value;
+ }
+ previousFrame = getPreviousAnimatorFrameByTime(previousFrame);
+ }
+
+ return null;
+ }
+
+
+
+ public AnimatorKeyframe getPreviousAnimatorKeyframeByTime(AnimatorModel model) {
+ Double baseTime = 0.0;
+ if(model instanceof AnimatorKeyframe) {
+ baseTime = ((AnimatorKeyframe)model).getDelay();
+ } else {
+ baseTime = ((AnimatorKeyframe)model.getParent()).getDelay();
+ }
+
+ AnimatorKeyframe result = null;
+ for(AnimatorKeyframe keyframe : getPreviousKeyframesByCurrentTime(baseTime)) {
+ if(result != null) {
+ if(Double.compare(result.getDelay() + result.getDuration(), keyframe.getDelay() + keyframe.getDuration()) < 0) {
+ result = keyframe;
+ } else if (Double.compare(result.getDelay() + result.getDuration(), keyframe.getDelay() + keyframe.getDuration()) == 0){
+ if(result.getName().contains("custom")) {
+ continue;
+ } else {
+ if(keyframe.getName().contains("custom")) {
+ result = keyframe;
+ }
+ }
+ }
+ } else {
+ result = keyframe;
+ }
+ }
+ return result;
+ }
- private AnimatorFrame getPreviousAnimatorFrameByTime(AnimatorFrame currentFrame) {
+ public AnimatorFrame getPreviousAnimatorFrameByTime(AnimatorFrame currentFrame) {
AnimatorKeyframe currentKeyframe = (AnimatorKeyframe)currentFrame.getParent();
double baseTime = currentKeyframe.getDelay() + currentFrame.getFrameTime();
private DesignerGoingBridge goingBridge;
// private int currentPage = 0;
- private EditPart currentPageEditPart = null;
+ protected EditPart currentPageEditPart = null;
private HoverViewerRootEditPart rootEditPart;
protected ImageBufferedBrowserProvider webBrowser;
protected PageData pageData;
}
public PageData getPageData() {
+// if(currentPageEditPart != null && currentPageEditPart.getModel() instanceof Part) {
+// Part part = (Part) currentPageEditPart.getModel();
+// if(part.getOwnerRef() instanceof PageData) {
+// return (PageData) part.getOwnerRef();
+// }
+// }
return pageData;
}
-
+
public ImageBufferedBrowserProvider getWebBrowser() {
return webBrowser;
}