<snapdata remixID="12790815"><project name="subtitle renderer" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><notes>portable subtitle renderer that uses snap lists as its format and implements a reasonable subset of webvtt features including:&#xD;- timed text (obviously)&#xD;- horizontal and vertical alignment and maximum width&#xD;- automatic wrapping as well as explicit line breaks&#xD;- variable font size and colours, with customisable palette&#xD;- screen margins in which no text will be rendered (caption background may be though)&#xD;- multiple independent captions at once&#xD;&#xD;the format can be converted to and from json without problems, so an external tool could be written to convert existing subtitle files to the format understood by these blocks</notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAACJklEQVR4Xu3SwQkAMAwDsWbyjN5Cl7iPvIDh0OzuPaZAVGAAjMq7/QUABCEtAGCa3zmADKQFAEzzOweQgbQAgGl+5wAykBYAMM3vHEAG0gIApvmdA8hAWgDANL9zABlICwCY5ncOIANpAQDT/M4BZCAtAGCa3zmADKQFAEzzOweQgbQAgGl+5wAykBYAMM3vHEAG0gIApvmdA8hAWgDANL9zABlICwCY5ncOIANpAQDT/M4BZCAtAGCa3zmADKQFAEzzOweQgbQAgGl+5wAykBYAMM3vHEAG0gIApvmdA8hAWgDANL9zABlICwCY5ncOIANpAQDT/M4BZCAtAGCa3zmADKQFAEzzOweQgbQAgGl+5wAykBYAMM3vHEAG0gIApvmdA8hAWgDANL9zABlICwCY5ncOIANpAQDT/M4BZCAtAGCa3zmADKQFAEzzOweQgbQAgGl+5wAykBYAMM3vHEAG0gIApvmdA8hAWgDANL9zABlICwCY5ncOIANpAQDT/M4BZCAtAGCa3zmADKQFAEzzOweQgbQAgGl+5wAykBYAMM3vHEAG0gIApvmdA8hAWgDANL9zABlICwCY5ncOIANpAQDT/M4BZCAtAGCa3zmADKQFAEzzOweQgbQAgGl+5wAykBYAMM3vHEAG0gIApvmdA8hAWgDANL9zABlICwCY5ncOIANpAQDT/M4BZCAtAGCa3zmADKQFAEzzOweQgbQAgGl+5w8i6yqojDXZQAAAAABJRU5ErkJggg==</thumbnail><scenes select="1"><scene name="subtitle renderer"><notes>portable subtitle renderer that uses snap lists as its format and implements a reasonable subset of webvtt features including:&#xD;- timed text (obviously)&#xD;- horizontal and vertical alignment and maximum width&#xD;- automatic wrapping as well as explicit line breaks&#xD;- variable font size and colours, with customisable palette&#xD;- screen margins in which no text will be rendered (caption background may be though)&#xD;- multiple independent captions at once&#xD;&#xD;the format can be converted to and from json without problems, so an external tool could be written to convert existing subtitle files to the format understood by these blocks</notes><palette><category name="CC" color="138,103,0,1"/></palette><hidden></hidden><headers></headers><code></code><blocks><block-definition s="cue starting at %&apos;start&apos; with length %&apos;length&apos; $nl aligned %&apos;vertical align&apos; %&apos;horizontal align&apos; at y= %&apos;y position&apos; % within x %&apos;within x percent&apos; % $nl content: %&apos;content&apos;" type="reporter" category="CC"><comment w="258" collapsed="false">start and length are in seconds (use the hr/min/sec block if it&apos;s easier)&#xD;alignment is the side of the stage that the text will &quot;gravitate&quot; to&#xD;y position is the percentage from the other side of the stage that the text will render at&#xD;within x is the maximum horizontal space the text is allowed to take up&#xD;content is one or more text objects</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%s" readonly="true">bottom<options>top&#xD;bottom</options></input><input type="%s" readonly="true">centre<options>left&#xD;centre&#xD;right</options></input><input type="%n">100</input><input type="%n">100</input><input type="%mult%l"></input></inputs><script><block s="doReport"><block s="reportNewList"><list><block var="start"/><block var="length"/><block var="vertical align"/><block var="horizontal align"/><block var="y position"/><block var="within x percent"/><block var="content"/></list></block></block></script></block-definition><block-definition s="text with colour: %&apos;colour&apos; delta size: %&apos;dsize&apos; content: %&apos;content&apos;" type="reporter" category="CC"><comment w="200" collapsed="false">a piece of text as part of a cue, with its own colour, delta size (font size relative to the default), and content (the text itself)</comment><header></header><code></code><translations></translations><inputs><input type="%s">FG<options>FG&#xD;green&#xD;cyan&#xD;red&#xD;yellow&#xD;magenta</options></input><input type="%n">0</input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportNewList"><list><block var="colour"/><block var="dsize"/><block var="content"/></list></block></block></script></block-definition><block-definition s="segment of cues %&apos;cues&apos;" type="reporter" category="CC"><comment w="150" collapsed="false">a sequence of cues for a given section of media (e.g. chapter, cutscene, etc)</comment><header></header><code></code><translations></translations><inputs><input type="%mult%l"></input></inputs><script><block s="doReport"><block s="reportCONS"><l>CCSEGMENT</l><block var="cues"/></block></block></script></block-definition><block-definition s="%&apos;hours&apos; hr %&apos;minutes&apos; min %&apos;seconds&apos; sec" type="reporter" category="CC"><comment w="214.9999999999999" collapsed="false">converts a time or duration in hours, minutes and seconds into a total number of seconds</comment><header></header><code></code><translations></translations><inputs><input type="%n">0</input><input type="%n">0</input><input type="%n">0</input></inputs><script><block s="doReport"><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><block var="hours"/><l>60</l><l>60</l></list></block><block s="reportVariadicProduct"><list><block var="minutes"/><l>60</l></list></block><block var="seconds"/></list></block></block></script></block-definition><block-definition s="basic text cue at %&apos;start&apos; length %&apos;length&apos; $nl colour: %&apos;colour&apos; text: %&apos;text&apos;" type="reporter" category="CC"><comment w="201" collapsed="false">a shortcut for simple cues with a single text item in the default position</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%s">FG<options>FG&#xD;green&#xD;cyan&#xD;red&#xD;magenta&#xD;yellow</options></input><input type="%s"></input></inputs><script><block s="doReport"><custom-block s="cue starting at %n with length %n %br aligned %s %s at y= %n % within x %n % %br content: %mult%l"><block var="start"/><block var="length"/><l>bottom</l><l>centre</l><l>100</l><l>100</l><list><custom-block s="text with colour: %s delta size: %n content: %s"><block var="colour"/><l>0</l><block var="text"/></custom-block></list></custom-block></block></script></block-definition><block-definition s="render segment %&apos;segment&apos; with settings %&apos;settings&apos;" type="command" category="CC"><comment w="213.0000000000001" collapsed="false">renders the given subtitle segment on screen with given settings, using a new clone for each cue. if the &quot;enable&quot; setting is false, it will not render anything, but still wait for the length of the segment</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doWarp"><script><custom-block s="assert %b or throw %s"><block s="reportVariadicEquals"><list><block s="reportListItem"><l>1</l><block var="segment"/></block><l>CCSEGMENT</l></list></block><l>that doesn&apos;t look like a segment!</l></custom-block><custom-block s="assert %b or throw %s"><block s="reportVariadicEquals"><list><block s="reportListItem"><l>1</l><block var="settings"/></block><l>CCSETTINGS</l></list></block><l>that doesn&apos;t look like a settings object!</l></custom-block></script></block><block s="doIf"><block s="reportListItem"><l>enable</l><block var="settings"/></block><script><block s="doForEach"><l>cue</l><block s="reportCDR"><block var="segment"/></block><script><block s="fork"><block s="reifyScript"><script><block s="doTellTo"><block s="newClone"><l><option>myself</option></l></block><block s="reifyScript"><script><block s="doWait"><block s="reportListItem"><l>1</l><block var="#1"/></block></block><block s="goToLayer"><l><option>front</option></l></block><custom-block s="render cue %l with settings %l"><block var="#1"/><block var="settings"/></custom-block><block s="removeClone"></block></script><list></list></block><list></list></block></script><list><l>#1</l></list></block><list><block var="cue"/></list></block></script></block></script><list></list></block><block s="doWait"><block s="reportVariadicSum"><block s="reportListItem"><block s="reportNewList"><list><l>1</l><l>2</l></list></block><block s="reportListItem"><l><option>last</option></l><block var="segment"/></block></block></block></block></script></block-definition><block-definition s="assert %&apos;cond&apos; or throw %&apos;error&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%b"></input><input type="%s">assertion failed</input></inputs><script><block s="doIf"><block s="reportNot"><block var="cond"/></block><script><block s="doApplyExtension"><l>err_error(msg)</l><list><block var="error"/></list></block></script><list></list></block></script></block-definition><block-definition s="render settings $nl enable: %&apos;enable&apos; $nl palette: %&apos;palette&apos; $nl font size: %&apos;size&apos; $nl padding: %&apos;padding&apos; $nl screen margin: %&apos;margin&apos;" type="reporter" category="CC"><comment w="351.1999999999998" collapsed="false">enable determines whether the captions will be rendered (useful for closed captions)&#xD;palette is the colour palette to use&#xD;font size is the default size of text (passed to the &quot;write&quot; block)&#xD;padding is the size of the extra border of background colour around the text&#xD;screen margin is the size of the region at the edges of the stage where no text will be rendered&#xD;&#xD;also calculates the glyph size ratio and stores it automatically</comment><header></header><code></code><translations></translations><inputs><input type="%b">true</input><input type="%l"></input><input type="%n">12</input><input type="%n">8</input><input type="%n">16</input></inputs><script><block s="doReport"><block s="reportNewList"><list><l>CCSETTINGS</l><block s="reportNewList"><list><l>enable</l><block var="enable"/></list></block><block s="reportNewList"><list><l>palette</l><block var="palette"/></list></block><block s="reportNewList"><list><l>size</l><block var="size"/></list></block><block s="reportNewList"><list><l>padding</l><block var="padding"/></list></block><block s="reportNewList"><list><l>margin</l><block var="margin"/></list></block><block s="reportNewList"><list><l>glyph ratio</l><custom-block s="calculate glyph ratio"></custom-block></list></block></list></block></block></script></block-definition><block-definition s="render cue %&apos;cue&apos; with settings %&apos;settings&apos;" type="command" category="CC" helper="true"><comment w="90" collapsed="false">renders the given cue on screen</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>original trails</l><l>rendered</l><l>wrapped texts</l><l>#lines</l><l>split lines</l><l>size</l><l>padding</l><l>margin</l><l>ratio</l><l>i</l></list></block><block s="doWarp"><script><block s="gotoXY"><l>0</l><l>0</l></block><block s="doSetVar"><l>original trails</l><block s="reportPenTrailsAsCostume"></block></block><block s="doSetVar"><l>size</l><block s="reportListItem"><l>size</l><block var="settings"/></block></block><block s="doSetVar"><l>padding</l><block s="reportListItem"><l>padding</l><block var="settings"/></block></block><block s="doSetVar"><l>margin</l><block s="reportListItem"><l>margin</l><block var="settings"/></block></block><block s="doSetVar"><l>ratio</l><block s="reportListItem"><l>glyph ratio</l><block var="settings"/></block></block><block s="doSetVar"><l>wrapped texts</l><custom-block s="wrap texts %mult%l at length %n"><block s="reportListItem"><l>7</l><block var="cue"/></block><custom-block s="calculate max width from font size %n padding %n margin %n percent %n ratio %n"><block var="size"/><block var="padding"/><block var="margin"/><block s="reportListItem"><l>6</l><block var="cue"/></block><block var="ratio"/></custom-block></custom-block></block><block s="doSetVar"><l>split lines</l><custom-block s="split %l on %s"><block var="wrapped texts"/><l>LF</l></custom-block></block><block s="doSetVar"><l>#lines</l><block s="reportListAttribute"><l><option>length</option></l><block var="split lines"/></block></block><block s="clear"></block><block s="setYPosition"><custom-block s="calculate start y from font size %n lines %n padding %n valign %s percent %n margin %n"><block var="size"/><block var="#lines"/><block var="padding"/><block s="reportListItem"><l>3</l><block var="cue"/></block><block s="reportListItem"><l>5</l><block var="cue"/></block><block var="margin"/></custom-block></block><block s="setXPosition"><custom-block s="calculate start x from font size %n halign %s length %n margin %n ratio %n"><block var="size"/><block s="reportListItem"><l>4</l><block var="cue"/></block><block s="reportVariadicSum"><block s="reportTextAttribute"><l><option>length</option></l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>3</l><l/></block></autolambda><list></list></block><block s="reportListItem"><l>1</l><block var="split lines"/></block></block></block></block><block var="margin"/><block var="ratio"/></custom-block></block><block s="doSetVar"><l>i</l><l>1</l></block><block s="doForEach"><l>text</l><block var="wrapped texts"/><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="text"/><l>LF</l></list></block><script><block s="doChangeVar"><l>i</l><l>1</l></block><block s="changeYPosition"><block s="reportDifference"><l>0</l><block s="reportVariadicSum"><list><block s="reportListItem"><l>size</l><block var="settings"/></block><block s="reportVariadicProduct"><list><block s="reportListItem"><l>padding</l><block var="settings"/></block><l>2</l></list></block></list></block></block></block><block s="setXPosition"><custom-block s="calculate start x from font size %n halign %s length %n margin %n ratio %n"><block var="size"/><block s="reportListItem"><l>4</l><block var="cue"/></block><block s="reportVariadicSum"><block s="reportTextAttribute"><l><option>length</option></l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>3</l><l/></block></autolambda><list></list></block><block s="reportListItem"><block var="i"/><block var="split lines"/></block></block></block></block><block var="margin"/><block var="ratio"/></custom-block></block></script><script><custom-block s="render text %l with settings %l"><block var="text"/><block var="settings"/></custom-block></script></block></script></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="doSetVar"><l>rendered</l><block s="reportPenTrailsAsCostume"></block></block><block s="doSwitchToCostume"><block var="original trails"/></block><block s="clear"></block><block s="doStamp"></block><block s="doSwitchToCostume"><block var="rendered"/></block><block s="show"></block></script></block><block s="doWait"><block s="reportListItem"><l>2</l><block var="cue"/></block></block><block s="hide"></block></script></block-definition><block-definition s="default palette, dark on light: %&apos;inverse&apos;" type="reporter" category="CC"><header></header><code></code><translations></translations><inputs><input type="%b">false</input></inputs><script><block s="doDeclareVariables"><list><l>amplitude</l></list></block><block s="doSetVar"><l>amplitude</l><block s="reportIfElse"><block var="inverse"/><l>150</l><l>255</l></block></block><block s="doReport"><block s="reportNewList"><list><block s="reportNewList"><list><l>BG</l><block s="reportIfElse"><block var="inverse"/><l>255</l><l>0</l></block></list></block><block s="reportNewList"><list><l>FG</l><block s="reportIfElse"><block var="inverse"/><l>0</l><l>255</l></block></list></block><block s="reportNewList"><list><l>green</l><block s="reportNewList"><list><l>0</l><block var="amplitude"/><l>0</l></list></block></list></block><block s="reportNewList"><list><l>cyan</l><block s="reportNewList"><list><l>0</l><block var="amplitude"/><block var="amplitude"/></list></block></list></block><block s="reportNewList"><list><l>red</l><block s="reportNewList"><list><block var="amplitude"/><l>0</l><l>0</l></list></block></list></block><block s="reportNewList"><list><l>yellow</l><block s="reportNewList"><list><block var="amplitude"/><block var="amplitude"/><l>0</l></list></block></list></block><block s="reportNewList"><list><l>magenta</l><block s="reportNewList"><list><block var="amplitude"/><l>0</l><block var="amplitude"/></list></block></list></block></list></block></block></script></block-definition><block-definition s="render text %&apos;text&apos; with settings %&apos;settings&apos;" type="command" category="CC" helper="true"><comment w="90" collapsed="false">renders a text item with given settings</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>size</l><l>padding</l><l>bottom left</l><l>right</l></list></block><block s="doSetVar"><l>size</l><block s="reportVariadicSum"><list><block s="reportListItem"><l>size</l><block var="settings"/></block><block s="reportListItem"><l>2</l><block var="text"/></block></list></block></block><block s="doSetVar"><l>padding</l><block s="reportListItem"><l>padding</l><block var="settings"/></block></block><block s="doSetVar"><l>bottom left</l><block s="getPosition"></block></block><block s="write"><block s="reportListItem"><l>3</l><block var="text"/></block><block var="size"/></block><block s="doSetVar"><l>right</l><block s="xPosition"></block></block><block s="setPenColorDimension"><l><option>r-g-b(-a)</option></l><block s="reportListItem"><l>BG</l><block s="reportListItem"><l>palette</l><block var="settings"/></block></block></block><block s="doGotoObject"><block var="bottom left"/></block><block s="changeXPosition"><block s="reportDifference"><l>0</l><block var="padding"/></block></block><block s="changeYPosition"><block s="reportQuotient"><block var="size"/><l>2</l></block></block><block s="setSize"><block s="reportVariadicSum"><list><block var="size"/><block s="reportVariadicProduct"><list><l>2</l><block var="padding"/></list></block></list></block></block><block s="down"></block><block s="setXPosition"><block s="reportVariadicSum"><list><block var="right"/><block var="padding"/></list></block></block><block s="up"></block><block s="doGotoObject"><block var="bottom left"/></block><block s="changeYPosition"><block s="reportQuotient"><block var="size"/><l>4</l></block></block><block s="setPenColorDimension"><l><option>r-g-b(-a)</option></l><block s="reportListItem"><block s="reportListItem"><l>1</l><block var="text"/></block><block s="reportListItem"><l>palette</l><block var="settings"/></block></block></block><block s="write"><block s="reportListItem"><l>3</l><block var="text"/></block><block var="size"/></block><block s="changeXPosition"><block var="padding"/></block><block s="changeYPosition"><block s="reportQuotient"><block var="size"/><l>-4</l></block></block></script></block-definition><block-definition s="calculate start y from font size %&apos;size&apos; lines %&apos;lines&apos; padding %&apos;padding&apos; valign %&apos;align&apos; percent %&apos;percent&apos; margin %&apos;margin&apos;" type="reporter" category="CC" helper="true"><comment w="333.9999999999999" collapsed="false">calculates the y position for the baseline of the first line of text in a cue, given the font size, number of lines, text padding, vertical alignment, y position percentage, and screen margins</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%s"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doIf"><block s="reportVariadicEquals"><list><block var="align"/><l>bottom</l></list></block><script><block s="doReport"><block s="reportVariadicSum"><list><block s="reportDifference"><block s="reportAttributeOf"><l><option>top</option></l><block s="reportGet"><l><option>stage</option></l></block></block><block s="reportVariadicProduct"><list><block s="reportAttributeOf"><l><option>height</option></l><block s="reportGet"><l><option>stage</option></l></block></block><block s="reportQuotient"><block var="percent"/><l>100</l></block></list></block></block><block s="reportVariadicProduct"><list><block s="reportVariadicSum"><list><block var="size"/><block s="reportVariadicProduct"><list><block var="padding"/><l>2</l></list></block></list></block><block s="reportDifference"><block var="lines"/><l>1</l></block></list></block><block var="margin"/></list></block></block></script><list></list></block><block s="doReport"><block s="reportDifference"><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>bottom</option></l><block s="reportGet"><l><option>stage</option></l></block></block><block s="reportVariadicProduct"><list><block s="reportAttributeOf"><l><option>height</option></l><block s="reportGet"><l><option>stage</option></l></block></block><block s="reportQuotient"><block var="percent"/><l>100</l></block></list></block></list></block><block s="reportVariadicSum"><list><block var="margin"/><block var="size"/><block var="padding"/></list></block></block><comment w="90" collapsed="false">valign=top</comment></block></script></block-definition><block-definition s="line break text" type="reporter" category="CC"><comment w="162" collapsed="false">a text item that forces a line break in the cue</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><l>LF</l></block></script></block-definition><block-definition s="calculate start x from font size %&apos;size&apos; halign %&apos;halign&apos; length %&apos;length&apos; margin %&apos;margin&apos; ratio %&apos;ratio&apos;" type="reporter" category="CC" helper="true"><comment w="268" collapsed="false">calculates the x position of the left side of a line of text, given the font size, horizontal alignment, line length (characters), screen margins, and glyph size ratio</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%s"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doIf"><block s="reportVariadicEquals"><list><block var="halign"/><l>left</l></list></block><script><block s="doReport"><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>left</option></l><block s="reportGet"><l><option>stage</option></l></block></block><block var="margin"/></list></block></block></script><list><block s="reportVariadicEquals"><list><block var="halign"/><l>right</l></list></block><script><block s="doReport"><block s="reportDifference"><block s="reportAttributeOf"><l><option>right</option></l><block s="reportGet"><l><option>stage</option></l></block></block><block s="reportVariadicSum"><list><block var="margin"/><block s="reportVariadicProduct"><list><block var="length"/><block var="size"/><block var="ratio"/></list></block></list></block></block></block></script></list></block><block s="doReport"><block s="reportDifference"><l>0</l><block s="reportVariadicProduct"><list><block var="length"/><block var="size"/><block var="ratio"/><l>0.5</l></list></block></block><comment w="90" collapsed="false">halign=centre</comment></block></script></block-definition><block-definition s="split %&apos;list&apos; on %&apos;delim&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>results</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>results</l><block s="reportNewList"><list><block s="reportNewList"><list></list></block></list></block></block><block s="doForEach"><l>item</l><block var="list"/><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="item"/><block var="delim"/></list></block><script><block s="doAddToList"><block s="reportNewList"><list></list></block><block var="results"/></block></script><script><block s="doAddToList"><block var="item"/><block s="reportListItem"><l><option>last</option></l><block var="results"/></block></block></script></block></script></block><block s="doReport"><block var="results"/></block></script></block></script></block-definition><block-definition s="split %&apos;text&apos; into lines with max length %&apos;max&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%n"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doSetVar"><l>result</l><block s="reportNewList"><list><l></l></list></block></block><block s="doForEach"><l>word</l><block s="reportTextSplit"><block var="text"/><l><option>word</option></l></block><script><block s="doIfElse"><block s="reportVariadicGreaterThan"><list><block s="reportVariadicSum"><list><block s="reportTextAttribute"><l><option>length</option></l><block s="reportListItem"><l><option>last</option></l><block var="result"/></block></block><block s="reportTextAttribute"><l><option>length</option></l><block var="word"/></block></list></block><block var="max"/></list></block><script><block s="doReplaceInList"><l><option>last</option></l><block var="result"/><block s="reportJoinWords"><block s="reportListAttribute"><l><option>reverse</option></l><block s="reportCDR"><block s="reportListAttribute"><l><option>reverse</option></l><block s="reportTextSplit"><block s="reportListItem"><l><option>last</option></l><block var="result"/></block><l><option>letter</option></l></block></block></block></block></block></block><block s="doAddToList"><block s="reportJoinWords"><list><block var="word"/><l> </l></list></block><block var="result"/></block></script><script><block s="doReplaceInList"><l><option>last</option></l><block var="result"/><block s="reportJoinWords"><list><block s="reportListItem"><l><option>last</option></l><block var="result"/></block><block var="word"/><l> </l></list></block></block></script></block></script></block><block s="doReplaceInList"><l><option>last</option></l><block var="result"/><block s="reportJoinWords"><block s="reportListAttribute"><l><option>reverse</option></l><block s="reportCDR"><block s="reportListAttribute"><l><option>reverse</option></l><block s="reportTextSplit"><block s="reportListItem"><l><option>last</option></l><block var="result"/></block><l><option>letter</option></l></block></block></block></block></block></block><block s="doReport"><block var="result"/></block></script></block></script></block-definition><block-definition s="wrap texts %&apos;texts&apos; at length %&apos;length&apos;" type="reporter" category="CC" helper="true"><comment w="197" collapsed="false">converts some text items into the same readable text with same formatting but wrapped to fit the given line length</comment><header></header><code></code><translations></translations><inputs><input type="%mult%l"></input><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l><l>split</l></list></block><block s="doSetVar"><l>result</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>text</l><block var="texts"/><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="text"/><l>LF</l></list></block><script><block s="doAddToList"><l>LF</l><block var="result"/></block></script><script><block s="doSetVar"><l>split</l><custom-block s="split %s into lines with max length %n"><block s="reportListItem"><l>3</l><block var="text"/></block><block s="reportDifference"><block var="length"/><block s="reportTextAttribute"><l><option>length</option></l><block s="reportListItem"><l>3</l><block s="reportIfElse"><block s="reportIsA"><block s="reportListItem"><l><option>last</option></l><block var="result"/></block><l><option>list</option></l></block><block s="reportListItem"><l><option>last</option></l><block var="result"/></block><block s="reportNewList"><list><l>0</l><l>0</l><l>0</l></list></block></block></block></block></block></custom-block></block><block s="doForEach"><l>slice</l><block var="split"/><script><block s="doAddToList"><block s="reportNewList"><list><block s="reportListItem"><l>1</l><block var="text"/></block><block s="reportListItem"><l>2</l><block var="text"/></block><block var="slice"/></list></block><block var="result"/></block><block s="doAddToList"><l>LF</l><block var="result"/></block></script></block><block s="doDeleteFromList"><l><option>last</option></l><block var="result"/></block></script></block></script></block><block s="doReport"><block var="result"/></block></script></block-definition><block-definition s="calculate max width from font size %&apos;size&apos; padding %&apos;padding&apos; margin %&apos;margin&apos; percent %&apos;percent&apos; ratio %&apos;ratio&apos;" type="reporter" category="CC" helper="true"><comment w="271" collapsed="false">calculates the maximum line length for wrapping, given font size, text padding, screen margins, maximum width percentage, and glyph size ratio</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block s="reportVariadicProduct"><list><block s="reportDifference"><block s="reportAttributeOf"><l><option>width</option></l><block s="reportGet"><l><option>stage</option></l></block></block><block s="reportVariadicProduct"><list><block s="reportVariadicSum"><list><block var="padding"/><block var="margin"/></list></block><l>2</l></list></block></block><block var="percent"/><l>0.01</l></list></block><block s="reportVariadicProduct"><list><block var="size"/><block var="ratio"/></list></block></block></block></block></script></block-definition><block-definition s="calculate glyph ratio" type="reporter" category="pen"><comment w="208" collapsed="false">assuming a fixed-width font, calculates the ratio of the width to the height of each character when written with the &quot;write&quot; block</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>old trails</l><l>old pos</l><l>old costume</l><l>result</l></list></block><block s="doSetVar"><l>old trails</l><block s="reportPenTrailsAsCostume"></block></block><block s="doSetVar"><l>old pos</l><block s="getPosition"></block></block><block s="doSetVar"><l>old costume</l><block s="reportGet"><l><option>costume</option></l></block></block><block s="write"><l>Xx;|—Ee</l><l>40</l></block><block s="clear"></block><block s="doSetVar"><l>result</l><block s="reportQuotient"><block s="reportQuotient"><block s="reportListItem"><l>1</l><block s="reportDifference"><block s="getPosition"></block><block var="old pos"/></block></block><l>7</l></block><l>40</l></block></block><block s="doGotoObject"><block var="old pos"/></block><block s="doSwitchToCostume"><block var="old trails"/></block><block s="doStamp"></block><block s="doSwitchToCostume"><block var="old costume"/></block><block s="doReport"><block var="result"/></block></script></block></script></block-definition></blocks><stage name="Stage" width="480" height="360" costume="0" color="127,127,127,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="flat" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="1184"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAOhUlEQVR4Xu3VwQkAAAjEMN1/abewn7jAQRC64wgQIECAAIF3gX1fNEiAAAECBAiMAHsCAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQIHLFxAWmhEwHPAAAAAElFTkSuQmCC</pentrails><costumes><list struct="atomic" id="1185"></list></costumes><sounds><list struct="atomic" id="1186"></list></sounds><variables></variables><blocks></blocks><scripts><script x="173" y="90.00000000000003"><block s="setBackgroundColorDimension"><l><option>r-g-b(-a)</option></l><l>127</l></block></script></scripts><sprites select="1"><sprite name="renderer" idx="1" x="0" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="false" hidden="true" costume="0" color="0,255,255,1" pen="tip" id="1194"><costumes><list struct="atomic" id="1195"></list></costumes><sounds><list struct="atomic" id="1196"></list></sounds><blocks></blocks><variables></variables><scripts><script x="10" y="39.666666666666686"><block s="doSetVar"><l>sample interview</l><custom-block s="segment of cues %mult%l"><list><custom-block s="cue starting at %n with length %n %br aligned %s %s at y= %n % within x %n % %br content: %mult%l"><l>0</l><l>11</l><l>top</l><l>centre</l><l>100</l><l>100</l><list><custom-block s="text with colour: %s delta size: %n content: %s"><l>green</l><l>0</l><l>this demo is a lightly adapted version of the "simple caption file" example from the WebVTT standard</l></custom-block><custom-block s="line break text"></custom-block><custom-block s="text with colour: %s delta size: %n content: %s"><l>green</l><l>0</l><l>it begins at 11 seconds</l></custom-block></list></custom-block><custom-block s="cue starting at %n with length %n %br aligned %s %s at y= %n % within x %n % %br content: %mult%l"><l>8</l><l>1</l><l>bottom</l><l>centre</l><l>60</l><l>100</l><list><custom-block s="text with colour: %s delta size: %n content: %s"><l>red</l><l>10</l><l>3</l></custom-block></list></custom-block><custom-block s="cue starting at %n with length %n %br aligned %s %s at y= %n % within x %n % %br content: %mult%l"><l>9</l><l>1</l><l>bottom</l><l>centre</l><l>60</l><l>100</l><list><custom-block s="text with colour: %s delta size: %n content: %s"><l>red</l><l>10</l><l>2</l></custom-block></list></custom-block><custom-block s="cue starting at %n with length %n %br aligned %s %s at y= %n % within x %n % %br content: %mult%l"><l>10</l><l>1</l><l>bottom</l><l>centre</l><l>60</l><l>100</l><list><custom-block s="text with colour: %s delta size: %n content: %s"><l>red</l><l>10</l><l>1</l></custom-block></list></custom-block><custom-block s="basic text cue at %n length %n %br colour: %s text: %s"><l>11</l><l>2</l><l>FG</l><l>ROGER: We are in New York City</l></custom-block><custom-block s="basic text cue at %n length %n %br colour: %s text: %s"><l>13</l><l>3</l><l>FG</l><l>We’re actually at the Lucern Hotel, just down the street</l></custom-block><custom-block s="basic text cue at %n length %n %br colour: %s text: %s"><l>16</l><l>2</l><l>FG</l><l>from the American Museum of Natural History</l></custom-block><custom-block s="basic text cue at %n length %n %br colour: %s text: %s"><l>18</l><l>2</l><l>FG</l><l>And with me is Neil deGrasse Tyson</l></custom-block><custom-block s="basic text cue at %n length %n %br colour: %s text: %s"><l>20</l><l>2</l><l>FG</l><l>Astrophysicist, Director of the Hayden Planetarium</l></custom-block><custom-block s="basic text cue at %n length %n %br colour: %s text: %s"><l>22</l><l>2</l><l>FG</l><l>at the AMNH.</l></custom-block><custom-block s="basic text cue at %n length %n %br colour: %s text: %s"><l>24</l><l>2</l><l>FG</l><l>Thank you for walking down here.</l></custom-block><custom-block s="basic text cue at %n length %n %br colour: %s text: %s"><l>27</l><l>3</l><l>FG</l><l>And I want to do a follow-up on the last conversation we did.</l></custom-block><custom-block s="cue starting at %n with length %n %br aligned %s %s at y= %n % within x %n % %br content: %mult%l"><l>30</l><l>1.5</l><l>bottom</l><l>right</l><l>100</l><l>50</l><list><custom-block s="text with colour: %s delta size: %n content: %s"><l>FG</l><l>0</l><l>When we e-mailed—</l></custom-block></list></custom-block><custom-block s="cue starting at %n with length %n %br aligned %s %s at y= %n % within x %n % %br content: %mult%l"><l>30.5</l><l>2</l><l>bottom</l><l>left</l><l>100</l><l>50</l><list><custom-block s="text with colour: %s delta size: %n content: %s"><l>FG</l><l>0</l><l>NEIL: </l></custom-block><custom-block s="text with colour: %s delta size: %n content: %s"><l>cyan</l><l>0</l><l>Didn’t we talk about enough in that conversation?&#xD;</l></custom-block></list></custom-block><custom-block s="cue starting at %n with length %n %br aligned %s %s at y= %n % within x %n % %br content: %mult%l"><l>32</l><l>3.5</l><l>bottom</l><l>right</l><l>100</l><l>50</l><list><custom-block s="text with colour: %s delta size: %n content: %s"><l>FG</l><l>0</l><l>No! No no no no; &apos;cos &apos;cos obviously &apos;cos</l></custom-block></list></custom-block><custom-block s="cue starting at %n with length %n %br aligned %s %s at y= %n % within x %n % %br content: %mult%l"><l>32.5</l><l>1</l><l>bottom</l><l>left</l><l>100</l><l>50</l><list><custom-block s="text with colour: %s delta size: %n content: %s"><l>cyan</l><l>0</l><l>LAUGHS</l></custom-block></list></custom-block><custom-block s="basic text cue at %n length %n %br colour: %s text: %s"><l>35.5</l><l>2.5</l><l>FG</l><l>You know I’m so excited my glasses are falling off here.</l></custom-block></list></custom-block></block></script><script x="545" y="30"><block s="receiveGo"></block><custom-block s="render segment %l with settings %l"><block var="sample interview"/><custom-block s="render settings %br enable: %b %br palette: %l %br font size: %n %br padding: %n %br screen margin: %n"><l><bool>true</bool></l><custom-block s="default palette, dark on light: %b"><l><bool>false</bool></l></custom-block><l>18</l><l>4</l><l>16</l></custom-block></custom-block><custom-block s="render segment %l with settings %l"><custom-block s="segment of cues %mult%l"><list><custom-block s="cue starting at %n with length %n %br aligned %s %s at y= %n % within x %n % %br content: %mult%l"><l>0</l><l>1.5</l><l>top</l><l>right</l><l>100</l><l>100</l><list><custom-block s="text with colour: %s delta size: %n content: %s"><l>green</l><l>0</l><l>and now again, but with inverse colour palette</l></custom-block></list></custom-block></list></custom-block><custom-block s="render settings %br enable: %b %br palette: %l %br font size: %n %br padding: %n %br screen margin: %n"><l><bool>true</bool></l><custom-block s="default palette, dark on light: %b"><l><bool>false</bool></l></custom-block><l>18</l><l>4</l><l>16</l></custom-block></custom-block><custom-block s="render segment %l with settings %l"><custom-block s="segment of cues %mult%l"><list><custom-block s="cue starting at %n with length %n %br aligned %s %s at y= %n % within x %n % %br content: %mult%l"><l>0</l><l>1.5</l><l>top</l><l>right</l><l>100</l><l>100</l><list><custom-block s="text with colour: %s delta size: %n content: %s"><l>green</l><l>0</l><l>and now again, but with inverse colour palette</l></custom-block></list></custom-block></list></custom-block><custom-block s="render settings %br enable: %b %br palette: %l %br font size: %n %br padding: %n %br screen margin: %n"><l><bool>true</bool></l><custom-block s="default palette, dark on light: %b"><l><bool>true</bool></l></custom-block><l>18</l><l>4</l><l>16</l></custom-block></custom-block><custom-block s="render segment %l with settings %l"><block var="sample interview"/><custom-block s="render settings %br enable: %b %br palette: %l %br font size: %n %br padding: %n %br screen margin: %n"><l><bool>true</bool></l><custom-block s="default palette, dark on light: %b"><l><bool>true</bool></l></custom-block><l>18</l><l>4</l><l>16</l></custom-block></custom-block></script></scripts></sprite><watcher var="sample interview" style="normal" x="10" y="10" color="243,118,29" hidden="true"/><watcher scope="renderer" s="xPosition" style="normal" x="10" y="183.000002" color="74,108,212" hidden="true"/><watcher scope="renderer" s="yPosition" style="normal" x="10" y="204.000004" color="74,108,212" hidden="true"/></sprites></stage><variables><variable name="sample interview"><list linked="linked" id="1477"><item><l>CCSEGMENT</l></item><item><list id="1478"><item><l>0</l></item><item><l>11</l></item><item><l>top</l></item><item><l>centre</l></item><item><l>100</l></item><item><l>100</l></item><item><list id="1479"><item><list struct="atomic" id="1480">green,0,&quot;this demo is a lightly adapted version of the &quot;&quot;simple caption file&quot;&quot; example from the WebVTT standard&quot;</list></item><item><l>LF</l></item><item><list struct="atomic" id="1481">green,0,it begins at 11 seconds</list></item></list></item></list></item><item><list id="1482"><item><l>8</l></item><item><l>1</l></item><item><l>bottom</l></item><item><l>centre</l></item><item><l>60</l></item><item><l>100</l></item><item><list id="1483"><item><list struct="atomic" id="1484">red,10,3</list></item></list></item></list></item><item><list id="1485"><item><l>9</l></item><item><l>1</l></item><item><l>bottom</l></item><item><l>centre</l></item><item><l>60</l></item><item><l>100</l></item><item><list id="1486"><item><list struct="atomic" id="1487">red,10,2</list></item></list></item></list></item><item><list id="1488"><item><l>10</l></item><item><l>1</l></item><item><l>bottom</l></item><item><l>centre</l></item><item><l>60</l></item><item><l>100</l></item><item><list id="1489"><item><list struct="atomic" id="1490">red,10,1</list></item></list></item></list></item><item><list id="1491"><item><l>11</l></item><item><l>2</l></item><item><l>bottom</l></item><item><l>centre</l></item><item><l>100</l></item><item><l>100</l></item><item><list id="1492"><item><list struct="atomic" id="1493">FG,0,ROGER: We are in New York City</list></item></list></item></list></item><item><list id="1494"><item><l>13</l></item><item><l>3</l></item><item><l>bottom</l></item><item><l>centre</l></item><item><l>100</l></item><item><l>100</l></item><item><list id="1495"><item><list struct="atomic" id="1496">FG,0,&quot;We’re actually at the Lucern Hotel, just down the street&quot;</list></item></list></item></list></item><item><list id="1497"><item><l>16</l></item><item><l>2</l></item><item><l>bottom</l></item><item><l>centre</l></item><item><l>100</l></item><item><l>100</l></item><item><list id="1498"><item><list struct="atomic" id="1499">FG,0,from the American Museum of Natural History</list></item></list></item></list></item><item><list id="1500"><item><l>18</l></item><item><l>2</l></item><item><l>bottom</l></item><item><l>centre</l></item><item><l>100</l></item><item><l>100</l></item><item><list id="1501"><item><list struct="atomic" id="1502">FG,0,And with me is Neil deGrasse Tyson</list></item></list></item></list></item><item><list id="1503"><item><l>20</l></item><item><l>2</l></item><item><l>bottom</l></item><item><l>centre</l></item><item><l>100</l></item><item><l>100</l></item><item><list id="1504"><item><list struct="atomic" id="1505">FG,0,&quot;Astrophysicist, Director of the Hayden Planetarium&quot;</list></item></list></item></list></item><item><list id="1506"><item><l>22</l></item><item><l>2</l></item><item><l>bottom</l></item><item><l>centre</l></item><item><l>100</l></item><item><l>100</l></item><item><list id="1507"><item><list struct="atomic" id="1508">FG,0,at the AMNH.</list></item></list></item></list></item><item><list id="1509"><item><l>24</l></item><item><l>2</l></item><item><l>bottom</l></item><item><l>centre</l></item><item><l>100</l></item><item><l>100</l></item><item><list id="1510"><item><list struct="atomic" id="1511">FG,0,Thank you for walking down here.</list></item></list></item></list></item><item><list id="1512"><item><l>27</l></item><item><l>3</l></item><item><l>bottom</l></item><item><l>centre</l></item><item><l>100</l></item><item><l>100</l></item><item><list id="1513"><item><list struct="atomic" id="1514">FG,0,And I want to do a follow-up on the last conversation we did.</list></item></list></item></list></item><item><list id="1515"><item><l>30</l></item><item><l>1.5</l></item><item><l>bottom</l></item><item><l>right</l></item><item><l>100</l></item><item><l>50</l></item><item><list id="1516"><item><list struct="atomic" id="1517">FG,0,When we e-mailed—</list></item></list></item></list></item><item><list id="1518"><item><l>30.5</l></item><item><l>2</l></item><item><l>bottom</l></item><item><l>left</l></item><item><l>100</l></item><item><l>50</l></item><item><list id="1519"><item><list struct="atomic" id="1520">FG,0,NEIL: </list></item><item><list struct="atomic" id="1521">cyan,0,&quot;Didn’t we talk about enough in that conversation?&#xD;&quot;</list></item></list></item></list></item><item><list id="1522"><item><l>32</l></item><item><l>3.5</l></item><item><l>bottom</l></item><item><l>right</l></item><item><l>100</l></item><item><l>50</l></item><item><list id="1523"><item><list struct="atomic" id="1524">FG,0,No! No no no no; &apos;cos &apos;cos obviously &apos;cos</list></item></list></item></list></item><item><list id="1525"><item><l>32.5</l></item><item><l>1</l></item><item><l>bottom</l></item><item><l>left</l></item><item><l>100</l></item><item><l>50</l></item><item><list id="1526"><item><list struct="atomic" id="1527">cyan,0,LAUGHS</list></item></list></item></list></item><item><list id="1528"><item><l>35.5</l></item><item><l>2.5</l></item><item><l>bottom</l></item><item><l>centre</l></item><item><l>100</l></item><item><l>100</l></item><item><list id="1529"><item><list struct="atomic" id="1530">FG,0,You know I’m so excited my glasses are falling off here.</list></item></list></item></list></item></list></variable></variables></scene></scenes></project><media name="subtitle renderer" app="Snap! 9.0, https://snap.berkeley.edu" version="2"></media></snapdata>