Search in sources :

Example 6 with TimeList

use of org.w3c.dom.smil.TimeList in project Signal-Android by WhisperSystems.

the class ElementTimeImpl method beginAndEndAreZero.

private boolean beginAndEndAreZero() {
    TimeList begin = getBegin();
    TimeList end = getEnd();
    if (begin.getLength() == 1 && end.getLength() == 1) {
        Time beginTime = begin.item(0);
        Time endTime = end.item(0);
        return beginTime.getOffset() == 0. && endTime.getOffset() == 0.;
    }
    return false;
}
Also used : ElementTime(org.w3c.dom.smil.ElementTime) Time(org.w3c.dom.smil.Time) TimeList(org.w3c.dom.smil.TimeList)

Example 7 with TimeList

use of org.w3c.dom.smil.TimeList in project qksms by moezbhatti.

the class ElementParallelTimeContainerImpl method getImplicitDuration.

public float getImplicitDuration() {
    float dur = -1.0F;
    if (ENDSYNC_LAST.equals(getEndSync())) {
        NodeList children = getTimeChildren();
        for (int i = 0; i < children.getLength(); ++i) {
            ElementTime child = (ElementTime) children.item(i);
            TimeList endTimeList = child.getEnd();
            for (int j = 0; j < endTimeList.getLength(); ++j) {
                Time endTime = endTimeList.item(j);
                if (endTime.getTimeType() == Time.SMIL_TIME_INDEFINITE) {
                    // Return "indefinite" here.
                    return -1.0F;
                }
                if (endTime.getResolved()) {
                    float end = (float) endTime.getResolvedOffset();
                    dur = (end > dur) ? end : dur;
                }
            }
        }
    }
    return dur;
}
Also used : NodeList(org.w3c.dom.NodeList) ElementTime(org.w3c.dom.smil.ElementTime) Time(org.w3c.dom.smil.Time) ElementTime(org.w3c.dom.smil.ElementTime) TimeList(org.w3c.dom.smil.TimeList)

Example 8 with TimeList

use of org.w3c.dom.smil.TimeList in project qksms by moezbhatti.

the class ElementTimeImpl method beginAndEndAreZero.

private boolean beginAndEndAreZero() {
    TimeList begin = getBegin();
    TimeList end = getEnd();
    if (begin.getLength() == 1 && end.getLength() == 1) {
        Time beginTime = begin.item(0);
        Time endTime = end.item(0);
        return beginTime.getOffset() == 0. && endTime.getOffset() == 0.;
    }
    return false;
}
Also used : ElementTime(org.w3c.dom.smil.ElementTime) Time(org.w3c.dom.smil.Time) TimeList(org.w3c.dom.smil.TimeList)

Example 9 with TimeList

use of org.w3c.dom.smil.TimeList in project qksms by moezbhatti.

the class SmilPlayer method getSeqTimeline.

private static ArrayList<TimelineEntry> getSeqTimeline(ElementSequentialTimeContainer seq, double offset, double maxOffset) {
    ArrayList<TimelineEntry> timeline = new ArrayList<>();
    double orgOffset = offset;
    // Set my begin at first
    TimeList myBeginList = seq.getBegin();
    /*
         * Begin list only contain 1 begin time which has been resolved.
         * @see com.android.mms.dom.smil.ElementSequentialTimeContainerImpl#getBegin()
         */
    Time begin = myBeginList.item(0);
    double beginOffset = begin.getResolvedOffset() + offset;
    if (beginOffset > maxOffset) {
        // This element can't be started.
        return timeline;
    }
    TimelineEntry myBegin = new TimelineEntry(beginOffset, seq, TimelineEntry.ACTION_BEGIN);
    timeline.add(myBegin);
    TimeList myEndList = seq.getEnd();
    /*
         * End list only contain 1 end time which has been resolved.
         * @see com.android.mms.dom.smil.ElementSequentialTimeContainerImpl#getEnd()
         */
    Time end = myEndList.item(0);
    double endOffset = end.getResolvedOffset() + offset;
    if (endOffset > maxOffset) {
        endOffset = maxOffset;
    }
    TimelineEntry myEnd = new TimelineEntry(endOffset, seq, TimelineEntry.ACTION_END);
    maxOffset = endOffset;
    // Get children's timelines
    NodeList children = seq.getTimeChildren();
    for (int i = 0; i < children.getLength(); ++i) {
        ElementTime child = (ElementTime) children.item(i);
        ArrayList<TimelineEntry> childTimeline = getTimeline(child, offset, maxOffset);
        timeline.addAll(childTimeline);
        // Since the child timeline has been sorted, the offset of the last one is the biggest.
        offset = childTimeline.get(childTimeline.size() - 1).getOffsetTime();
    }
    // Add end-event to timeline for all active children
    NodeList activeChildrenAtEnd = seq.getActiveChildrenAt((float) (endOffset - orgOffset));
    for (int i = 0; i < activeChildrenAtEnd.getLength(); ++i) {
        timeline.add(new TimelineEntry(endOffset, (ElementTime) activeChildrenAtEnd.item(i), TimelineEntry.ACTION_END));
    }
    // Set my end at last
    timeline.add(myEnd);
    return timeline;
}
Also used : NodeList(org.w3c.dom.NodeList) ArrayList(java.util.ArrayList) ElementTime(org.w3c.dom.smil.ElementTime) Time(org.w3c.dom.smil.Time) ElementTime(org.w3c.dom.smil.ElementTime) TimeList(org.w3c.dom.smil.TimeList)

