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 @@
+
+
+
+
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">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- KARLSRUHE 13.-15. JUNI 14
+
@@ -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)