diff --git a/sotmeu14/artwork/abspann.svg b/sotmeu14/artwork/abspann.svg new file mode 100644 index 0000000..b556d17 --- /dev/null +++ b/sotmeu14/artwork/abspann.svg @@ -0,0 +1,296 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + Creative Commons Attribution-ShareAlike 3.0 Unported License. + + + + diff --git a/sotmeu14/artwork/pause.svg b/sotmeu14/artwork/pause.svg index 960e391..a507654 100644 --- a/sotmeu14/artwork/pause.svg +++ b/sotmeu14/artwork/pause.svg @@ -17,69 +17,214 @@ inkscape:version="0.48.4 r9939" sodipodi:docname="pause.svg"> + id="defs4"> + + + + + + + + + + + + + + + + + + + + + inkscape:label="Drop Shadow" + width="1.2"> + result="composite2" + dy="0" /> + + + + + + + + + id="filter4858-8-6" + inkscape:label="Drop Shadow" + width="1.2"> + result="composite2" + dy="0" /> + inkscape:window-maximized="1" + showguides="true" + inkscape:guide-bbox="true" + inkscape:snap-global="true" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + inkscape:object-paths="false" + inkscape:snap-to-guides="true"> + - + id="guide3019" /> + id="guide3021" /> - + id="guide3023" /> + + + + @@ -140,99 +305,79 @@ + id="layer1" + transform="translate(0,-476.36218)"> + + transform="matrix(1.1340084,0,0,1.1340084,184.93504,-29.166503)" + id="logo" + inkscape:label="#logo"> - - - - + y="471.36218" /> + id="box"> + Berlin19. - 21. März 2014 + y="995.68701" + x="322.22845" + sodipodi:role="line" + id="tspan91" + style="font-size:40px;fill:#4b9dd0;fill-opacity:1">gleich geht's weiter FOSSGIS Konferenz2014fossgis.de/konferenz/2014/ - - - + sodipodi:linespacing="125%" + id="text2" + y="998.58508" + x="326.44351" + style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;fill:#4b9dd0;fill-opacity:1;filter:url(#filter4858-8);font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans" + xml:space="preserve" + transform="translate(-4.390023e-6,-3.8281246e-7)">we'll be back soon Gleich geht's weiter... - + y="998.42493" + x="233.16673" + sodipodi:role="line" + id="tspan91-0-7" + style="font-size:40px;fill:#4b9dd0;fill-opacity:1">nous serons bientôt de retour diff --git a/sotmeu14/artwork/vorspann.svg b/sotmeu14/artwork/vorspann.svg index 00f4e25..c5253ba 100644 --- a/sotmeu14/artwork/vorspann.svg +++ b/sotmeu14/artwork/vorspann.svg @@ -129,10 +129,11 @@ + inkscape:label="Drop Shadow" + width="1.2"> @@ -696,11 +288,12 @@ id="text4535" y="921.68701" x="122.22846" - style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#444448;fill-opacity:0.94117647;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans" + style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#444448;fill-opacity:0.94117647000000004;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans;filter:url(#filter4858)" xml:space="preserve">$title + sodipodi:role="line" + id="tspan91">$title diff --git a/sotmeu14/make.py b/sotmeu14/make.py index 283db33..8101ce0 100755 --- a/sotmeu14/make.py +++ b/sotmeu14/make.py @@ -45,6 +45,10 @@ def easeInCubic(t, b, c, d): t=float(t)/d return c*(t)*t*t + b; +def easeOutQuad(t, b, c, d): + t=float(t)/d + return -c *(t)*(t-2) + b; + # try to create all folders needed and skip, they already exist def ensurePathExists(path): try: @@ -80,32 +84,35 @@ def vorspannUrl(id): def abspannFrames(): - # 5 Sekunden + # 9 Sekunden - # 2 Sekunden Fadein Text - frames = 2*fps + # 3 Sekunden Fadein Logo + frames = int(3*fps) for i in range(0, frames): yield ( - ('banderole', 'opacity', "%.4f" % easeOutCubic(i, 0, 1, frames) ), - ('license', 'opacity', 0) + ('logo', 'style', 'opacity', "%.4f" % easeInCubic(i, 0, 1, frames)), + ('box', 'style', 'opacity', 0) ) - # 2 Sekunde Fadein Lizenz-Logo - frames = 2*fps + # 3 Sekunde Fadein Box + frames = 3*fps for i in range(0, frames): yield ( - ('banderole', 'opacity', 1), - ('license', 'opacity', "%.4f" % (float(i)/frames)) + ('logo', 'style', 'opacity', 1), + ('box', 'style', 'opacity', "%.4f" % easeOutQuad(i, 0, 1, frames)), + ('box', 'attr', 'transform', 'translate(0,%.4f)' % easeOutQuad(i, 94, -94, frames) ) + #('box', 'attr', 'transform', 'translate(%.4f,0)' % easeOutQuad(i, 960, -960, frames) ) ) - # 1 Sekunde stehen bleiben - frames = 1*fps + # 3 Sekunden stehen bleiben + frames = 3*fps for i in range(0, frames): yield ( - ('banderole', 'opacity', 1), - ('license', 'opacity', 1) + ('logo', 'style', 'opacity', 1), + ('box', 'style', 'opacity', 1) ) + def vorspannFrames(): # 7 Sekunden @@ -113,84 +120,69 @@ def vorspannFrames(): frames = int(math.ceil(0.5*fps)) for i in range(0, frames): yield ( - ('logo', 'opacity', 0), - ('box', 'opacity', 0) + ('logo', 'style', 'opacity', 0), + ('box', 'style', 'opacity', 0) ) - # 3 Sekunden Fadein Logo - frames = 3*fps + # 1.5 Sekunden Fadein Logo + frames = int(math.ceil(1.5*fps)) for i in range(0, frames): yield ( - ('logo', 'opacity', "%.4f" % easeInCubic(i, 0, 1, frames)), - ('box', 'opacity', 0) + ('logo', 'style', 'opacity', "%.4f" % easeInCubic(i, 0, 1, frames)), + ('box', 'style', 'opacity', 0) ) # 3 Sekunde Fadein Box frames = 3*fps for i in range(0, frames): yield ( - ('logo', 'opacity', 1), - ('box', 'opacity', "%.4f" % easeOutCubic(i, 0, 1, frames)) + ('logo', 'style', 'opacity', 1), + ('box', 'style', 'opacity', "%.4f" % easeOutQuad(i, 0, 1, frames)), + ('box', 'attr', 'transform', 'translate(0,%.4f)' % easeOutQuad(i, 198, -198, frames) ) + #('box', 'attr', 'transform', 'translate(%.4f,0)' % easeOutQuad(i, 960, -960, frames) ) ) # 3 Sekunden stehen bleiben - frames = int(math.ceil(2.5*fps)) + frames = 3*fps for i in range(0, frames): yield ( - ('logo', 'opacity', 1), - ('box', 'opacity', 1) + ('logo', 'style', 'opacity', 1), + ('box', 'style', 'opacity', 1) ) def pauseFrames(): # 12 Sekunden - # 2 Sekunden Text1 stehen - frames = 2*fps - for i in range(0, frames): - yield ( - ('text1', 'opacity', 1), - ('text2', 'opacity', 0) - ) + texts = { + 'text1': "0.0", + 'text2': "0.0", + 'text3': "0.0" + } - # 2 Sekunden Fadeout Text1 - frames = 2*fps - for i in range(0, frames): - yield ( - ('text1', 'opacity', "%.4f" % (1-easeOutCubic(i, 0, 1, frames))), - ('text2', 'opacity', 0) - ) + for name in texts.keys(): + # 2 Sekunden einfaden + frames = 2*fps + for i in range(0, frames): + texts[name] = "%.4f" % easeOutQuad(i, 0, 1, frames) - # 2 Sekunden Fadein Text2 - frames = 2*fps - for i in range(0, frames): - yield ( - ('text1', 'opacity', 0), - ('text2', 'opacity', "%.4f" % easeOutCubic(i, 0, 1, frames)) - ) + yield ( + ('text1', 'style', 'opacity', texts['text1']), + ('text2', 'style', 'opacity', texts['text2']), + ('text3', 'style', 'opacity', texts['text3']) + ) - # 2 Sekunden Text2 stehen - frames = 2*fps - for i in range(0, frames): - yield ( - ('text1', 'opacity', 0), - ('text2', 'opacity', 1) - ) + # 2 Sekunden ausfaden + frames = 2*fps + for i in range(0, frames): + texts[name] = "%.4f" % easeOutQuad(i, 1, -1, frames) - # 2 Sekunden Fadeout Text2 - frames = 2*fps - for i in range(0, frames): - yield ( - ('text1', 'opacity', 0), - ('text2', 'opacity', "%.4f" % (1-easeOutCubic(i, 0, 1, frames))) - ) + yield ( + ('text1', 'style', 'opacity', texts['text1']), + ('text2', 'style', 'opacity', texts['text2']), + ('text3', 'style', 'opacity', texts['text3']) + ) - # 2 Sekunden Fadein Text1 - frames = 2*fps - for i in range(0, frames): - yield ( - ('text1', 'opacity', "%.4f" % (easeOutCubic(i, 0, 1, frames))), - ('text2', 'opacity', 0) - ) + texts[name] = "0.0" cssutils.ser.prefs.lineSeparator = ' ' cssutils.log.setLevel(logging.ERROR) @@ -231,12 +223,16 @@ def render(infile, outfile, sequence, parameters={}, workdir='artwork'): with open(os.path.join(workdir, '.gen.svg'), 'w') as fp: # apply the replace-pairs to the input text, by finding the specified xml-elements by thier id and modify thier css-parameter the correct value for replaceinfo in frame: - (id, key, value) = replaceinfo + (id, type, key, value) = replaceinfo for el in svg.findall(".//*[@id='"+id.replace("'", "\\'")+"']"): - style = cssutils.parseStyle( el.attrib['style'] if 'style' in el.attrib else '' ) - style[key] = unicode(value) - el.attrib['style'] = style.cssText + if type == 'style': + style = cssutils.parseStyle( el.attrib['style'] if 'style' in el.attrib else '' ) + style[key] = unicode(value) + el.attrib['style'] = style.cssText + + elif type == 'attr': + el.attrib[key] = value # write the generated svg-text into the output-file fp.write( etree.tostring(svg) ) @@ -316,16 +312,16 @@ if debug: } ) - # render( - # 'abspann.svg', - # '../outro.dv', - # abspannFrames - # ) + render( + 'abspann.svg', + '../outro.dv', + abspannFrames + ) - # render('pause.svg', - # '../pause.dv', - # pauseFrames - # ) + render('pause.svg', + '../pause.dv', + pauseFrames + ) sys.exit(0)