Example 10 with TimeList

use of org.w3c.dom.smil.TimeList in project qksms by moezbhatti.

the class SmilPlayer method getParTimeline.

private static ArrayList<TimelineEntry> getParTimeline(ElementParallelTimeContainer par, double offset, double maxOffset) {
    ArrayList<TimelineEntry> timeline = new ArrayList<>();
    // Set my begin at first
    TimeList myBeginList = par.getBegin();
    /*
         * Begin list only contain 1 begin time which has been resolved.
         * @see com.android.mms.dom.smil.ElementParallelTimeContainerImpl#getBegin()
         */
    Time begin = myBeginList.item(0);
    double beginOffset = begin.getResolvedOffset() + offset;
    if (beginOffset > maxOffset) {
        // This element can't be started.
        return timeline;
    }
    TimelineEntry myBegin = new TimelineEntry(beginOffset, par, TimelineEntry.ACTION_BEGIN);
    timeline.add(myBegin);
    TimeList myEndList = par.getEnd();
    /*
         * End list only contain 1 end time which has been resolved.
         * @see com.android.mms.dom.smil.ElementParallelTimeContainerImpl#getEnd()
         */
    Time end = myEndList.item(0);
    double endOffset = end.getResolvedOffset() + offset;
    if (endOffset > maxOffset) {
        endOffset = maxOffset;
    }
    TimelineEntry myEnd = new TimelineEntry(endOffset, par, TimelineEntry.ACTION_END);
    maxOffset = endOffset;
    NodeList children = par.getTimeChildren();
    for (int i = 0; i < children.getLength(); ++i) {
        ElementTime child = (ElementTime) children.item(i);
        ArrayList<TimelineEntry> childTimeline = getTimeline(child, offset, maxOffset);
        timeline.addAll(childTimeline);
    }
    Collections.sort(timeline, sTimelineEntryComparator);
    // Add end-event to timeline for all active children
    NodeList activeChildrenAtEnd = par.getActiveChildrenAt((float) (endOffset - offset) * 1000);
    for (int i = 0; i < activeChildrenAtEnd.getLength(); ++i) {
        timeline.add(new TimelineEntry(endOffset, (ElementTime) activeChildrenAtEnd.item(i), TimelineEntry.ACTION_END));
    }
    // Set my end at last
    timeline.add(myEnd);
    return timeline;
}
Also used : NodeList(org.w3c.dom.NodeList) ArrayList(java.util.ArrayList) ElementTime(org.w3c.dom.smil.ElementTime) Time(org.w3c.dom.smil.Time) ElementTime(org.w3c.dom.smil.ElementTime) TimeList(org.w3c.dom.smil.TimeList)

Aggregations

Time (org.w3c.dom.smil.Time)11 TimeList (org.w3c.dom.smil.TimeList)11 ElementTime (org.w3c.dom.smil.ElementTime)10 ArrayList (java.util.ArrayList)6 NodeList (org.w3c.dom.NodeList)6 Node (org.w3c.dom.Node)2 NodeListImpl (com.android.mms.dom.NodeListImpl)1 NodeListImpl (org.thoughtcrime.securesms.dom.NodeListImpl)1