Commit 797cd46e by olly Committed by Oliver Woodman

Detailed Javadoc for Timeline, Period and Window

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=131715194
parent b88a5e1b
......@@ -16,7 +16,78 @@
package com.google.android.exoplayer2;
/**
* A media timeline. Instances are immutable.
* A representation of media currently available for playback.
* <p>
* Timeline instances are immutable. For cases where the available media is changing dynamically
* (e.g. live streams) a timeline provides a snapshot of the media currently available.
* <p>
* A timeline consists of related {@link Period}s and {@link Window}s. A period defines a single
* logical piece of media, for example a media file. A window spans one or more periods, defining
* the region within those periods that's currently available for playback along with additional
* information such as whether seeking is supported within the window. Each window defines a default
* start position, which is the position from which playback will start when the player starts
* playing the window. The following examples illustrate timelines for various use cases.
*
* <h3 id="single-file">Single media file or on-demand stream</h3>
* <p align="center">
* <img src="doc-files/timeline-single-file.svg" alt="Example timeline for a single file">
* </p>
* A timeline for a single media file or on-demand stream consists of a single period and window.
* The window spans the whole period, indicating that all parts of the media are available for
* playback. The window's default start position is typically at the start of the period (indicated
* by the black dot in the figure above).
* <h3>Playlist of media files or on-demand streams</h3>
* <p align="center">
* <img src="doc-files/timeline-playlist.svg" alt="Example timeline for a playlist of files">
* </p>
* A timeline for a playlist of media files or on-demand streams consists of multiple periods, each
* with its own window. Each window spans the whole of the corresponding period, and typically has a
* default start position at the start of the period. The properties of the periods and windows
* (e.g. their durations and whether the window is seekable) will often only become known when the
* player starts buffering the corresponding file or stream.
*
* <h3 id="live-limited">Live stream with limited availability</h3>
* <p align="center">
* <img src="doc-files/timeline-live-limited.svg" alt="Example timeline for a live stream with
* limited availability">
* </p>
* A timeline for a live stream consists of a period whose duration is unknown, since its
* continually extending as more content is broadcast. If content only remains available for a
* limited period of time then the window may start at a non-zero position, defining the region of
* content that can still be played. The window will have {@link Window#isDynamic} set to true if
* the stream is still live. Its default start position is typically near to the live edge
* (indicated by the black dot in the figure above).
*
* <h3>Live stream with indefinite availability</h3>
* <p align="center">
* <img src="doc-files/timeline-live-indefinite.svg" alt="Example timeline for a live stream with
* indefinite availability">
* </p>
* A timeline for a live stream with indefinite availability is similar to the
* <a href="#live-limited">Live stream with limited availability</a> case, except that the window
* starts at the beginning of the period to indicate that all of the previously broadcast content
* can still be played.
*
* <h3 id="live-multi-period">Live stream with multiple periods</h3>
* <p align="center">
* <img src="doc-files/timeline-live-multi-period.svg" alt="Example timeline for a live stream
* with multiple periods">
* </p>
* This case arises when a live stream is explicitly divided into separate periods, for example at
* content and advert boundaries. This case is similar to the <a href="#live-limited">Live stream
* with limited availability</a> case, except that the window may span more than one period.
* Multiple periods are also possible in the indefinite availability case.
*
* <h3>On-demand pre-roll followed by live stream</h3>
* <p align="center">
* <img src="doc-files/timeline-advanced.svg" alt="Example timeline for an on-demand pre-roll
* followed by a live stream">
* </p>
* This case is the concatenation of the <a href="#single-file">Single media file or on-demand
* stream</a> and <a href="#multi-period">Live stream with multiple periods</a> cases. When playback
* of the pre-roll ends, playback of the live stream will start from its default start position near
* the live edge.
*/
public abstract class Timeline {
......@@ -87,7 +158,14 @@ public abstract class Timeline {
public abstract int getIndexOfPeriod(Object uid);
/**
* Holds information about a window of available media.
* Holds information about a window in a {@link Timeline}. A window defines a region of media
* currently available for playback along with additional information such as whether seeking is
* supported within the window. See {@link Timeline} for more details. The figure below shows some
* of the information defined by a window, as well as how this information relates to
* corresponding {@link Period}s in the timeline.
* <p align="center">
* <img src="doc-files/timeline-window.svg" alt="Information defined by a timeline window">
* </p>
*/
public static final class Window {
......@@ -200,7 +278,13 @@ public abstract class Timeline {
}
/**
* Holds information about a media period.
* Holds information about a period in a {@link Timeline}. A period defines a single logical piece
* of media, for example a a media file. See {@link Timeline} for more details. The figure below
* shows some of the information defined by a period, as well as how this information relates to a
* corresponding {@link Window} in the timeline.
* <p align="center">
* <img src="doc-files/timeline-period.svg" alt="Information defined by a period">
* </p>
*/
public static final class Period {
......
......@@ -100,17 +100,17 @@ public interface ExoMediaDrm<T extends ExoMediaCrypto> {
void provideProvisionResponse(byte[] response) throws DeniedByServerException;
/**
* @see MediaDrm#queryKeyStatus(byte[]).
* @see MediaDrm#queryKeyStatus(byte[])
*/
Map<String, String> queryKeyStatus(byte[] sessionId);
/**
* @see MediaDrm#release().
* @see MediaDrm#release()
*/
void release();
/**
* @see MediaDrm#restoreKeys(byte[], byte[]).
* @see MediaDrm#restoreKeys(byte[], byte[])
*/
void restoreKeys(byte[] sessionId, byte[] keySetId);
......
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="34 687 478 108" width="478pt" height="9pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-29 18:21:43 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="white" stop-opacity="0"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(502.75467 712.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(502.75467 712.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(502.75467 712.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(502.75467 712.5) rotate(180) scale(57.75467)"/></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="198.47753" y="700" width="148.4428" height="25" fill="#dee1f8"/><rect x="198.47753" y="700" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(203.47753 706.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.541713" y="10" textLength="33.359375">period2</tspan></text><rect x="347.1864" y="700" width="147.8136" height="25" fill="#dee1f8"/><rect x="347.1864" y="700" width="147.8136" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(352.1864 706.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.227112" y="10" textLength="33.359375">period3</tspan></text><rect x="254" y="730" width="195" height="25" fill="#c3f9bc"/><rect x="254" y="730" width="195" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(259 736.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="73.044434" y="10" textLength="38.911133">window2</tspan></text><circle cx="405" cy="742.5" r="5.000008" fill="black"/><circle cx="405" cy="742.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="50" y1="765" x2="485.1" y2="765" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="453.41325" y="763.4195" width="29" height="22" fill="white" fill-opacity="0"/><text transform="translate(458.41325 768.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".05419922" y="10" textLength="18.891602">time</tspan></text><rect x="445" y="696.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient)"/><rect x="445" y="696.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_2)"/><rect x="445" y="696.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_3)"/><rect x="445" y="696.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_4)"/><rect x="50" y="700" width="148.4428" height="25" fill="#dee1f8"/><rect x="50" y="700" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 706.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.541713" y="10" textLength="33.359375">period1</tspan></text><rect x="50" y="730" width="148.4428" height="25" fill="#c3f9bc"/><rect x="50" y="730" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 736.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="49.765834" y="10" textLength="38.911133">window1</tspan></text><circle cx="50" cy="742.5" r="5.000008" fill="black"/><circle cx="50" cy="742.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="38 487 474 108" width="474pt" height="9pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-29 18:21:43 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="white" stop-opacity="0"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(502.75467 512.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(502.75467 512.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(502.75467 512.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(502.75467 512.5) rotate(180) scale(57.75467)"/><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="500" width="445" height="25" fill="#dee1f8"/><rect x="50" y="500" width="445" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 506.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="200.82031" y="10" textLength="33.359375">period1</tspan></text><rect x="445" y="496.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient)"/><rect x="445" y="496.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_2)"/><rect x="445" y="496.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_3)"/><rect x="445" y="496.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_4)"/><rect x="50" y="530" width="399" height="25" fill="#c3f9bc"/><rect x="50" y="530" width="399" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 536.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="175.04443" y="10" textLength="38.911133">window1</tspan></text><circle cx="405" cy="542.5" r="5.000008" fill="black"/><circle cx="405" cy="542.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="50" y1="565" x2="485.1" y2="565" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="453.41325" y="563.4195" width="29" height="22" fill="white" fill-opacity="0"/><text transform="translate(458.41325 568.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".05419922" y="10" textLength="18.891602">time</tspan></text></g></g></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="38 387 474 108" width="474pt" height="9pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-29 18:21:43 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="white" stop-opacity="0"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(502.75467 412.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(502.75467 412.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(502.75467 412.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(502.75467 412.5) rotate(180) scale(57.75467)"/></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="400" width="445" height="25" fill="#dee1f8"/><rect x="50" y="400" width="445" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 406.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="200.82031" y="10" textLength="33.359375">period1</tspan></text><rect x="214.6568" y="430" width="234.3432" height="25" fill="#c3f9bc"/><rect x="214.6568" y="430" width="234.3432" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(219.6568 436.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="92.716034" y="10" textLength="38.911133">window1</tspan></text><circle cx="405" cy="442.5" r="5.000008" fill="black"/><circle cx="405" cy="442.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="50" y1="465" x2="485.1" y2="465" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="453.41325" y="463.4195" width="29" height="22" fill="white" fill-opacity="0"/><text transform="translate(458.41325 468.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".05419922" y="10" textLength="18.891602">time</tspan></text><rect x="445" y="396.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient)"/><rect x="445" y="396.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_2)"/><rect x="445" y="396.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_3)"/><rect x="445" y="396.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_4)"/></g></g></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="38 587 474 108" width="474pt" height="9pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-29 18:21:43 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="white" stop-opacity="0"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(502.75467 612.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(502.75467 612.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(502.75467 612.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(502.75467 612.5) rotate(180) scale(57.75467)"/></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="600" width="296.92033" height="25" fill="#dee1f8"/><rect x="50" y="600" width="296.92033" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 606.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="126.78048" y="10" textLength="33.359375">period1</tspan></text><rect x="347.1864" y="600" width="147.8136" height="25" fill="#dee1f8"/><rect x="347.1864" y="600" width="147.8136" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(352.1864 606.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.227112" y="10" textLength="33.359375">period2</tspan></text><rect x="214.33803" y="630" width="234.66197" height="25" fill="#c3f9bc"/><rect x="214.33803" y="630" width="234.66197" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(219.33803 636.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="92.87542" y="10" textLength="38.911133">window1</tspan></text><circle cx="405" cy="642.5" r="5.000008" fill="black"/><circle cx="405" cy="642.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="50" y1="665" x2="485.1" y2="665" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="453.41325" y="663.4195" width="29" height="22" fill="white" fill-opacity="0"/><text transform="translate(458.41325 668.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".05419922" y="10" textLength="18.891602">time</tspan></text><rect x="445" y="596.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient)"/><rect x="445" y="596.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_2)"/><rect x="445" y="596.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_3)"/><rect x="445" y="596.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_4)"/></g></g></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="38 1e3 474 204" width="474pt" height="17pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-29 18:21:43 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" viewBox="-9 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M -8 0 L 0 3 L 0 -3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="white" stop-opacity="0"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(502.75467 1062.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(502.75467 1062.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(502.75467 1062.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(502.75467 1062.5) rotate(180) scale(57.75467)"/></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="1050" width="296.92029" height="25" fill="#dee1f8"/><rect x="50" y="1050" width="296.92029" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 1056.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="126.78046" y="10" textLength="33.359375">period1</tspan></text><rect x="347.1864" y="1050" width="147.3136" height="25" fill="#dee1f8"/><rect x="347.1864" y="1050" width="147.3136" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(352.1864 1056.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="51.977112" y="10" textLength="33.359375">period2</tspan></text><line x1="205.33803" y1="1170.82475" x2="337.02033" y2="1170.82475" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="205.5" y1="1161.32475" x2="205.5" y2="1192.7024" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="347.1864" y1="1161.32475" x2="347.1864" y2="1192.82475" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="204.83803" y="1125" width="234.66197" height="25" fill="#c3f9bc"/><rect x="204.83803" y="1125" width="234.66197" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(209.83803 1131.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="92.87542" y="10" textLength="38.911133">window1</tspan></text><line x1="59.9" y1="1170.82475" x2="205.33803" y2="1170.82475" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="50" y1="1083.82475" x2="50" y2="1192.82475" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(66.789836 1175.82475)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".24414062" y="10" textLength="114.51172">period1.positionInWindow</tspan></text><text transform="translate(218.62918 1175.82475)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".24414062" y="10" textLength="114.51172">period2.positionInWindow</tspan></text><circle cx="405.5" cy="1137.5" r="5.000008" fill="black"/><circle cx="405.5" cy="1137.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 277.848 1075 C 283.47152 1077.74604 289.55567 1081.7543 297 1088 C 307.39228 1096.719 313.49444 1106.8151 317.07717 1115.6064" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="198.47753" y="1086.68713" width="104" height="22" fill="white" fill-opacity="0"/><text transform="translate(203.47753 1091.68713)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".024902344" y="10" textLength="93.950195">period1.windowIndex</tspan></text><path d="M 367.49306 1075 C 364.88125 1076.66384 361.57643 1079.39495 357 1083.82475 C 347.66134 1092.8642 339.2789 1105.5559 333.07861 1116.3285" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="348.1864" y="1086.68713" width="104" height="22" fill="white" fill-opacity="0"/><text transform="translate(353.1864 1091.68713)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".024902344" y="10" textLength="93.950195">period2.windowIndex</tspan></text><line x1="50" y1="1019.17525" x2="50" y2="1041.17525" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="347.1864" y1="1019.17525" x2="347.1864" y2="1041.17525" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="59.9" y1="1032.4929" x2="355" y2="1032.4929" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="348.1864" y1="1032.4929" x2="481.2864" y2="1032.4929" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(176.19198 1014.95836)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".36230469" y="10" textLength="72.27539">period1.duration</tspan></text><text transform="translate(367.71016 1015.4929)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".4116211" y="10" textLength="106.17676">period2.duration (unset)</tspan></text><rect x="445" y="1046.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient)"/><rect x="445" y="1046.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_2)"/><rect x="445" y="1046.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_3)"/><rect x="445" y="1046.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_4)"/></g></g></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="34 289 473 106" width="473pt" height="106pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-29 18:21:43 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="300" width="148.4428" height="25" fill="#dee1f8"/><rect x="50" y="300" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 306.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.541713" y="10" textLength="33.359375">period1</tspan></text><rect x="50" y="330" width="148.4428" height="25" fill="#c3f9bc"/><rect x="50" y="330" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 336.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="49.765834" y="10" textLength="38.911133">window1</tspan></text><rect x="198.4428" y="300" width="148.4428" height="25" fill="#dee1f8"/><rect x="198.4428" y="300" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(203.4428 306.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.541713" y="10" textLength="33.359375">period2</tspan></text><rect x="346.8856" y="300" width="148.4428" height="25" fill="#dde1f7"/><rect x="346.8856" y="300" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(351.8856 306.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.541713" y="10" textLength="33.359375">period3</tspan></text><rect x="198.4428" y="330" width="148.4428" height="25" fill="#c3f9bc"/><rect x="198.4428" y="330" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(203.4428 336.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="49.765834" y="10" textLength="38.911133">window2</tspan></text><rect x="346.8856" y="330" width="148.4428" height="25" fill="#c3f9bc"/><rect x="346.8856" y="330" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(351.8856 336.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="49.765834" y="10" textLength="38.911133">window3</tspan></text><line x1="50" y1="365" x2="485.1" y2="365" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="453.41325" y="363.4195" width="29" height="22" fill="white" fill-opacity="0"/><text transform="translate(458.41325 368.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="black" x=".05419922" y="10" textLength="18.891602">time</tspan></text><circle cx="50" cy="342.5" r="5.000008" fill="black"/><circle cx="50" cy="342.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="198.4428" cy="342.5" r="5.000008" fill="black"/><circle cx="198.4428" cy="342.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="346.88559" cy="342.5" r="5.000008" fill="black"/><circle cx="346.88559" cy="342.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="34 189 484 107" width="484pt" height="107pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-29 18:21:43 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="200" width="445" height="25" fill="#dee1f8"/><rect x="50" y="200" width="445" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 206.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="200.82031" y="10" textLength="33.359375">period1</tspan></text><rect x="50" y="230" width="445" height="25" fill="#c3f9bc"/><rect x="50" y="230" width="445" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 236.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="198.04443" y="10" textLength="38.911133">window1</tspan></text><circle cx="50" cy="242.5" r="5.000008" fill="black"/><circle cx="50" cy="242.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="51" y1="266" x2="486.1" y2="266" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="454.41325" y="264.4195" width="29" height="22" fill="white" fill-opacity="0"/><text transform="translate(459.41325 269.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".05419922" y="10" textLength="18.891602">time</tspan></text></g></g></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="39 787 473 199" width="473pt" height="199pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-29 18:21:43 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" viewBox="-9 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M -8 0 L 0 3 L 0 -3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="white" stop-opacity="0"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(502.75467 812.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(502.75467 812.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(502.75467 812.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(502.75467 812.5) rotate(180) scale(57.75467)"/></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="800" width="296.92033" height="25" fill="#dee1f8"/><rect x="50" y="800" width="296.92033" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 806.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="126.78048" y="10" textLength="33.359375">period1</tspan></text><rect x="347.1864" y="800" width="147.8136" height="25" fill="#dee1f8"/><rect x="347.1864" y="800" width="147.8136" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(352.1864 806.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.227112" y="10" textLength="33.359375">period2</tspan></text><line x1="215.23803" y1="920" x2="429.26197" y2="920" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="205.5" y1="909.98415" x2="205.5" y2="974.3898" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="439.16197" y1="909.98415" x2="439.16197" y2="974.64095" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="205.33803" y="875.00003" width="234.66197" height="25" fill="#c3f9bc"/><rect x="205.33803" y="875.00003" width="234.66197" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(210.33803 881.50003)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="92.87542" y="10" textLength="38.911133">window1</tspan></text><line x1="50" y1="920" x2="195.43803" y2="920" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(57.789836 924.48415)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".079101562" y="10" textLength="132.8418">window1.positionInFirstPeriod</tspan></text><text transform="translate(281.1883 924.48415)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="2.148123" y="10" textLength="77.82715">window1.duration</tspan></text><circle cx="405.956" cy="887.5" r="5.000008" fill="black"/><circle cx="405.956" cy="887.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="205.5" y1="953.48415" x2="396.6" y2="953.48415" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="405.6276" y1="928.63515" x2="405.6276" y2="974.3898" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(239.5638 958.48415)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="2.2958984" y="10" textLength="128.4082">window1.defaultStartPosition</tspan></text><path d="M 294.17111 830.14747 C 298.4618 833.37285 302.96775 837.6977 308.92033 844 C 319.23498 854.92063 322.46793 866.5256 323.23382 875.00003" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="181.5" y="839" width="122" height="22" fill="white" fill-opacity="0"/><text transform="translate(186.5 844)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".4165039" y="10" textLength="46.689453">window1.fi</tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" x="47.105957" y="10" textLength="64.47754">rstPeriodIndex</tspan></text><path d="M 359.39088 830.24503 C 353.18753 834.7477 347.70308 840.4071 339 850.3771 C 330.87957 859.67967 326.78076 868.3698 324.71894 875.00003" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="348.1864" y="839" width="121" height="22" fill="white" fill-opacity="0"/><text transform="translate(353.1864 844)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".18994141" y="10" textLength="110.62012">window1.lastPeriodIndex</tspan></text><rect x="445" y="796.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient)"/><rect x="445" y="796.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_2)"/><rect x="445" y="796.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_3)"/><rect x="445" y="796.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_4)"/><line x1="50" y1="832.48415" x2="50" y2="941.48415" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment